4.8

View in English

4.8 暗号と鍵管理

概要と動機

構築するほとんどすべてのシステムは、すでに暗号に依存しています。暗号とは、意図された当事者だけが読んだり信頼したりできるよう、数学的な技法を使って情報を守る実践です。ウェブのトラフィックは暗号化された経路に乗り、パスワードはハッシュ化され、ソフトウェアの更新は署名され、顧客のデータはディスク上で暗号化されています。ほとんどのエンジニアにとって良い知らせは、これらのどれも発明するよう求められないことです。難しい部分は数学ではありません。検証済みの部品を正しく使うこと、そして何より、それらの部品が依存する鍵を管理することです。

本章は、暗号の専門家ではないエンジニア、つまり私たちのほぼ全員のために書かれています。健全な選択をし、各道具が何を保証するかを知り、強いアルゴリズムを偽りの安心に変える間違いを避けるのに、十分な理解が必要です。4.3章(インフラストラクチャとクラウドのセキュリティ)は暗号化と鍵管理に触れていますが、ここでは、何を暗号化するか、どう暗号化するか、そしてそれを現実にする鍵のライフサイクルをどう運用するかに、さらに深く入ります。

大企業にとって、暗号は数千のサービス、証明書、鍵にわたって広がり、期限切れの一つの証明書や失われた一つの鍵が、重要なシステムを停止させたり、データストアを漏洩させたりしえます。政府にとって、暗号はしばしば義務づけられ、検証され、監査され、どの鍵がどの秘密を守り、誰が保持してよいかを正確に定めるデータ分類のルールがあります。どちらの設定でも、繰り返される失敗は同じです。ずさんな鍵管理に台無しにされる、良いアルゴリズム。

主要原則

  • 暗号を自作しない。 検証済みで広くレビューされたライブラリと標準のアルゴリズムを使います。新奇な方式は、専門家だけが捉える形で失敗します。
  • アルゴリズムは易しい部分で、鍵が難しい部分です。 鍵のライフサイクルは、現実の失敗のほとんどが住む所です。
  • 各プリミティブが何を保証するかを知る。 機密性、完全性、真正性は異なる性質で、異なる道具を要します。
  • 転送中と保存時を既定で暗号化する。 保護を、オプトインではなく標準にします。
  • 鍵の保管をデータのアクセスから分離する。 鍵を管理する人が、それが守るデータを自動的に読めるべきではありません。
  • 変化に備える。 アルゴリズムは弱まり、鍵は漏洩し、標準は進化します。初日からローテーションと移行に向けて築きます。
  • 重要な所では検証済みの実装を好む。 規制対象と政府の仕事には、認められた検証を受けたモジュールを選びます。

推奨事項

暗号を自作しない

これは黄金律で、最初に述べる価値があります。独自の暗号化アルゴリズムを設計したり、独自のプロトコルを発明したり、論文からプリミティブを手で実装したりしてはいけません。動く暗号は単純に見え、何年もの専門家のレビューだけが生き延びる、微妙な失敗モード(タイミングのサイドチャネル、パディングオラクル、弱い乱数)を隠しています。プラットフォームの標準の暗号モジュールや評価の高いライブラリのような、確立されたライブラリを使い、利用できる最も高い抽象度で使ってください。低レベルの部品を自分で組み立てるのではなく、認証付き暗号のモードと、安全な選択を既定にする「易しい」インターフェースに手を伸ばします。

必要な保証にプリミティブを合わせる

異なる道具は異なる保証を提供し、それらを混同することはよくある危険な間違いです。三つの主要なファミリーを学んでください。

  • 共通鍵暗号は、暗号化と復号の両方に一つの共有の秘密鍵を使います。速く、機密性を守りますが、両当事者がすでに鍵を共有していなければなりません。AESが標準の主力です。
  • 公開鍵暗号は、数学的に結びついた鍵のペアを使います。誰もが持てる公開鍵と、秘密に保つ秘密鍵。鍵の配布を解決し、デジタル署名を可能にして、真正性(誰が送ったか)と完全性(改ざんされていないこと)を証明します。
  • 暗号学的ハッシュ関数は、データの固定サイズの指紋を生成し、完全性のチェックを提供します。ハッシュは一方向で、暗号化ではありません。パスワードを保存するには、単純な速いハッシュではなく、遅くてソルト付きのパスワードハッシュ関数を使います(アプリケーションセキュリティの4.2章を参照)。

実用的な教訓。暗号化はデータを隠しますが誰が送ったかを証明せず、ハッシュは改ざんを検出しますが何も隠しません。実際のシステムのほとんどはそれらを組み合わせ、だからこそ、これらを正しく束ねるライブラリに頼るべきなのです。

現行のTLSで転送中を暗号化する

システム間でデータが動くときにそれを守るプロトコルであるトランスポート層セキュリティ(TLS)で、すべてのネットワークの跳躍を保護します。現代のTLSのバージョンを要求し、古いものを無効にし、強い暗号スイートを選び、「動かすために」チェックを無効にするのではなく、証明書を適切に検証します。ゼロトラストの姿勢は内部のネットワークが敵対的だと想定するので、公開の縁だけでなく、内部のサービス間トラフィックも暗号化します。証明書の発行と更新を自動化し、TLSがあらゆる所で苦労のない既定になるようにします。

エンベロープ暗号化で保存時を暗号化する

保存されたデータを既定で暗号化します。データベース、オブジェクトストレージ、バックアップ、ログ。標準のパターンはエンベロープ暗号化で、データ暗号化鍵(DEK) が実際のデータを暗号化し、鍵管理サービスに保持された鍵暗号化鍵(KEK) がDEKを暗号化します。これにより、テラバイトのデータを再暗号化せずにマスター鍵をローテーションでき、強力なルート鍵を強化された境界の内側に保てます。ラップされたDEKだけをデータの隣に保存し、使用時に取得して展開します。

鍵のライフサイクルを意図して運用する

鍵のライフサイクルは暗号の本当に難しい部分であり、侵害と障害のほとんどが起源を持つ所です。すべての段階を意図して管理します。

  • 生成: 強い乱数源から、適切な強度で鍵を作ります。
  • 配布: コード、設定ファイル、チャットに露出させずに、必要とするシステムへ鍵を届けます。
  • ローテーション: 予定に沿って鍵を入れ替え、侵害の疑いがあるときに素早くローテーションできるようにします。
  • 失効: 侵害された鍵や証明書を素早く無効にし、システムが失効を尊重することを確認します。
  • 破棄: 古い鍵の素材を安全に退役させ、復元できないようにします。

これを集中させるために鍵管理サービス(KMS) を使い、最も保証の高い鍵には、鍵がプレーンテキストで出ていかないよう生成して守る改ざん耐性のある装置、ハードウェアセキュリティモジュール(HSM)を使います。鍵を管理できる人を、保護されたデータを読める人から分離し、鍵の保管が職務の分離を徹底するようにします。これは、4.5章(プライバシーとデータ保護)のデータ分類と保管のルールに直接つながります。

シークレット管理と鍵管理を区別する

これらは重なりますが、同じではありません。鍵管理は、暗号学的な鍵とそのライフサイクルを統治し、通常は、生の鍵が決して出ていかないよう、代わりに暗号の操作を行うKMSやHSMの内側で行われます。シークレット管理は、サービスがプレーンテキストで取得して使う必要のあるアプリケーションの資格情報(データベースのパスワード、APIトークン、証明書)を統治し、通常は、短命で監査されるアクセスを伴うシークレットのボルトからです。鍵にはKMS、資格情報にはシークレットマネージャーを使い、どちらもソースコードやバージョン管理にチェックインされた環境ファイルに貼り付けてはいけません。

PKIと証明書のライフサイクルを自動化する

公開鍵基盤(PKI) は、公開鍵をアイデンティティに結びつける、認証局、証明書、信頼の連鎖のシステムです。規模では、支配的なPKIのリスクは、サービスを落とす不意の証明書の期限切れです。すべての証明書の目録を維持し、期限を監視し、人間が覚えている必要がないよう、発行と更新を自動化します。自動的に更新される短命の証明書は、手作業で世話をされる長寿命のものより安全です。自動化が人間という単一障害点を取り除くからです。ここでの標準プロトコルは、ベンダー間の相互運用性をサポートします(相互運用性とオープン標準の3.8章)。

暗号のアジリティと耐量子への移行に備えて築く

アルゴリズムは時間とともに弱まり、標準は動きます。暗号のアジリティとは、苦痛な書き直しなしにアルゴリズムと鍵のサイズを入れ替えられるようにシステムを設計することです。暗号を小さなインターフェースの背後に抽象化し、暗号化したデータにバージョンを付けてどのアルゴリズムが生成したかがわかるようにし、何をどこで使っているかの暗号の目録を保ちます。これは、将来の量子コンピューターに耐えるよう設計された新しいアルゴリズムのファミリーである耐量子暗号のために、今重要です。敵対者は今日暗号化されたデータを収穫して、後で復号できるので、長寿命の秘密には移行計画が必要です。パニックになる必要はありませんが、目録を知り、プラットフォームが出荷するにつれて、標準化された耐量子アルゴリズムを採用する準備をしておくべきです。

必要な所では検証済みの実装を好む

規制対象と政府のシステムでは、強いアルゴリズムを使うだけでは足りません。実装が検証されていなければなりません。FIPS 140(連邦情報処理標準140)は、暗号モジュールを検証するための米国の標準で、多くの契約がFIPS検証済みの暗号を要求します。政府の仕事は、機密システムのためのNSAの商用国家安全保障アルゴリズム(CNSA)スイートのような国のガイダンスにも従うかもしれません。築く前にどの制度が適用されるかを確認してください。検証済みのモジュールを遅れて後付けするのは高価だからです。これは、コンプライアンスの証拠とガバナンス(4.6章)に結びつきます。

トレードオフ: 長所と短所

決定長所短所
プロバイダー管理のKMS易しく、統合され、運用の負担が低いプロバイダーが保管する。直接の制御が少ない
顧客管理の鍵 / HSM完全な保管。厳格な義務を満たす運用のオーバーヘッド。鍵を失うリスク
自動化された短命の証明書不意の期限切れがない。素早い失効事前に自動化への投資が必要
長寿命の証明書単純で、動く部品が少ない人間が管理する期限切れが障害を起こす
エンベロープ暗号化安い鍵のローテーション。マスター鍵を守る理解すべき動く部品が増える
事前の暗号のアジリティ将来の移行が安い今、追加の抽象化と設計の労力
早期の耐量子の採用長寿命の秘密を守る未成熟なツール。大きな鍵。いくらかのリスク

中心的な緊張は、制御対運用の負担です。自分の鍵をHSMに保持することは、最大の保管を与えて最も厳しい義務を満たしますが、専門知識を要し、新しい壊滅的なリスクを作ります。鍵を失えば、データを失い、回復できません。プロバイダー管理のサービスはその負担を取り除きますが、保管をプロバイダーに置きます。層にして解決してください。ほとんどのシステムには、妥当な既定を備えたマネージドサービスを使い、追加の制御がコストとリスクに見合う、最も高い分類のデータのために、顧客管理の鍵とHSMを取っておきます。

チームで議論すべき問い

  1. 鍵、証明書、依存しているアルゴリズムの完全な目録がありますか。 見えないものは、ローテーションも、移行も、監査もできず、ほとんどの組織は、誰も追跡している以上に多くの暗号の素材が、サービスに散らばっていることを発見します。目録は、あらゆる後の決定の前提条件です。証明書の期限の監視、鍵のローテーション、FIPSのスコープ付け、耐量子の計画は、すべてそれに依存します。現在の証明書とその期限の一覧を持ち込み、それぞれを誰が所有し、失効すると何が壊れるかを問ってください。大きな資産群では、誠実な答えは通常、単一の真実の源が存在しないというもので、それを築くことが最もてこの効く最初の一歩です。今日、暗号を列挙できないなら、アジリティとローテーションは、能力ではなく願望です。

  2. 侵害された鍵を素早くローテーションあるいは失効でき、それを演習したことがありますか。 ローテーションと失効は、圧力のもとでしか重要にならない鍵のライフサイクルの部分で、チームはインシデントの間に、鍵が十数か所にハードコードされていたり、失効が実際には伝播しなかったりすることを日常的に発見します。鍵をローテーションし、証明書を失効させる目標時間を決め、必要になる前に演習してください。最後の資格情報の露出の話を持ち込み、ローテーションが実際に何を要したかをたどります。企業と政府のシステムでは、演習されていないローテーションは、長引く露出と、自ら招く障害の間の選択を意味しえます。ローテーションが一度もテストされていないなら、機能しないと想定してください。

  3. 鍵の保管はどこにあり、それは職務の分離を徹底していますか。 鍵を管理できる人と、それが守るデータを読める人は、同じ人であってはなりません。それらの権限を併合することは、保存時の暗号化の目的を静かに損なうからです。この選択は、プロバイダー管理の鍵、顧客管理の鍵、HSMのどれを使うかも駆動し、それぞれ異なる制御と異なる運用上のリスクを持ちます。現在の鍵の方針を持ち込み、単一のアイデンティティが鍵を管理し、かつその背後の平文にアクセスできるかを確認してください。それはよくある静かなギャップです。規制対象と機密のデータでは、保管のルールがデータ分類(4.5章)と義務によって定められることがあります。保管とアクセスが分離されていなければ、暗号化はダッシュボードが示すより少ししかあなたを守っていません。

  4. エンベロープ暗号化を守るマスター鍵が失われたり破壊されたりしたら、どう回復しますか。 顧客管理の鍵とHSMは保管を与えますが、新しい壊滅的な失敗のモードを手渡します。鍵暗号化鍵を失えば、それがラップするすべてのデータ暗号化鍵が、その背後のデータとともに永久に読めなくなります。これを、解決しようとしていた保管の問題をまさに静かに再現する、広すぎるバックアップの反対のリスクと量ってください。現在の鍵のバックアップとエスクローの取り決め、各マスター鍵の影響範囲、復元が単に文書化されているだけでなく実際に行われたことの証拠を持ち込んでください。企業と政府の資産群では、これをデータ分類のルールに結びつけます。最も機微な鍵はしばしば気軽なコピーを禁じるので、回復は意図して設計され、予定に沿ってテストされ、退役した鍵の素材が破棄されたことを証明する規制上の要件と調整されなければなりません。

  5. システムは耐量子への移行にどれだけ備えができていて、どの長寿命の秘密を最初に移行しますか。 敵対者は今日、暗号化されたトラフィックとアーカイブを収穫し、量子コンピューターが成熟したときに復号できるので、何年も機密に保たねばならないどんな秘密も、すでに、見えない未来にさらされています。相反する圧力は、耐量子のツールがまだ若く、鍵が大きく、早く動きすぎると、定着する前にずれるアルゴリズムに賭けるリスクがあることです。暗号の目録、秘密を機密であり続けねばならない長さでランク付けした一覧、アーキテクチャが書き直しなしにアルゴリズムを入れ替えられるかについての誠実な見立てを持ち込んでください。政府と規制対象の仕事では、数十年の機密性の義務を持つ記録が、これを理論ではなく具体的にし、調達はまもなく、文書化された移行計画と標準化された耐量子アルゴリズムのサポートを求めるかもしれません。

  6. 規制が検証済みの暗号を求めるとき、どのモジュールがスコープに入り、それらが資格を満たすかを正確に知っていますか。 強いアルゴリズムを使うことは、検証済みの実装を使うことと同じではなく、チームは、ライブラリ、言語のランタイム、クラウドのサービスが、契約が求めるFIPS 140の境界に覆われていないことを、日常的に遅れて発見します。緊張は、検証済みのモジュールが機能と速度で現行のライブラリに遅れうることで、それを選ぶことが、エンジニアリングに重要な形でスタックを制約します。各規制対象システムが実際に呼ぶ暗号モジュールの一覧、それらを覆う検証証明書、適用される具体的な義務(FIPS 140、CNSA、あるいは業界の規則)を持ち込んでください。企業と政府のプログラムでは、築く前にこれを決めてください。検証済みのモジュールの後付けと、事後のシステムの再認可は、高価で遅く、完成したと思っていたまさにその構成要素の再設計をしばしば強いるからです。

セクター別の視点

スタートアップ。 プラットフォームの検証済みの既定に全面的に頼り、独自の暗号にエンジニアリングの時間をゼロにしてください。マネージドな保存時の暗号化をオンにし、自動更新される証明書でTLSを終端し、標準の遅い関数でパスワードをハッシュ化し、シークレットはリポジトリではなくプラットフォームのシークレットマネージャーに保ちます。唯一の設計上の決定は、アプリケーションで暗号化する少数の項目の周りの薄いインターフェースで、プロバイダー管理の鍵から将来離れることが書き直しにならないようにします。

小規模事業者。 暗号の専門家はおらず、HSMを運用する意欲もほとんどないので、保管を築くのではなく買ってください。クラウドやSaaSのツールに付属するプロバイダー管理のKMSとシークレットマネージャーを使います。仕事を衛生として枠づけてください。コードに鍵を置かない、あらゆる所で既定で暗号化をオンにする、何も不意に失効しないよう証明書の期限を監視する。顧客管理の鍵は、契約や規制当局が本当に要求する、まれなデータのために取っておきます。

大企業。 問題は、数千のサービス、証明書、鍵にわたる規模と一貫性です。エンベロープ暗号化を伴う集中したKMSを運用し、期限が手作業で世話されないよう完全な証明書のライフサイクルを自動化し、ローテーション、FIPSのスコープ付け、耐量子の計画に流れ込む単一の暗号の目録を維持します。鍵の保管をデータのアクセスから分離することを組織全体の統制とし、暗号化を、各チームが再発明する作業ではなく、すべてのチームが引き継ぐプラットフォームの能力にしてください。

政府。 調達、検証、監査があらゆる選択を形づくります。FIPS 140検証済みのモジュールを使い、機密システムにはCNSAのような国のガイダンスに従い、最も機微な鍵が厳格な職務の分離のもとで適格性を持つ要員に置かれるよう鍵の保管をデータ分類に結びつけ、継続的な認可のために検証済みの暗号の継続的な証拠を生成します。数十年機密であり続けねばならない記録のために、文書化された耐量子の移行計画を持ち、コミットする前に、どのモジュールが検証済みかをベンダーに開示するよう求めてください。

事例

スタートアップ。 ヘルストラッキングのアプリを築く小さなチームは、検証済みの既定に全面的に頼ります。自動更新される証明書でTLSを終端し、マネージドなデータベースとオブジェクトストレージの保存時の暗号化をプロバイダーのKMSでオンにし、標準ライブラリの遅くてソルト付きの関数でパスワードをハッシュ化します。自分で暗号を一切書く代わりに、アプリケーションで暗号化しなければならない一つの項目に、高レベルの認証付き暗号の呼び出しを使います。シークレットはプラットフォームのシークレットマネージャーにあり、リポジトリには決してありません。数回の午後で済み、壊滅的な間違いのカテゴリー全体を取り除きます。

大企業。 世界的な銀行は、集中したKMSとHSMのフリートを運用し、数千のサービスにわたるすべての鍵と証明書を追跡する暗号の目録を持ちます。エンベロープ暗号化が顧客データを守り、データ鍵は、データがそのままで予定に沿ってローテーションされるマスター鍵でラップされます。一つの期限切れの証明書のコストを公開の障害が教えた後、証明書の発行と更新は完全に自動化されました。鍵の管理者はアプリケーションのエンジニアとは別のチームなので、保管が職務の分離を徹底し、暗号のアジリティの層により、長寿命のアーカイブのために耐量子アルゴリズムの試験を始められます。

政府。 機密の記録を扱う国の機関は、FIPS 140検証済みの暗号モジュールだけを使い、最も高い分類のシステムにはNSAのCNSAのガイダンスに従います。鍵は、プレーンテキストの鍵の素材を決して放出しないHSMで生成され保持され、最も機微な鍵が厳格な職務の分離のもとで適格性を持つ要員に置かれるよう、保管はデータ分類に結びついています。証明書は自動化されたライフサイクルを持つ管理された内部PKIで動き、検証済みの暗号の継続的な証拠が、機関の継続的な認可に流れ込みます。文書化された耐量子の移行計画が、数十年機密であり続けねばならない記録を守ります。

ビジネスケース: 動機、ROI、TCO

暗号も、控えめな投資が、壊滅的で見出しになる損失を防ぐ領域です。総所有コストには、KMSやHSM、シークレットと証明書の管理ツール、ライフサイクルを設計して目録を最新に保つエンジニアリングの時間が含まれます。これらのコストは本物ですが有界です。飛ばすコストは、暗号化されていないデータの侵害、期限切れの証明書による数時間の障害、あるいは誤って扱われた鍵による回復不能なデータ損失で、それぞれ規制上の罰金、通知のコスト、長引く評判の損害を伴います。

最も強いROIは、自動化と再利用から来ます。自動化された証明書のライフサイクルは、自ら招く障害の、単一で最もよくあるものを排除します。妥当な既定を備えた集中した鍵管理は、すべての新しいサービスが、チームごとの労力なしに転送中と保存時の暗号化を引き継ぐことを意味し、暗号を繰り返す税からプラットフォームの能力に変えます。規制対象と政府の仕事では、検証済みのモジュールと自動化された証拠も、監査と認可のコストを下げます。リーダーシップに論拠を示すときは、率直に枠づけてください。アルゴリズムは無料で実証済みで、リスクは鍵管理と証明書の運用にあり、そこへの小さく自動化された投資が、高価な失敗を防ぎます。

アンチパターンと落とし穴

  • 暗号の自作。 微妙な、専門家だけが気づく形で失敗する、独自のアルゴリズムや手作りのプロトコル。
  • ハードコードされた鍵とシークレット。 ソースコード、設定ファイル、チャットに貼り付けられた資格情報で、漏洩し、ローテーションできないこと。
  • 鍵の規律のない暗号化。 暗号化をオンにしても、鍵へのアクセスを広く開いたままにするか、ローテーションしないこと。
  • ハッシュと暗号化の混同。 ハッシュを元に戻せるものとして扱ったり、遅くてソルト付きのものではなく速いハッシュでパスワードを保存したりすること。
  • 証明書のルーレット。 目録なし、期限の監視なしで、証明書が失効したときに定期的に不意の障害が起こること。
  • 併合された鍵の保管とデータのアクセス。 鍵を管理でき、かつそれが守るデータを読める一つのアイデンティティ。
  • ローテーションの計画がない。 一度もローテーションされず、圧力のもとで素早くローテーションできない鍵。
  • アジリティのない暗号。 アルゴリズムがあまりに深く配線され、入れ替えに書き直しを要し、将来の移行を妨げること。
  • 検証の義務の無視。 FIPSや同様の検証が求められる所で、検証されていないモジュールで強いアルゴリズムを使うこと。

成熟度モデル

  • レベル1、開始: 暗号化は一貫せず、しばしば存在せず、誰かがギャップに気づいたときに反応的に適用されます。鍵とシークレットはハードコードされるか、チャットや設定ファイルで非公式に共有されます。目録もローテーションもなく、証明書は不意に失効し、チームは時に独自の暗号を書きます。
  • レベル2、発展: TLSと保存時の暗号化は主要なシステムでオンになり、KMSやシークレットマネージャーは存在しますが、採用は不均一でチームごとに異なります。一部の証明書は監視され、他は監視されず、ローテーションは手作業でまれで、それをまとめる完全な暗号の目録はありません。
  • レベル3、標準化: 転送中と保存時の暗号化が、組織全体で徹底される文書化された既定です。鍵は予定されたローテーションとエンベロープ暗号化を伴うKMSにあり、鍵の保管はデータのアクセスから分離され、証明書のライフサイクルは自動化され、暗号の目録が維持され、規制が求める所では検証済みのモジュールが使われます。
  • レベル4、管理: 暗号の資産群が、ベースラインに対して測定され、制御されています。証明書の期限までの余裕、予定どおりにローテーションされた鍵の割合、侵害された鍵を失効させる平均時間、期間ごとのコード内シークレットの検出、目録のカバレッジを追跡し、これらの指標を目標に対してレビューします。ローテーションと失効は、記録された時間とともに周期的に演習され、逸脱は、気づかれずに終わるのではなく、是正の行動を引き起こします。
  • レベル5、オーケストレーション: 暗号は、すべてのサービスが既定で引き継ぐプラットフォームの能力で、組織全体で継続的に改善され統合されています。ローテーションと失効は速く、日常的に行使され、HSMが最も保証の高い鍵を守り、暗号のアジリティと活発な耐量子の移行計画が、アルゴリズムと義務が変わるにつれて資産群を適応的に保ちます。コンプライアンスの証拠は自動的に生成され、継続的な認可に流れ込みます。

議論のためのアイデア

  1. 運用コストと壊滅的な損失のリスクを考えると、資産群のどのシステムが顧客管理の鍵やHSMを正当化しますか。
  2. 所有するすべての鍵と証明書の単一の真実の源を、どう築いて維持しますか。
  3. 侵害された鍵を今日ローテーションする現実的な時間は何で、何がそれを遅くしていますか。
  4. アーキテクチャのどこで暗号アルゴリズムの入れ替えが難しく、強制された移行の前にそれをどう直しますか。
  5. 敵対者が今それを収穫して何年も後に復号したら、長寿命の秘密のどれが重要になりますか。
  6. シークレットや鍵がコード、設定、ログに入り込むことはありますか。そしてそれをどうやって知りますか。

要点

  • 暗号を自作しない。 検証済みのライブラリと標準のアルゴリズムを、安全な最も高い抽象度で使います。
  • アルゴリズムは易しく、鍵管理は難しい。 鍵のライフサイクル(生成、配布、ローテーション、失効、破棄)が、現実の失敗が住む所です。
  • 保証を知る: 共通鍵と公開鍵の暗号化は機密性を守り、署名は真正性と完全性を証明し、ハッシュは改ざんを検出しますが暗号化ではありません。
  • 現行のTLSで転送中を、エンベロープ暗号化で保存時を暗号化する。 すべてのシステムの既定として。
  • 鍵の保管をデータのアクセスから分離し、 鍵にはKMS、資格情報にはシークレットマネージャーを使い、どちらもハードコードしないこと。
  • 証明書のライフサイクルを自動化し、 不意の期限切れによる障害を撲滅し、暗号の目録を保ちます。
  • 暗号のアジリティに向けて築き、 長寿命の秘密のための耐量子の移行計画を始めます。
  • 規制や分類が求める所では、検証済みの実装(FIPS 140と該当する国のガイダンス)を好みます。

参考文献とさらなる読み物

  • National Institute of Standards and Technology, FIPS 140-3: Security Requirements for Cryptographic Modules.
  • National Institute of Standards and Technology, SP 800-57: Recommendation for Key Management.
  • National Institute of Standards and Technology, SP 800-131A: Transitioning the Use of Cryptographic Algorithms and Key Lengths.
  • National Institute of Standards and Technology, post-quantum cryptography standards (FIPS 203, 204, and 205).
  • Niels Ferguson, Bruce Schneier, and Tadayoshi Kohno, Cryptography Engineering.
  • Jean-Philippe Aumasson, Serious Cryptography.
  • David Wong, Real-World Cryptography.
  • Internet Engineering Task Force, RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3.
  • Open Web Application Security Project, Cryptographic Storage Cheat Sheet and Transport Layer Protection Cheat Sheet.
  • National Security Agency, Commercial National Security Algorithm (CNSA) Suite guidance.