<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    鷹翔宇空

    學(xué)習(xí)和生活

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks

    本文引自: http://www.infosecurity.org.cn/article/pki/standard/23547.html

    ?

    此備忘錄的狀況
    此文檔為因特網(wǎng)社區(qū)詳細(xì)描述了一個(gè)因特網(wǎng)標(biāo)準(zhǔn)途徑 協(xié)議 ,并且請(qǐng)求改善的討論和建
    議。為了確保此 協(xié)議 的標(biāo)準(zhǔn)化狀態(tài),請(qǐng)參考當(dāng)前版本的因特網(wǎng)官方 協(xié)議 標(biāo)準(zhǔn)( STD1 )。本備
    忘錄的發(fā)布是不受限制的。

    版權(quán)通知
    版權(quán)所屬因特網(wǎng)社會(huì)( 1999 ),保留全部權(quán)力。
    目錄
    1
    摘要 2
    2
    略讀
    2
    3
    證書請(qǐng)求信息 (CertReqMessage) 的語法
    2
    4
    擁有私鑰的證明
    (POP) 3
    4
    1 簽名密鑰
    3
    4
    2 加密密鑰
    3
    4
    3協(xié)議 密鑰
    4
    4
    4POP 語法
    4
    5CertRequest
    語法
    6
    6Controls
    語法
    7
    6
    1 注冊(cè)號(hào)( RegistrationToken )控制
    7
    6
    2 鑒定者( Authenticator )控制
    7
    6
    4 文檔選項(xiàng)( ArchiveOptions )控制
    8
    6
    5 舊證書 ID OldCertID )控制
    9
    6
    6協(xié)議 加密密鑰( ProtocolEncryptionKey )控制
    9
    7
    對(duì)象標(biāo)識(shí)符( ObjectIdentifiers
    10
    8
    對(duì)于安全的考慮
    10
    9
    參考
    10
    10
    謝辭
    11
    附錄 A .構(gòu)造
    dhMAC 11
    AppendixB.UseofRegInfoforName-ValuePairs 12
    AppendixC.ASN.1StructuresandOIDs 15
    FullCopyrightStatement 21

    1
    摘要

    本文描述了證書請(qǐng)求消息格式 (CRMF) 。它被用來向 CA 傳遞一個(gè)產(chǎn)生 X.509 證書請(qǐng)求
    (
    可能通過 RA) 。請(qǐng)求消息一般包括公鑰和有關(guān)的登記信息。

    2
    略讀
    證書請(qǐng)求構(gòu)成的步驟如下:
    1)
    產(chǎn)生 CertRequest 值,其值包括:公鑰,所有或部分的終端實(shí)體( EE )的名字,其他所
    要求的證書值域,以及與登記過程相連系的控制信息。
    2)
    可以通過計(jì)算 CertRequest 的值來證明擁有與所請(qǐng)求的證書的公鑰相連系的私鑰,即可
    計(jì)算出 POP proofofpossession ,擁有私鑰的證明)的值。
    3)
    以上兩項(xiàng)所需要的其他登記信息,這些信息和 POP 值, CertRequest 結(jié)構(gòu)組成證書請(qǐng)求
    信息。
    4)
    證書請(qǐng)求信息被秘密傳遞給 CA ,傳遞的方法不是本文敘述的范圍。

    3
    證書請(qǐng)求信息 (CertReqMessage) 的語法
    證書請(qǐng)求信息由證書請(qǐng)求,一個(gè)可選的檢驗(yàn)項(xiàng),以及一個(gè)可選的登記信息項(xiàng)。

    CertReqMessages::=SEQUENCESIZE(1..MAX)OFCertReqMsg

    CertReqMsg::=SEQUENCE{
    certReqCertRequest,
    popProofOfPossessionOPTIONAL,
    --
    其內(nèi)容依賴于密鑰類型
    regInfoSEQUENCESIZE(1..MAX)ofAttributeTypeAndValueOPTIONAL}

    POP
    用來證明證書請(qǐng)求者確實(shí)擁有所對(duì)應(yīng)的私鑰。此項(xiàng)可由 certReq 計(jì)算出來,其內(nèi)容和結(jié)
    構(gòu)隨公鑰算法的類型和運(yùn)作模式的改變而改變。 regInfo 項(xiàng)僅包括與證書請(qǐng)求有關(guān)的補(bǔ)充信
    息。它還可包括請(qǐng)求者的聯(lián)系信息,布告信息,或?qū)ψC書請(qǐng)求有用的輔助信息。直接與證書
    內(nèi)容有關(guān)的信息應(yīng)該包括在 certReq 中。然而若 RA 包含另外的 certReq 內(nèi)容,這可以使 pop
    項(xiàng)無效。因此其余證書想要的數(shù)據(jù)可以由 regInfo 提供。


    4
    擁有私鑰的證明 (POP)
    為了防止某些攻擊以及允許 CA/RA 檢驗(yàn)終端實(shí)體和密鑰對(duì)之間對(duì)應(yīng)的有效性, PKI

    理操作使終端實(shí)體有能力證明擁有 ( 也就是說能用 ) 與證書公鑰所對(duì)應(yīng)的私鑰。 CA/RA 在證書
    交換中可自由選擇如何實(shí)施 POP (例如帶外的方法或 CRMF 的帶內(nèi)的方法),也就是說這可
    以是一個(gè)策略問題。然而,因?yàn)楝F(xiàn)在有許多非 PKIX 的操作 協(xié)議 在使用(例如許多電子郵件
    協(xié)議
    ),它們并不檢驗(yàn)終端實(shí)體和私鑰之間的對(duì)應(yīng)性,這要求 CA/RA 必須通過一些方法來實(shí)
    POP 。這種對(duì)應(yīng)性僅能被 CA/RA 假設(shè)為已證實(shí),直到普遍存在可操作的 協(xié)議 (如簽名,
    加密, 協(xié)議 密鑰對(duì)),這樣才能證明對(duì)應(yīng)性的存在。因此若 CA/RA 沒有證實(shí)對(duì)應(yīng)性,在英特
    網(wǎng) PKI 中的證書將沒有意義。
    依照證書所要求的密鑰類型, POP 可用不同方法實(shí)現(xiàn)。若密鑰可用于多種目的(如 RSA
    密鑰),那么 POP 可用任何一種方式實(shí)現(xiàn)。

    本文考慮到 POP CA RA 或兩者都驗(yàn)證的情況。一些策略可能要求 CA 在認(rèn)證過程
    中檢驗(yàn) POP 。在此過程中, RA 必須提交 CertRequest POP CA ,并且作為一種選擇也
    可以檢驗(yàn) POP 。若策略不要求 CA 檢驗(yàn) POP ,那么 RA 應(yīng)該提交終端實(shí)體的請(qǐng)求和證明給
    CA
    。如果這不可能的話(例如, RA 用帶外的方法檢驗(yàn) POP ),那么 RA 可以向 CA 證明所
    要求的證明已經(jīng)被驗(yàn)證。若 CA 使用帶外的方法證明 POP (例如人工傳遞 CA 所生成私鑰),
    那么 POP 項(xiàng)不會(huì)被用。

    4
    1 簽名密鑰
    對(duì)簽名密鑰來說,終端實(shí)體用簽名來證明擁有私鑰。

    4
    2 加密密鑰
    對(duì)加密密鑰來說,終端實(shí)體提供私鑰給 CA/RA ,或?yàn)榱俗C明擁有私鑰被要求解密。解
    密通過直接或間接來完成。直接的方法是 RA/CA 發(fā)布一個(gè)隨機(jī)測(cè)試,終端實(shí)體被要求立即
    做出回答。間接的方法是發(fā)布一個(gè)被加密的證書,讓終端實(shí)體來證明它有能力對(duì)證書解密。
    CA
    發(fā)布的證書使用一種僅能被指定終端實(shí)體使用的格式。

    4
    3協(xié)議 密鑰
    對(duì) 協(xié)議 密鑰來說,終端實(shí)體使用 4.2 節(jié)中的 3 種方法來加密密鑰。對(duì)于直接和間接的方
    法,為了證明終端實(shí)體擁有私鑰(也就是對(duì)加密的證書解密或?qū)Πl(fā)布的測(cè)試做出回答),終
    端實(shí)體和 PKI 管理機(jī)構(gòu)(即 CA/RA )必須建立一個(gè)共享的密鑰。注意:這并不需要任何限
    制強(qiáng)加在被 CA 鑒定的密鑰上,特別是對(duì)于 Diffie-Hellman 密鑰,終端實(shí)體可自由選擇它的
    算法參數(shù),例如必要時(shí) CA 能產(chǎn)生一個(gè)帶有正確參數(shù)的短期密鑰對(duì)(如一次性密鑰對(duì))。
    終端實(shí)體也可以 MAC (與密鑰有關(guān)的單向散列函數(shù)稱為 MAC ,即消息鑒別碼)證書請(qǐng)
    求(使用共享的由 Diffie-Hellman 算法計(jì)算出的密鑰)作為第四個(gè)可選擇的事物來證明 POP
    只要 CA 已經(jīng)有了 DH 證書,這個(gè)證書已經(jīng)被終端實(shí)體知道,并且終端實(shí)體愿意使用 CA
    DH
    參數(shù),這個(gè)選項(xiàng)就可以使用。

    4
    4POP 語法
    ProofOfPossession::=CHOICE{
    raVerified[0]NULL,
    --
    用于是否 RA 已經(jīng)證明請(qǐng)求者擁有私鑰
    signature[1]POPOSigningKey,
    keyEncipherment[2]POPOPrivKey,
    keyAgreement[3]POPOPrivKey}
    這個(gè)選項(xiàng)可以使用
    POPOSigningKey::=SEQUENCE{
    poposkInput[0]POPOSigningKeyInputOPTIONAL,
    algorithmIdentifierAlgorithmIdentifier,
    signatureBITSTRING}
    --
    簽名 signature (使用 algorithmIdentifier 所指的算法)是基于 poposkInput DER
    編碼值。

    --
    注意:如果 certReq 中的 CertTemplate 結(jié)構(gòu)包含主體和公鑰值,那么
    --poposkInput
    必須省略掉,并且 signature 必須通過 certReq DER 編碼值計(jì)算出來。
    --
    如果 certReq 中的 CertTemplate 結(jié)構(gòu)沒有包含主體和公鑰值, poposkInput 必須存在
    --
    并被簽名。
    --
    這種策略保證了公鑰不會(huì)同時(shí)存在于 poposkInput certReq 中的 CertTemplate 結(jié)
    構(gòu)。

    POPOSigningKeyInput::=SEQUENCE{
    authInfoCHOICE{
    sender[0]GeneralName,
    --
    用于當(dāng)存在一個(gè)被證實(shí)的 sender 的標(biāo)識(shí)符時(shí)(例如一個(gè)來自于以前頒發(fā)并且
    現(xiàn)在
    --
    仍有效的證書的 DN (可辨認(rèn)名))
    publicKeyMACPKMACValue},
    --
    用于當(dāng)現(xiàn)在不存在一個(gè)被證實(shí)的 sender GeneralName 時(shí);
    --publicKeyMAC
    包括一個(gè)基于密碼的消息鑒別碼( MAC ),
    --
    它是基于 publicKey DER 編碼值。
    publicKeySubjectPublicKeyInfo}

    PKMACValue::=SEQUENCE{
    algIdAlgorithmIdentifier,
    --
    算法是基于密碼的 MAC{1284011353376613} ,參數(shù)為 PBMParameter
    valueBITSTRING}

    POPOPrivKey::=CHOICE{
    thisMessage[0]BITSTRING,
    --
    此項(xiàng)含有擁有私鑰的證明,并且此項(xiàng)包括私鑰本身(被加密)。
    subsequentMessage[1]SubsequentMessage,
    dhMAC[2]BITSTRING}
    --
    僅用于 協(xié)議 密鑰,在此項(xiàng)中證明擁有私鑰,此項(xiàng)包括一個(gè)基于來自終端實(shí)體的私
    有的
    --DH
    鑰和 CA 的公共的 DH 鑰的密鑰的 MAC (基于 certReq 的參數(shù)的 DER 編碼值,

    --
    必須都包括 subject 和公鑰); dhMAC 必須根據(jù)附錄 A 中的說明計(jì)算出來。

    SubsequentMessage::=INTEGER{
    encrCert(0),
    --
    要求結(jié)果證書為了終端實(shí)體被加密,接著 POP 將被一個(gè)確認(rèn)消息所證實(shí)
    challengeResp(1)}
    --
    要求為了證明擁有私鑰, CA/RA 參與進(jìn)和終端實(shí)體之間的回答挑戰(zhàn)的交流。
    含有此規(guī)格的 協(xié)議 若要成為一個(gè)完整的 協(xié)議 將包括確認(rèn)和回答挑戰(zhàn)的消息。

    4
    4 1 基于密碼的 MAC 的使用
    當(dāng) publicKeyMAC 被用于 POPOSigningKeyInput 中來證明請(qǐng)求的真實(shí)性,下述的算法將
    被使用。

    PBMParameter::=SEQUENCE{
    saltOCTETSTRING,
    owfAlgorithmIdentifier,
    --
    使用單向函數(shù)的算法標(biāo)識(shí)符(建議使用 SHA-1 算法 )
    iterationCountINTEGER,
    --OWF
    被應(yīng)用的次數(shù)

    macAlgorithmIdentifier
    --MAC
    的算法標(biāo)識(shí)符 ( 例如 DES-MAC,Triple-DES-MAC[PKCS11],
    }--
    HMAC[RFC2104,RFC2202])

    使用 PBMParameter 來計(jì)算 publicKeyMAC ,由此來證明公鑰證書請(qǐng)求來源的過程可以

    由兩部分組成。第一部分使用共享的秘密信息來生成一個(gè) MAC 密鑰。第二部分散列公鑰,
    并用 MAC 密鑰來產(chǎn)生一個(gè)確認(rèn)值。
    第一部分算法的初始化假設(shè)存在一個(gè)共享的分布在一個(gè)可信任的位于 CA/RA 和終端實(shí)
    體之間的方式的秘密。 salt 值被加之與此共享的秘密,并使用 iterationCount 次單向散列函
    數(shù)。這樣,此共享的秘密作為第一次輸入,接下來每一次重復(fù)計(jì)算中,上一次的輸出作為這
    一次的輸入,最后產(chǎn)生密鑰 K
    在第二部分中, K 和公鑰作為輸入來產(chǎn)生 publicKeyMAC ,如下所示:
    publicKeyMAC=Hash(KXORopad,Hash(KXORipad,publickey))
    opad ipad 定義于
    RFC2104

    單向散列函數(shù)的算法標(biāo)識(shí)符是 SHA-1{13143226} MAC 的算法標(biāo)識(shí)符是
    HMAC-SHA1{136155812}


    5CertRequest
    語法
    CertRequest
    由請(qǐng)求標(biāo)識(shí)符、證書內(nèi)容模板和一組可選的控制信息組成。

    CertRequest::=SEQUENCE{
    certReqIdINTEGER,--
    使請(qǐng)求和回答相匹配的標(biāo)識(shí)符
    certTemplateCertTemplate,--
    所發(fā)布證書的選擇域
    controlsControlsOPTIONAL}--
    有關(guān)證書發(fā)布的屬性信息


    CertTemplate::=SEQUENCE{
    version[0]VersionOPTIONAL,
    serialNumber[1]INTEGEROPTIONAL,
    signingAlg[2]AlgorithmIdentifierOPTIONAL,
    issuer[3]NameOPTIONAL,
    validity[4]OptionalValidityOPTIONAL,
    subject[5]NameOPTIONAL,
    publicKey[6]SubjectPublicKeyInfoOPTIONAL,
    issuerUID[7]UniqueIdentifierOPTIONAL,
    subjectUID[8]UniqueIdentifierOPTIONAL,
    extensions[9]ExtensionsOPTIONAL}

    OptionalValidity::=SEQUENCE{
    notBefore[0]TimeOPTIONAL,
    notAfter[1]TimeOPTIONAL}--
    至少存在一個(gè)

    Time::=CHOICE{
    utcTimeUTCTime,
    generalTimeGeneralizedTime}

    6Controls
    語法
    證書請(qǐng)求的產(chǎn)生可以包括一個(gè)或多個(gè)有關(guān)請(qǐng)求過程的控制值。

    Controls::=SEQUENCESIZE(1..MAX)OFAttributeTypeAndValue

    以下的控制被定義為: regToken authenticator pkiPublicationInfo pkiArchiveOptions
    oldCertID
    protocolEncrKey (這些項(xiàng)被認(rèn)為可以超時(shí)擴(kuò)展)。

    6
    1 注冊(cè)號(hào)( RegistrationToken )控制
    regToken
    控制包含以前的信息(或是基于秘密的評(píng)估或是基于了解的信息),這些信息
    往往被 CA 用于在頒發(fā)證書前驗(yàn)證請(qǐng)求者身份。一收到包含 regToken 的證書請(qǐng)求, CA 就驗(yàn)
    證這些信息,以便確認(rèn)在證書請(qǐng)求中的聲稱的身份。
    RegToken
    可以被 CA 生成,并在帶外提供給訂戶,或者對(duì) CA 和訂戶都可用。任何帶
    外的交換的安全性應(yīng)該足夠應(yīng)付如 CA 接受了某人的干擾信息而沒有接受原本訂戶的信息
    這樣的冒險(xiǎn)。
    RegToken
    控制將典型的僅被用于終端實(shí)體進(jìn)入 PKI 的初始化上,而 authenticator 控制
    (見 6 2 節(jié))將不僅用于初始化,而且將用于接下來的證書請(qǐng)求上。
    在一些使用例子中, regToken 可能是一個(gè)文本字符串或是一個(gè)數(shù),如隨機(jī)數(shù)。這個(gè)值接
    下來能被作為二進(jìn)制數(shù)或是一個(gè)二進(jìn)制數(shù)的字符串表示來編碼。不管數(shù)的屬性,為了確保值
    的統(tǒng)一的編碼, regToken 的編碼將用 UTF8

    6
    2 鑒定者( Authenticator )控制
    Authenticator
    控制包含一些用于行為基礎(chǔ)的信息,這些信息用來在和 CA 交流中產(chǎn)生非
    密碼的身份檢查。例子有:母親未婚時(shí)的名字,社會(huì)安全號(hào)的最后 4 個(gè)數(shù)字,或其他和訂戶
    CA 共享的 知識(shí) 信息;這些信息的散列;或其他用于該目的的信息。 Authenticator 控制值
    可由 CA 或訂戶生成。
    在一些使用例子中, Authenticator 可能是一個(gè)文本字符串或是一個(gè)數(shù),如隨機(jī)數(shù)。這個(gè)
    值接下來能被作為二進(jìn)制數(shù)或是一個(gè)二進(jìn)制數(shù)的字符串表示來編碼。不管數(shù)的屬性,為了確
    保值的統(tǒng)一的編碼, Authenticator 的編碼將用 UTF8

    6
    3 頒發(fā)信息( PublicationInformation )控制
    pkiPublicationInfo
    控制使訂戶可以控制 CA 證書的發(fā)布。它被定義為如下語法:

    PKIPublicationInfo::=SEQUENCE{
    actionINTEGER{
    dontPublish(0),
    pleasePublish(1)},
    pubInfosSEQUENCESIZE(1..MAX)OFSinglePubInfoOPTIONAL}

    --
    如果 action "dontPublish" pubInfos 必須不存在。
    --(
    如果 action "pleasePublish" ,并且 pubInfos 被刪除,
    --action
    被設(shè)為 "dontCare" 。)

    SinglePubInfo::=SEQUENCE{
    pubMethodINTEGER{
    dontCare(0),
    x500(1),
    web(2),
    ldap(3)},
    pubLocationGeneralNameOPTIONAL}
    如果選擇 dontPublish 項(xiàng),請(qǐng)求者指示 PKI 不要發(fā)布證書(這表示請(qǐng)求者要自己發(fā)布證
    書)。
    如果選擇 dontCare 項(xiàng),或者如果 PKIPublicationInfo 控制被從請(qǐng)求中刪除,請(qǐng)求者指示
    PKI
    可以用任何它選擇的方法發(fā)布證書。
    如果請(qǐng)求者除了希望 CA 能夠在其他存放處使證書有效,還希望證書至少出現(xiàn)在一些地
    方,那就要為 pubInfos 設(shè)置兩個(gè) SinglePubInfo 值,一個(gè)是 x500 web ldap ,另一個(gè)是
    dontCare

    如果 pubLocation 被用的話,此項(xiàng)表示請(qǐng)求者愿意證書在這些地方被發(fā)現(xiàn)(注意,
    GeneralName
    可包括例如 URL IP 地址等)。

    6
    4 文檔選項(xiàng)( ArchiveOptions )控制
    pkiArchiveOptions
    控制使訂戶能夠應(yīng)用這樣的信息,這些信息用于建立一個(gè)對(duì)應(yīng)于證書
    請(qǐng)求公鑰的私鑰的文檔。它的語法定義如下:

    PKIArchiveOptions::=CHOICE{
    encryptedPrivKey[0]EncryptedKey,
    --
    私鑰的實(shí)際值
    keyGenParameters[1]KeyGenParameters,
    --
    使私鑰能夠重新生成的參數(shù)
    archiveRemGenPrivKey[2]BOOLEAN}
    --
    如果 sender 希望 receiver 保存 receiver 對(duì)應(yīng)請(qǐng)求所生成的密鑰對(duì)中的私鑰,則設(shè)為
    真。
    --
    如果不要被保存,則設(shè)為假。


    EncryptedKey::=CHOICE{
    encryptedValueEncryptedValue,
    envelopedData[0]EnvelopedData}
    --
    加密私鑰必須被放在 envelopedData


    EncryptedValue::=SEQUENCE{
    intendedAlg[0]AlgorithmIdentifierOPTIONAL,
    --
    被加密的值被使用的意指的算法
    symmAlg[1]AlgorithmIdentifierOPTIONAL,
    --
    用于加密值的對(duì)稱算法
    encSymmKey[2]BITSTRINGOPTIONAL,
    --
    用于加密值的對(duì)稱密鑰(已加密)
    keyAlg[3]AlgorithmIdentifierOPTIONAL,
    --
    用于加密對(duì)稱密鑰的算法
    valueHint[4]OCTETSTRINGOPTIONAL,
    --
    一個(gè)有關(guān) encValue 內(nèi)容的簡(jiǎn)單的描述或標(biāo)識(shí)符(它可能只對(duì)發(fā)送終端有意義,
    --
    并且只有 EncryptedValue 以后可以被發(fā)送終端重新檢驗(yàn),它才可以用)
    encValueBITSTRING}


    KeyGenParameters::=OCTETSTRING

    一種發(fā)送密鑰的選擇是發(fā)送有關(guān)如何使用 KeyGenParameters 選項(xiàng)重新產(chǎn)生密鑰的信息
    (例如,對(duì)許多 RSA 實(shí)行來說,可以發(fā)送第一個(gè)最初測(cè)試的隨機(jī)數(shù))。對(duì)于這個(gè)參數(shù)的實(shí)際
    的語法可以定義在這個(gè)文檔的接下來版本中,或定義在另一個(gè)標(biāo)準(zhǔn)中。

    6
    5 舊證書 ID OldCertID )控制
    如此項(xiàng)存在,則 OldCertID 詳述了被當(dāng)前證書請(qǐng)求所更新的證書。其語法為:

    CertId::=SEQUENCE{
    issuerGeneralName,
    serialNumberINTEGER
    }

    6
    6協(xié)議 加密密鑰( ProtocolEncryptionKey )控制
    如此項(xiàng)存在,則 protocolEncrKey 詳述了一個(gè) CA 用于加密對(duì) CertReqMessages 的回答的
    密鑰。此項(xiàng)能被用于當(dāng) CA 有發(fā)送給訂戶的需要加密的信息。這些信息中包括一個(gè)由 CA
    成的讓訂戶使用的私鑰。 protocolEncrKey 的編碼應(yīng)為 SubjectPublicKeyInfo

    7
    對(duì)象標(biāo)識(shí)符( ObjectIdentifiers
    id-pkix
    的對(duì)象標(biāo)識(shí)符為:
    id-pkixOBJECTIDENTIFIER::={iso(1)identified-organization(3)
    dod(6)internet(1)security(5)mechanisms(5)pkix(7)}

    --
    用于 InternetX.509PKI協(xié)議 及其組件的部分
    id-pkipOBJECTIDENTIFIER::{id-pkixpkip(5)}

    --
    CRMF 中的注冊(cè)登記控制( RegistrationControls
    id-regCtrlOBJECTIDENTIFIER::={id-pkipregCtrl(1)}
    id-regCtrl-regTokenOBJECTIDENTIFIER::={id-regCtrl1}
    id-regCtrl-authenticatorOBJECTIDENTIFIER::={id-regCtrl2}
    id-regCtrl-pkiPublicationInfoOBJECTIDENTIFIER::={id-regCtrl3}
    id-regCtrl-pkiArchiveOptionsOBJECTIDENTIFIER::={id-regCtrl4}
    id-regCtrl-oldCertIDOBJECTIDENTIFIER::={id-regCtrl5}
    id-regCtrl-protocolEncrKeyOBJECTIDENTIFIER::={id-regCtrl6}

    --CRMF
    中的注冊(cè)信息( RegistrationInfo
    id-regInfoOBJECTIDENTIFIER::={id-pkipid-regInfo(2)}
    id-regInfo-asciiPairsOBJECTIDENTIFIER::={id-regInfo1}
    --
    使用 OCTETSTRING
    id-regInfo-certReqOBJECTIDENTIFIER::={id-regInfo2}
    --
    使用
    CertRequest

    8
    對(duì)于安全的考慮

    CRMF
    傳送的安全性是基于 協(xié)議 或用于和 CA 通信的進(jìn)程的安全結(jié)構(gòu)。這些 協(xié)議 或進(jìn)程
    需要確保完整性,數(shù)據(jù)來源的真實(shí)性和信息的隱私。如果一個(gè) CRMF 包括敏感的訂戶信息,
    并且 CA 有一個(gè)終端實(shí)體所知的加密證書,那么強(qiáng)烈建議使用 CRMF 加密。

    9
    參考
    [HMAC]Krawczyk
    H. Bellare M. R.Canetti "HMAC:Keyed-HashingforMessage
    Authentication"
    “HMAC :為了保證信息真實(shí)性的密鑰 Hash 散列 ), RFC2104,1997.2


    10
    謝辭
    作者非常感謝 BarbaraFox WarwickFord RussHousley JohnPawling 所做的貢獻(xiàn)。
    他們的復(fù)審和建議進(jìn)一步闡明和改善了本篇的實(shí)用功能。



    附錄 A .構(gòu)造 dhMAC
    本附錄描述了計(jì)算 Diffie-Hellman 證書請(qǐng)求的 POPOPrivKey 結(jié)構(gòu)中的 dhMAC 位串的方

    法。

    1
    終端產(chǎn)生一個(gè) DH / 私鑰對(duì)
    用于計(jì)算公鑰的 DH 參數(shù)被詳述在 CA DH 證書中。
    CA DH 證書中, CApub=g^xmodp ,這里 g p 是已有的 DH 參數(shù),而 x
    CA
    私有的 DH 組件。
    對(duì)終端 E 來說, DHprivatevalue=y Epub=DHpublicvalue=g^ymodp

    2MAC
    進(jìn)程有以下步驟組成
    a
    certReq 項(xiàng)的值用 DER 編碼,產(chǎn)生一個(gè)二進(jìn)制串。這就是在 [HMAC] 中提
    到的 ‘text’ ,它是 HMAC-SHA1 算法所應(yīng)用的數(shù)據(jù)。
    b
    計(jì)算共享的 DHsecret ,如下所示: sharedsecret=Kec=g^xymodp 。終端 E
    計(jì)算 CApub^y CApub 是來自于 CA DH 證書; CA 計(jì)算 Epub^x Epub 是來自

    于證書請(qǐng)求。
    c
    密鑰 K 來自于 Kec ,證書請(qǐng)求者名稱,證書頒發(fā)者名稱。如下所示: K=
    SHA1(DER-encoded-subjectName|Kec|DER-encoded-issuerName)
    ,這里 ‘|’ 的意

    思是級(jí)連。如果在 CA 證書中 subjectName 為空,則替代使用
    DER-encoded-subjectAltName
    。如果 CA 證書中 issuerName 為空,則替代使用
    DER-encoded-issuerAltName

    d
    按照 RFC2104 來用數(shù)據(jù) 'text' 計(jì)算 HMAC-SHA1 SHA1(KXORopad,SHA1(K
    ORipad,text))
    ,此處 opad=0x36 重復(fù) 64 次, ipad=0x5C 重復(fù) 64 次。也就是

    說,
    1 K 的末端填充 0 ,來生成一個(gè) 64 字節(jié)的串(例如,若 K 16 字節(jié)長(zhǎng),
    就要填充 48 個(gè) 0 字節(jié))。
    2 XOR (異或)第 1 步生成的 64 字節(jié) K ipad
    3 ‘text’ 加到第 2 步生成的 64 字節(jié)串上。
    4 對(duì)第 3 步生成的字節(jié)串應(yīng)用 SHA1 算法。
    5 XOR 1 步生成的 64 字節(jié) K opad
    6 把第 4 步中 SHA1 生成的結(jié)果加到第 5 步生成的 64 字節(jié)串上。
    7 使用 SHA1 算法計(jì)算第 6 步中的產(chǎn)生值,最后輸出結(jié)果。
    例子代碼在 RFC2104,RFC2202 中有。
    e
    d )的輸出被編碼為位串( "dhMAC")

    3
    驗(yàn)證擁有私鑰( proof-of-possession )的進(jìn)程需要 CA 執(zhí)行
    執(zhí)行從 a )到 d ),然后比較 d )步的結(jié)果和 CA 收到的 "dhMAC" 值。如果它們匹配,則
    有如下結(jié)論:
    1
    終端擁有與證書請(qǐng)求中的公鑰對(duì)應(yīng)的私鑰(因?yàn)榻K端需要私鑰來計(jì)算 sharedsecret )。
    2
    只有 CA 能驗(yàn)證請(qǐng)求( CA 需要自己的私鑰來計(jì)算同樣的 sharedsecret )。這有助于防止
    CA
    受騙。

    參考文獻(xiàn)

    [RFC2104]Krawczyk,H.,Bellare,M.andR.Canetti,"HMAC:Keyed
    HashingforMessageAuthentication",RFC2104,February
    1997.

    [RFC2202]Cheng,P.andR.Glenn,"TestCasesforHMAC-MD5andHMAC-
    SHA-1",RFC2202,September1997.

    謝詞
    此附錄的細(xì)節(jié)由 HemmaPrafullchandra 所提供

    AppendixB.UseofRegInfoforName-ValuePairs

    The"value"fieldoftheid-regInfo-utf8PairsOCTETSTRING(with
    "tag"fieldequalto12andappropriate"length"field)willcontain
    aseriesofUTF8name/valuepairs.

    ThisAppendixlistssomecommonexamplesofsuchpairsforthe
    purposeofpromotinginteroperabilityamongindependent
    implementationsofthisspecification.Itisrecognizedthatthis
    listisnotexhaustiveandwillgrowwithtimeandimplementation
    experience.

    B.1.ExampleName/ValuePairs

    WhenregInfoisusedtoconveyoneormorename-valuepairs(viaid-
    regInfo-utf8Pairs),thefirstandsubsequentpairsSHALLbe
    structuredasfollows:

    [name?value][%name?value]*%

    ThisstringisthenencodedintoanOCTETSTRINGandplacedintothe
    regInfoSEQUENCE.

    Reservedcharactersareencodedusingthe%xxmechanismof[RFC1738],
    unlesstheyareusedfortheirreservedpurposes.

    Thefollowingtabledefinesarecommendedsetofnamedelements.
    Thevalueinthecolumn"NameValue"istheexacttextstringthat
    willappearintheregInfo.

    NameValue
    ----------
    version--versionofthisvariationofregInfouse
    corp_company--companyaffiliationofsubscriber
    org_unit--organizationalunit
    mail_firstName--personalnamecomponent
    mail_middleName--personalnamecomponent
    mail_lastName--personalnamecomponent
    mail_email--subscriber'semailaddress
    jobTitle--jobtitleofsubscriber
    employeeID--employeeidentificationnumberorstring

    mailStop--mailstop
    issuerName--nameofCA

    subjectName--nameofSubject
    validity--validityinterval

    Forexample:

    version?1%corp_company?Acme,Inc.%org_unit?Engineering%
    mail_firstName?John%mail_lastName?Smith%jobTitle?TeamLeader%
    mail_email?john@acme.com%

    B.1.1.IssuerName,SubjectNameandValidityValueEncoding

    Whentheyappearinid-regInfo-utf8Pairssyntaxasnamedelements,
    theencodingofvaluesforissuerName,subjectNameandvaliditySHALL
    usethefollowingsyntax.Thecharacters[]indicateanoptional
    field,::=and|havetheirusualBNFmeanings,andallothersymbols
    (exceptspaceswhichareinsignificant)outsidenon-terminalnames
    areterminals.Alphabeticsarecase-sensitive.

    issuerName::=<names>
    subjectName::=<names>
    <names>::=<name>|<names>:<name>

    <validity>::=validity?[<notbefore>]-[<notafter>]
    <notbefore>::=<time>
    <notafter>::=<time>

    Where<time>isUTCtimeintheformYYYYMMDD[HH[MM[SS>].HH,MM,
    andSSdefaultto00andareomittedifattheandofvalue00.

    Examplevalidityencoding:

    validity?-19991231%

    isavalidityintervalwithnovaluefornotBeforeandavalueof
    December31,1999fornotAfter.

    Eachnamecomprisesasinglecharacternameformidentifierfollowed
    byanamevalueofoneorUTF8characters.Withinanamevalue,when
    itisnecessarytodisambiguateacharacterwhichhasformatting
    significanceatanouterlevel,theescapesequence%xxSHALLbe
    used,wherexxrepresentsthehexvaluefortheencodingconcerned.
    Thepercentsymbolisrepresentedby%%.

    <name>::=X<xname>|O<oname>|E<ename>|D<dname>|U<uname>|I<iname>

    Nameformsandvalueformatsareasfollows:

    X.500directorynameform(identifier"X"):

    <xname>::=<rdns>
    <rdns>::=<rdn>|<rdns>,<rdn>
    <rdn>::=<avas>
    <avas>::=<ava>|<avas>+<ava>
    <ava>::=<attyp>=<avalue>
    <attyp>::=OID.<oid>|<stdat>

    Standardattributetype<stdat>isanalphabeticattributetype
    identifierfromthefollowingset:

    C(country)
    L(locality)
    ST(stateorprovince)
    O(organization)
    OU(organizationalunit)
    CN(commonname)
    STREET(streetaddress)
    E(E-mailaddress).

    <avalue>isanamecomponentintheformofaUTF8characterstring
    of1to64characters,withtherestrictionthatintheIA5subsetof
    UTF8onlythecharactersofASN.1PrintableStringmaybeused.

    Othernameform(identifier"O"):
    <oname>::=<oid>,<utf8string>

    E-mailaddress(rfc822name)nameform(identifier"E"):
    <ename>::=<ia5string>

    DNSnameform(identifier"D"):
    <dname>::=<ia5string>

    URInameform(identifier"U"):
    <uname>::=<ia5string>

    IPaddress(identifier"I"):
    <iname>::=<oid>

    Forexample:

    issuerName?XOU=OurCA,O=Acme,C=US%
    subjectName?XCN=JohnSmith,O=Acme,C=US,E=john@acme.com%

    References

    [RFC1738]Berners-Lee,T.,Masinter,L.andM.McCahill,
    "UniformResourceLocators(URL)",RFC1738,December1994.

    AppendixC.ASN.1StructuresandOIDs

    PKIXCRMF{iso(1)identified-organization(3)dod(6)internet(1)
    security(5)mechanisms(5)pkix(7)id-mod(0)id-mod-crmf(5)}

    CRMFDEFINITIONSIMPLICITTAGS::=
    BEGIN

    IMPORTS
    --DirectoryAuthenticationFramework(X.509)
    Version,AlgorithmIdentifier,Name,Time,
    SubjectPublicKeyInfo,Extensions,UniqueIdentifier
    FROMPKIX1Explicit88{iso(1)identified-organization(3)dod(6)
    internet(1)security(5)mechanisms(5)pkix(7)id-mod(0)
    id-pkix1-explicit-88(1)}

    --CertificateExtensions(X.509)
    GeneralName
    FROMPKIX1Implicit88{iso(1)identified-organization(3)dod(6)
    internet(1)security(5)mechanisms(5)pkix(7)id-mod(0)
    id-pkix1-implicit-88(2)}

    --CryptographicMessageSyntax
    EnvelopedData
    FROMCryptographicMessageSyntax{iso(1)member-body(2)
    us(840)rsadsi(113549)pkcs(1)pkcs-9(9)smime(16)
    modules(0)cms(1)};

    CertReqMessages::=SEQUENCESIZE(1..MAX)OFCertReqMsg

    CertReqMsg::=SEQUENCE{
    certReqCertRequest,
    popProofOfPossessionOPTIONAL,
    --contentdependsuponkeytype
    regInfoSEQUENCESIZE(1..MAX)OFAttributeTypeAndValueOPTIONAL}

    CertRequest::=SEQUENCE{
    certReqIdINTEGER,--IDformatchingrequestandreply
    certTemplateCertTemplate,--Selectedfieldsofcerttobeissued
    controlsControlsOPTIONAL}--Attributesaffectingissuance

    CertTemplate::=SEQUENCE{
    version[0]VersionOPTIONAL,
    serialNumber[1]INTEGEROPTIONAL,
    signingAlg[2]AlgorithmIdentifierOPTIONAL,
    issuer[3]NameOPTIONAL,
    validity[4]OptionalValidityOPTIONAL,
    subject[5]NameOPTIONAL,

    publicKey[6]SubjectPublicKeyInfoOPTIONAL,
    issuerUID[7]UniqueIdentifierOPTIONAL,
    subjectUID[8]UniqueIdentifierOPTIONAL,
    extensions[9]ExtensionsOPTIONAL}

    OptionalValidity::=SEQUENCE{
    notBefore[0]TimeOPTIONAL,
    notAfter[1]TimeOPTIONAL}--atleastoneMUSTbepresent

    Controls::=SEQUENCESIZE(1..MAX)OFAttributeTypeAndValue

    AttributeTypeAndValue::=SEQUENCE{
    typeOBJECTIDENTIFIER,
    valueANYDEFINEDBYtype}

    ProofOfPossession::=CHOICE{
    raVerified[0]NULL,
    --usediftheRAhasalreadyverifiedthattherequesterisin
    --possessionoftheprivatekey
    signature[1]POPOSigningKey,
    keyEncipherment[2]POPOPrivKey,
    keyAgreement[3]POPOPrivKey}

    POPOSigningKey::=SEQUENCE{
    poposkInput[0]POPOSigningKeyInputOPTIONAL,
    algorithmIdentifierAlgorithmIdentifier,
    signatureBITSTRING}
    --Thesignature(using"algorithmIdentifier")isonthe
    --DER-encodedvalueofpoposkInput.NOTE:IftheCertReqMsg
    --certReqCertTemplatecontainsthesubjectandpublicKeyvalues,
    --thenpoposkInputMUSTbeomittedandthesignatureMUSTbe
    --computedontheDER-encodedvalueofCertReqMsgcertReq.If
    --theCertReqMsgcertReqCertTemplatedoesnotcontainthepublic
    --keyandsubjectvalues,thenpoposkInputMUSTbepresentand
    --MUSTbesigned.Thisstrategyensuresthatthepublickeyis
    --notpresentinboththepoposkInputandCertReqMsgcertReq
    --CertTemplatefields.

    POPOSigningKeyInput::=SEQUENCE{
    authInfoCHOICE{
    sender[0]GeneralName,
    --usedonlyifanauthenticatedidentityhasbeen
    --establishedforthesender(e.g.,aDNfroma
    --previously-issuedandcurrently-validcertificate
    publicKeyMACPKMACValue},
    --usedifnoauthenticatedGeneralNamecurrentlyexistsfor
    --thesender;publicKeyMACcontainsapassword-basedMAC
    --ontheDER-encodedvalueofpublicKey

    publicKeySubjectPublicKeyInfo}--fromCertTemplate

    PKMACValue::=SEQUENCE{
    algIdAlgorithmIdentifier,
    --algorithmvalueshallbePasswordBasedMac{1284011353376613}
    --parametervalueisPBMParameter
    valueBITSTRING}

    PBMParameter::=SEQUENCE{
    saltOCTETSTRING,
    owfAlgorithmIdentifier,
    --AlgIdforaOne-WayFunction(SHA-1recommended)
    iterationCountINTEGER,
    --numberoftimestheOWFisapplied
    macAlgorithmIdentifier
    --theMACAlgId(e.g.,DES-MAC,Triple-DES-MAC[PKCS11],
    }--orHMAC[RFC2104,RFC2202])

    POPOPrivKey::=CHOICE{
    thisMessage[0]BITSTRING,
    --posessionisproveninthismessage(whichcontainstheprivate
    --keyitself(encryptedfortheCA))
    subsequentMessage[1]SubsequentMessage,
    --possessionwillbeproveninasubsequentmessage
    dhMAC[2]BITSTRING}
    --forkeyAgreement(only),possessionisproveninthismessage
    --(whichcontainsaMAC(overtheDER-encodedvalueofthe
    --certReqparameterinCertReqMsg,whichMUSTincludebothsubject
    --andpublicKey)basedonakeyderivedfromtheendentity's
    --privateDHkeyandtheCA'spublicDHkey);
    --thedhMACvalueMUSTbecalculatedasperthedirectionsgiven
    --inAppendixA.

    SubsequentMessage::=INTEGER{
    encrCert(0),
    --requeststhatresultingcertificatebeencryptedforthe
    --endentity(followingwhich,POPwillbeprovenina
    --confirmationmessage)
    challengeResp(1)}
    --requeststhatCAengageinchallenge-responseexchangewith
    --endentityinordertoproveprivatekeypossession

    --Objectidentifierassignments--

    id-pkixOBJECTIDENTIFIER::={iso(1)identified-organization(3)
    dod(6)internet(1)security(5)mechanisms(5)7}

    --arcforInternetX.509PKIprotocolsandtheircomponents

    id-pkipOBJECTIDENTIFIER::={id-pkix5}

    --RegistrationControlsinCRMF
    id-regCtrlOBJECTIDENTIFIER::={id-pkip1}

    --Thefollowingdefinitionmaybeuncommentedforusewith
    --ASN.1compilerswhichdonotunderstandUTF8String.

    --UTF8String::=[UNIVERSAL12]IMPLICITOCTETSTRING

    id-regCtrl-regTokenOBJECTIDENTIFIER::={id-regCtrl1}
    --withsyntax:
    RegToken::=UTF8String

    id-regCtrl-authenticatorOBJECTIDENTIFIER::={id-regCtrl2}
    --withsyntax:
    Authenticator::=UTF8String

    id-regCtrl-pkiPublicationInfoOBJECTIDENTIFIER::={id-regCtrl3}
    --withsyntax:

    PKIPublicationInfo::=SEQUENCE{
    actionINTEGER{
    dontPublish(0),
    pleasePublish(1)},
    pubInfosSEQUENCESIZE(1..MAX)OFSinglePubInfoOPTIONAL}
    --pubInfosMUSTNOTbepresentifactionis"dontPublish"
    --(ifactionis"pleasePublish"andpubInfosisomitted,
    --"dontCare"isassumed)

    SinglePubInfo::=SEQUENCE{
    pubMethodINTEGER{
    dontCare(0),
    x500(1),
    web(2),
    ldap(3)},
    pubLocationGeneralNameOPTIONAL}

    id-regCtrl-pkiArchiveOptionsOBJECTIDENTIFIER::={id-regCtrl4}
    --withsyntax:
    PKIArchiveOptions::=CHOICE{
    encryptedPrivKey[0]EncryptedKey,
    --theactualvalueoftheprivatekey
    keyGenParameters[1]KeyGenParameters,
    --parameterswhichallowtheprivatekeytobere-generated
    archiveRemGenPrivKey[2]BOOLEAN}
    --settoTRUEifsenderwishesreceivertoarchivetheprivate
    --keyofakeypairwhichthereceivergeneratesinresponseto

    --thisrequest;settoFALSEifnoarchivalisdesired.

    EncryptedKey::=CHOICE{
    encryptedValueEncryptedValue,
    envelopedData[0]EnvelopedData}
    --TheencryptedprivatekeyMUSTbeplacedintheenvelopedData
    --encryptedContentInfoencryptedContentOCTETSTRING.

    EncryptedValue::=SEQUENCE{
    intendedAlg[0]AlgorithmIdentifierOPTIONAL,
    --theintendedalgorithmforwhichthevaluewillbeused
    symmAlg[1]AlgorithmIdentifierOPTIONAL,
    --thesymmetricalgorithmusedtoencryptthevalue
    encSymmKey[2]BITSTRINGOPTIONAL,
    --the(encrypted)symmetrickeyusedtoencryptthevalue
    keyAlg[3]AlgorithmIdentifierOPTIONAL,
    --algorithmusedtoencryptthesymmetrickey
    valueHint[4]OCTETSTRINGOPTIONAL,
    --abriefdescriptionoridentifieroftheencValuecontent
    --(maybemeaningfulonlytothesendingentity,andusedonly
    --ifEncryptedValuemightbere-examinedbythesendingentity
    --inthefuture)
    encValueBITSTRING}
    --theencryptedvalueitself

    KeyGenParameters::=OCTETSTRING

    id-regCtrl-oldCertIDOBJECTIDENTIFIER::={id-regCtrl5}
    --withsyntax:
    OldCertId::=CertId

    CertId::=SEQUENCE{
    issuerGeneralName,
    serialNumberINTEGER}

    id-regCtrl-protocolEncrKeyOBJECTIDENTIFIER::={id-regCtrl6}
    --withsyntax:
    ProtocolEncrKey::=SubjectPublicKeyInfo

    --RegistrationInfoinCRMF
    id-regInfoOBJECTIDENTIFIER::={id-pkip2}

    id-regInfo-utf8PairsOBJECTIDENTIFIER::={id-regInfo1}
    --withsyntax
    UTF8Pairs::=UTF8String

    id-regInfo-certReqOBJECTIDENTIFIER::={id-regInfo2}

    --withsyntax
    CertReq::=CertRequest

    ?

    ?

    posted on 2006-03-19 19:34 TrampEagle 閱讀(1212) 評(píng)論(0)  編輯  收藏 所屬分類: 技術(shù)文摘
    主站蜘蛛池模板: 精品97国产免费人成视频| 国产成人亚洲综合无码精品| 亚洲AV无码AV日韩AV网站| 久久WWW免费人成人片| 亚洲一区二区三区国产精品无码| 最近中文字幕无免费| 亚洲欧洲日韩国产| 亚洲第一网站免费视频| 亚洲国产成人精品无码区在线秒播| 最近中文字幕国语免费完整| 亚洲综合小说久久另类区| 麻花传媒剧在线mv免费观看| 亚洲欧洲日产国产最新| 美女视频黄的全免费视频网站| 亚洲欧洲久久精品| 中文字幕人成无码免费视频| 国产成人精品日本亚洲专| 毛片视频免费观看| 亚洲Av永久无码精品黑人| 国产一区视频在线免费观看| 青青草97国产精品免费观看| 亚洲天堂中文字幕在线| 成人国产精品免费视频| 久久精品国产精品亚洲艾草网| 久久午夜羞羞影院免费观看| 亚洲国产美女视频| 成人片黄网站色大片免费| 亚洲精品色在线网站| 亚洲人成电影在线播放| 国产自国产自愉自愉免费24区 | 一级一黄在线观看视频免费| 国产成人亚洲精品影院| 好紧我太爽了视频免费国产| 亚洲综合在线成人一区| 四虎在线视频免费观看| 日韩电影免费在线观看网址 | 国产精品白浆在线观看免费| 亚洲综合图片小说区热久久| 成人看的午夜免费毛片| 一级做a爰片久久毛片免费陪 | 亚洲香蕉在线观看|