⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc3029.txt

📁 本程序为在linux下实现FTP传输文件的实现
💻 TXT
📖 第 1 页 / 共 5 页
字号:
'pathProcInput'字段包含在确认时使用的策略和策略映射信息。
在响应中,'pkistatus'和`certstatus' 选项可能只在'chain'序列中出现。如果出现,
它们包含的是对最前面元素或目标值的本地验证结果,如果它是'chain'序列里的第一个元
素。
如果没有出现'pkistatus'或'certstatus',DVCS认为'chain'里的所有元素都是可信
赖的。注意:此时可能由有效的OCSP响应或DVC来指示有效证书。
TargetEtcChain ::= SEQUENCE {
  target  CertEtcToken,
  chainSEQUENCE SIZE (1..MAX) OF
 CertEtcToken OPTIONAL,
  pathProcInput [0] PathProcInput OPTIONAL }
PathProcInput ::= SEQUENCE {
  acceptablePolicySet SEQUENCE SIZE (1..MAX) OF
 PolicyInformation,
  inhibitPolicyMappingBOOLEAN DEFAULT FALSE,
  explicitPolicyReqd  BOOLEAN DEFAULT FALSE }
CertEtcToken ::= CHOICE {
  certificate[0] IMPLICIT Certificate ,
  esscertid  [1] ESSCertId ,
  pkistatus  [2] IMPLICIT PKIStatusInfo ,
  assertion  [3] ContentInfo ,
  crl  [4] IMPLICIT CertificateList,
  ocspcertstatus[5] IMPLICIT CertStatus,
  oscpcertid [6] IMPLICIT CertId ,
  oscpresponse  [7] IMPLICIT OCSPResponse,
  capabilities  [8] SMIMECapabilities,
  extension  Extension }
证书、策略信息和证书列表在[RFC2459]定义。ESSCertId在 [RFC2634]定义。CertId, 
OCSPResponse和CertStatus在 [RFC2560]中定义。PKIStatusField 在[RFC2510]定义。
选项'assertion'包含一个数据有效性证书,和时间戳,和其它声明。
选项'assertion', 'ocspresponse' 和'crl' 由外部响应DVCS服务提供的。选项
'certStatus'和'pkistatus'反映了由响应DVCS直接作出的决定。
如果用证书标识符就足够执行服务,那么作为证书的替代,证书标识符(ESSCertId, 
CertId)可以用在请求和响应中,例如,在相应的证书正用于其他请求和响应时(作为
SignedData类型的一部分)。
证书授权组织的证书和证书标识符可以任何顺序出现,可以表示几条证书链。
选项'capabilities'可用来指示SMIMECapabilities。它应用于证书,由序列中前面的
元素识别的。
7.6. DVCSRequestInformation
DVCSRequestInformation数据结构包含关于数据有效性和证书请求的通用信息。这个
数据结构在请求中出现,也包含在相应的数据有效性证书中。
DVCSRequestInformation ::= SEQUENCE  {
  version INTEGER DEFAULT 1 ,
  service ServiceType,
  nonceINTEGER OPTIONAL,
  requestTimeDVCSTime OPTIONAL,
  requester  [0] GeneralNames OPTIONAL,
  requestPolicy [1] PolicyInformation OPTIONAL,
  dvcs [2] GeneralNames OPTIONAL,
  dataLocations [3] GeneralNames OPTIONAL,
  extensions [4] IMPLICIT Extensions OPTIONAL
}
此服务类型列举了一个请求的DVCS服务类型。
对于此服务的描述参见第二章。
ServiceType ::= ENUMERATED { cpd(1), vsd(2), cpkc(3), ccpd(4) }
7.7. GeneralName 和GeneralNames
有几种GeneralName和GeneralNames 出现的SEQUENCES。这些数据结构从[RFC2459]
引入。
8. 数据有效性和证书请求
数据有效性和证书请求是[RFC2630]中定义的ContentInfo。
可由具有内容类型id-ct-DVCSRequestData签名的DVCSRequestData的 [RFC2630]内容
组成,
 id-ct-DVCSRequestData OBJECT IDENTIFIER ::= {iso(1) member-body(2) us(840) 
rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 7}
这些数据有选择的被内容类型contenttypes封装,以提供证明和/或机密性。
本文档描述了[RFC2630]签名数据结构的使用,其中在encapContentInfo 的
eContentType中指示的内容类型是id-ct-DVCSRequestData和 id-ct-DVCSRequestData,
且encapContentInfo中以字节形式承载的eContent包含DVCSRequestData数据结构。
使用签名数据结构时,数据确认和证书请求可以包含几个SignerInfo数据结构,且签
名计数器属性要依赖运行的环境。
当一个终端用户客户端创建请求时,有一个或零个SignerInfo 。后续的DVCS可以增
加一个额外的签名和一个连署属性,也可以使用RFC2630封装,提供验证和/或机密性。
请求的内容包含所需服务和其它参数的描述,要确认的数据和请求的可选标识符。
 DVCSRequest ::= SEQUENCE  {
 requestInformationDVCSRequestInformation,
 data  Data,
 transactionIdentifierGeneralName OPTIONAL
}
'DVCSRequest.requestInformation' 元素包含关于请求的通用信息,由以下这些请求
者填充:
  - 'version' 字段,在本协议的这个版本中设置为1或没有此字段。
  - 'service'字段包含请求的服务。
  - 'nonce'字段可被用来提供额外的保护,以消除重复运行或内容猜测攻击。
  - 'requestTime' 字段可被用来指示请求的服务应执行的时间。对vsd和cpkc服务,
特指声明签名文档或证书有效性的时间。对于其它服务,DVCS忽略此字段。如果没有此字
段,则假定为目前时间。
  - 'requester' 字段的值指示请求实体。此字段的使用和解释由DVCS策略定义。一
些使用的范例有:如果此字段存在,且请求被签名,DVCS要求此字段必须和相应签名证书
的匹配(subjectName 或 subjectAltName扩展)。
当一个请求被传递到另一个DVCS时,可能已经用另一个DVCS签名过。
传递时,DVCS可在请求中添加自己的特性传递给另一个服务提供者,且会去掉初始值。
  - 'requestPolicy' 字段指示请求确认的策略。DVCS必须检查此字段,以验证和它
自己策略的一致性。没有此字段指示可接收任何策略。.
  - 'dvcs'字段用来指示一列DVCS,它们可为产生响应提供(额外的)信息和执行额
外操作 。
由DVCS策略决定是否兑现此字段,定义接受通用名字的哪个选项(如,是URL,还是
DN)。
  - 'dataLocations'字段可用来指示请求的数据字段的拷贝和补充信息从哪里获得。
DVCS不在自己的操作中使用这个字段,这个字段的准确解释由应用程序定义。
  - 'requestTime' 字段可用来指示请求服务应执行多长时间。对vsd和cpkc服务来
说,它指定声明一个签名文档和证书的时间。对于其它服务,DVCS忽略此字段。如果没有
此字段,则假定为目前时间。DVCS服务关于本地策略中指定的目前时间有一个时间限制和
一个增量时间限制。
- 'extensions'字段可用来包含其它额外信息。扩展可标记为是否关键,指示是否假设
DVCS理解它们。本文档没有定义扩展。
DVCSRequest.data 包含指定的服务内容,由每一个DVCS提供的特殊服务定义。
根据请求的服务类型,这个字段可包含一个签名文档,一个证书列表,一个消息摘要或
任意数据。
使用下列的类型:
Data ::= CHOICE {
message  OCTET STRING ,
messageImprint DigestInfo,
certs SEQUENCE SIZE (1..MAX) OF
 TargetEtcChain
}
填充数据元素的请求信息如下:
- 对vsd服务请求来说,请求者在“消息”选项的字节值中封装一个CMS SignedData
对象。
由请求者决定是否以及如何提供验证signedData 对象中签名所需的证书。请求者可以
往封装的signedData 对象中添加证书或在请求中添加证书列表。
- 对cpkc服务请求来说,使用'certs'选项。
每个要验证的证书必须包含在单独的TargetEtcChain实例中。TargetEtcChain.chain
字段标识一个或多个可用来确认证书的信任链条。DVCS可有选择的挑选证书的子集作为证
书路径,或忽略这个字段。
'TargetEtcChain.pathProcInput'字段表示X.509公钥证书路径确认使用的精确策略
指示器和抑制策略映射指示器可接受的策略集和初始设置(参见RFC2459)。
请求中,只有TargetEtcChain的证书、ESSCertId、CertId或扩展选项可使用。
请求者负责提供足够的信息给DVCS,来标识相应的证书。
  - 对ccpd服务来说,使用'messageImprint'选项。
hashAlgorithm 字段中指明的哈希算法应该是“强壮”的哈希算法(也就是说,应该是
单向和避免冲突的)。由数据证书服务器来决定是否给定的哈希算法足够“强壮”(例如,基
于目前对密码分析学的知识了解和计算资源技术的状态)。
-  对cpd服务来说,使用'message' 选项。
这个字段包含请求者指定的任何类型内容数据。DVCS不检查、修改或基于“消息”字
段特殊内容而采取特殊行动。
'DVCSRequest.transactionIdentifier'字段用来把包含错误消息的DVCS响应和请求
关联起来。例如,在基于邮件的环境中,参数可能是messageid的一个拷贝。注意:把请求
和有效的数据有效性证书关联起来时,transactionIdentifier 不是必须的。
9. DVCS响应
本章描述了由DVCS创建,用来指示证书请求和有效性结果的数据结构。
DVCS响应结构由DVCS产生,作为数据有效性和证书请求处理的结果。
数据有效性响应包含一个id-ct-DVCSResponseData类RFC2630ContentInfo,这个类用
信号表示一个DVCSResponse 结构。
id-ct-DVCSResponseData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
 us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 8 }
数据可用RFC2630结构封装,以便提供DVCS的验证和请求的一致性和机密性。本文档
指定RFC2630中SignedData结构使用方法。
encapContentInfo 的eContentType 中指示的contenttype属于
id-ct-DVCSResponseData类,这个类用信号表示一个DVCSResponse作为encapContentInfo
的eContent(载波形式是字节)。DVCS使用一个在extendedKeyUsage中用来验证DVCS签名
的相应证书的密钥。
在DVCS不能生成有效签名(假如DVCS的签名密钥被损坏)的关键环境中,产生的包含
错误提示的DVCSResponse必须是没有附上signerInfo的signedData。客户端把接收到的
未签名的DVCSResponse作为一个重要的和致命的错误,并且消息的内容是完全不可信的。  
有效响应可以包含以下内容之一:
1. 数据有效性证书(DVC),传递由DVCS执行的数据有效性操作所产生的结果。
2. 错误提示。当由于解析错误、请求者验证失败或其它导致DVCS不执行请求的而使请
求失败时,就产生错误提示。
使用下面的类:
DVCSResponse ::= CHOICE {
 dvCertInfoDVCSCertInfo ,
 dvErrorNote  [0] DVCSErrorNotice }
9.1. 数据有效性证书
数据有效性证书是包含带有'dvCertInfo'选项的DVCSResponse的signedData 对象类
型。
DVCSCertInfo::= SEQUENCE  {
version Integer DEFAULT 1 ,
dvReqInfo  DVCSRequestInformation,
messageImprintDigestInfo,
serialNumber  Integer,
responseTime  DVCSTime,
dvStatus[0] PKIStatusInfo OPTIONAL,
policy  [1] PolicyInformation OPTIONAL,
reqSignature  [2] SignerInfos  OPTIONAL,
certs[3] SEQUENCE SIZE (1..MAX) OF
TargetEtcChain OPTIONAL,
extensions Extensions OPTIONAL }
DVCSCertInfo结构的返回值是成功执行数据有效性服务的结果。它包含数据有效性的
结果,原始请求的参考和其它参数。请注意“成功执行”不一定意味着它本身的有效性——
DVCSCertInfo可以包含“有效”或“无效”结果。
DVCS建立如下的DVCSCertInfo:
  - 'version' 字段在协议的这个版本中从不出现。
'dvReqInfo'本质上是相应请求的'requestInformation'字段的一个拷贝。DVCS可以修
改ReqInfo结构的'dvcs'、'requester'、'dataLocations'和'nonce' 字段,举例来说,如
果请求由一系列DVCS处理,如果请求需要指示DVCS或指示从哪里找到'vpd'请求数据的一
个拷贝。对'nonce' 唯一的修改是需要包含一个以前不存在的新字段,或连接其它数据至以
存在值的末尾(右边)。
- 'DVCSCertInfo.messageImprint'字段从相应请求的'data'字段计算得来,如下:
  对于'certs'选项('vpkc'服务)来说,摘要是基于DER编码数据值计算得来。对于
'message'选项('vsd'和'vpd'服务)来说,摘要是基于OCTET STRING 字节值(不包括标
志和长度字节)计算得来。
  由DVCS决定选择合适的摘要算法。
  对于'messageImprint'选项('vcpd'服务)来说,拷贝DVCSRequest 的
'messageImprint'作为此字段值。
- 'DVCSCertInfo.serialNumber'字段包含一个唯一的请求标识符。
- 'responseTime'字段指示一个和响应有关的时间值。这个值可以是本地产生的,或者
签名的TimeStampToken (TST) ,或者从外部服务获得的DVC。
 在使用从外部服务获得的值之前,DVCS必须根据外部服务规则使之有效。 
- 'DVCSCertInfo.dvStatus'字段反映了收集到的有效性结果。
  如果字段不存在,等同于成功状态。
  对于vkpc,如果状态字段存在且置为成功(SUCCESS),表明所有的证书成功确认。
如果它存在且置为失败(FAILED),表明所有和一部分证书有效性验证失败,而且应该调查
'certs'的特殊状态,'certs'的TargetEtcChain 结构中至少有一个元素具有失败状态。
  如果'dvStatus'字段表明没有成功('granted'或'granted with mods'),那么
'failInfo'元素可能指示了失败的原因。注意:'certs'字段可能包含其它关于确认失败的
信息。
  签名之一确认的失败不一定是确认一个签名文档失败的必然结果。例如,只要成功确
认足够数量的签名,就会产生带有状态'grantedWithMods'的 DVC。带有'granted'状态的
DVC只有在所有签名都被成功确认后才会产生。
  如果不能立刻获得最后的响应,那么此字段必须存在,且状态值要设置为WAITING,
我们假定DVCS会在之后提供其它的最终状态。
  必要程序的细节是DVCS策略的一部分。
  失败时,请求者可以通过查看TargetEtcChain字段进一步调查失败的原因。
  'CertEtctoken.pkistatus'字段会指示哪一个条目确认失败或成功以及是什么原因。
- 'DVCSCertInfo.policy'字段指示DVCS操作的策略
-如果'DVCSCertInfo.reqSignature'存在,那么必然和相应请求的signerInfos字段有
相同的值,由策略决定它是否包含此字段。
- 'DVCSCertInfo.certs' 字段包含由DVCS进行确认后的结果。对于cpkc服务来说,
每个元素包含targetAndChain 子字段中带有可选子集的请求的相应字段的一个拷贝和确
认的结果,以及其它来自证书授权组织或附录C.3中描述的证书或证书参考。对于vsd服务
来说,每个元素包含一个需确认签名文档的签名的确认结果。
  当全程WAITING时,DVCS可以选择是在某些'certs'字段中返回一个唯一的等待状态,
或根本不返回这样的一个TargetEtcChain。
  'acceptablePolicySet'序列表明在X.509公钥证书路径有效期间处理的策略和映
射 。PolicyMappingsSyntax 在RF2459中定义。
- 'extensions'字段可用来向客户端返回其它信息。扩展可标记为是否重要,以便指示
客户端是否必须理解它们。本文档不定义扩展。
9.2. DVCS 错误通告
DVCS错误通告是一个包含'dvErrorNote'选项的DVCSResponse的CMS签名数据对象。 
DVCSErrorNotice ::= SEQUENCE {
 transactionStatus  PKIStatusInfo ,
 transactionIdentifier GeneralName OPTIONAL }
PKIStatusInfo在[RFC2511]中定义。为了和DVCSErrorNotice通讯,使用以下的
PKIFailureInfo值的子集:
PKIFailureInfo ::= BITSTRING  {
  badRequest (2),
  -- 禁止和不支持的事务
  badTime (3),
  -- 时间消息不很接近由本地策略定义系统时间
  badDataFormat (5),
  -- 提交的数据格式不正确
  wrongAuthority(6),
  -- 请求中显示的DVCS和响应令牌创建的不同
  incorrectData (7)
  --请求的数据(也就是签名)是不正确的)
在DVCSErrorNotice中, PKIStatusInfo的PKIStatus字段必须设置为REJECTED。
PKIStatusInfo 的'statusString'字段可用来提供额外的正文,诸如失败原因,就像“未
能获得服务”。DVCS用对应请求的'DVCSRequest.transactionIdentifier'字段的一个拷贝
来初始化'DVCSErrorNotice. Transaction Identifier'
在特定的环境中,DVCS可能无法对请求产生一个有效响应(例如,在一段时间内不能
计算出签名)。在这种情况下,DVCS会产生一个没有签名的DVCSErrorNotice 响应。
DVCS客户端不信任未签名的响应。DVCS客户端只有在通讯通道提供服务器验证的情况
下,才会信任未签名的响应(例如,RFC2246 TLS定义的服务可提供这样的验证)。
10.  传输
本文档中没有强制性的传输机制,所有的机制都是可选的。给出的两个传输协议示例允
许联机交换请求和响应,以及客户端和DVCS之间的异步通讯。
DVCS可使用协议的组合,产生多个DVCs。
10.1 通过HTTP或HTTPS实现的DVCS协议
这一段说明了把通过超文本传输协议交换的DVCS协议转换成ASN.1编码消息一种方法。
DER编码的DVCS请求和响应使用一个简单的具有Content-Type应用/dvcs(且具有缺
省二进制编码)的MIME对象封装。
这个MIME对象可使用普通的基于WWW连接的HTTP或HTTPS处理引擎进行发送和接收,
还可为DVCS消息提供简单的客户端/服务器传输。
10.2 使用电子邮件的DVCS协议

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -