鍵のラッピング

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

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

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

鍵マテリアルが適切な形式に変換されると、Cloud KMS に送信する前に Google Cloud CLI によって鍵マテリアルが自動的にラップされます。詳しくは、鍵のインポートをご覧ください。また、適切な暗号プロトコルを使用して手動でラップすることもできます。方法については、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
RSA_OAEP_3072_SHA256_AES_256(推奨) 3072 ビット RSA SHA-256 と AES-KWP を使用する RSAES-OAEP
RSA_OAEP_4096_SHA256_AES_256 4096 ビット RSA SHA-256 と AES-KWP を使用する RSAES-OAEP
RSA_OAEP_3072_SHA256 3072 ビット RSA SHA-256 を使用する RSAES-OAEP
RSA_OAEP_4096_SHA256 4096 ビット RSA SHA-256 を使用する RSAES-OAEP

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

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

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

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

  1. インポート ジョブの公開鍵は、1 回限りの AES-256 鍵の暗号化に使用されます。暗号化は、RSAES-OAEP と MGF-1 とともに、インポート方法で指定されたダイジェスト アルゴリズムを使用して実行されます。ラッピングの実行時に 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 を使用して鍵をラップするでご確認ください。

SHA-256 を使用する RSAES-OAEP

これは、インポート ジョブの公開鍵と RSAES-OAEP を、MGF-1 および SHA-256 ダイジェスト アルゴリズムを使用してターゲット鍵マテリアルを直接暗号化する非対称鍵ラッピング オペレーションです。これは PKCS #11 RSA OAEP メカニズム CKM_RSA_PKCS_OAEP の手法を使用したものです。なお、CKM_RSA_PKCS_OAEP で説明されているとおり、RSA モジュラスのサイズに対して、ラップする鍵のマテリアル サイズには上限があります。