鍵のラッピング

鍵のラッピングは、鍵を安全に保管する場合や、信頼できないチャネルで送信する場合に、鍵を別の鍵で暗号化する処理です。鍵のラッピングは、コンテキストに応じて対称または非対称のいずれかの暗号を使用します。

Cloud KMS では、ユーザーが指定した暗号鍵を安全にインポートするために鍵のラッピングを使用します。鍵をインポートするには、インポート ジョブが必要です。各インポート ジョブには、鍵のラッピングに使用するプロトコルをインポート方法として指定する必要があります。

Cloud KMS は、インポートされる鍵マテリアルが特定の形式になっていることを想定しています。鍵マテリアルをインポート用にラップする前に、Cloud KMS が想定している形式に変換する必要があります。必要な形式の詳細と鍵の変換方法については、鍵をインポート用にフォーマットするをご覧ください。

鍵マテリアルが適切な形式に変換されると、Cloud KMS に送信する前に gcloud コマンドライン ツールによって鍵マテリアルが自動的にラップされます。詳しくは、鍵のインポートをご覧ください。また、適切な暗号プロトコルを使用して手動でラップすることもできます。方法については、Linux で OpenSSL を使用して鍵をラップするをご覧ください。

インポート方法

Cloud KMS には、次のインポート方法があります。

インポートの方法 インポート ジョブの鍵のタイプ 鍵のラッピング アルゴリズム
RSA_OAEP_3072_SHA1_AES_256(推奨) 3072 ビット RSA SHA-1 と AES-KWP を使用する RSAES-OAEP
RSA_OAEP_4096_SHA1_AES_256 4096 ビット RSA SHA-1 と AES-KWP を使用する RSAES-OAEP

鍵のラッピング アルゴリズム

Cloud KMS が提供するインポート方法は、次の鍵ラッピング アルゴリズムに対応しています。

SHA-1 と AES-KWP を使用する RSAES-OAEP

この鍵ラップ アルゴリズムは、非対称鍵のラッピングと対称鍵ラッピングの両方のオペレーションで構成されるハイブリッド暗号化方式です。

  1. インポート ジョブの公開鍵と RSAES-OAEP が、MGF-1 と SHA-1 のダイジェスト アルゴリズムによって暗号化され、1 回限りの AES-256 鍵が生成されます。ラッピングの実行時に 1 回限りの AES-256 鍵が生成されます。
  2. 手順 1 で生成された 1 回限りの AES-256 鍵を使用し、パディングによる AES 鍵のラップで対象の鍵マテリアルの暗号化を行います。

ラップされたインポート用の鍵マテリアルは、手順 1 と 2 の結果から構成される 1 バイトの配列です。つまり、手順 1 と手順 2 の結果を連結して、ラップされた鍵マテリアルが生成されています。

このアルゴリズムは、PKCS #11 鍵ラップ アルゴリズムの CKM_RSA_AES_KEY_WRAP と同じです。HSM から鍵をインポートするときに、HSM がこのアルゴリズムをサポートしていれば、鍵を直接使用できます。上記の手順 1 と 2 は、PKCS #11 のメカニズム(それぞれ CKM_RSA_PKCS_OAEPCKM_AES_KEY_WRAP_PAD)を使用して実行できます。

ソース HSM(または HSM を使用していない場合は他の鍵プロバイダ)が RSA AES 鍵ラップ メカニズムをサポートしていない場合、インポート ジョブの公開鍵を使用して鍵マテリアルを手動でラップする必要があります。OpenSSL を使用してこれを行う方法の一例を Linux で OpenSSL を使用して鍵をラップするでご確認ください。