この夏、AWSはAWS Key Management Service (KMS)が楕円曲線ディフィー・ヘルマン(ECDH)鍵合意をサポートすると発表した。AWSのセキュリティチームは最近、新しい DeriveSharedSecret API が導出した共有シークレットを使って安全な通信チャネルを確立する方法を示した。
ECDHは楕円曲線公開鍵と秘密鍵のペアを持つ2つの当事者が、安全でないチャネル上で共有シークレットを確立することを可能にする匿名鍵合意プロトコルである。AWSのprincipal security specialist solutions architect Patrick Palmer氏、AWSのソフトウェア開発マネージャーMichael Miller氏、AWSのsenior solutions architect Raj Puttaiah氏はAWS KMSとOpenSSLを使用して2つの当事者が共有シークレットを導出する方法をデモし、説明している:
この新しい DeriveSharedSecret API アクションにより、お客様は相手側の公開鍵を取得し、AWS KMS内に存在する秘密鍵と組み合わせて、鍵導出関数(KDF)で対称暗号鍵を導出するために使える共有シークレットを導出できます。その後お客様はこの対称暗号化鍵を使用してアプリケーション内でローカルにデータを暗号化できます。
開発者がシークレットと共に使用する鍵導出関数(KDF)の選択を簡略化するために、AWS Encryption SDKは、KMS ECDHキーリング - 開発者がコード内に実装できる構造体を含むようになった。AWSによると、ECDH鍵合意はハイブリッド暗号化スキームの重要な構成要素として、またはAWS Nitro Enclavesのようなリモートデバイスや分離されたコンピューティング環境でシークレットを暗号化するために役立つ。
出典:AWSブログ
対称鍵とアルゴリズムはその速度と効率性から一般的に好まれているが、交換の当事者のみが同じ鍵にアクセスできることを確実化するのが難しいため、信頼できないネットワーク上でデータ交換する場合には理想的ではない。Palmer氏、Miller氏、およびPuttaiah氏は付け加えた:
非対称鍵ペアとアルゴリズムは、信頼できないネットワーク上で公開鍵を共有することで、この問題の解決に役立ちます。そして鍵合意スキームを使うことで2つの当事者はお互いの公開鍵と自分の秘密鍵を組組み合わせて同じ共有シークレットを導出できます。
長年のコミュニティからの要望であったECDHのサポートは、ハイブリッド暗号化方式や、リモートデバイスおよび分離されたコンピューティング環境でのシークレットの暗号化に特に有用である。AWSの senior solutions architect Christian Zemella氏はまとめた:
他の当事者の公開鍵と、AWSの鍵管理サービス(KMS)内にある自身の楕円曲線KMS鍵を用いて、FIPS 140-2認証済KMSハードウェアセキュリティモジュール(HSM)のセキュリティ境界内で共有シークレットを導出できます。この共有シークレットはアプリケーション内で対称暗号化アルゴリズムを使用して2者間でデータを暗号化・復号化するための対称鍵を導出するために使用できます。
新しいAPIはクロスアカウント使用をサポートしており、すべてのAWSリージョンで利用できる。共有シークレットを導出するには、開発者は鍵合意アルゴリズム、呼び出し側の非対称NIST推奨楕円曲線の秘密鍵、相手のNIST推奨楕円曲線の公開鍵を指定しなければならない。公開鍵は、別の非対称 KMS 鍵ペアでも、AWS KMS外部で生成された鍵ペアでもよいが、両者は同じ楕円曲線上になければならない。
開発者はCloudTrailのログを通して、新しい DeriveSharedSecret APIを含むAWS KMSキーの使用状況を監査できる。