2012-10-29 3 views
2

내 서버가 안드로이드 애플리케이션에 슈퍼 비밀 암호 키를 보내야하는 프로젝트가 있습니다. 비밀 키는 승인 된 공식 블루투스 장치와 통신하기 위해 응용 프로그램에서 대칭 암호화에 사용됩니다. 모든 사람이 응용 프로그램 외부에서 블루투스 장치와 통신 할 수 있도록하려면이 키를 발견하지 않아야합니다.서버가 비공식적 인 안드로이드 클라이언트와 통신하지 못하게합니다.

내 문제는 내가 발견되는이 비밀 키를 보호 할 수있는 방법이다. SSL을 사용하여 서버와 안드로이드 응용 프로그램간에 통신 할 수 있다는 것을 알고 있으며 비밀 키가 실제로 안드로이드 장치에 저장되지 않았는지 확인할 수 있습니다.

그러나 기술하는 것은 내가 내 편집되지 않은 안드로이드 응용 프로그램이 서버와의 통신 및 다른 응용 프로그램이 비밀 키를 얻기 위해 노력하고, 내 자신의로 가장 아니라는 것을 확인하기 위해 사용할 수 있습니까?

답변

1

그러나 기술하는 것은 내가 내 편집되지 않은 안드로이드 응용 프로그램이 비밀 키를 얻기 위해 노력하고, 서버가 아닌 내 자신의 인척 다른 응용 프로그램과의 통신이 원활히 이루어지는 지 확인하는 데 사용할 수있는? 정의에

이 불가능하다.

앱을 가져갑니다. 일부 문자열에서 대문자 A을 소문자 a으로 변경하십시오. 그 개정 된 응용 프로그램을 실행합니다. 이것은 "자신의 것으로 가장 한 다른 응용 프로그램"으로, 서버와 완벽하게 대화 할 수 있습니다. 다른 "응용 프로그램을 가장 한 응용 프로그램"은 한 글자의 경우보다 많은 변경을 가졌을뿐입니다.

따라서, 당신은 두 가지 선택이 있습니다 서버와의 통신을 숨기려고하는,

  1. 사용 난독 화 기술을 모두 자동화 (ProGuard에서) 및 수동을하고 아무도 처음에 가려움이 없습니다 희망 여전히 그것을 시도하고 리버스 엔지니어링 할 수 있습니다. 사람들이 특정 기술에 대한 앱 라이선스 코드 (예 : LVL)를 보호하기 위해 사용하는 방법을 확인할 수 있습니다. DexGuard와 같은 고급 obfuscaters가 도움이 될 수 있습니다. 그러나 기술적으로 말하자면 누군가가 여전히 앱을 리버스 엔지니어링 할 수 있습니다. 당신이 당신의 블루투스 장치와 상호 작용하는 어떤 응용 프로그램을 상관하지 않는 경우

  2. 는 비즈니스 모델과 함께 가자.

+0

감사합니다. 나는 서버와 블루투스 장치에 알고리즘으로 생성 된 단일 사용 세션 키를 사용하여 일반적인 의사 난수를 시드로 사용하여 '마스터'키를 안드로이드 앱에 보낼 필요가 없도록하는 기술을 생각해 냈습니다. 나는 항상 우리의 앱이 디 컴파일 될 수 있고 결코 그것을 신뢰하지 않을 것이라고 가정 할 것이다. – dgel

0

나는 안드로이드의 사용자 정의 버전없이 이것을 할 수 있다고 생각하지 않습니다. 내 추론은 호출 응용 프로그램이 정품인지 확인하기 위해 서버에 SSL을 보내거나 보내지 않아야합니다. 뭔가가 앱에서 파생되어야하며 패키지 이름, IME 등이 무엇이든 파생되어야합니다. 스푸핑 될 수 있습니다.

당신이 할 수있는 최선이 무엇인가를 암호화하고 암호화를 수행하는 데 필요한 키를 당황하게하는 것입니다하지만, 당신은 당신의 키를 얻을 수있는 보상 대 리버스 엔지니어링의 비용에 있습니다.

그 비용이 가치가있다하더라도, 누군가가 블루투스 장치에 보안 균열과 지식 및 근접을 가지고 노력을 소비 할 것이라는 가능성은 무엇인가?

관련 문제