AA<- index ->AC


付録 B: PKI 管理メッセージプロファイル English

この付録には、標準に適合した実装において必ずサポートする PKI メッセージの詳細プロファイルを含んでいます。

以下の PKI 管理操作で使用される PKIMessages のプロファイルが用意されています。

<<本ドキュメントの以降のバージョンには上記の内容を拡張し、次の一覧が示す操作のプロファイルを包含することがあります(要望に応じて、そのほかの操作と一緒に)>>

 

B1. 本プロファイルの解釈についての総則 English

  1. 個々のプロファイルにフィールドが「オプション(OPTIONAL)」か「デフォルト(DEFAULT)」かについて明記されていない場合は、それらのフィールドは関連メッセージに表示しないことになっています。(すなわち、受信者がこのようなフィールドを含んだメッセージを構文上の不正として正当な拒否を施行することができます。)必須フィールドの場合、もし明白な値があれば特に「必須」ということは明記されません。
  2. 構造が1つ以上のメッセージで起きる場合に、必要に応じてそれぞれの構造は別々にプロファイル化されます。
  3. PKIMessage 構造のalgorithmIdentifiers は別々にプロファイル化されます。
  4. 「NULL-DN」と呼ばれる「特別な」X.500 DN があります。すなわち、 RelativeDistinguishedNames のゼロ長の SEQUENCE を持つ DN のことです。(そのDERエンコードは「3000」Hとなります)
  5. フィールドにGeneralNameを必要とするが適切な値が得られない(例えば、エンドエンティティが自分の名称を知る前にリクエストを生成している)場合に、GeneralNameは X.500 NULL-DN となります。(すなわち、CHOICE における Name フィールドが NULL-DN を含むことになります)この特別な値は「NULL-GeneralName」とも呼ばれています。
  6. プロファイルがGeneralNameの値を指定しないときに、NULL-GeneralName 値が関連の PKIMessage フィールドに代入されることになります。このことは一部のメッセージの PKIHeader の送信者(sender)フィールドに起こります。
  7. フィールドの命名に関わる何らかの曖昧さが発生した場合に、プロファイルの名前は「ドット(dot)」表記法(例えば、「certTemplate.subject」とは、certTemplate というフィールドにある主体者(subject)フィールドを意味します。)を採用します。
  8. 「SEQUENCE OF types」がメッセージの一部であるときに、SEQUENCE OFのなかにあるフィールドをゼロベースの配列表記法で記述します。(例えば、 crm[0].certReq.certTemplate.subject は 、リクエストメッセージに含まれている最初の CertReqMsg のサブフィールドを表します)
  9. B7 節から B10 節までにあるすべての PKI メッセージの交換は開始エンティティによって PKIConfirm メッセージを送信する必要があります。このメッセージは本体がNULLであり、上下文脈からのヘッダー内容も明白のため、与えられたプロファイルの一部に含まれていません。信頼できる方法であればprotectionAlgにすべて適用できます。(例 : パスワード・ベースの MAC、もし共有秘密情報が既知な場合、あるいは署名)

 

B2. アルゴリズム使用法プロファイル English

次の表に PKI 管理プロトコルにおけるアルゴリズム使用法の定義を記述します。

表の列は以下の通りです。

名称:   メッセージプロファイルの識別子
使用法:  どこでどんなアルゴリズムが使用されるのかを記述
必須:   準拠する実装には必ずサポートしなければならない AlgorithmIdentifier
その他:  必須AlgorithmIdentifierの代案

名称
 
使用法
 
必須
 
その他
 
MSG_SIG_ALG 署名でを PKI メッセージを保護 DSA/SHA-1 RSA/MD5...
MSG_MAC_ALG MAC で PKI メッセージを保護 PasswordBasedMac HMAC,
X9.9...
SYM_PENC_ALG アウト・オブ・バンド方式で対称鍵を配布する所で、エンドエンティティの秘密鍵を対称暗号化 3-DES (3-key- RC5,  EDE, CBC mode) CAST-128...
PROT_ENC_ALG PKIMessages のなかで伝送される秘密鍵を暗号化するための非対称型アルゴリズム (暗号化ための対称鍵) D-H RSA
PROT_SYM_ALG 秘密鍵ビットを暗号化するための対称型暗号アルゴリズム(このようなタイプの鍵は PROT_ENC_ALG で暗号されます。 3-DES (3-key- RC5,  EDE, CBC mode) CAST-128...

必須 AlgorithmIdentifiers とその仕様:

DSA/SHA-1:

AlgId: {1 2 840 10040 4 3};
NIST, FIPS PUB 186: Digital Signature Standard, 1994;
Public Modulus size: 1024 bits.

PasswordBasedMac:

{1 2 840 113533 7 66 13}, with SHA-1 {1 3 14 3 2 26} as the owf parameter and HMAC-SHA1 {1 3 6 1 5 5 8 1 2} as the mac parameter;
(this specification), along with
NIST, FIPS PUB 180-1: Secure Hash Standard, April 1995;
H. Krawczyk, M. Bellare, R. Canetti, "HMAC: Keyed-Hashing for Message Authentication", Internet Request for Comments 2104, February 1997.

3-DES:

{1 2 840 113549 3 7};
(RSA の BSAFE と S/MIME に適用)

D-H:

AlgId: {1 2 840 10046 2 1};
ANSI X9.42;
Public Modulus Size: 1024 bits.
DHParameter ::= SEQUENCE {

prime INTEGER, -- p
base INTEGER -- g

}

 

B3. 「自己署名」証明書 English

証明書構造が如何に「自己署名」できるのかを記述するプロファイルです。これらの構造は「ルート」CA 公開鍵の配布で使用されます。以下の 3つの状況のいずれかの場合に、発生する可能性があります。(これら構造の使用法の記述については、2.4節を参照してください)

種別
 
 機能
 
newWithNew 本当の意味での「自己署名」証明書;含まれている公開鍵は必ず署名の検証に利用できなければなりません(これは完全性のみを保証し、その本人性についてはどうあろうとも)
oldWithNew 新しい秘密鍵で署名された前のルート CA 公開鍵
newWithOld 前の秘密鍵で署名された新しいルート CA 公開鍵

<<このような証明書(関連拡張を含む)はすべてのフィールドにおいて「目的に合った」値を格納しなければなりません。例えば、現在の subjectAltNameは issuerAltName と 同一でなければならないことや、そして現在の keyIdentifiers には適切な値などを含まれなければならないことなど >>

 

B4. Proof of Possessionプロファイル English

証明書申請対象である公開検証鍵に対応した秘密署名鍵の所有を証明するための POP フィールド

フィールド
 

 
コメント
 
algorithmIdentifier MSG_SIG_ALG この証明に署名による保護のみが認められます
signature present MSG_SIG_ALGを使って計算されたビット

<<証明書の申請対象である公開暗号鍵に対応した秘密復号鍵の所有を証明するためには本プロファイルを使用できません; 代わりに B8 節のPKIConfirm の protectionAlg に記載されている方法が適用できます。 >>

PKIX-CMP イン・バンド方式認証リクエストプロトコルにおいて、すべてのCA/RAが Proof-of-Possession(署名鍵、復号鍵、鍵合意鍵などの)を実行するわけではありません(POPの実施方法は結局ポリシーの問題に帰着し、任意の与えられた CA の公開されたポリシー OID と認証実施規程(CPS)によってはっきりされるものになります)。しかしながら、本仕様では CA/RA エンティティが認証プロセスの一環として必ず POP(何らかの手段で)を実施しなければならないことを強制します。すべてのエンドエンティティが POP 提供の用意をしなければなりません。(すなわち、これらのコンポーネントは PKIX-CMP プロトコルに対応しなければなりません)

 

B5. ルート CA 鍵更新 English

ルート CA がその鍵ペアを更新します。その後ルート CA が関連のエンドエンティティに提供可能(何らかの伝送機構を通して)な CA 鍵更新声明メッセージを発行します。エンド・エンティティには PKIConfirm メッセージを必要としません。

ckuann message:

フィールド
 

 
コメント
 
sender CA name 応答 CA 名
body ckuann(CAKeyUpdAnnContent)  
oldWithNew present 上記の B3 を参照
newWithOld present 上記の B3 を参照
newWithNew present 上記の B3 を参照
extraCerts optionally present 証明書の「公開」に使用可能(例えば、新しい秘密鍵で署名した証明書

 

B6. PKI 情報リクエスト/レスポンス English

エンドエンティティは、あとで PKI 管理操作に必要となる一般的な PKI 要求メッセージを送付します。RA/CA が一般的なレスポンスとして返答します。もしRAがレスポンスを生成することになる場合に、RA が単に以前 CA から受け取ったメッセージと同等なものを先渡し、PKIMessage の extraCerts フィールドに考えられる追加的な証明書を加えます。エンドエンティティは 、PKIConfirm メッセージを必要としません。

メッセージのフロー:

ステップ エンドエンティティ       PKI
1 format ir        
2   ->  ir ->  
3         handle ir
4         format ip
5   <- ip <-  
6 handle ip        
7 format conf        
8   -> conf ->  
9         handle conf

ccr:(修正中)

フィールド
sender Requesting CA name
 -- the name of the CA who produced the message
recipient Responding CA name
-- issuerAltName 拡張または証明書の issuer フィールドに含まれている CA 名
messageTime time of production of message
 -- current time at requesting CA
protectionAlg MSG_SIG_ALG
senderKID present
-- メッセージ保護の検証を要求する場合には必須
recipKID present if required
transactionID
senderNonce
freeText
body ccr (CertReqMessages)
only one CertReqMsg allowed
-- if multiple cross certificates are required they MUST be packaged in separate PKIMessages
certTemplate
-- details follow
version v1 or v3
-- <>
signingAlg present
-- the requesting CA must know in advance with which algorithm it wishes the certificate to be signed
subject present
-- may be NULL-DN only if subjectAltNames extension value proposed
validity present
-- MUST be completely specified (i.e., both fields present)
issuer present
-- may be NULL-DN only if issuerAltNames extension value proposed
publicKey present
-- the key to be certified (which must be for a signing algorithm)
extensions optionally present
-- a requesting CA must propose values for all extensions which it requires to be in the cross-certificate
POPOSigningKey
-- "Proof of possession profile" を参照 (B4 節
protection
-- bits calculated using MSG_SIG_ALG
extraCerts
-- MAY contain any additional certificates that requester wishes
-- to include

ccp:(修正中)

フィールド
sender Responding CA name
 -- the name of the CA who produced the message
recipient Requesting CA name
-- issuerAltName 拡張または証明書の issuer フィールドに含まれている CA 名
messageTime time of production of message
-- current time at requesting CA
protectionAlg MSG_MAC_ALG or MSG_SIG_ALG
-- 任意の認証された保護アルゴリズム
senderKID present if required
-- メッセージ保護の検証を要求する場合に必須
recipKID  
transactionID  
   
senderNonce  
   
recipNonce  
   
freeText  
body  
   
   
   
response  
status  
PKIStatusInfo.status  
   
   
   
   
failInfo  
   
   
   
   
certifiedKeyPair  
   
certificate  
   
   
protection present
-- MSG_MAC_ALG or MSG_SIG_ALG を使って計算されたビット
extraCerts optionally present
-- エンドエンティティへのいくつかの証明書送付に使用することができます。RA がここにその証明書を追加することができます。

 

body genp (GenRepContent)

CAProtEncCert present (object identifier one of PROT_ENC_ALG), with relevant value
-- CAのためにエンドエンティティによる情報の暗号化が必要な場合に使用されます(例えば、回復目的とした秘密鍵)

SignKeyPairTypes present, with relevant value
-- 主体者公開鍵のためにCAが証明を行う署名アルゴリズム識別子のセット

EncKeyPairTypes present, with relevant value
--主体者公開鍵のために CA が証明を行う暗号化/鍵合意鍵アルゴリズムのセット

PreferredSymmAlg present (object identifier one of PROT_SYM_ALG) , with relevant value
-- 後のPKIメッセージ(暗号化のため)にこのCAが使用する予定の対称型アルゴリズム

CAKeyUpdateInfo optionally present, with relevant value

-- CA がこのフィールドを使って、関連ルートCAの鍵ペアについての情報を提供することができます(これは応答CAが対象のルートCAであることを暗示するものではない)

CurrentCRL optionally present, with relevant value
-- CAが完全CRLを提供できます。(すなわち、可能な限り揃えたもの)

 

B7. 相互認証リクエスト/レスポンス(一方向) English

単独の相互認証証明書(すなわち、1回につき 2つではない)生成。要求 CA は、PKIPublicationInfo 制御を使用して、応答 CA が生成した相互認証証明書を公開する役割を果たすことができます。

前提条件:

1. 応答 CA がリクエストを処理する前に、その原本性について検証することができます。(アウト・オブ・バンド方式が必要かもしれません)

2. 要求 CA がレスポンスを処理する前に、その原本の本人性を証明することができます。(アウト・オブ・バンド方式が必要かもしれない)

メッセージのフロー:

ステップ Requesting CA       Responding CA
1 format ccr        
2   ->  ccr ->  
3         handle ccr
4         produce ccp
5   <- ccp <-  
6 handle ccp        
7 format conf        
8   -> conf ->  
9         handle conf

ccr:

Field Value

sender Requesting CA name
-- メッセージを作成した CA の名称

recipient Responding CA name
-- 証明書の発行を要求されたCAの名称

messageTime time of production of message
-- 要求CAの現在時刻

protectionAlg MSG_SIG_ALG
-- このリクエストには署名による保護しか認められない

senderKID present if required
-- メッセージ保護の検証を要求された場合に必須

transactionID present

-- 実装固有の値、要求CAにとって意味のあるもの

-- [もし応答CAにて既に使用中の場合には、応答 CA が拒否メッセージを発行しなければなりません]

senderNonce present
-- 128(擬似の―)ランダムビット

freeText any valid value

body ccr (CertReqMessages)

only one CertReqMsg allowed

--1つ CertReqMsg しか許可されません

-- もし複数の相互認証証明書が要求された場合に、それぞれは別々のPKIMessages に格納しなければなりません。

certTemplate present
-- 詳細は以降のものを参照

version v1 or v3
-- <<v3 が強力に推奨されます>>

signingAlg present
-- 要求 CA が予め証明書に署名する希望のアルゴリズムを知らなければなりません。

subject present
-- subjectAltNames 拡張値の提示がある場合に限って、NULL-DN である可能性があります。

validity present
-- 必ず完全に明記しなければなりません(すなわち、両方のフィールドが存在します)

issuer present
-- issuerAltNames拡張値の提示がある場合に限って、NULL-DN である可能性があります。

publicKey present

-- 証明される鍵(必ず署名アルゴリズムのため)

extensions optionally present
-- 要求CAは相互認証証明書に必要とするフィールドについてのすべての値を提示しなければなりません。

POPOSigningKey present
-- 「Proof of possessionプロファイル」(B4 節)を参照してください

protection present
-- MSG_SIG_ALGを使って計算されたビット

extraCerts optionally present
-- リクエスタが包括したい任意の追加証明書を格納することができます。

ccp:

Field Value

sender Responding CA name
-- メッセージを作成したCAの名称

recipient Requesting CA name
-- 証明書の生成を要求したCA の名称

messageTime time of production of message
-- 応答CAの現在時刻

protectionAlg MSG_SIG_ALG
-- このメッセージを保護するための署名に限る

senderKID present if required
-- メッセージ保護の検証を要求された場合に必須

recipKID present if required

transactionID present

-- 対応するccrメッセージによる値

senderNonce present
-- 128(擬似的―)ランダムビット

recipNonce present
--対応するccrメッセージからのsenderNonce

freeText any valid value

body ccp (CertRepMessage)

only one CertResponse allowed
-- もし複数の相互認証証明書が必要となる場合に、それぞれが必ず別々のPKIMessages に格納しなければなりません。

response present

status present

PKIStatusInfo.status present
-- PKIStatusInfoステータスが granted と grantedWithMods のどちらかの場合、 certifiedKeyPairが必ず存在し、そしてfailInfoが存在してはいけません。

failInfo present depending on PKIStatusInfo.status
-- PKIStatusInfoステータスが「rejection」の場合に、certifiedKeyPairが必ず不在し、failInfoが必ず存在し、そして適切なビット設定を含めます。

certifiedKeyPair present depending on PKIStatusInfo.status

certificate present depending on certifiedKeyPair
-- 公開する前に、実際の証明書の内容は必ず要求 CA から確認を受けなければいけません。

protection present
-- MSG_SIG_ALGを使って計算されたビット

extraCerts optionally present
-- レスポンダが希望する任意の追加証明書を格納することができます。

 

B8. 初期登録/認証(基本認証機構) English

(未初期化の)エンドエンティティが CA に対して(最初の)証明書を申請します。CA が証明書を含めたメッセージで応答し、エンドエンティティがまた確認情報を返します。すべての情報が認証されます。

この機構はエンドエンティティがローカルで生成した公開鍵(典型的な場合は、署名鍵)に対して証明書の申請も認めます。また、エンドエンティティは、集中的な生成を要求したり、ほかの鍵ペア(典型的な場合は暗号鍵ペア)の認証を求めたりすることができます。

認証要求の対象はローカルで生成された公開鍵1つ(それ以上の場合は別の PKIMessages を使用)に限ります。

エンドエンティティはローカル生成の公開鍵と連携している秘密鍵の「proof-of-possession」を保護しなければなりません。

前提条件:

1. エンドエンティティがアウト・オブ・バンド方式でCAの署名を認証できること

out-of-band means

2. エンドエンティティとCAとの間に1つのMACing鍵を共有すること

メッセージフロー:

ステップ エンドエンティティ       PKI
1 format ir        
2   ->  ir ->  
3         handle ir
4         format ip
5   <- ip <-  
6 handle ip        
7 format conf        
8   -> conf ->  
9         handle conf

このプロファイルにおいて、エンドエンティティが 1つの PKIMessage にすべての CertReqMsg(すなわち、1つまたは2つ)を含み、そして PKI(CA)が生成する1つの PKIMessageには完全なレスポンス(すなわち、オプションとしての2番目の鍵ペアを含む要求の対象であり、かつ集中的な鍵生成が対応されている場合に)を含むように強制的に規定します。また簡素化を図るために、このメッセージが最後のものとなるよう強制的に規定します。(すなわち、「waiting」というステータス値を使用しない)

ir:

Field Value

recipient CA name
-- 証明書の生成を求められた CA の名称

protectionAlg MSG_MAC_ALG
-- このリクエストに初期検証鍵に基づいた MAC 保護しか適用できない

senderKID referenceNum
-- 以前に CA がエンドエンティティに対し発行した参照番号(MACing 鍵とともに)

transactionID present
-- 実装固有値、エンドエンティティにとって意味がある
-- [CA にて既に使用中の場合に、CAから拒否メッセージを発行しなければなりません]

senderNonce present
-- 128(擬似的に―)ランダムビット

freeText any valid value

body ir (CertReqMessages)

only one or two CertReqMsg

are allowed
-- 複数の証明書が要求された場合に、リクエストはそれぞれ別々の PKIMessages に格納しなければなりません。

CertReqMsg one or two present
-- 詳細は下記を参照してください、注意事項:crm[0] が1番目(必ず存在する)を表し、 crm[1](オプションである。一括生成の鍵を要求する時に使用される)を表します。

crm[0].certReq. fixed value of zero

certReqId
-- メッセージにおける雛形の索引

crm[0].certReq present

certTemplate

--制約が存在する限り、必ず主体者公開鍵の値を含むこと。

crm[0].pop... optionally present if public key

POPOSigningKey from crm[0].certReq.certTemplate is

a signing key
-- このやり取りにおいてproof of possessionを必要とすることがあります(詳細は B4  を参照)

crm[0].certReq. optionally present

controls.archiveOptions
-- エンドエンティティは、ローカルで生成した秘密鍵のアーカイブ化を要求することができます

crm[0].certReq. optionally present

controls.publicationInfo

-- エンドエンティティは結果の証明書の公開を要求することができます。

crm[1].certReq fixed value of one

certReqId
-- このメッセージにおける雛形の索引

crm[1].certReq present

certTemplate
-- 実際の公開鍵ビットを含んではいけません、制約が存在する限り(例えば、名前は crm[0] と同一である必要性はありません)

crm[0].certReq. present [object identifier MUST be PROT_ENC_ALG]

controls.protocolEncKey

 --もしこの CA が鍵の一括生成をサポートするならば、この短期の非対称型暗号鍵(エンドエンティティ生成)を使って、エンドエンティティの代わりにCA生成の秘密鍵を暗号化します。

crm[1].certReq. optionally present

controls.archiveOptions

crm[1].certReq. optionally present

controls.publicationInfo

protection present
-- MSG_MAC_ALGで計算されたビット

ip:

Field Value

sender CA name
-- このメッセージを生成したCAの名称

messageTime present
-- CAがメッセージを生成する時刻

protectionAlg MS_MAC_ALG
-- このレスポンスに対してMAC保護のみが認められる

recipKID referenceNum
-- 以前にCAがエンドエンティティに対して発行した参照番号(MACing鍵とともに)

transactionID present

-- 対応するirメッセージによる値

senderNonce present
-- 128(擬似的―)ランダムビット

recipNonce present
-- 対応するirメッセージのsenderNonceによる値

freeText any valid value

body ir (CertRepMessage)

contains exactly one response

for each request

-- PKI(CA)が必要に応じて1つまたは2つのリクエストに応答します。crc[0] は 1番目(必ず存在する)を示し;crc[1]は 2番目(irメッセージが2つのリクエストを包含し、かつ CA 鍵一括生成をサポートする場合に限って存在する)

certReqId
-- 対応するirメッセージにある1番目のリクエストに対する応答を含めなければなりません。

crc[0].status. present, positive values allowed:

status "granted", "grantedWithMods"

negative values allowed:

"rejection"

crc[0].status. present if and only if

failInfo crc[0].status.status is "rejection"

crc[0]. present if and only if

certifiedKeyPair crc[0].status.status is

"granted" or "grantedWithMods"

certificate present unless end entity's public key is an encryption key and POP is done in this in-band exchange

encryptedCert present if and only if end entity's public key is an encryption key and POP done in this in-band exchange

publicationInfo optionally present
-- indicates where certificate has been published (present at discretion of CA)

crc[1]. fixed value of one

certReqId
--対応するirメッセージにある2番目のリクエストに対する応答を含めなければなりません。

crc[1].status. present, positive values allowed:

status "granted", "grantedWithMods"

negative values allowed:

"rejection"

crc[1].status. present if and only if

failInfo crc[0].status.status is "rejection"

crc[1]. present if and only if

certifiedKeyPair crc[0].status.status is "granted"

or "grantedWithMods"

certificate present

privateKey present

publicationInfo optionally present
-- 証明書の公開場所を示します(CAの自由裁量で存在する)

protection present
-- MSG_MAC_ALGを使って計算されたビット

extraCerts optionally present
-- CAがエンドエンティティに追加的な証明書を提供できます。

conf:

Field Value

recipient CA name
-- 証明書の発行を要求されたCAの名称

transactionID present
-- 対応のirとipメッセージによる値

senderNonce present
-- 対応するipメッセージのrecipNonceによる値

recipNonce present
--対応するipメッセージのsenderNonceによる値

protectionAlg MSG_MAC_ALG
-- このメッセージには MAC 保護しか許可されません。認証のために署名鍵ペアしかir のなかに送られていない場合、もしくはこのイン・バンド手順のなかで POP が実行されていない場合に、MAC は初期認証鍵に基づいています。ほかの場合は、MACは返された encryptedCertの暗号化に使用された対称型鍵から派生した鍵に基づいています。

senderKID referenceNum
-- CA が以前にエンドエンティティに発行した参照番号(MACing鍵とともに)

body conf (PKIConfirmContent)
-- ASN.1 NULLです。

protection present
-- MSG_MAC_ALG を使って計算されたビット

 

B9. 証明書リクエスト English

(初期化済の)エンドエンティティが CA に(何らかの理由で)証明書の発行を要求します。CA が証明書を含んだメッセージで応答し、エンドエンティティが確認情報を返答します。すべてのメッセージが認証されます。

この手順のプロファイルは以下の例外を除いて、B8 節で提示されたものと同じです。

B10. 鍵更新リクエスト English

(初期化済の)エンドエンティティが CA に対して証明書の発行を要求します。CA が証明書を含んだメッセージで応答し、エンドエンティティは確認メッセージを返答します。すべてのメッセージが検証されます。

この手順のためのプロファイルは以下の例外を除いて、B8 節に提示されているものと同じです。


->AC