キーマテリアルのインポート ステップ 2: ラップパブリックキーおよびインポートトークンのダウンロード - AWS Key Management Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

キーマテリアルのインポート ステップ 2: ラップパブリックキーおよびインポートトークンのダウンロード

キーマテリアル AWS KMS keyなしで を作成したら、AWS KMSコンソールまたは GetParametersForImport API を使用して、その KMS キーの RSA ラップパブリックキーとインポートトークンをダウンロードします。ラップパブリックキーとインポートトークンはセットであり分割できないので、組み合わせて使用する必要があります。

ラップパブリックキーは、転送用のキーマテリアルを暗号化するために使用します。ダウンロードする前に、RSA ラップキーペアの長さ (キー仕様) と、インポートしたキーマテリアルを暗号化してステップ 3 で転送するためのラップアルゴリズムを選択します。

各ラップパブリックキーとインポートトークンのセットは 24 時間有効です。それらを 24 時間以内にキーマテリアルのインポートに使用しなかった場合、新しいセットをダウンロードする必要があります。ラップパブリックキーとインポートトークンの新しいセットは、任意のタイミングでダウンロードが可能です。これにより、RSA ラップキーの長さ (キー仕様) を変更したり、紛失したセットを置き換えたりできます。

また、ラップパブリックキーとインポートトークンのセットをダウンロードして、KMS キーに同じキーマテリアルを 再インポートすることもできます。このオペレーションは、キーマテリアルの有効期限を設定もしくは変更したり、期限切れまたは削除済みのキーマテリアルを復元したりする場合に実行します。キーマテリアルは、AWS KMS にインポートするたびにダウンロードと暗号化を行なう必要があります。

ラップパブリックキーの使用

ダウンロードには、ラップパブリックキーとも呼ばれる、AWS アカウント に固有のパブリックキーも含まれます。

キーマテリアルをインポートする前に、ラップパブリックキーにより対象のキーマテリアルを暗号化してから、そのキーマテリアルを AWS KMS にアップロードします。暗号化されたキーマテリアルを受け取った AWS KMS では、対応するプライベートキーを使用してキーマテリアルを復号化した後に、AES対称キーによりそのキーマテリアルを再暗号化します。これらはすべて AWS KMS ハードウェアセキュリティモジュール (HSM) 内で実行されます。

インポートトークンの使用

ダウンロードには、キーマテリアルが正しくインポートされたことを保証するメタデータが付随する、インポートトークンが含まれています。AWS KMS に暗号化されたキーマテリアルをアップロードする場合、このステップでダウンロードした同じインポートトークンをアップロードする必要があります。

ラップパブリックキーの仕様を選択

インポート中にキーマテリアルを保護するには、AWS KMS からダウンロードしたラップパブリックキーと、サポートされているラップアルゴリズムを使用してキーマテリアルを暗号化します。ラップパブリックキーとインポートトークンをダウンロードする前に、キー仕様を選択します。すべてのラップキーペアは、AWS KMS ハードウェアセキュリティモジュール (HSM) で生成されます。プレーンテキストのプライベートキーが、HSM の外部に出ることはありません。

ラップパブリックキーのキー仕様によって、AWS KMS への転送時にキーマテリアルを保護する RSA キーペアにおける、キーの長さが決まります。一般的には、実用的で最長のラップパブリックキーを使用することをお勧めします。各種の HSM やキーマネージャーをサポートするために、いくつかのラップパブリックキー仕様が提供されています。

AWS KMS では、特に明記されていない限り、すべてのタイプのキーマテリアルのインポートに使用される RSA ラップキーについて、以下の主要な仕様をサポートしています。

  • RSA_4096 (推奨)

  • RSA_3072

  • RSA_2048

    注記

    ECC_NIST_P521 キーマテリアル、RSA_2048 パブリックラップキー仕様、および RSAES_OAEP_SHA_* ラップアルゴリズムの組み合わせはサポートされていません。

    RSA_2048 パブリックラップキーを使用して、ECC_NIST_P521 のキーマテリアルを直接ラップすることはできません。大きなラップキー、または RSA_AES_KEY_WRAP_SHA_* ラップアルゴリズムを使用してください。

ラップアルゴリズムの選択

インポート中にキーマテリアルを保護するには、ダウンロードしたラップパブリックキーと、サポートされているラップアルゴリズムを使用して、キーマテリアルを暗号化します。

AWS KMS は、複数の標準 RSA ラップアルゴリズムと、2 段階のハイブリッドラップアルゴリズムをサポートしています。基本的には、インポートしたキーマテリアルおよびラップキー仕様との互換性がある、最も安全なラップアルゴリズムを使用することをお勧めします。通常、ハードウェアセキュリティモジュール (HSM) がサポートするアルゴリズム、またはキーマテリアルを保護するキー管理システムを選択します。

次の表は、キーマテリアルと KMS キーの各タイプでサポートされているラップアルゴリズムを示しています。これらのアルゴリズムは、優先度順にリストされています。

キーマテリアル サポートされるラップアルゴリズムと仕様
対称暗号化キー

256 ビット AES キー

128 ビット SM4 キー (中国リージョンのみ)

ラップアルゴリズム:

RSAES_OAEP_SHA_256

RSAES_OAEP_SHA_1

非推奨となっているラップアルゴリズム:

RSAES_PKCS1_V1

注記

2023 年 10 月 10 日現在、AWS KMS は RSAES_PKCS1_V1_5 ラップアルゴリズムをサポートしていません。

ラップキーの仕様:

RSA_2048

RSA_3072

RSA_4096

非対称 RSA プライベートキー
ラップアルゴリズム:

RSA_AES_KEY_WRAP_SHA_256

RSA_AES_KEY_WRAP_SHA_1

ラップキーの仕様:

RSA_2048

RSA_3072

RSA_4096

非対称楕円曲線 (ECC) プライベートキー

RSA_2048 ラップキー仕様の RSAES_OAEP_SHA_* ラップアルゴリズムを使用して、ECC_NIST_P521 のキーマテリアルをラップすることはできません。

ラップアルゴリズム:

RSA_AES_KEY_WRAP_SHA_256

RSA_AES_KEY_WRAP_SHA_1

RSAES_OAEP_SHA_256

RSAES_OAEP_SHA_1

ラップキーの仕様:

RSA_2048

RSA_3072

RSA_4096

HMAC キー
ラップアルゴリズム:

RSAES_OAEP_SHA_256

RSAES_OAEP_SHA_1

ラップキーの仕様:

RSA_2048

RSA_3072

RSA_4096

  • RSA_AES_KEY_WRAP_SHA_256 – 生成した AES 対称キーでキーマテリアルを暗号化し、その後、ダウンロードした RSA パブリックラップキーと RSAES_OAEP_SHA_256 ラップアルゴリズムによりAES 対称キーを暗号化する、2 段階のハイブリッドラップアルゴリズム。

    RSA プライベートキーマテリアルをラップするには、RSA_AES_KEY_WRAP_SHA_* ラップアルゴリズムが必要です。

  • RSA_AES_KEY_WRAP_SHA_1 – 生成した AES 対称キーでキーマテリアルを暗号化し、その後、ダウンロードした RSA ラップパブリックキーと RSAES_OAEP_SHA_1 ラップアルゴリズムにより AES 対称キーを暗号化する、2 段階のハイブリッドラップアルゴリズム。

    RSA プライベートキーマテリアルをラップするには、RSA_AES_KEY_WRAP_SHA_* ラップアルゴリズムが必要です。

  • RSAES_OAEP_SHA_256 — SHA -256 ハッシュ関数を使用した最適な非対称暗号化パディング (OAEP) を使用する RSA 暗号化アルゴリズム。

  • RSAES_OAEP_SHA_1 — SHA-1 ハッシュ関数を使用した最適な非対称暗号化パディング (OAEP) を使用する RSA 暗号化アルゴリズム。

  • RSAES_PKCS1_V1_5 (廃止。2023 年 10 月 10 日現在、AWS KMS は RSAES_PKCS1_V1_5 ラップアルゴリズムをサポートしていません) – PKCS #1 バージョン 1.5 で定義されているパディング形式を使用した RSA 暗号化アルゴリズム。

ラップパブリックキーとインポートトークンのダウンロード (コンソール)

AWS KMS コンソールを使用して、ラップパブリックキーとインポートトークンをダウンロードできます。

  1. キーマテリアルなしで KMS キーを作成するステップを完了し、ラップキーとインポートトークンのダウンロードのページが開いている場合は、ステップ 9 に進みます。

  2. AWS Management Console にサインインし、AWS Key Management Service (AWS KMS) コンソール (https://console.aws.amazon.com/kms) を開きます。

  3. AWS リージョン を変更するには、ページの右上隅にあるリージョンセレクターを使用します。

  4. ナビゲーションペインで、[カスタマーマネージドキー] を選択します。

    ヒント

    キーマテリアルは、EXTERNAL (キーマテリアルのインポート)  の Origin を持つ KMS キーにのみインポートできます。これは、キーマテリアルなしで KMS キーが作成されたことを示します。テーブルに [オリジン] 列を追加するには、右上隅の設定アイコン ( ) を選択します。[オリジン] をオンにして、[確認] を選択します。

  5. インポート保留中の KMS キーのエイリアスまたはキー ID を選択します。

  6. [ 暗号構成 ] タブを選択し、その値を表示します。これらのタブは、[General configuration] (一般設定) セクションの下にあります。

    キーマテリアルは、EXTERNAL (キーマテリアルのインポート) の Origin として、KMS キーにのみインポートできます。インポートされたキーマテリアルで KMS キーを作成する方法の詳細については、キーの AWS KMS キーマテリアルのインポート を参照してください。

  7. [キーマテリアル] タブを選択し、[キーマテリアルをインポート] を選択します。

    [キーマテリアル] タブは、EXTERNAL (キーマテリアルのインポート)Origin 値が指定された KMS キー に対してのみ表示されます。

  8. [ラップキー仕様の選択] で、使用する KMS キーの設定を選択します。このキーの作成後は、キー仕様を変更することはできません。

  9. [ラップアルゴリズムの選択] で、キーマテリアルの暗号化に使用するオプションを選択します。オプションの詳細については、「ラップアルゴリズムの選択」を参照してください。

  10. [ラップパブリックキーとインポートトークンをダウンロード] を選択した後、ファイルを保存します。

    [次へ] オプションがある場合、今すぐプロセスを続行するには、[次へ] を選択します。後で続行するには、[キャンセル] を選択します。

  11. 前のステップ (Import_Parameters_<key_id>_<timestamp>) で保存した .zip ファイルを解凍します。

    フォルダには以下のファイルが含まれています。

    • WrappingPublicKey.bin という名前のファイルにある、RSA ラップパブリックキー。

    • ImportToken.bin という名前のファイルにある、インポートトークン。

    • README.txt という名前のテキストファイル。このファイルには、ラップパブリックキー、キーマテリアルの暗号化に使用するラップアルゴリズム、およびラップパブリックキーとインポートトークンの有効期限が切れる日時に関する情報が格納されています。

  12. プロセスを続行する場合は、「キーマテリアルの暗号化」を参照してください。

ラップパブリックキーとインポートトークンのダウンロード (AWS KMS API)

パブリックキーとインポートトークンをダウンロードするには、 GetParametersForImport API を使用します。インポートされたキーマテリアルに関連付けられる KMS キーを指定します。この KMS キーには、EXTERNALOrigin 値が必要です。

この例では、RSA_AES_KEY_WRAP_SHA_256 ラップアルゴリズム、RSA_3072 ラップパブリックキーの仕様、およびサンプルキー ID を規定します。これらのサンプル値は、実際のダウンロードのための有効な値に置き換えます。このオペレーションでは、キーの識別子としてキー ID またはキー ARN を使用できますが、エイリアス名エイリアス ARN を使用することはできません。

$ aws kms get-parameters-for-import \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --wrapping-algorithm RSA_AES_KEY_WRAP_SHA_256 \ --wrapping-key-spec RSA_3072

コマンドが成功した場合は、以下のような出力が表示されます。

{ "ParametersValidTo": 1568290320.0, "PublicKey": "public key (base64 encoded)", "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "ImportToken": "import token (base64 encoded)" }

次のステップのためにデータを準備します。パブリックキーとインポートトークンを base64 でデコードし、デコードされた値をファイルに保存します。

パブリックキーとインポートトークンを base64 でデコードするには、次を実行します。

  1. base64 でエンコードされたパブリックキー (この例の出力では パブリックキー (base64 エンコード済み)) をコピーして、新しいファイルに貼り付けて、ファイルを保存します。ファイルに PublicKey.b64 などの名前を付けます。

  2. ファイル内容の base64 デコード、およびデコードされたデータの新しいファイルへの保存に、OpenSSL を使用します。次の例では、前のステップ (PublicKey.b64) で保存したファイルのデータをデコードして、WrappingPublicKey.bin という名前の新しいファイルに出力を保存します。

    $ openssl enc -d -base64 -A -in PublicKey.b64 -out WrappingPublicKey.bin
  3. base64 でエンコードされたインポートトークン (この例の出力では インポートトークン (base64 エンコード済み)) をコピーして、新しいファイルに貼り付けて、ファイルを保存します。importtoken.b64 など、ファイルにわかりやすい名前を付けます。

  4. ファイル内容の base64 デコード、およびデコードされたデータの新しいファイルへの保存に、OpenSSL を使用します。次の例では、前のステップ (ImportToken.b64) で保存したファイルのデータをデコードして、ImportToken.bin という名前の新しいファイルに出力を保存します。

    $ openssl enc -d -base64 -A -in importtoken.b64 -out ImportToken.bin

ステップ 3: キーマテリアルを暗号化する に進みます。