背景: データベースで AES (対称暗号) で暗号化されたデータを取得しました。(想定) 安全で隔離された Linux ボックスで実行されるサーバー側アプリケーションは、このデータを使用します。DB から暗号化されたデータを読み取り、暗号化されたデータを書き戻し、メモリ内の暗号化されていないデータのみを処理します。そのため、これを行うには、アプリでキーをメモリに保存する必要があります。
問題は、これに対する適切なベスト プラクティスがあるかどうかです。メモリ内のキーを保護します。
いくつかのアイデア:
- スワップできないメモリに保持する (Linux の場合: ?
SHM_LOCK
で設定shmctl(2)
) - キーを複数のメモリ ロケーションに分割します。
- キーの暗号化。キーキーを安全に保管するには、何を使用し、どのようにしますか?
- 必要なたびにファイルからキーをロードします (時間がかかり、悪意のある人物が私たちの記憶を読み取ることができれば、おそらくファイルも読み取ることができます)
キーが漏洩する可能性がある理由に関するいくつかのシナリオ: 悪者がメモリ ダンプ/コア ダンプを取得する。情報漏えいにつながるコード内の不適切な境界チェック。
最初の 1 つは、実行するのが適切で非常に単純なことのように思えますが、残りはどうですか? 他のアイデア?標準仕様/ベストプラクティスはありますか?
ご意見ありがとうございます。