鍵のライフサイクル:生成、保存、ローテーション、破棄
暗号鍵のライフサイクルにおける各段階と、それぞれのリスクを定義します。
「鍵のライフサイクル:生成、保存、ローテーション、破棄」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。
暗号鍵のライフサイクル
すべての鍵は、生成 → 保管 → 配布 → 使用 → ローテーション → アーカイブ → 破棄という段階を経ます。いずれかの段階で問題が起きると、その鍵で保護されているすべてのデータが危険にさらされる可能性があります。
フェーズ1:鍵の生成
鍵は、暗号学的に安全な乱数源(CSPRNG)から生成する必要があります。鍵の長さはアルゴリズムの要件に合わせます(AES-256、RSA-4096、ECDSA P-256など)。エントロピーの低い情報から鍵を導出してはいけません。
フェーズ2:安全な保管
保存中の鍵は、鍵暗号化キー(KEK)で暗号化する必要があります。選択肢には、HSM、OSのキーチェーン(macOS Keychain、Windows DPAPI)、クラウドKMS、強力なパスフレーズで暗号化したファイルがあります。平文の鍵をコードやデータベースに保存してはいけません。
フェーズ3:鍵の配布
鍵はTLS経由で転送します。可能な場合は、鍵転送ではなく鍵共有(ECDH)を使用します。鍵の受信者を認証してください。誤った相手に鍵を渡すと、完全な侵害につながります。
フェーズ4:鍵の使用
鍵の用途を限定します。暗号化用、署名用、MAC用に、それぞれ別の鍵を使用してください(encryption ≠ signing ≠ MAC)。鍵の使用回数を記録します。多くの標準(X9.42など)では、鍵を使用できる最長期間である暗号期間(cryptoperiod)が定義されています。
フェーズ5:鍵のローテーション
暗号期間が終了する前、侵害が疑われる場合、または人員変更後に鍵をローテーションします。新しい鍵でデータを再暗号化するか、エンベロープ暗号化を使用してKEKだけをローテーションします。
エンベロープ暗号化のパターン
ランダムなデータ暗号化キー(DEK)でデータを暗号化します。DEKは、KMSに保管された鍵暗号化キー(KEK)で暗号化します。ローテーション時には、すべてのデータではなくDEKだけを再暗号化します。
import os
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
# Generate a fresh DEK for each data blob
dek = os.urandom(32)
aesgcm = AESGCM(dek)
nonce = os.urandom(12)
ciphertext = aesgcm.encrypt(nonce, b"sensitive data", None)
# DEK is then encrypted by KEK (stored in KMS) before persistenceフェーズ6:アーカイブ
古いデータを復号するために、一部の鍵をアーカイブする必要があります(長期バックアップ用の鍵など)。アーカイブした鍵はオフラインで保管し、通常はm-of-nの管理者アクセスが必要なハードウェアトークンなどに保存します。
フェーズ7:破棄
鍵の破棄は暗号学的に安全な方法で行う必要があります。メモリを上書きし、HSMの鍵スロットを破壊し、物理メディアを裁断します。証明書の失効は、公開鍵における鍵の破棄に相当するPKIの仕組みです。
鍵の侵害への対応
鍵の侵害が疑われる場合は、直ちに失効させてCRLを公開し、新しい鍵へローテーションし、影響を受けるすべてのデータを再暗号化し、不正利用がないかログを監査し、侵害に関する規制に従って影響を受ける当事者に通知します。
理解度チェック
鍵のローテーションにおけるエンベロープ暗号化の主な利点は何ですか。
レッスンのまとめ
鍵のライフサイクルは、生成から破棄までの7つの段階にわたります。エンベロープ暗号化は、DEK(データの暗号化)とKEK(鍵の管理)を分離し、効率的なローテーションを可能にします。破棄は暗号学的に安全な方法で行う必要があります。侵害への対応は迅速に行い、監査する必要があります。
よくある質問
「鍵のライフサイクル:生成、保存、ローテーション、破棄」レッスンは無料ですか?
はい。「鍵のライフサイクル:生成、保存、ローテーション、破棄」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。
「鍵のライフサイクル:生成、保存、ローテーション、破棄」で何を学びますか?
暗号鍵のライフサイクルにおける各段階と、それぞれのリスクを定義します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cryptology Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「鍵のライフサイクル:生成、保存、ローテーション、破棄」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCryptology Academyレッスンでコードを書いて実行できますか?
はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 鍵のライフサイクル:生成、保存、ローテーション、破棄
- HSMのアーキテクチャとPKCS#11インターフェース
- AWS KMS、GCP Cloud KMS、Azure Key Vault
- 鍵の預託、バックアップ、復旧手順