鍵のアンラッピング

IBM® Key Protect は、複数のアルゴリズムの長所を組み合わせて、暗号化データのプライバシーと保全性を保護します。 IBM® Key Protect for IBM Cloud® API とコンソールを使用することで、 データ暗号化キーアプリケーションに保管されているデータを暗号化するために使用される暗号鍵。 (DEK)をアンラップし、その内容にアクセスすることができます。 DEK をアンラップすると、暗号化解除して内容の保全性を確認し、元の鍵素材を IBM Cloud データ・サービスに返します。

鍵ラッピングが、クラウド内の保存データのセキュリティー管理にどのように役立つかについては、エンベロープ暗号化を使用したデータ保護を参照してください。

コンソールを使用した鍵のアンラップ

既に Key Protect のインスタンスがあり、グラフィカル・インターフェースを使用して DEK を暗号化したい場合は、IBM Cloud コンソールを使用できます。

独自の鍵をインポートまたは作成したら、以下の手順を実行してデータを鍵でラップできます。

  1. IBM Cloud コンソールにログインする。

  2. **「メニュー」から、「リソース・リスト」**を選択し、リソースのリストを表示します。

  3. IBM Cloud リソース・リストで、Key Protect のプロビジョン済みインスタンスを選択します。

  4. 鍵のリストから、最初にデータをラップするのに使用したルート鍵を選択します。

  5. ⋯アイコンをクリックして、アンラップする DEK のオプションのリストを開きます。

  6. **「エンベロープ暗号化」**オプションをクリックして、サイド・パネルを開きます。 「鍵のアンラップ (Unwrap key)」タブがまだ強調表示されていなければ、このタブを選択します。

  7. 暗号文や、DEK のアンラップのためにローカルに保管した追加データなど、必要なテキストを該当するフィールドに指定します。

  8. **「鍵のアンラップ (Unwrap Key)」**ボタンをクリックします。

API を使用した鍵のアンラッピング

サービスに対してラップ呼び出しを行った後、以下のエンドポイントへの POST 呼び出しを行うことにより、指定のデータ暗号化鍵 (DEK) をアンラップして、その内容にアクセスできます。

https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/unwrap

同じ鍵素材が含まれる複数のルート鍵は、同じデータ暗号化鍵 (WDEK) をアンラップすることが できます。

  1. サービス内で鍵の処理を行うために、サービス資格情報および認証資格情報を取得します。

  2. 最初のラップ要求を実行するために使用したルート鍵の ID をコピーします。

    鍵の ID は、以下の場所にあります。 (Key Protect インスタンス) 鍵のリストを取得するか、または Key Protect ダッシュボードにアクセスすることで見つけることができます。

  3. 最初のラップ要求時に返された ciphertext 値をコピーします。

  4. 次の curl コマンドを実行して、鍵の素材を暗号化解除して認証します。

    $ curl -X POST \
        "https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/unwrap" \
        -H "accept: application/vnd.ibm.kms.key_action+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "content-type: application/vnd.ibm.kms.key_action+json" \
        -H "x-kms-key-ring: <key_ring_ID>" \
        -H "correlation-id: <correlation_ID>" \
        -d '{
                "ciphertext": "<encrypted_data_key>",
                "aad": [
                    "<additional_data>",
                    "<additional_data>"
                ]
            }'
    

次の表に従って、例の要求内の変数を置き換えてください。

Key Protect でキーをアンラップするために必要な変数について説明する。
変数 説明
リージョン 必須。 Key Protect インスタンスが存在する地域を表す us-south や eu-gb などの地域略称。

詳しくは、地域のサービス・エンドポイントを参照してください。
keyID_or_alias 必須。 初回のラップ要求に使用したルート鍵の固有 ID または別名。
IAM_token 必須。 IBM Cloud アクセス・トークン。 Bearer 値を含む、IAM トークンの全コンテンツを cURL 要求に組み込みます。

詳細については、 アクセストークンの取得を 参照してください。
instance_ID 必須。 Key Protect サービス・インスタンスに割り当てられた固有 ID。

詳細については、 インスタンスIDの取得を 参照してください。
key_ring_ID オプション。 鍵が含まれている鍵リングの固有 ID。 指定しない場合は、Key Protect が、指定されたインスタンスに関連付けられているすべての鍵リングで鍵を検索します。 鍵リング ID を指定して、より最適化された要求を行うことをお勧めします。

注: x-kms-key-ring ヘッダーなしで作成された鍵のキーリングIDは、defaultである。

For more information, see グループ化キー.
correlation_ID オプション。トランザクションを追跡し、相互に関連付けるために使用される固有 ID。
additional_data オプション。鍵をさらにセキュアにするために使用される追加認証データ (AAD)。 各ストリングは、最大 255 文字を保持できます。 サービスに対してラップ呼び出しを行ったときに AAD を提供した場合は、アンラップ呼び出し時にも同じ AAD を指定する必要があります。
encrypted_data_key 必須。 ラップ操作時に返された ciphertext 値。

元の鍵の素材が、応答のエンティティー本体で返されます。 応答本体には、 提供された暗号文をアンラップするために使用された鍵のバージョンの ID も 含まれています。

返されるプレーン・テキストは base64 でエンコードされています。 鍵素材をデコードする 方法について詳しくは、 鍵素材のデコードを参照してください。 以下の JSON オブジェクトは、返された値の例を示しています。

{
    "plaintext": "Rm91ciBzY29yZSBhbmQgc2V2ZW4geWVhcnMgYWdv",
    "keyVersion": {
        "id": "02fd6835-6001-4482-a892-13bd2085f75d"
    }
}

データのアンラップとアクセスに使用されるルート鍵がローテートされたことを Key Protect が検出した場合、このサービスはアンラップ応答本体で、新しくラップされたデータ暗号鍵 (ciphertext) も戻します。 新しい rewrappedKeyVersion に関連付けられた 最新の鍵のバージョン (ciphertext) も返されます。 新しい ciphertext の値を今後のエンベロープ暗号化操作に使用します。 の値は最新のルート鍵で保護されます。

鍵素材のデコード

データ暗号化鍵をアンラップすると、鍵素材が base64 エンコードで返されます。 鍵を暗号化する前に、その鍵をデコードする必要があります。

OpenSSL を使用した鍵素材のデコード

  1. ダウンロードしてインストールする OpenSSL.

  2. 以下のコマンドを実行して、base64 エンコードの鍵素材ストリングをデコードします。

    openssl base64 -d -in <infile> -out <outfile>
    

次の表に従って、例の要求内の変数を置き換えてください。

キー素材をデコードするために必要な変数について説明します。
変数 説明
infile base64 でエンコードされた鍵素材のストリングが存在するファイルの名前。
outfile コマンドが実行されるとデコードされた鍵素材が出力されるファイルの名前。

デコードされた素材をファイルではなくコマンドラインに直接出力したい場合は、以下のコマンドを実行する。 ファイルではなく直接コマンドラインに出力したい場合は、次のコマンドを実行する。 openssl enc -base64 -d <<< '<key_material_string>' ここで key_material_string は、アンラップリクエストから返されたプレーンテキストです。