1

こんにちはみんな私は個人の機密情報の暗号化/復号化に関するセキュリティの質問があります:アイデンティティ(名前、住所、電話番号)、銀行の詳細(ソートコードと口座番号)ほとんどすべてが暗号化されており、それは本人と本人だけがアクセスできます個人データの使用を許可された人。そして今、主な質問は次のとおりです。1.私の方法は十分に安全ですか?
2.そうするためのより良い方法はありますか?
3.データベースまたは$_SESSIONのキーをどこで使用しますか?(ユーザーが詳細を確認するための復号化にキーを使用するのに最適な場所はどこですか)

コードは次のとおりです。
$iv = mcrypt_create_iv(32, MCRYPT_RAND);
$key = mcrypt_create_iv(32, MCRYPT_RAND);
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $unencrypted, MCRYPT_MODE_CBC, $iv);

これは、データをDBに送信する前にデータを暗号化するためのものです

$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $encrypted, MCRYPT_MODE_CBC, $iv );

そして、これは復号化方法です(上記のサンプルの$ encode、$ key、および$ ivを使用)。

4

1 に答える 1

3

機密情報を暗号化し、キーをデータベースに保存しても、セキュリティ上の利点はありません。金庫に鍵をかけて、鍵を鍵穴に置いたままにするのと同じです。少なくとも、データベースではなく、ファイル システムにキーを格納する必要があります。この場合、データベースが漏洩した場合 (たとえば、SQL インジェクション攻撃が原因で)、攻撃者はキーを持っていないため、データベースを復号化できません。

編集 PHPは必要な操作を行うためにキーを読み取る必要があるため、キーを含むファイルを保護する方法はありません。ただし、HSM (ハードウェア セキュリティ モジュール) デバイスを使用してそこにキーを格納できます。たとえば、 YubiHSMを見てください。

于 2012-08-15T15:23:44.767 に答える