キーの種類、アルゴリズム、および操作
Key Vault では、コンテナーとマネージド HSM という 2 つのリソースの種類がサポートされています。 どちらのリソースの種類でも、さまざまな暗号化キーがサポートされています。 サポートされているキーの種類と、各リソースの種類別の保護の種類の概要については、「キーについて」を参照してください。
次の表に、キーの種類とサポートされているアルゴリズムの概要を示します。
キーの種類、サイズ、曲線 | 暗号化/暗号化解除 (ラップ/ラップ解除) |
署名、検証 |
---|---|---|
EC-P256、EC-P256K、EC-P384、EC-P521 | NA | ES256 ES256K ES384 ES512 |
RSA 2K、3K、4K | RSA1_5 RSA-OAEP RSA-OAEP-256 |
PS256 PS384 PS512 RS256 RS384 RS512 RSNULL |
AES 128 ビット、256 ビット (Managed HSM のみ) |
AES-KW AES-GCM AES-CBC |
NA |
EC アルゴリズム
EC-HSM キーでは、以下のアルゴリズム識別子がサポートされています
曲線の種類
- P-256 - NIST 曲線 P-256。DSS FIPS PUB 186-4 で定義されています。
- P-256K - SEC 曲線 SECP256K1。「SEC 2:Recommended Elliptic Curve Domain Parameters (SEC 2: 推奨される楕円曲線ドメイン パラメーター)」で定義されています。
- P-384 - NIST 曲線 P-384。DSS FIPS PUB 186-4 で定義されています。
- P-521 - NIST 曲線 P-521。DSS FIPS PUB 186-4 で定義されています。
SIGN/VERIFY
- ES256 - SHA-256 ダイジェストおよび P-256 曲線を使用して作成されたキーのための ECDSA。 このアルゴリズムは、RFC7518 で説明されます。
- ES256SHA-256 - SHA-256 ダイジェストおよび P-256K 曲線を使用して作成されたキーのための ECDSA。 このアルゴリズムは、標準としての承認待ちです。
- ES384 - SHA-384 ダイジェストおよび P-384 曲線を使用して作成されたキーのための ECDSA。 このアルゴリズムは、RFC7518 で説明されます。
- ES512 - SHA-512 ダイジェストおよび P-521 曲線を使用して作成されたキーのための ECDSA。 このアルゴリズムは、RFC7518 で説明されます。
RSA アルゴリズム
RSA および RSA-HSM キーでは、以下のアルゴリズム識別子がサポートされています
WRAPKEY/UNWRAPKEY、ENCRYPT/DECRYPT
- RSA1_5 - RSAES-PKCS1-V1_5 [RFC3447] キー暗号化
- RSA-OAEP - Optimal Asymmetric Encryption Padding (OAEP) [RFC3447] を使用する RSAES。既定のパラメーターは RFC 3447 の Section A.2.1 で指定されています。 これらの既定パラメーターでは、SHA-1 のハッシュ関数と、SHA-1 による MGF1 のマスク生成関数が使用されます。
- RSA-OAEP-256 – Optimal Asymmetric Encryption Padding と、SHA-256 のハッシュ関数および MGF1 と SHA-256 のマスク生成関数を使用する RSAES
SIGN/VERIFY
- PS256 - RFC7518 に記載されている、SHA-256 を使用する RSASSA-PSS と SHA-256 を使用する MGF1。
- PS384 - RFC7518 に記載されている、SHA-384 を使用する RSASSA-PSS と SHA-384 を使用する MGF1。
- PS512 - RFC7518 に記載されている SHA-512 を使用する RSASSA-PSS と SHA-512 を使用する MGF1。
- RS256 - SHA-256 を使用する RSASSA-PKCS-v1_5。 アプリケーション提供のダイジェスト値は SHA-256 を使用して計算され、長さは 32 バイトである必要があります。
- RS384 - SHA-384 を使用する RSASSA-PKCS-v1_5。 アプリケーション提供のダイジェスト値は SHA-384 を使用して計算され、長さは 48 バイトである必要があります。
- RS512 - SHA-512 を使用する RSASSA-PKCS-v1_5。 アプリケーション提供のダイジェスト値は SHA-512 を使用して計算され、長さは 64 バイトである必要があります。
- RSNULL - RFC2437 を参照。特定の TLS シナリオを有効にする特殊なユース ケース。
Note
パフォーマンスを向上させるには、RSA-PSS パディング モードをお勧めします。 DigestInfo は、アルゴリズム RS256、RS384、RS512 によって生成される Sign 操作のためにサーバー側で構築されます。
対称キー アルゴリズム (Managed HSM のみ)
- AES-KW - AES キー ラップ (RFC3394)。
- AES-GCM - Galois Counter Mode での AES 暗号化 (NIST SP 800-38d)
- AES-CBC - Cipher Block Chaining Mode での AES 暗号化 (NIST SP 800-38a)
Note
操作アルゴリズムがキーの種類と一致する必要がある場合は、署名と検証を行います。そうしないと、サービスによりキー サイズが正しくないというエラーが返されます。
キーの操作
Managed HSM などの Key Vault では、キー オブジェクトに対する以下の操作がサポートされています。
- 作成:クライアントは、Key Vault にキーを作成できます。 キーの値は、Key Vault によって生成されて格納され、クライアントにはリリースされません。 Key Vault では非対称キーを作成できます。
- Import:クライアントは、既存のキーを Key Vault にインポートできます。 JWK コンストラクト内のいくつかのパッケージング方法を使用して、非対称キーを Key Vault にインポートできます。
- 更新:十分なアクセス許可を持つクライアントは、以前に Key Vault に格納されたキーに関連付けられているメタデータ (キー属性) を変更できます。
- [削除] :十分なアクセス許可を持つクライアントは、Key Vault からキーを削除できます。
- 一覧表示:クライアントは、特定の Key Vault 内のすべてのキーを一覧表示できます。
- バージョンの一覧表示:クライアントは、特定の Key Vault 内の特定のキーのすべてのバージョンを一覧表示できます。
- 取得:クライアントは、Key Vault 内の特定のキーの公開部分を取得できます。
- バックアップ:保護された形式でキーをエクスポートします。
- 復元:以前にバックアップしたキーをインポートします。
- リリース: 機密コンピューティング環境内で実行されている承認されたコードに対して、キーを安全にリリースします。 高信頼実行環境 (TEE) がキーの release_policy の要件を満たしていることを構成証明する必要があります。
- ローテーション: キーの新しいバージョンを生成して、既存のキーをローテーションします (Key Vault のみ)。
詳しくは、Key Vault REST API リファレンスのキー操作をご覧ください。
Key Vault にキーが作成されたら、キーを使って次の暗号化操作を実行できます。
- 署名と検証:Key Vault は署名作成の一部として内容のハッシュをサポートしていないため、厳密には、この操作は "ハッシュの署名" または "ハッシュの検証" です。 アプリケーションは、署名されるデータをローカルにハッシュした後、Key Vault にハッシュの署名を要求する必要があります。 "公開" キー マテリアルにアクセスできないアプリケーション用の便利な操作として、署名されたハッシュの検証がサポートされています。 アプリケーションのパフォーマンスを最高にするため、VERIFY 操作はローカルに実行する必要があります。
- キーの暗号化/ラッピング:Key Vault に格納されているキーを使って、別のキー (通常は、対称コンテンツ暗号化キー (CEK)) を保護できます。 Key Vault 内のキーが非対称の場合、キーの暗号化が使用されます。 たとえば、RSA-OAEP 操作と WRAPKEY/UNWRAPKEY 操作は、ENCRYPT/DECRYPT と同等です。 Key Vault 内のキーが対称の場合は、キー ラッピング キーが使用されます。 たとえば、AES-KW などです。 "公開" キー マテリアルにアクセスできないアプリケーション用の便利な操作として、WRAPKEY 操作がサポートされています。 アプリケーションのパフォーマンスを最高にするため、WRAPKEY 操作はローカルに実行する必要があります。
- 暗号化と復号化:Key Vault に格納されているキーを使って、データの単一のブロックを暗号化または復号化できます。 ブロックのサイズは、キーの種類および選択されている暗号化アルゴリズムによって決まります。 "公開" キー マテリアルにアクセスできないアプリケーション用の便利な操作として、暗号化操作が提供されています。 アプリケーションのパフォーマンスを最高にするため、ENCRYPT 操作はローカルに実行する必要があります。
非対称キーを使用する WRAPKEY/UNWRAPKEY は (ENCRYPT/DECRYPT と同等の操作なので) 余分に見えますが、個別の操作を使用することが重要です。 区別することで、これらの操作のセマンティックと承認の分離、および他のキーの種類がサービスによってサポートされている場合の整合性が提供されます。
Key Vault では EXPORT 操作はサポートされていません。 キーがシステム内でプロビジョニングされた後では、キーを抽出したり、キー マテリアルを変更したりすることはできません。 ただし、削除後などの他のユース ケースで、Key Vault のユーザーがキーを必要とする場合があります。 その場合、ユーザーは、BACKUP および RESTORE 操作を使って、保護された形式でキーをエクスポート/インポートできます。 BACKUP 操作によって作成されたキーは、Key Vault の外部では使用できません。 代わりに、複数の Key Vault インスタンスに対して、IMPORT 操作を使用できます。
ユーザーは、JWK オブジェクトの key_ops プロパティを使って、キー単位で、Key Vault がサポートする暗号化操作を制限できます。
JWK オブジェクトについて詳しくは、「JSON Web Key (JWK)」をご覧ください。
キー ローテーション ポリシーの操作
キー コンテナーのキー自動ローテーションは、キー自動ローテーションポリシーを構成することによって設定できます。 Key Vault リソースでのみ使用できます。
- ローテーション ポリシーの取得: ローテーション ポリシーの構成を取得します。
- ローテーション ポリシーの設定: ローテーション ポリシーの構成を設定します。
キーの属性
キー マテリアルに加えて、次の属性を指定できます。 JSON 要求では、属性を指定しない場合であっても、attributes キーワードとかっこ { } は必要です。
- enabled: boolean、省略可能、既定値は true。 キーが有効になっていて、暗号化操作に使用できるかどうかを指定します。 enabled 属性は、nbf および exp と使います。nbf と exp の間で操作が発生する場合、enabled が true に設定されている場合にのみ許可されます。 nbf / exp の期間外の操作は、暗号化解除、ラップ解除、検証を除いて、自動的に禁止されます。
- nbf:IntDate、省略可能、既定値は現在。 nbf (not before: 以降) 属性は、暗号化解除、リリース、ラップ解除、検証を除く暗号化操作にキーが使用できるようになる日時を示します。その日時より前は、キーを使用できません。 nbf 属性の処理には、現在の日時が、nbf 属性で指定されている開始日時以降でなければなりません。 Key Vault では、クロックのスキューを考慮して、短い猶予 (通常は数分以下) を提供できます。 その値は、IntDate 値を含む数値でなければなりません。
- exp:IntDate、省略可能、既定値は "無期限"。 exp (expiration time: 期限) 属性は、その日時を過ぎると暗号化解除、リリース、ラップ解除、検証を除く暗号化操作にキーを使用できなくなる期限を示します。 exp 属性の処理には、現在の日時が、exp 属性で指定されている有効期限日時以前でなければなりません。 Key Vault では、クロックのスキューを考慮して、短い猶予 (通常は数分以下) を提供できます。 その値は、IntDate 値を含む数値でなければなりません。
キー属性を含むすべての応答に含まれる読み取り専用属性が他にもあります。
- created:IntDate、省略可能。 created 属性は、このバージョンのキーが作成された日時を示します。 この属性が追加される前に作成されたキーについては、値は null です。 その値は、IntDate 値を含む数値でなければなりません。
- updated:IntDate、省略可能。 updated 属性は、このバージョンのキーが更新された日時を示します。 この属性が追加される前に最後に更新されたキーについては、値は null です。 その値は、IntDate 値を含む数値でなければなりません。
- hsmPlatform: 文字列、省略可能。 キーを保護する基礎 HSM プラットフォーム。
- hsmPlatform 値 2 は、キーが最新の FIPS 140 レベル 3 検証済み HSM プラットフォームによって保護されていることを意味します。
- hsmPlatform 値 1 は、キーが以前の FIPS 140 Level 2 検証済み HSM プラットフォームによって保護されていることを意味します。
- hsmPlatform 値 0 は、キーが FIPS 140 レベル 1 HSM ソフトウェア暗号化モジュールによって保護されていることを意味します。
- これが Managed HSM プールによって設定されていない場合、最新の FIPS 140 レベル 3 検証済み HSM プラットフォームによって保護されます。
キーは、キーが作成された HSM にバインドされることに注意してください。 新しいキーはシームレスに作成され、新しい HSM に格納されます。 キーを移行または転送する方法はありませんが、新しいキー バージョンが新しい HSM で自動的に作成されます。 新しいキーに移行する方法の詳細については、「キー ワークロードを移行する方法」を参照してください。
IntDate および他のデータ型について詳しくは、「キー、シークレット、証明書について」を参照してください。データ型。
日付と時刻で制御される操作
nbf / exp の期間外である有効期間前と有効期間後のキーは、復号化、リリース、ラップ解除、検証操作には使用できます (403 Forbidden を返しません)。 有効期間前状態を使用する理由は、運用環境で使用する前にキーをテストできるようにすることです。 期限切れ状態を使用する理由は、キーが有効であったときに作成されたデータを回復できるようにすることです。 また、Key Vault のポリシーを使って、または enabled キー属性を false に更新することで、キーへのアクセスを無効にすることもできます。
データ型について詳しくは、「データ型」をご覧ください。
他の使用可能な属性について詳しくは、「JSON Web Key (JWK)」をご覧ください。
キーのタグ
タグの形式で、アプリケーション固有のメタデータをさらに指定できます。 Key Vault は最大 15 個のタグをサポートし、それぞれが 256 文字の名前と 256 文字の値を持つことができます。
Note
タグは、キーに対する list または get のアクセス許可がある場合に、呼び出し元が読み取ることができます。
キーのアクセス制御
Key Vault によって管理されているキーのアクセス制御は、キーのコンテナーとして機能する Key Vault のレベルで提供されます。 キーへのアクセスを制御するには、Key Vault のロールベースのアクセス制御 (推奨) または以前のコンテナー アクセス ポリシーアクセス許可モデルを使用できます。 ロールベースのアクセス許可モデルには、キーを管理する定義済みロールが 3 つあります。"Key Vault Crypto Officer"、"Key Vault Crypto User"、"Key Vault Service Encryption User" です。これらのスコープをサブスクリプション、リソース グループ、またはコンテナー レベルに設定することができます。
コンテナー アクセス ポリシーアクセス許可モデルのアクセス許可:
キー管理操作に対するアクセス許可
- get:キーの公開部分とその属性を読み取ります
- list:キー コンテナーに格納されているキーまたはキーのバージョンを一覧表示します
- update:キーの属性を更新します
- create:新しいキーを作成します
- import:キーをキー コンテナーにインポートします
- delete:キー オブジェクトを削除します
- recover:削除されたキーを復旧します
- backup:キー コンテナー内のキーをバックアップします
- restore:バックアップしたキーをキー コンテナーに復元します
暗号化操作に対するアクセス許可
- decrypt:キーを使ってバイト シーケンスの保護を解除します
- encrypt:キーを使って任意のバイト シーケンスを保護します
- unwrapKey:キーを使ってラップされた対称キーの保護を解除します
- wrapKey:キーを使って対称キーを保護します
- verify:キーを使ってダイジェストを検証します
- sign:キーを使ってダイジェストに署名します
特権操作に対するアクセス許可
- purge:削除されたキーをパージ (完全に削除) します
- release: キーの release_policy と一致する機密コンピューティング環境にキーをリリースします
ローテーション ポリシーの操作のアクセス許可
- rotate: キーの新しいバージョンを生成して、既存のキーをローテーションします (Key Vault のみ)
- get rotation policy: ローテーション ポリシーの構成を取得します
- set rotation policy: ローテーション ポリシーの構成を設定します
キーの処理について詳しくは、Key Vault REST API リファレンスのキーの操作に関するページをご覧ください。