0

一部のユーザー アカウント情報を ssl 経由で json として中央サーバーに送信する Android アプリケーションがあります。サードパーティは、ユーザーのユーザー名を知っていれば、ユーザーにメッセージを送信できます。

サーバーからユーザー名を照会することはできません。実際、ユーザー データを照会することはできません。システム全体は、ユーザーがその情報をサードパーティと喜んで共有し、サードパーティがその情報を使用してユーザーにメッセージを配信できるという事実に依存しています。

送信されたデータは、既に SSL 経由で送信されているため、暗号化されていません。サーバーに保存されているデータを安全に保つために暗号化する必要があると感じています。このデータを暗号化する最良の方法は何でしょうか? ユーザー データを照会するとき、提供された値を暗号化し、それをデータベースに格納されているものと比較する必要がありますか?それとも、データベースを復号化する必要がありますか?

それとも、私のサーバー アプリケーションだけがこのデータにアクセスできるので、やり過ぎですか?

4

1 に答える 1

1

ファイルシステム上のユーザーや顧客などの個人データを暗号化することは、やり過ぎではありません。一つには、ハードドライブは最終的に制御不能になるということです --- そして、それが機能していないように見えた後、それを適切に破壊することはほとんどありません。ある程度のデータ回復の専門知識とイニシアチブを持つ人がアクセスできる可能性があります。

PyCryptoをお勧めします。

本当の課題は、鍵をどのように管理するかです。PK (公開鍵) 暗号化の利点の 1 つは、コード内の公開 (暗号化) 鍵を使用してソフトウェアを構成し、公開できることです。これは、アプリケーションのデータを保存する部分には十分です。次に、秘密鍵を非公開に保つ一連の手順とポリシーを調整する必要があります。つまり、ソースコードやバージョン管理システムに含めることはできません...ソフトウェアの一部がそれを要求して取得する必要があります(おそらく入力、おそらくUSB「キーボードエミュレータ」またはその他のパスワードからプッシュ) /key Vault デバイス)。

これは、サーバー ソフトウェアを再起動するたびに実行する必要があります (この顧客データを読み取る必要があります) ... しかし、これは実行時間の長いデーモンになる可能性があるため、年に数回しか必要ありません。の変更されたコピーのようなものを使用してssh-agent、パスワード管理機能をアプリケーション/サーバーの残りの部分から切り離すことができます。

(秘密鍵がマシンの実行中に常にメモリ内にある場合、秘密鍵をメモリ内に保持する価値があるか疑問に思っている場合は、誰かが侵入してコンピュータを盗んだ場合に何が起こるかを考えてみてください。その過程で、ほぼ確実にコンピュータの電源が切られます。 , したがって、最終的な再起動からデータを保護します. 1 つのオプションは, 弱いですが, 秘密鍵 (パスワード/パスフレーズ) ストレージに小さな USB ドライブを使用することです. これは依然として盗難のリスクに対して脆弱ですが, より少なくなります.ハード ドライブを適切に破壊するのは比較的難しく、費用もかかりますが、小さくて安価な USB ドライブを物理的に破壊することはまったく難しくありません)。

于 2013-04-06T12:11:01.660 に答える