2009-07-22 5 views
1

내 서버에서 통신 할 때 암호로 사용하는 문자열이 있습니다. 해커가 내 바이너리를 검색하거나 런타임 중에 메모리를 조사하여이 문자열을 찾을 수 없도록하려면이 문자열을 암호화하는 가장 좋은 방법은 무엇입니까? (가능한 경우 전혀 예방하지 않겠습니까?)ObjC/C에서 String을 숨기거나 암호화하는 가장 좋은 방법은 무엇입니까?

최소한 가능한 한 diffcult로 만들기 위해 제안하는 몇 가지 방법은 무엇입니까?

답변

2

서버에서 사용을 모니터링하고 응용 프로그램과 일치하지 않는 사용 패턴을 감지하는 것이 훨씬 더 나은 방법입니다. 예를 들어 다른 응용 프로그램보다 항상 먼저 한 가지 요청을하거나 또는 전달한 iPhone ID 호출에 대한 매개 변수로서의 up은 여러 소스에서 지나치게 사용되지 않았습니다. 응용 프로그램이 처음 시작될 때 초기 호출을하고 다른 호출을 허용하도록 서버에 전화 ID를 기록 할 수 있습니다.

문제에 접근하는 방법은 여러 가지가 있지만 모두 서버 기반이므로 해커가 클라이언트의 모든 것을 볼 수 있으며 해커가 볼 수 있습니다. 고객이 말하는 것은 항상 거짓말로 취급해야합니다. 때로는 거짓말로 취급해야합니다.

+1

어도비는 아직이 사실을 알지 못했습니다.) – ewanm89

1

기술적으로 불가능합니다. 연결하기 전에 암호 해독 후 코드를 긁어 낼 수 있으며, 필요한 전체 암호 해독 알고리즘도 이미 코드에서 사용할 수 있습니다. 디스 어셈블리하면 바이너리에서 직접 데이터를 해독 할 수 있습니다.

사실 이것은 닫힌 플랫폼이므로 (iphone 태그를 사용했기 때문에) 바이너리의 단순한 16 진수 문자열 일지라도 그것을 관리 할 수있는 주요 해커 일뿐입니다.

+0

가능한 한 diffcult로 만들기 위해 제안 할 수있는 방법은 무엇입니까? – erotsppa

+0

문자열을 입력하면 문자열을 검색하는 사용자에게 의미가 없습니다. 그런 다음 항상 서버와 통신 할 때 HTTPS를 사용하여 스누핑 할 수 없습니다. 물론 HTTPS를 사용하면 성능상의 불이익을 감수해야하지만 비밀로 유지하는 유일한 방법입니다. –

+0

글쎄, 정확히 왜이 문자열이 필요합니까? 바이너리 만 서버에 연결되도록하려고합니까? – ewanm89

관련 문제