コンテンツへスキップ
uencoder

暗号鍵を安全にローテーションする

鍵のローテーションは、鍵が漏洩した場合の被害範囲を限定します。二重暗号化による移行パターンと、ダウンタイムなしでデータを再暗号化する方法を学びましょう。

  1. 1

    鍵ローテーションは、古い暗号鍵を新しい鍵に置き換え、すべてのデータを再暗号化します。課題は、ダウンタイムなしで行うことです。解決策は二重暗号化(エンベロープ)パターンです。新しいデータは新しい鍵で暗号化し、古いデータは読み取り時に復号して新しい鍵で再暗号化します(レイジーマイグレーション)。

  2. 2
    AES 暗号化ツール →

    新しいデータを新しい鍵(K2)で暗号化します。復号側がどの鍵を使うべきか分かるよう、暗号文と一緒に鍵バージョンの識別子を保存します。

  3. 3
    AES 復号ツール →

    古いデータ(K1 で暗号化)を読み取り時に復号します。復号に成功したら、すぐに K2 で再暗号化して、保存済みの暗号文を更新します。これがレイジーマイグレーションです。データはアクセスされたときに移行されます。

  4. 4
    ハッシュ計算ツール →

    鍵バージョンのメタデータをハッシュして、改ざんを検出します。攻撃者がレコードを古い鍵バージョンにダウングレードできないようにすべきです。

  5. 5

    すべてのレコードが K2 に移行されたら、K1 を廃止します。見落とされたレコードに備え、猶予期間中は K1 をコールドストレージに保管してください。エンベロープ暗号化(AWS KMS パターン)では、マスターキーをローテーションしてもデータキーは保持します。再暗号化するのはラップされたデータキーだけで、大量のデータではありません。

よくある質問

鍵はどのくらいの頻度でローテーションすべきですか?
脅威モデルによります。コンプライアンスフレームワークでは年次ローテーションが求められることがあります。高価値のターゲットでは、四半期ごと、または侵害が疑われるたびにローテーションしてください。ローテーションのコストも判断材料に含めてください。
エンベロープ暗号化とは何ですか?
マスターキー(KMS/HSM 内)がデータキーを暗号化し、データキーが実際のデータを暗号化します。ローテーションでは、新しいマスターキーでデータキーだけを再暗号化します。大量のデータは同じデータキーで暗号化されたままです。すべてのデータを再暗号化するよりはるかに安価です。

このタスクを解決するワークフロー

AES 暗号化後に Base64 エンコード
平文を AES で暗号化し、テキストセーフな転送のために暗号文を Base64 としてエンコードする。
パイプライン
コンテンツのハッシュと Base64 エンコード
入力のハッシュを計算し、コンパクトな転送のためにハッシュダイジェストを Base64 としてエンコードする。
パイプライン
テキストのハッシュと整合性検証
入力テキストのハッシュを計算し、期待されるハッシュと比較して整合性を検証する。
パイプライン
テキストのハッシュと CRC32 チェックサム検証
データ整合性検証のために、暗号学的 SHA-256 ハッシュと CRC32 チェックサムの両方を計算する。
パイプライン
MD5 ハッシュ後に Base58 エンコード
MD5 ハッシュを計算し、コンパクトな表現のために Base58 としてエンコードする。
パイプライン
マルチハッシュ速度比較
入力をハッシュし、複数のハッシュアルゴリズムをベンチマークして速度と出力を比較する。
パイプライン
パスワード生成とハッシュ
ランダムパスワードを生成し、安全な保存のためにハッシュする。
パイプライン
SHA3-256 ハッシュと CRC32 チェックサム
SHA3-256 ハッシュを計算し、二重整合性検証のために CRC32 チェックサムを計算する。
パイプライン
SHA-512 ハッシュ後に Hex エンコード
SHA-512 ハッシュを計算し、可読性のために Hex としてエンコードする。
パイプライン
テキスト反転とハッシュ
テキストを反転し、その後反転結果の SHA-256 ハッシュを計算する。
パイプライン
テキストスクランブルとハッシュ
テキストをスクランブルし、その後スクランブル結果をハッシュする。
パイプライン

関連ツール