キーの種類、アルゴリズム、および操作

この記事では、Azure Key Vault (ボールト) の主要なキーの種類、アルゴリズム、属性、および操作について説明します。 Managed HSM の同等のリファレンスについては、「 キーの種類、アルゴリズム、および操作 (Managed HSM)」を参照してください。 リソース別にサポートされているキーの種類の概要については、「 キーについて」を参照してください。

次の表に、Key Vaultのキーの種類とサポートされているアルゴリズムの概要を示します。 対称 (oct-HSM/AES) アルゴリズムについては、「 キーの種類、アルゴリズム、および操作 (Managed HSM)」を参照してください。

キーの種類/サイズ/曲線 Encrypt/Decrypt
(Wrap/Unwrap)
Sign/Verify
EC-P256、EC-P256K、EC-P384、EC-P521 NA ES256
ES256K
ES384
ES512
RSA 2K、3K、4K RSA-OAEP-256
[非推奨] RSA1_5
[非推奨] RSA-OAEP
PS256
PS384
PS512
RS256
RS384
RS512
RSNULL

EC アルゴリズム

EC-HSM キーでは、次のアルゴリズム識別子がサポートされています。

曲線の種類

SIGN/VERIFY

  • ES256 - SHA-256 ダイジェストおよび P-256 曲線を使用して作成されたキーのための ECDSA。 このアルゴリズムについては、RFC7518で説明 します
  • ES256K - 曲線 P-256K で作成された SHA-256 ダイジェストとキー用の ECDSA。 このアルゴリズムは、標準としての承認待ちです。
  • ES384 - SHA-384 ダイジェストと、曲線 P-384 で作成されたキーのための ECDSA。 このアルゴリズムについては、RFC7518で説明 します
  • ES512: SHA-512 ダイジェストおよび曲線 P-521 で作成されたキー用の ECDSA。 このアルゴリズムについては、RFC7518で説明 します

RSA アルゴリズム

RSA キーと RSA-HSM キーでは、次のアルゴリズム識別子がサポートされています。

WRAPKEY/UNWRAPKEY、ENCRYPT/DECRYPT

  • RSA-OAEP-256 は、SHA-256 のハッシュ関数と、SHA-256 を用いた MGF1 のマスク生成関数を使用した RSAES です。
  • [非推奨] RSA1_5 - RSAES-PKCS1-V1_5 [RFC3447] キー暗号化。
  • [非推奨] RSA-OAEP - RSAES using Optimal Asymmetric Encryption Padding (OAEP) [RFC3447]。セクション A.2.1 で RFC 3447 で指定された既定のパラメーターを使用します。 これらの既定パラメーターでは、SHA-1 のハッシュ関数と、SHA-1 による MGF1 のマスク生成関数が使用されます。

Warning

Microsoftでは、セキュリティ強化のためにRSA_OAEP_256またはより強力なアルゴリズムを使用することをお勧めします。

Microsoftは推奨しませんが、下位互換性のためにのみRSA_1_5とRSA_OAEPを含めています。 RSA_OAEP は既知の競合の問題がある SHA1 を利用していますが、暗号化標準では、暗号化のためのセキュリティに PKCS#1 v1.5 パディング スキームを使用した RSA は考慮されなくなっています。

SIGN/VERIFY

  • PS256 - SHA-256 および MGF1 と SHA-256 を使用した RSASSA-PSSRFC7518で説明されているように。
  • PS384 - RFC7518で説明されているように、SHA-384およびMGF1(SHA-384を使用)を使用したです。
  • PS512 - SHA-512 および MGF1 で SHA-512 を使用する RSASSA-PSSRFC7518で説明されています)。
  • 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 - 特定 TLS シナリオを有効にする特殊なユース ケースであるRFC2437を参照してください。

Note

パフォーマンスを向上させるには、RSA-PSS パディング モードをお勧めします。 サーバーは、RS256、RS384、および RS512 が生成するアルゴリズムの署名操作用の DigestInfo を構築します。

対称キー アルゴリズム

対称 (oct-HSM/AES) キーは、Key Vaultではサポートされていません。 サポートされている AES アルゴリズム (AES-KW、AES-GCM、AES-CBC) と HMAC の署名/検証 (HS256/384/512) については、「 キーの種類、アルゴリズム、操作 (Managed HSM)」を参照してください。

主要オペレーション

キー オブジェクトでは、次の操作がサポートされています。

  • 作成: クライアントがサービスにキーを作成します。 サービスはキーの値を生成して格納し、クライアントに解放しません。
  • インポート: クライアントは、既存のキーをサービスにインポートします。 非対称キーは、JWK コンストラクト内のいくつかの異なるパッケージ化方法を使用してインポートできます。
  • 更新: 十分なアクセス許可を持つクライアントは、以前に格納されたキーに関連付けられているメタデータ (キー属性) を変更します。
  • 削除: 十分なアクセス許可を持つクライアントがキーを削除します。
  • リスト: クライアントは、サービス内のすべてのキーを一覧表示します。
  • バージョンの一覧表示: クライアントは、特定のキーのすべてのバージョンを一覧表示します。
  • Get: クライアントは、特定のキーの公開部分を取得します。 get 操作では、非対称キーの秘密部分も、対称キーのキー マテリアルも返されません。
  • バックアップ: 保護された形式でキーをエクスポートします。
  • 復元: 以前にバックアップしたキーをインポートします。
  • リリース: 機密コンピューティング環境内で実行されている承認されたコードにキーを安全に解放します。 信頼された実行環境 (TEE) がキーのrelease_policyの要件を満たしていることを証明する必要があります。

キーが作成されたら、キーを使用して次の暗号化操作を実行できます。

  • 署名と検証: 厳密には、サービスは署名の作成の一部としてコンテンツをハッシュしないため、この操作は "sign hash" または "verify hash" です。 アプリケーションでは、ローカルで署名するデータをハッシュし、サービスにハッシュへの署名を要求する必要があります。 署名されたハッシュの検証は、公開キー マテリアルにアクセスできない可能性があるアプリケーションの利便性のためにサポートされています。最適なパフォーマンスを得る場合は、操作をローカルで実行する必要があることを確認します。
  • キーの暗号化/折り返し: サービスに格納されているキーは、別のキー (通常は対称コンテンツ暗号化キー (CEK)) を保護できます。 サービス内のキーが非対称の場合は、キー暗号化 (RSA-OAEP など) を使用します。WRAPKEY/UNWRAPKEY は ENCRYPT/DECRYPT と同じです)。 サービス内のキーが対称の場合は、キーラップ (たとえば、AES-KW) を使用します。 WRAPKEY は、公開キー マテリアルにアクセスできない可能性があるアプリケーションの利便性としてサポートされています。パフォーマンスを最大限に高めるには、ラップ操作をローカルで実行する必要があります。
  • 暗号化と復号化: サービスに格納されているキーは、1 つのデータ ブロックを暗号化または復号化できます。 ブロックのサイズは、キーの種類と選択した暗号化アルゴリズムによって決まります。 暗号化は便宜上提供されます。パフォーマンスを最大限に高めるには、暗号化操作をローカルで実行する必要があります。

個別の WRAPKEY/UNWRAPKEY 操作 (常に ENCRYPT/DECRYPT を使用するのではなく) を使用すると、セマンティックと承認の分離とキーの種類間の一貫性が提供されます。

サービスは EXPORT 操作をサポートしていません。 キーがプロビジョニングされると、キーを抽出したり、キー マテリアルを変更したりすることはできません。 キーを移動するには、BACKUP 操作と RESTORE 操作を使用して、保護された形式でキーをエクスポートまたはインポートします。 BACKUP によって生成されたキーは、サービスの外部では使用できません。

JWK オブジェクトの key_ops プロパティを使用して、キーごとに暗号化操作を制限できます。

JWK オブジェクトの詳細については、 JSON Web キー (JWK) に関するページを参照してください。

上記の操作に加えて、Key Vault (保管庫) では次の操作がサポートされています。

  • 回転: キーの新しいバージョンを生成して、既存のキーを回転します。 この操作は、Key Vault リソースでのみ使用できます (Managed HSM では使用できません)。

詳細については、Key Vault REST API リファレンスの Key 操作を参照してください。

キー ローテーション ポリシーの操作

キー自動ローテーション ポリシーを構成して、キーの自動ローテーションを設定します。 この機能は、Key Vault リソースでのみ使用できます。

  • ローテーション ポリシーの取得: ローテーション ポリシーの構成を取得します。
  • ローテーション ポリシーの設定: ローテーション ポリシーの構成を設定します。

キー属性

キー マテリアルに加えて、次の属性を指定できます。 JSON 要求では、属性を指定しない場合でも、 attributes キーワードと中かっこ ({}) を含める必要があります。

  • enabled: boolean、optional、default は true です。 キーを有効にして暗号化操作に使用できるかどうかを指定します。 nbf および expenabled 属性を使用します。nbfexp の間で操作が発生した場合、この操作は有効に設定されている場合にのみ許可されますnbf / exp ウィンドウ外の操作は、復号化、解放、ラップ解除、検証を除き、自動的に許可されません。
  • nbf: IntDate、省略可能、既定値は現在です。 nbf (前ではない) 属性は、暗号化解除、解放、ラップ解除、検証を除き、暗号化操作にキーを使用してはならない時刻を識別します。 nbf 属性の処理には、現在の日時が、nbf 属性で指定されている開始日時以降でなければなりません。 クロック スキューを考慮するために、いくつかの小さな余裕 (通常は数分以下) が提供される場合があります。 その値は、IntDate 値を含む数値でなければなりません。
  • exp: IntDate、省略可能、既定値は "forever" です。 exp (expiration time) 属性は、暗号化解除、解放、ラップ解除、検証を除き、暗号化操作にキーを使用してはならない有効期限を識別します。 exp 属性の処理では、現在の日付/時刻が exp 属性にリストされている有効期限の日付/時刻より前である必要があります。 クロック スキューを考慮するために、いくつかの小さな余裕 (通常は数分以下) が提供される場合があります。 その値は、IntDate 値を含む数値でなければなりません。

次の読み取り専用属性は、キー属性を含むすべての応答に含まれます。

  • created: IntDate、省略可能。 created 属性は、このバージョンのキーがいつ作成されたかを示します。 この属性を追加する前に作成されたキーの値は null です。 その値は、IntDate 値を含む数値でなければなりません。
  • updated: IntDate、省略可能。 更新された属性は、このバージョンのキーが更新された日時を示します。 この属性を追加する前に最後に更新されたキーの値は null です。 その値は、IntDate 値を含む数値でなければなりません。

日付と時刻で制御される操作

nbf / exp ウィンドウの外側にある、まだ有効でないキーと期限切れのキーは、復号化解放ラップ解除検証の操作に使用されます (403、Forbidden は返されません)。 有効期間前状態を使用する理由は、運用環境で使用する前にキーをテストできるようにすることです。 期限切れ状態を使用する理由は、キーが有効であったときに作成されたデータを回復できるようにすることです。 有効な属性を false に更新することで、キーへのアクセスを無効にすることもできます。

その他の属性の詳細については、 JSON Web キー (JWK) の仕様を参照してください。

上記の属性に加えて、Key Vault キーは次を公開します。

  • hsmPlatform: 文字列、省略可能。 キーを保護する基になる HSM プラットフォーム。
    • hsmPlatform2値は、キーが最新の FIPS 140-3 レベル 3 検証済み HSM プラットフォームによって保護されていることを意味します。
    • hsmPlatform1値は、キーが以前の FIPS 140-2 レベル 2 検証済み HSM プラットフォームによって保護されていることを意味します。
    • hsmPlatform0は、キーが FIPS 140-2 レベル 1 ソフトウェア暗号化モジュールによって保護されていることを意味します。

キーは、作成した HSM に結びつけられます。 新しいキーとキーのバージョンは、最新の HSM プラットフォームでシームレスに作成されます。 プラットフォーム間で既存のキーを移行または転送することはできません。新しいキーへのワークロードの移動に関するガイダンスについては、「 キー ワークロードを移行する方法」を参照してください。

IntDate およびその他のデータ型の詳細については、「データ 」を参照してください。

キー タグ

タグの形式で、アプリケーション固有のメタデータをさらに指定できます。 Key Vaultは最大 15 個のタグをサポートしており、それぞれ 256 文字の名前と 256 文字の値を持つことができます。

Note

呼び出し元が リスト を持っているか、キーに対するアクセス許可を 取得 している場合は、タグを読み取ることができます。

キーのアクセス制御

Key Vaultは、キーのコンテナーとして機能するKey Vault レベルのキーに対するアクセス制御を提供します。 Key Vault Azure ロールベースのアクセス制御 (推奨) または従来の vault アクセス ポリシー アクセス 許可モデルを使用して、キーへのアクセスを制御できます。 Azure RBAC は、既定で推奨される承認モデルです。 キーの管理には、Key Vault Crypto OfficerKey Vault Crypto User、および Key Vault Service Encryption User の 3 つの定義済みロールがあります。 これらのロールのスコープは、サブスクリプション、リソース グループ、またはボールト レベルに設定できます。 詳細については、「Azure RBAC とアクセス ポリシーを参照してください。

ボールト アクセス ポリシーの権限モデル (レガシ):

  • キー管理操作に対するアクセス許可

    • get: キーの公開部分とその属性を読み取ります
    • list: キー コンテナーに格納されているキーまたはキーのバージョンを一覧表示する
    • update: キーの属性を更新する
    • create: 新しいキーを作成する
    • インポート: キー コンテナーにキーをインポートする
    • delete: キー オブジェクトを削除します
    • 回復: 削除されたキーを回復する
    • バックアップ: キー コンテナー内のキーをバックアップする
    • 復元: バックアップされたキーをキー コンテナーに復元する
  • 暗号化操作に対するアクセス許可

    • decrypt: キーを使用してバイト シーケンスの保護を解除する
    • encrypt: キーを使用して任意のバイト シーケンスを保護する
    • unwrapKey: キーを使用してラップされた対称キーの保護を解除する
    • wrapKey: キーを使用して対称キーを保護する
    • verify: キーを使用してダイジェストを確認する
    • sign: キーを使用してダイジェストに署名する
  • 特権操作に対するアクセス許可

    • 消去: 削除されたキーを消去 (完全に削除) する
    • リリース: キーの release_policy と一致する機密コンピューティング環境にキーを解放する
  • ローテーション ポリシーの操作のアクセス許可

    • rotate: キーの新しいバージョンを生成して既存のキーをローテーションします (Key Vaultのみ)
    • get rotation policy: ローテーション ポリシーの構成を取得します
    • set rotation policy: ローテーション ポリシーの構成を設定します

キーの操作の詳細については、「Key Vault REST API リファレンスのKey 操作」を参照してください。

次のステップ