鍵のラッピング
ルート鍵を使用して暗号鍵を管理および保護するには、以下を使用します。 IBM® Key Protect API およびコンソール。
データ暗号鍵アプリケーションに保管されているデータを暗号化するために使用される暗号鍵。を ルート鍵データ・サービスに保管されている他の鍵の暗号化および暗号化解除に使用される対称ラップ鍵。(DEK)でラップする場合、Key Protect 複数のアルゴリズムの強度を組み合わせて、暗号化されたデータのプライバシーと保全性を保護します。
鍵ラッピングが、クラウド内の保存データのセキュリティー管理にどのように役立つかについては、エンベロープ暗号化を使用したデータ保護を参照してください。
コンソールを使用した鍵のラッピング
既に Key Protect のインスタンスがあり、グラフィカル・インターフェースを使用して DEK を暗号化したい場合は、IBM Cloud コンソールを使用できます。
独自の鍵をインポートまたは作成したら、以下の手順を実行してデータを鍵でラップできます。
-
IBM Cloudコンソールにログインする。
-
**「メニュー」から、「リソース・リスト」**を選択し、リソースのリストを表示します。
-
IBM Cloud リソース・リストで、Key Protect のプロビジョン済みインスタンスを選択します。
-
鍵のリストから、データのラップに使用するルート鍵を選択します。
-
⋯
アイコンをクリックしてから、**「エンベロープ暗号化」**オプションをクリックしてサイド・パネルを開きます。 「鍵のラップ (Wrap key)」オプションが選択されていることを確認します。 -
Key Protect にデータをラップさせるか、base64 エンコードの独自のプレーン・テキストと、必要であれば追加認証データ (AAD) も提供してデータをラップするかを選択できます。 独自のプレーン・テキストと AAD を提供する場合は、データのアンラップ時にそれを提供する必要があります。 AAD や base 64 エンコードのプレーン・テキストを作成したことがない場合は、**「鍵の自動ラップ (Wrap key for me)」**オプションを選択したままにして Key Protect にデータをラップさせることをお勧めします。
-
**「鍵のラップ (Wrap Key)」**ボタンをクリックします。
API を使用した鍵のラッピング
Key Protect 内で管理するルート鍵を使用して、指定されたデータ暗号化鍵 (DEK) を保護することができます。
サービス内でルート鍵を指定した後、以下のエンドポイントへの POST
呼び出しを行うことにより、拡張暗号化を使用して DEK をラップできます。
https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/wrap
-
管理および保護する DEK の鍵の素材をコピーします。
以下のマネージャーまたはライターの特権を持っている場合は (Key Protect インスタンス)、
GET /v2/keys/<keyID_or_alias>
要求を行うことにより、特定の鍵の鍵素材を取得できます。 -
ラッピングに使用するルート鍵の ID をコピーします。
-
以下の
curl
コマンドを実行し、ラップ操作を使用して鍵を保護します。$ curl -X POST \ "https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/wrap" \ -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 '{ "plaintext": "<data_key>", "aad": [ "<additional_data>", "<additional_data>" ] }'
次の表に従って、例の要求内の変数を置き換えてください。
変数 | 説明 |
---|---|
リージョン | 必須。 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 は、デフォルトです。または詳細については、鍵のグループ化を参照してください。 |
correlation_ID | オプション。トランザクションを追跡し、相互に関連付けるために使用される固有 ID。 |
data_key | オプション。管理および保護する DEK の鍵の素材。 このプレーン・テキストの値は base64 でエンコードする必要があります。 鍵素材のエンコードについて詳しくは、 |
[鍵素材のエンコード](/docs/key-protect?topic=key-protect-import-root-keys#how-to-encode-root-key-material)を参照してください。 新しい DEK を生成するには、plaintext 属性を省略します。 サービスは、ランダム・プレーン・テキスト (32 バイト) を生成してその値をラップしてから、生成された値とラップされた値の両方を応答で返します。 生成された値とラップされた値は base64 でエンコードされており、
鍵を復号するためにはそれらをデコードする必要があります。 |
| additional_data | オプション。鍵をさらにセキュアにするために使用される追加認証データ (AAD)。 各ストリングは、最大 255 文字を保持できます。 サービスにラップ呼び出しを実行したときに AAD を提供した場合は、それ以降に実行するアンラップ呼び出しでも同じ AAD を指定する必要があります。重要: 追加認証データは Key Protect サービスに保存されません。 AAD を提供する場合は、同じ AAD にアクセスすることや、後続のアンラップ要求時に同じ AAD を提供することが確実にできるようにするため、データを安全な場所に保存してください。 |
ラップされたデータ暗号鍵 (base64 エンコードの鍵素材を含む) が、応答のエンティティー本体で返されます。 応答本体には、提供されたプレーン・テキストをラップするために使用された鍵のバージョンの ID も含まれています。 以下の JSON オブジェクトは、返された値の例を示しています。
{
"ciphertext": "eyJjaXBoZXJ0ZXh0IjoiYmFzZTY0LWtleS1nb2VzLWhlcmUiLCJpdiI6IjRCSDlKREVmYU1RM3NHTGkiLCJ2ZXJzaW9uIjoiNC4wLjAiLCJoYW5kbGUiOiJ1dWlkLWdvZXMtaGVyZSJ9",
"keyVersion": {
"id": "02fd6835-6001-4482-a892-13bd2085f75d"
}
}
ラップ要求を行う際に plaintext
属性を省略した場合、サービスは、生成されたデータ暗号鍵 (DEK) とラップされた DEK の両方を Base64 エンコード形式で返します。
{
"plaintext": "Rm91ciBzY29yZSBhbmQgc2V2ZW4geWVhcnMgYWdv",
"ciphertext": "eyJjaXBoZXJ0ZXh0IjoiYmFzZTY0LWtleS1nb2VzLWhlcmUiLCJpdiI6IjRCSDlKREVmYU1RM3NHTGkiLCJ2ZXJzaW9uIjoiNC4wLjAiLCJoYW5kbGUiOiJ1dWlkLWdvZXMtaGVyZSJ9",
"keyVersion": {
"id": "12e8c9c2-a162-472d-b7d6-8b9a86b815a6"
}
}
The plaintext
value represents the unwrapped DEK, and the ciphertext
の値はラップされたDEKを表し、どちらもbase64エンコードされている。 この
keyVersion.id
value represents the version of the root key that was used for wrapping.
Key Protect がユーザーの代わりに新規データ暗号鍵 (DEK) を生成するようにする場合、ラップ要求で空の本体を渡すこともできます。 Base64 エンコードの鍵素材が含まれている生成された DEK が、ラップされた DEK とともに応答のエンティティー本体で返されます。