2014-12-16 4 views
0

Bashoto이라는 실시간 로컬 앱을 구축 할 수있는 플랫폼이 있으며 Android 클라이언트를 만들 예정입니다.Android에서 타사 보안 설정

바쇼 (Bashoto) 응용 프로그램은 응용 프로그램 토큰과 토큰이 유효한지 확인하는 서명으로 JSON Web Token (JWT)를 한 번만 사용하여 인증되는 옵션이 있습니다. 각 연결에는 비밀로 내용을 서명함으로써 생성 된 고유 한 JWT가 있습니다.

웹 환경에서 이는 클라이언트 백엔드에 Secret 사본이 있고 토큰에 서명하여이를 클라이언트 프런트 엔드에 전달한 다음 BashotoIO 서버에 요청할 때 사용한다는 것을 의미합니다.

모바일 환경 및이 경우 안드로이드의 문제는 응용 프로그램 코드 자체의 비밀을 잠재적 인 공격 벡터로 유지하는 것입니다. 누군가가 APK를 조사하여이를 찾을 수 있기 때문입니다.

Bashoto 통합을 간소화하고 간소화하면서도 Android 애플리케이션에서 비밀 비밀을 유지하는 가장 좋은 방법은 무엇입니까?

나는 당신이 키가되고 싶어 얼마나 보안에 따라이

Bashoto bashoto = Bashoto.fromAppKey("my-app-key"); 
bashoto.locate(); 
BashotoTopic topic = bashoto.topic("my-topic-name"); //token signing and connection happens here 
topic.send("Some message that only gets seen by nearby people"); 
+1

간단한 규칙이 있습니다. 비밀리에 실제로 원한다면 장치 위에 두지 마십시오. 무엇을 하든지 해커가 찾을 수있는 암호를 찾을 수 있어야합니다. 당신이 할 수있는 유일한 일은 그들을 늦추는 것입니다. – Simon

답변

1

같은 것을보고 사용을하고 싶습니다. proguard http://responsiveandroid.com/2014/12/10/android-proguard-tutorial.html을 사용하여 코드를 난독화할 수 있습니다. 이것은 여전히 ​​문자열 리터럴을 가지지 만 디 컴파일을 통과하기는 어려울 수는 있지만 불가능하지는 않습니다.

보안이 충분하지 않아 APK에 보관할 수없는 경우 원격 서버에 보관해야합니다. 서버가 SSL을 사용하여 트래픽을 비공개로 유지하는 것이 이상적입니다. 키가 없으면 키를 가져 와서 안드로이드 키 저장소 https://developer.android.com/training/articles/keystore.html을 사용하여 로컬에 안전하게 저장할 수 있습니다. 즉, 사용자는 앱을 디 컴파일하여 키를 찾을 수 없습니다.

SSL 흡입에 대해 걱정이된다면 모든 서버의 진위 여부를 확인하는 SSL 고정으로 이동해야합니다. https://developer.android.com/training/articles/security-ssl.html#Pinning

+0

이것은 실제로 내가 잘 정립 한 웹 인증 프레임 워크와 일치합니다. 1) Android 클라이언트에 AppKey 만 보관하고 시도하면 다른 사람이 해당 키에 액세스 할 수 있음을 분명히합니다. 2) 인증을 사용하는 응용 프로그램은 자체 서버에서 BashotoIO 서버로 전달되는 JWT를 가져와야합니다. – agentargo