2012-01-17 3 views
4

클라이언트 측에서 암호화/암호 해독이 이루어지는 Android 애플리케이션을 개발해야합니다. 서버에 전송되어 저장되는 데이터는 반드시 암호화되어야합니다. 문제는 어디서나 암호화/암호 해독 키를 저장할 수 없다는 것입니다.암호화 알고리즘의 키를 저장할 위치는 어디입니까?

키를 클라이언트 컴퓨터에 저장할 수 없습니다. 관리자 (또는 서버에 액세스 할 수있는 사람)가 암호화되지 않은 데이터에 액세스하지 않아야하기 때문입니다.

키를 생성하는 방법은 무엇입니까? 몇 가지 방법을 제안 해 주시겠습니까?

+2

나는이 질문을 이해하지 못한다고 생각합니다. 데이터 암호화에는 일반적으로 사용자의 장치에 저장된 공개 키와 원격 시스템 (일반적으로 서버)에 의해 저장된 개인 키가 있습니다. 정확히 당신이하려고하는 것은 이것과 다릅니다. – Codeman

+0

누가 일반 텍스트를 읽을 수 있습니까? 누가 암호화 된 데이터에만 액세스 할 수 있습니까? 누가 데이터를 암호화하고 누가 데이터를 해독합니까? 암호화 된 데이터는 어디에 저장됩니까? – JimmyB

답변

3

암호화 키가 장치에 저장되어서는 안된다고 가정 할 때 실제로는 다음과 같은 의미가 있습니다 .-) 해당 제한이 없으므로 KeyStore을 사용할 수 있습니다. 그러나 이것은 키가 장치에 저장되어 있음을 의미합니다.

암호화 키가 기기 외부에 있다고 가정하면 선택의 여지가 없으므로 다소 간단합니다. 클라이언트 앱에서 사용자에게 암호화 키를 입력하도록 사용자에게 요청합니다. 데이터를 암호화하는 데 사용하고 즉시 암호화 키를 잊어 버립니다.

그런 다음 암호화 된 데이터를 서버로 보내 저장합니다. 서버는 암호화 키를 알지 못하므로 서버에 불투명 한 데이터 블롭입니다.

사용자가 데이터를 검색하려면 장치에 저장되어 있지 않으므로 현장에서 암호 해독 키를 제공해야합니다.

+0

키 스토어를 사용할 수는 있지만 장치에 공용 키와 개인 키를 생성하고 있으며 인증서 용도에 대해 알아낼 수 없습니다. 개인 키를 키 스토어에 추가하려면 키 스토어에 개인 키가 필요합니다. 이것에 대한 어떤 생각? – edthethird

관련 문제