2012-01-17 11 views
4

クライアント側で暗号化/復号化が行われるAndroidアプリケーションを開発する必要があります。サーバーに転送されて格納されたデータは、暗号化されなければならない(MUST)。問題はどこにでも暗号化/復号化の鍵を保存できないことです。暗号化アルゴリズムの鍵をどこに格納しますか?

鍵をクライアントマシンに保存することはできません。管理者(またはサーバーにアクセスできるユーザー)は、暗号化されていないデータにアクセスするべきではないためです。

キーを生成する方法は?いくつかの方法を提案できますか?

+2

私は質問を理解していないと思います。データの暗号化には、通常、ユーザーのデバイスに格納されている公開鍵と、リモートマシン(通常はサーバー)によって格納されている秘密鍵があります。まさにあなたがしようとしているのはこれとは違うのですか? – Codeman

+0

誰が平文を読むことができるはずですか?誰が暗号化されたデータにのみアクセスできるはずですか?誰が暗号化を行い、誰がデータを復号化しますか?暗号化されたデータはどこに行きますか? – JimmyB

答えて

3

私は、デバイスに暗号化キーを格納するべきではないと言いますと、本当にそれを意味します:-)その制限がなければ、KeyStoreを使うことができます。しかし、これはデバイスに鍵が保存されていることを意味します。

暗号鍵がデバイスの外部にあると仮定すると、多少の選択肢がないので簡単です。クライアントアプリケーションは、ユーザに暗号鍵を何らかの形で入力するように要求します。データを暗号化するために使用し、その後すぐに暗号化キーを忘れてしまいます。

次に、暗号化されたデータをサーバーに送信し、サーバーに格納します。サーバーは暗号化キーを知らないので、サーバーには不透明なデータブロックです。

ユーザーがデータを取得したい場合、デバイスに保存されていないため、復号鍵をその場で提供する必要があります。

+0

私はKeyStoreを使用することができますが、私はデバイス上で公開鍵と秘密鍵を生成しており、証明書の使用方法を理解することはできません。このアイデアはどうですか? – edthethird

関連する問題