
キー管理相互運用性プロトコル( KMIP )は、キー管理サーバーで暗号化キーを操作するためのメッセージ形式を定義する拡張可能な 通信プロトコルです。これにより、暗号化キーの管理が簡素化され、データの暗号化が容易になります。キーはサーバー上で作成され、その後、他のキーでラップされた状態で取得されます。証明書に署名する機能を含め、対称キーと非対称キーの両方がサポートされています。また、KMIP を使用すると、クライアントはキーに直接アクセスすることなく、サーバーにデータの暗号化または復号化を依頼できます。
KMIP 標準は 2010 年に初めてリリースされました。クライアントとサーバーは複数のベンダーから市販されています。KMIP 標準の取り組みはOASIS 標準化団体によって管理されています。技術的な詳細は、公式 KMIP ページ[1]と kmip wiki にも記載されています。[2]
説明
KMIP サーバーは、対称キー、非対称キー、証明書、ユーザー定義オブジェクトなどの管理対象オブジェクトを保存および制御します。クライアントは、サーバーによって実装されたセキュリティ モデルに従って、プロトコルを使用してこれらのオブジェクトにアクセスします。管理対象オブジェクトの作成、検索、取得、更新を行う操作が提供されます。
各管理対象オブジェクトは、暗号キーを含むキー ブロックのような不変の値で構成されます。これらのオブジェクトは、キーに関するメタデータを保存するために使用できる可変の属性で構成されます。暗号アルゴリズムやキーの長さなど、一部の属性は値から直接派生します。その他の属性は、通常テープ識別データから派生するアプリケーション固有の識別子など、オブジェクトの管理の仕様で定義されます。追加の識別子は、アプリケーションのニーズに応じてサーバーまたはクライアントによって定義できます。
各オブジェクトは、サーバーによって生成された一意かつ不変のオブジェクト識別子によって識別され、オブジェクト値の取得に使用されます。管理対象オブジェクトには、オブジェクトの検索に使用できる 、変更可能でありながらグローバルに一意のName属性がいくつか付与されることもあります。
オブジェクト
KMIP によって管理される管理対象オブジェクトの種類は次のとおりです。
- AES などのアルゴリズムに使用される対称キー。
- RSA や ECDH などの非対称アルゴリズムに使用される公開キーと秘密キー。公開キーと秘密キーの保存には別々のオブジェクトが使用されるため、ユーザーは一方にアクセスする権限を持ち、もう一方にはアクセスできない場合があります。関連オブジェクトには通常、他のオブジェクトの一意の識別子を含むリンク属性が含まれます。
- 証明書と PGP キー。
- 分割キー。各分割は、他の分割とは独立して管理できる個別のオブジェクトです。
- パスワードなどの秘密データ。
- クライアントおよびサーバー定義の拡張機能の不透明データ。
- 証明書署名要求。
オペレーション
KMIP が提供する操作には次のものが含まれます。
- 対称キーなどの新しい管理対象オブジェクトを作成し、識別子を返します。
- キー ペアを作成し、非対称キーを表す 2 つのオブジェクトを作成します。
- 取得: 一意の識別子を指定してオブジェクトの値を取得します。返された値は、追加のセキュリティのためにサーバー上にある別のキーでラップ (暗号化) される場合があります。
- 外部で生成されたキー値を格納するレジスタ。
- 属性の追加、属性の取得、属性の変更、属性の設定。これらは、管理対象オブジェクトの変更可能な属性を操作するために使用できます。
- 述語に基づいてオブジェクトのリストを検索して取得します。
- 再キー。既存のキーを置き換えることができる新しいキーを作成します。また、一定期間または使用回数後にサーバーがキーを自動的にローテーションするようにするために使用できる属性もあります。名前は新しいキーに移動され、通常は暗号化や署名などの保護操作用のキーを取得するために使用されます。復号化や署名検証などのプロセス操作用の一意の識別子を使用して、古いキーを取得することもできます。
- (再)認証 - 証明書を認証します。
- N 個の M 個のキーを分割して結合します。
- 暗号化、復号化、MAC など、キー管理サーバー上で実行される暗号化操作。キー自体は抽出不可としてマークされる可能性があり、その場合、その値はサーバーから出ることがありません。
- 他の KMIP サーバーとの間でキーをエクスポートおよびインポートします。
- NISTキー ライフ サイクルを実装するための操作。
キーのライフサイクル
各キーには、米国国立標準技術研究所(NIST)によって定義された暗号化状態があります。キーは初期状態で作成され、使用する前にアクティブ化する必要があります。その後、キーは非アクティブ化され、最終的には破棄されます。キーは侵害されているとマークされることもあります。
NIST ライフサイクル ガイドラインに準拠してキー状態を操作するための操作が用意されています。キー状態は、状態属性またはアクティベーション日などの各変換の日付を記録する属性を使用して照会できます。日付は将来の日付を指定できるため、キーは期限切れになると、指定された操作で自動的に使用できなくなります。
メッセージ構造
KMIP はステートレス プロトコルであり、クライアントからサーバーにメッセージが送信され、クライアントは通常、応答を待ちます。各リクエストには多くの操作が含まれる可能性があるため、プロトコルは多数のキーを効率的に処理できます。リクエストを非同期的に処理するための高度な機能もあります。
KMIP プロトコルは、いくつかの異なるタイプのエンコーディングを指定します。主なものは、TTLV (タグ、タイプ、長さ、値)と呼ばれる、メッセージのタイプ、長さ、値のエンコーディングです。ネストされた TTLV 構造により、複雑な複数操作メッセージを 1 つのバイナリ メッセージにエンコーディングできます。
バイナリが適切でない環境向けに、プロトコルの XML および JSON エンコードも明確に定義されています。また、それを必要とするアプリケーション向けに、 非常にコンパクトなCBORエンコードも提供されています。
これらのプロトコルはすべて、整合性とセキュリティを確保するためにTLSプロトコルを使用して送信されることが想定されています。ただし、サーバー上の別のキーを使用してラップ (暗号化) されたキーを登録および取得することも可能であり、これによりセキュリティ レベルがさらに高まります。
システム管理
KMIP は、システム オブジェクトを使用して適切に承認された管理クライアントが KMIP サーバーを管理するための標準化されたメカニズムを提供します。
ユーザー オブジェクトを作成し、特定の管理対象オブジェクトに対して特定の操作を実行する権限を与えることができます。管理対象オブジェクトとユーザーの両方をグループに割り当てることができ、それらのグループは階層を形成できるため、複雑なオペレーティング環境を効率的に管理できます。
KMIP は、シンプルなワンタイム パスワードを使用してエンドポイントに資格情報を提供することを容易にするプロビジョニング システムも提供します。
属性のデフォルト値を指定できるため、単純なクライアントでは暗号化やその他のパラメータを指定する必要がありません。たとえば、管理ユーザーは、すべての「SecretAgent」キーをCBCブロック チェーンを使用した 192 ビットAESキーに指定できます。クライアントは、「SecretAgent」キーを作成するように指定するだけで、それらのデフォルト値が提供されます。セキュリティ ポリシーを実装するキー パラメータに制約を適用することもできます。
KMIP プロファイル
KMIP は、特定のコンテキストでの一般的な使用法を示す KMIP 仕様のサブセットであるプロファイルのセットも定義します。特定の KMIP 実装は、プロファイル仕様書に規定されているすべての要件を満たしている場合に、プロファイルに準拠していると言われます。OASISは、ストレージアレイ[3]やテープライブラリ[4]への準拠要件を記述したさまざまなプロファイルを提示していますが、どの組織でもプロファイルを作成できます。
PKCS#11との関係
PKCS#11 は、ハードウェア セキュリティ モジュールを制御するために使用されるC APIです。PKCS#11 は、暗号化と復号化を行う暗号化操作と、簡単なキー管理操作を提供します。PKCS#11 API と KMIP プロトコルには、かなりの重複部分があります。
2 つの標準は、もともと独立して開発されました。PKCS#11 はRSA Securityによって作成されましたが、この標準は現在OASIS技術委員会によっても管理されています。PKCS#11 委員会と KMIP 委員会の両方の明示された目標は、実用的な範囲で標準を一致させることです。たとえば、PKCS#11 の Sensitive 属性と Extractable 属性は、KMIP バージョン 1.4 に追加されています。KMIP と PKCS#11 の両方の技術委員会には、同じ人々が多数参加しています。
KMIP 2.0 は、PKCS#11 メッセージをクライアントからサーバーに転送するための標準化されたメカニズムを提供します。これを使用すると、それを使用するプログラムを再コンパイルすることなく、さまざまな PKCS#11 実装を対象にすることができます。
KMIP実装
OASIS KMIP 技術委員会は、既知の KMIP 実装のリストを管理しており、OASIS Web サイトで確認できます。2017 年 3 月現在、このリストには 28 の実装と 61 の KMIP 製品が含まれています。
実装間の相互運用性
KMIP 標準は、OASIS KMIP 技術委員会によって提示された正式な仕様書、テストケース、およびプロファイルを使用して定義されています。これらのドキュメントは、OASIS Web サイトで公開されています。

ベンダーは、各 RSA セキュリティ カンファレンスの数か月前に OASIS KMIP 技術委員会が主催するプロセスで相互運用性をデモンストレーションします。これらのデモンストレーションは非公式にinteropsと呼ばれています。KMIP interops は 2010 年以降毎年開催されています。次のグラフは、2012 年以降に各クライアントおよびサーバー ベンダーの組み合わせで実行された個別のテストの数を示しています。
-
2012年以降、各サーバー/クライアントベンダーの組み合わせで個別に実施された相互運用性テスト
-
2017 OASIS KMIP相互運用性テストの結果
例
以下は、「MyKeyName」という名前のキーを検索し、その値を ID「c6d14516-4d38-0644-b810-1913b9aef4da」の別のキーにラップして返す要求の XML エンコードを示しています。(TTLV はより一般的なワイヤ プロトコルですが、XML の方が人間が読みやすいです。)
<RequestMessage>
<RequestHeader> <ProtocolVersion> <ProtocolVersionMajor type= "Integer" value= "3" /> <ProtocolVersionMinor type= "Integer" value= "0" /> </ProtocolVersion> </RequestHeader> <BatchItem> <Operation type= "Enumeration" value= "Locate" /> <UniqueBatchItemID type= "ByteString" value= "1" /> <RequestPayload> <Attributes> <Name type= "TextString" value= "MyKeyName" /> </Attributes> </RequestPayload> </BatchItem> <BatchItem> <Operation type= "Enumeration" value= "Get" /> <UniqueBatchItemID type= "ByteString" value= "2" /> <RequestPayload> <KeyWrappingSpecification> <WrappingMethod type= "Enumeration" value= "Encrypt" /> <EncryptionKeyInformation> <UniqueIdentifier type= "Integer" value= "c6d14516-4d38-0644-b810-1913b9aef4da" /> </EncryptionKeyInformation> </KeyWrappingSpecification> </RequestPayload> </BatchItem> </RequestMessage>
ドキュメント
ドキュメントはOASISのウェブサイトから無料で入手できます。[5]これには正式な技術仕様と、仕様に詳しくない人を支援するための使用ガイドが含まれています。また、テストケースの膨大なライブラリも提供されています。これらはクライアントとサーバーの相互運用性をテストするために使用されますが、各標準KMIP機能の使用例も具体的に示しています。
バージョン履歴
参照
- IEEE P1619ストレージにおけるセキュリティワーキンググループ
参考文献
- ^ 「OASIS キー管理相互運用性プロトコル (KMIP) TC | OASIS」。
- ^ https://wiki.oasis-open.org/kmip ウィキ
- ^ 「自己暗号化ドライブ プロファイル バージョン 1.0 を備えた KMIP ストレージ アレイ」。
- ^ 「KMIP テープ ライブラリ プロファイル バージョン 1.0」。
- ^ 「OASIS キー管理相互運用性プロトコル (KMIP) TC | OASIS」。
- ^ 「KMIP仕様v2.1 WD07」。
- ^ 「KMIP仕様v3.0 WD09」。
外部リンク
- 「OASIS KMIP技術委員会」。
- 「KMIP TC に知られている KMIP 実装」。
