2015-01-07 2 views
-1

나는 android 용 Java로 만든 채팅 응용 프로그램을 작업 중입니다. 나는 비틀기를 사용하여 파이썬으로 만든 서버를 가지고 있으며, 물론 안드로이드 애플 리케이션에서 클라이언트를 구현했습니다.RSA 암호화 된 채팅 응용 프로그램 만들기 android

아주 잘 작동하지만 안전하게 만들고 싶습니다. 나는 RSA 암호화를보고 있었고 다음 링크를 발견했다. http://javadigest.wordpress.com/2012/08/26/rsa-encryption-example/

문제는 내가 서버에서 메시지를 해독하기 위해 개인 키를 만들 수 있고 공개 키가 하드 코딩된다는 것이다. (또는 어딘가 온라인), 안드로이드 응용 프로그램에서. 문제는 서버가 클라이언트에게 메시지를 다시 보낼 때 어떻게 얻을 수 있는가? 암호화 된 것도 보내야합니다. 그렇지 않으면, 그렇게 할 필요가 없습니다. 나는 각 클라이언트에 대해 한 쌍의 키를 만드는 것에 대해 생각하고 있었지만, 최선의 방법은 아니라고 생각합니다.

모든 제안을 환영합니다

+0

일반적인 방법은 바퀴를 재발 명하지 않고 제안하는 모델과 완벽하게 일치하는 SSL 만 사용하는 것입니다. 공개 키를 클라이언트에 하드 코딩하는 경우 잊지 마세요. 개인 키가 손상되면 많은 어려움을 겪을 수 있습니다. –

+0

나는 SSL과 java (특히 안드로이드 응용 프로그램)의 필요한 예가 무엇인지 직접적으로 발견하지 못했습니다. – user1812076

답변

1

이에 대한 해결책이 필요로 할 때 클라이언트의 공개 키를 검증 할 수 공개 키 인프라 (PKI)의 형태를 만드는 데 보통이다. 이를 인증서에 넣고 사용자가 제어하는 ​​인증 기관 (CA)의 종류로 서명하여이 작업을 수행 할 수 있습니다. 이렇게하면 모든 인증서를 저장할 필요가 없으며 키가 손상된 클라이언트의 인증서를 해지 할 수도 있습니다. 이는 일반적으로 브라우저 (브라우저) TLS에서 사용되는 것이며, 특히 클라이언트 인증이 배포 된 경우에 특히 그렇습니다.

그러나 키 관리은 하나의 답변 내에서 처리 할 수없는 큰 주제입니다.

+0

Google이 할 수있는 용어가 기울어졌습니다. –

+0

이것이 데이터 암호화 및 인증이 아닌 경우 OP에는 클라이언트 키/인증서가 전혀 필요하지 않습니다. – divanov

+0

@divanov 인증서는 비대칭 암호화에도 사용됩니다. 왜 그들이 당신이 아니라고 생각하게합니까? 키가 암호화에 사용될 수 있는지 여부와 관계없이 키 용도 확장에 특정 비트가 있습니다. –