非対称鍵を使用したエンベロープ暗号化とKMS
On 2月 18, 2021 by adminエンベロープ暗号化では、対称秘密鍵を使用してデータに署名し、次に別の鍵を使用して秘密を暗号化して生成します暗号化された秘密鍵。暗号化されたメッセージは暗号化された秘密鍵と一緒にパッケージ化され、クライアント/消費者に送信されます。クライアント/消費者は暗号化された秘密鍵を復号化して秘密鍵を取得し、それを使用してメッセージを復号化します
2つの方法があります実装するには:
- 非対称暗号化:プロデューサーは、コンシューマーの公開鍵を使用して秘密鍵を暗号化します。消費者は秘密鍵を使用して暗号化された秘密を復号化します
- KMS(AWS KMSなど):秘密鍵はKMSによって暗号化され、秘密鍵にアクセスする必要があるクライアントはKMSに次のことを要求する必要があります。復号化
KMSアプローチの利点は、キー管理が一元化されており、クライアントをKMSから削除してキーをローテーションすることで、クライアントからのアクセス許可を取り消すことができることです。
KMSの代わりに非対称キーを使用する正当な理由はありますか?
コメント
- KMSは、分散環境で維持、管理し、単一障害点になる別個のサービスであるという事実に加えて、あなたの質問は"暗号化"の質問ですか、それとも"ロジスティクス"質問?
回答
KMSがキーを保持している場合は、次のように読むことができます。メッセージ。 KMSが侵害された場合、攻撃者は盗んだすべてのキーに関連付けられたすべてのメッセージを読み取ることができます。秘密鍵が受信者だけに保持されている非対称鍵は、受信者だけがメッセージを読むことを許可するため、KMSシステムをのぞく心配はありません。秘密鍵が盗まれた場合、その鍵を使用したユーザーへの電子メールのみが対象になります。 、システム内の全員ではありません。
回答
秘密を保存する場所と、誰が秘密にアクセスできるかがすべてです。 。
最初の説明:あなたは混乱しています。 KMSは、非対称暗号化(公開鍵暗号化とも呼ばれます)を使用しません。秘密鍵暗号化を使用して、エンベロープ暗号化を有効にします。これらは2つの異なるものです。
非対称暗号化では、暗号化の作成者が秘密にアクセスする必要はなく、公開鍵が必要です。プロデューサーは公開鍵を使用して暗号化し、コンシューマーは対応する秘密鍵を使用して復号化します。キーローテーションを容易にするために、プロデューサーは暗号化に使用された公開キーを追加して、コンシューマーが復号化に使用する秘密キーを認識できるようにすることがあります。暗号化されているデータの量に関係なく、秘密鍵に関するヒントはありません。復号化のアルゴリズムは通常、秘密鍵暗号化よりも計算集約的です。
エンベロープ暗号化では、プロデューサーとコンシューマーが同じである必要があります(または両方がマスターキーにアクセスできる必要があります)。マスターキーを使用して、データキーと呼ばれるセカンダリキーを生成します。次に、マスターキーを使用してデータキーを暗号化し、データキーを使用してデータ自体を暗号化し、暗号化されたデータキーを暗号化されたデータに追加します。復号化するときは、マスターキーを使用して追加されたデータキーを復号化し、次に復号化されたデータキーを使用してデータを復号化します。
これの利点は、マスターキーを目的に合わせてコスト効率よく保存できることです。ハードウェアセキュリティモジュールを構築し、暗号化したすべてのデータをHSMに渡さずに、他のモジュールに公開しないでください。 HSM内でキーを生成し、それを取り出さないこともできるため、外部に公開された可能性はありません。KMSはクラウドベースのHSMを提供し、Amazonの物理HSMに支えられています。
マスターキーをHSMに保持する必要がない場合は、ジャンプサーバーなどに配置して安全に保持しようとする独自のキーを使用して、同じ種類の暗号化を実行できます。また、2億5000万TBを超えて暗号化していない限り、エンベロープをスキップできます。
サンプルコードを探している場合は、単純なAES暗号化またはオープンソースプロジェクトを確認することをお勧めするエンベロープ暗号化。活用できるそれぞれの実装があります…
コメントを残す