Remote_Key_Export を使用して鍵をエクスポート

次の図は、トラステッド・ブロックを使用して DES/TDES 鍵をエクスポートする場合の処理を表したものです。 この図は、基本的な流れを説明するための概略です。
図 1. トラステッド・ブロックを使用して鍵をエクスポート
リモート鍵エクスポート呼び出し可能サービスは、以下の主要パラメーターを使用して呼び出されます。
  • アクティブ状態のトラステッド・ブロック。 鍵に適用されるバリアントなどに使用される値など、エクスポート操作がどのように処理されるのかが定義されます。
  • エクスポート対象の鍵 (上ではソース鍵として表示されています)。 ソース鍵では、2 つある形式のいずれかが使用されます。
    1. CCA DES 鍵トークン
    2. RKX 鍵トークン
  • 鍵暗号鍵 (図にはインポーター鍵として表示されています)。 これが使用されるのは、ソース鍵が外部 CCA DES 鍵トークンであり、KEK で暗号化されている場合に限られます。 この場合、KEK はソース鍵の非暗号化テキスト値を取得するために必要となる鍵です。
  • トランスポート鍵 (エクスポーター KEK または RKX 鍵トークン)。 エクスポート対象の鍵を暗号化するために使用されます。
  • オプションの公開鍵証明書。 これが組み込まれる場合は、特定 ATM について認証された公開鍵が含まれます。 この証明書は ATM ベンダーの秘密鍵を使用して署名されています。 この証明書を検証できるように、秘密鍵に対応する公開鍵がトラステッド・ブロックに含まれていなければなりません。 証明書に含まれている公開鍵は、エクスポートされた鍵を暗号化するために使用できます。
処理手順は概略では簡素ですが、詳細にすると、多くのオプションがあって非常に複雑です。
  • トラステッド・ブロック自体が検証されます。 これには、いくつかのタイプの検証が含まれます。
    • ブロックに組み込まれた MAC が使用される暗号検証。 MAC 鍵が、コプロセッサーのマスター鍵を使用して暗号化解除され、その MAC 鍵で MAC が検証されます。 これにより、ブロックが破損もしていなければ改ざんもされていないことが検証されます。 また、マスター鍵が正しい場合にのみ処理が正常に終了するため、そのブロックがコプロセッサーで使用するためのものであることも検証されます。
    • 整合性検査およびフィールド検証。 構造自体が検証されます。 定義された範囲内にすべての値があることが検証されます。
    • トラステッド・ブロック内のフィールドは、 そのトラステッド・ブロックを使用するためにすべての要件が満たされているかどうかを確認するために検査されます。 必ず必要になる検査の 1 つは、続行する前にトラステッド・ブロックがアクティブ状態にあることを確認することです。 ほかには、トラステッド・ブロックの内容に基づくオプションの検査があります。 この検査では、コプロセッサー・リアルタイム・クロックの日付を、トラステッド・ブロックに定義されている アクティブ化の日付や有効期限と比較することによって、操作が現在許可されていることが確認されます。
  • リモート鍵エクスポート呼び出し可能サービスに対する入力パラメーターは、 入力パラメーター用にトラステッド・ブロック内で定義されている規則に対して検証されます。 例えば、次のようなことができます。
    • 規則によって、エクスポート対象の鍵の長さを制限できます。
    • 規則によって、エクスポート対象の鍵の制御ベクトル値を制限できます。 そのため、その規則によって特定の鍵タイプのみをエクスポートできます。
  • エクスポート鍵が暗号化解除されているときは、その鍵を変更して必要な出力鍵値を生成するために、 トラステッド・ブロックに組み込まれている規則が使用されます。 例えば、トラステッド・ブロックには、ソース鍵を暗号化する前にソース鍵との排他的論理和がとられるバリアントを含めることができます。 多くの非 IBM 暗号システムでは、鍵の不適切な使用を禁止するために鍵の分離を行うバリアントが使用されます。
  • オプションで鍵検査値 (KCV) をソース鍵に対して計算できます。 KCV が計算される場合は、2 つある鍵検査アルゴリズムのうちの 1 つをトラステッド・ブロックで 使用できます ((1) 鍵で 2 進ゼロを暗号化、(2) 鍵の MDC-2 ハッシュを計算)。 KCV はリモート鍵エクスポート機能からの出力として返されます。
  • エクスポート鍵 (トラステッド・ブロック内の規則に従ってバリアントを使用して変更される可能性がある) はトランスポート鍵で暗号化されます。 規則では、前述の 2 つのフォーマット ((1) CCA 鍵トークンまたは (2) 新しい RKX 鍵トークン) のいずれかで鍵を作成することを指定できます。 規則のオプションを適切に選択することで、CCA 鍵トークンにより、非 CCA システムで使用できる鍵を作成できます。 鍵値は CCA 鍵トークンから抽出できます。 結果として、抽出された鍵値は、規則に定義されたバリアントおよび他のオプションを持つ汎用暗号鍵に含まれます。
    トラステッド・ブロックに含まれる 2 つのオプション・フィールドによって、 トランスポート鍵がソース鍵の暗号化に使用される前に変更される可能性があります。
    • トラステッド・ブロックには、トランスポート鍵をエクスポート鍵の暗号化に使用する前にそのトランスポート鍵との 排他的論理和がとられる CCA 制御ベクトル (CV) を含めることができます。 この排他的論理和の処理は、CCA が CV を鍵に適用する標準的な方法です。
    • 前述の CV のほかに、トラステッド・ブロックには、使用前のトランスポート鍵との排他的論理和がとられるバリアントも含めることができます。
    トラステッド・ブロックにバリアントと CV の両方が存在する場合は、最初にバリアントが適用され、次に CV が適用されます。
  • オプションで、エクスポート鍵は、前述のトランスポート鍵で暗号化できるだけでなく、 リモート鍵エクスポート呼び出し可能サービスの証明書パラメーターで識別される RSA 公開鍵でも暗号化できます。 これら 2 つのエクスポート鍵暗号化バージョンは、リモート鍵エクスポート呼び出し可能サービスの別々の出力として提供されます。 トラステッド・ブロックでは、鍵を暗号化するときに PKCS1.2 フォーマットまたは PKCSOAEP フォーマットを選択できます。