ルート鍵を使用したデータ暗号化鍵のアンラップ
あなたは データ暗号化キー(DEK)A cryptographic key used to encrypt data that is stored in an application.コンテンツにアクセスするにはIBM Cloud®Hyper Protect Crypto Services特権ユーザーの場合は、キー管理サービス API を使用します。 DEK をアンラップすると、内容が復号され、内容の完全性が検査され、元の鍵素材が IBM Cloud データ・サービスに返されます。
鍵ラッピングが、クラウド内の保存データのセキュリティー管理にどのように役立つかについては、エンベロープ暗号化を参照してください。
API を使用した鍵のアンラッピング
サービスに対してラップ呼び出しを行った後に、以下のエンドポイントに POST
呼び出しを実行すると、指定したデータ暗号化鍵 (DEK) をアンラップして内容にアクセスすることができます。
https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>/actions/unwrap
同じ鍵素材が含まれる複数のルート鍵は、同じデータ暗号化鍵 (WDEK) をアンラップすることが できます。
-
IDをコピーします ルートキーA symmetric wrapping key that is used for encrypting and decrypting other keys that are stored in a data service.最初のラップ要求を実行するために使用したものです。
キーのIDを取得するには、
GET /v2/keys
リクエストするか、UI でキーを表示します。 -
最初のラップ要求時に返された
ciphertext
値をコピーします。 -
次の cURL コマンドを実行して、鍵の素材を暗号化解除して認証します。
curl -X POST \ 'https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>?action=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>" }'
次の表に従って、例の要求内の変数を置き換えてください。
表 1. キーをアンラップするために必要な変数について説明しますHyper Protect Crypto Services 変数 説明 region
必須。 Hyper Protect Crypto Services サービス・インスタンスを置く地理的領域を表す、地域の省略形 ( us-south
、au-syd
など)。 詳細については、リージョナル・サービス・エンドポイントを参照してください。port
必須。 API エンドポイントのポート番号。 key_ID
必須。 初期ラップ要求に使用したルート鍵の固有 ID。 IAM_token
必須。 IBM Cloud アクセス・トークン。 Bearer 値を含む、 IAM
トークンの全コンテンツを cURL 要求に組み込みます。 詳細については、アクセス・トークンのリトリーブを参照してください。instance_ID
必須。 Hyper Protect Crypto Services サービス・インスタンスに割り当てられた固有 ID。 詳細については、インスタンス ID のリトリーブを参照してください。 key_ring_ID
オプション。 鍵が属する鍵リングの固有 ID。 指定しないと、Hyper Protect Crypto Services は、指定されたインスタンスに関連付けられているすべての鍵リングで鍵を検索します。 鍵リング ID を指定して、より最適化された要求を行うことをお勧めします。 注:
x-kms-key-ring
ヘッダーを指定せずに作成した鍵の鍵リング ID は「default」になります。 詳しくは、鍵リングの管理を参照してください。correlation_ID
オプション。 トランザクションを追跡し、相互に関連付けるために使用される固有 ID。 encrypted_data_key
の ciphertext
ラップ操作中に返された値。元の鍵の素材が、応答のエンティティー本体で返されます。 応答本体には、 提供された暗号文をアンラップするために使用された鍵のバージョンの ID も 含まれています。 次の JSON オブジェクトは、戻り値の例を示しています。
{ "plaintext": "Rm91ciBzY29yZSBhbmQgc2V2ZW4geWVhcnMgYWdv", "keyVersion": { "id": "02fd6835-6001-4482-a892-13bd2085f75d" } }
データのアンラップとアクセスに使用されるルート鍵がローテートされたことを Hyper Protect Crypto Services が検出した場合、このサービスはアンラップ応答本体で、新しくラップされたデータ暗号鍵 (
ciphertext
) も戻します。 新しいrewrappedKeyVersion
に関連付けられた 最新の鍵のバージョン (ciphertext
) も返されます。 新しいものを保管して使用するciphertext
データが最新のルート キーによって保護されるように、将来のエンベロープ暗号化操作にこの値を使用します。
鍵素材のデコード
データ暗号化鍵をアンラップすると、鍵素材が base64 エンコードで返されます。 その鍵をデコードしてから暗号化する必要があります。
OpenSSL を使用した鍵素材のデコード
-
OpenSSLをダウンロードしてインストールします。
-
次のコマンドを実行して、Base64 エンコードの鍵素材ストリングをデコードします。
$ openssl base64 -d -in <infile> -out <outfile>
次の表に従って、例の要求内の変数を置き換えてください。
表 2. 鍵素材をデコードするために必要な変数について説明します。 変数 説明 infile
base64 でエンコードされた鍵素材のストリングが存在するファイルの名前。 outfile
コマンドの実行後にデコードされた鍵素材が出力されるファイルの名前。 デコードされた素材をファイルではなくコマンドラインで直接出力したい場合は、コマンドを実行します。
openssl enc -base64 -d <<< '<key_material_string>'
ここで、key_material_string は、ラップ解除要求から返されたプレーン テキストです。