PKI相关

PKI相关学习笔记

数字证书基础

数字证书基础

数字证书是一种数字标识,可以说是Internet上的安全护照或身份证明。当人们到其他国家旅行时,用户护照可以证实其身份,并被获准进入这个国家。数字证书提供的是网络上的身份证明。

数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息和公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效时间,发证机关(证书授权中心)的名称,该证书的序列号等信息,证书的格式遵循ITUT X.509国际标准。

3.1.1 证书格式
在Internet网络中,应用程序使用的证书都来自不同的厂商或组织,为了实现可交互性,要求证书能够被不同的系统识别,符合一定的格式,并实现标准化。X.509为证书及其CRL格式提供了一个标准。但X.509本身不是Internet标准,而是国际电联ITU标准,它定义了一个开放的框架,并在一定的范围内可以进行扩展。

为了适应PKI技术的发展,IETF也必须制定在Internet上使用X.509和CRL的标准。PKIX工作组就提供了一个Internet草案”Part I: X.509 Certificate and CRL Profile”(详细内容可见:ftp://ftp.ietf.org/internet-drafts/draft-ietf-pkix-ipki-part1-11.txt),用于定义在Internet PKI中使用X.509和CRL的方法和规范。该草案把X.509作为标准,并对各标准项和扩展做了说明,基本接收了X.509作为Internet中的证书标准,但也定义了被PKI应用的X.509 V3和CRL V2标准格式的设置,这些设置包含了PKIX工作组对X.509所做的一些新的扩展。

X.509目前有三个版本:V1、V2和V3,其中V3是在V2的基础上加上扩展项后的版本,这些扩展包括由ISO文档(X.509-AM)定义的标准扩展,也包括由其他组织或团体定义或注册的扩展项。X.509由ITU-T X.509(前身为CCITT X.509)或ISO/IEC 9594-8定义,最早以X.500目录建议的一部分发表于1988年,并作为V1版本的证书格式。X.500于1993年进行了修改,并在V1基础上增加了两个额外的域,用于支持目录存取控制,从而产生了V2版本。

为了适应新的需求ISO/IEC和ANSI X9发展了X.509 V3版本证书格式,该版本证书通过增加标准扩展项对V1和V2证书进行了扩展。另外,根据实际需要,各个组织或团体也可以增加自己的私有扩展。

X.509 V1和V2证书所包含的主要内容如下:

  • 证书版本号(Version):版本号指明X.509证书的格式版本,现在的值可以为0、1、2,也为将来的版本进行了预定义。
  • 证书序列号(SerialNumber):序列号指定由CA分配给证书的唯一的数字型标识符。当证书被取消时,实际上是将此证书的序列号放入由CA签发的CRL中,这也是序列号唯一的原因。
  • 签名算法标识符(Signature):签名算法标识用来指定由CA签发证书时所使用的签名算法。算法标识符用来指定CA签发证书时所使用的公开密钥算法和hash算法,须向国际知名标准组织(如ISO)注册。
  • 签发机构名(Issuer):此域用来标识签发证书的CA的X.500 DN名字。包括国家、省市、地区、组织机构、单位部门和通用名。
  • 有效期(Validity):指定证书的有效期,包括证书开始生效的日期和时间以及失效的日期和时间。每次使用证书时,需要检查证书是否在有效期内。
  • 证书用户名(Subject):指定证书持有者的X.500唯一名字。包括国家、省市、地区、组织机构、单位部门和通用名,还可包含email地址等个人信息等
  • 证书持有者公开密钥信息(subjectPublicKeyInfo):证书持有者公开密钥信息域包含两个重要信息:证书持有者的公开密钥的值;公开密钥使用的算法标识符。此标识符包含公开密钥算法和hash算法。
  • 签发者唯一标识符(Issuer Unique Identifier):签发者唯一标识符在第2版加入证书定义中。此域用在当同一个X.500名字用于多个认证机构时,用一比特字符串来唯一标识签发者的X.500名字。可选。
  • 证书持有者唯一标识符(Subject Unique Identifier):持有证书者唯一标识符在第2版的标准中加入X.509证书定义。此域用在当同一个X.500名字用于多个证书持有者时,用一比特字符串来唯一标识证书持有者的X.500名字。可选。
  • 签名值(Issuer’s Signature):证书签发机构对证书上述内容的签名值。

X.509 V3证书是在v2的基础上一标准形式或普通形式增加了扩展项,以使证书能够附带额外信息。标准扩展是指由X.509 V3版本定义的对V2版本增加的具有广泛应用前景的扩展项,任何人都可以向一些权威机构,如ISO,来注册一些其他扩展,如果这些扩展项应用广泛,也许以后会成为标准扩展项。

3.1.2 CRL格式
证书废除列表CRL(Certificate revocation lists,又称证书黑名单)为应用程序和其它系统提供了一种检验证书有效性的方式。任何一个证书废除以后,证书机构CA会通过发布CRL的方式来通知各个相关方。目前,同X.509 V3证书对对应的CRL为X.509 v2 CRL,其所包含的内容格式如下:

  • CRL的版本号:0表示X.509 V1 标准;1表示X.509 V2 标准;目前常用的是同X.509 V3证书对应的CRL V2版本。
  • 签名算法:包含算法标识和算法参数,用于指定证书签发机构用来对CRL内容进行签名的算法。
  • 证书签发机构名:签发机构的DN名,由国家、省市、地区、组织机构、单位部门和通用名等组成。
  • 此次签发时间:此次CRL签发时间,遵循ITU-T X.509 V2标准的CA在2049年之前把这个域编码为UTCTime类型,在2050或2050年之后年之前把这个域编码为GeneralizedTime类型。
  • 下次签发时间:下次CRL签发时间,遵循ITU-T X.509 V2标准的CA在2049年之前把这个域编码为UTCTime类型,在2050或2050年之后年之前把这个域编码为GeneralizedTime类型。
  • 用户公钥信息,其中包括废除的证书序列号和证书废除时间。废除的证书序列号是指要废除的由同一个CA签发的证书的一个唯一标识号,同一机构签发的证书不会有相同的序列号。
  • 签名算法:对CRL内容进行签名的签名算法。
  • 签名值:证书签发机构对CRL内容的签名值。

另外,CRL中还包含扩展域和条目扩展域。CRL扩展域用于提供与CRL有关的额外信息部份,允许团体和组织定义私有的CRL扩展域来传送他们独有的信息;CRL条目扩展域则提供与CRL条目有关的额外信息部份,允许团体和组织定义私有的CRL条目扩展域来传送他们独有的信息。

3.1.3 证书的存放
数字证书作为一种电子数据格式,可以直接从网上下载,也可以通过其他方式。

  • 使用IC卡存放用户证书。即把用户的数字证书写到IC卡中,供用户随身携带。这样用户在所有能够读IC卡证书的电子商务终端上都可以享受安全电子商务服务。
  • 用户证书直接存放在磁盘或自己的终端上。户将从CA申请来的证书下载或复制到磁盘或自己的PC机或智能终端上,当用户使用自己的终端享受电子商务服务时,直接从终端读入即可。
  • 另外,CRL一般通过网上下载的方式存储在用户端。

PKI 学习1

公钥技术系统可以使得通信安全的前提是:任何需要使用安全服务的通信都是建立在公钥基础上。
而与公钥成对的私钥只掌握在通信的另一方。这个信任基础是通过公钥证书来实现的。
公钥证书就是一个用户身份与他的公钥的结合,在结合之前由一个可信赖的权威机构CA来证实用户的身份,然后再由CA对用户身份及与对应公钥结合的证书进行数字签名,以证明证书的有效性。

PKI 系统的组成:

1.证书签发管理平台:
CA(签发中心),RA(证书注册中心,用户和CA的接口),KMC(密钥管理中心),OCSP,LDAP(证书状态查询)
2.证书应用支撑
SSL,签名,时间戳,其他安全应用
3.业务支撑(应用)
门户、财务、ERP。。。
PKI的基础技术包括加密、数字签名、数据完整性机制、数字信封、双因子身份认证、双重数字签名等。

加密

通过密码算法对数据做变换,似的只有持有解密密钥的人才能恢复数据内容。主要目的为防止信息非授权泄露。
现在密码学的基本原则是:一切密码寓于密钥之中,即算法公开,密钥保密。
PKI把公钥密码和对阵密码结合起来,在Internet上实现密钥的自动管理,保证网上数据的传输安全。

密码与密钥的区别:

其实 就是不要把密码与密文搞混了就行了
密码算法(algorithm)也叫密码(cipher),是用来加密(encryption)和解密(decryption)的数学函数。
密钥(key)是加密和解密用的参数.用来进行明文(pliaintext)和密文(ciphertext)间的转换。
举个例子,你的密码是123
但是明文发送容易被人盗取
你用某个算法加密,密钥是:53csif253a6jt342fd621
传输的便是加密过的数据,比如:fasetqrlkerqoiruq53qrqewlkjrlfasdfa41
解密也需要密钥
加密密钥和解密密钥可以相同(对称加密算法),也可以不相同(非对称算法)

数字签名

数字签名是指使用密码算法对待发的数据进行加密处理,生成出一段信息,并附在原文上一起发送,类似与现实中的签名,由接收方来判断真伪。
每个人都有一对“钥匙”(数字身份),其中一个只有她/他本人知道(密钥),另一个公开的(公钥)。签名的时候用密钥,
验证签名的时候用公钥。又因为任何人都可以落款申称她/他就是你,因此公钥必须向接受者信任的人(身份认证机构)来注册。
注册后身份认证机构给你发一数字证书。对文件签名后,你把此数字证书连同文件及签名一起发给接受者,
接受者向身份认证机构求证是否真地是用你的密钥签发的文件。
过程:先算出数据hash,然后用私钥对hash值进行加密。并与原文一起发送给接受者,接收者只有用发送者的公钥才能对
其解密,解密出hash值后,与接收者自己对原文进行hash所得结果对比,如果结果相同说明信息是完整的,保证了完整性。
由于接受者使用发送者的公钥解密得到原文,因此实现了不可抵赖性。由于接收方使用发送方的公钥进行解密,只有使用
发送方的密钥加密的信息才能被解密,因此这其中也包含了鉴权的过程。