弱い暗号の使用

弱い暗号の使用

説明

DES、RC4、ECBモード、独自のXOR暗号など、弱い暗号や検証されていない暗号では十分な機密性を確保できません。

想定される影響

暗号文の復号、メッセージの改ざん、機密データの漏えいにつながるおそれがあります。

対処方法

検証済みのライブラリーと現在の安全なアルゴリズムを使い、認証付き暗号と適切な鍵管理を適用します。

例

変更前

php
<?php
$ciphertext = openssl_encrypt($data, 'des-ecb', $key);

変更後

php
<?php
$key = getEncryptionKey();
$iv = random_bytes(openssl_cipher_iv_length('aes-256-gcm'));
$ciphertext = openssl_encrypt($data, 'aes-256-gcm', $key, OPENSSL_RAW_DATA, $iv, $tag);

解説:

  • 変更前: この例は、古いDESアルゴリズムをECBモードで使用しています。
  • 変更後: 暗号化のたびに新しいIVを使い、安全に管理した鍵で認証付き暗号を適用します。

getEncryptionKey() は、安全に生成・保管した32バイトの鍵を返す必要があります。暗号化の失敗を処理し、IVと認証タグを暗号文とともに保存してください。復号時にタグの検証が失敗したデータは使用しません。

参考資料