CA学习指南 联系客服

发布时间 : 星期六 文章CA学习指南更新完毕开始阅读

的生成和管理也提供了一整套的解决方法和支持API函数。随机数的好坏是决定一个密钥是否安全的重要前提。OpenSSL还提供了其它的一些辅助功能,如从口令生成密钥的API,证书签发和管理中的配置文件机制等等。

四、加密算法

常用加密算法对比:

4.1 非对称算法

1、RSA为代表,加密与解密的密钥各不相同,一个密钥公开,一个密钥个人保存。公开的密钥为公钥,个人保存的密钥为私钥。特点是由其中一个密钥很难算出另外一个密钥。密钥产生的主要思想是选取两个大素数p和q,中间通过繁复的计算得到: 加密函数:解密函数:

2、主要运用于数据加密与数字签名(数字签名RSA+MD5)

3、目前机构一般采用2048bit密钥长度,个人采用1024bit密钥长度。随着2009年12月12日RSA的768bit密钥被破解,当前1024bit密钥受到威胁。

4.2 对称算法

1、DES为代表,它是一至相同的密钥。由通信双方协定密钥。特点是加密速度快,适合于大数据加密

4.3 哈希算法

1、MD5为代表,是HASH函数的变换函数进行计算的算法,特点是任意长度的消息处理后均得到固定长度的散列值,这个散列长度小于原消息长度

2、与RSA一起应用于数字签名

现在MD5 已经不安全了,一般使用长度更高的sha1哈希(Secure Hash Algorithm)

4.3 签名算法

sha1RSA、sha224RSA、sha256、sha384、sha512RSA

五、证书编码

证书cer、证书链p7b、密钥窗口jks等在存储方面通常保存为DER或Base64格式,下面具体详解这两种编码的原理,同时扩展讲解两种编码之间的相互转换。

5.1 DER编码

5.2 Base64编码

Base64编码可以直接保存为p7b或cer文件。

六、证书规范

CA中心普遍采用的规范是X.509[13]系列和PKCS系列,其中主要应用到了以下规范:

6.1 X.209(1988)

ASN.1是描述在网络上传输信息格式的标准方法。它有两部分:第一部份(ISO 8824/ITU X.208)描述信息内的数据、数据类型及序列格式,也就是数

据的语法;第二部分(ISO 8825/ITU X.209)描述如何将各部分数据组成消息,也就是数据的基本编码规则。

ASN.1原来是作为X.409的一部分而开发的,后来才独立地成为一个标准。这两个协议除了在PKI体系中被应用外,还被广泛应用于通信和计算机的其他领域。

6.2 X.500(1993)

X.500是一套已经被国际标准化组织(ISO)接受的目录服务系统标准,它定义了一个机构如何在全局范围内共享其名字和与之相关的对象。X.500是层次性的,其中的管理域(机构、分支、部门和工作组)可以提供这些域内的用户和资源信息。在PKI体系中,X.500被用来惟一标识一个实体,该实体可以是机构、组织、个人或一台服务器。X.500被认为是实现目录服务的最佳途径,但X.500的实现需要较大的投资,并且比其他方式速度慢;而其优势具有信息模型、多功能和开放性。

6.3 X.509(1993)

X.509是由国际电信联盟(ITU-T)制定的数字证书标准。在X.500确保用户名称惟一性的基础上,X.509为X.500用户名称提供了通信实体的鉴别机制,并规定了实体鉴别过程中广泛适用的证书语法和数据接口。

X.509的最初版本公布于1988年。X.509证书由用户公共密钥和用户标识符组成。此外还包括版本号、证书序列号、CA标识符、签名算法标识、签发者名称、证书有效期等信息。这一标准的最新版本是X.509 v3,它定义了包含扩展信息的数字证书。该版数字证书提供了一个扩展信息字段,用来提供更多的灵活性及特殊应用环境下所需的信息传送。

6.4 PKCS系列标准

PKCS是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。到1999年底,PKCS已经公布了以下标准:

PKCS#1:定义RSA公开密钥算法加密和签名机制,主要用于组织PKCS#7中所描述的数字签名和数字信封。

PKCS#3:定义Diffie-Hellman密钥交换协议。

PKCS#5:描述一种利用从口令派生出来的安全密钥加密字符串的方法。使用MD2或MD5 从口令中派生密钥,并采用DES-CBC模式加密。主要用于加密从一个计算机传送到另一个计算机的私人密钥,不能用于加密消息。 PKCS#6:描述了公钥证书的标准语法,主要描述X.509证书的扩展格式。 PKCS#7:定义一种通用的消息语法,包括数字签名和加密等用于增强的加密机制,PKCS#7与PEM兼容,所以不需其他密码操作,就可以将加密的消息转换成PEM消息。

PKCS#8:描述私有密钥信息格式,该信息包括公开密钥算法的私有密钥以及可选的属性集等。

PKCS#9:定义一些用于PKCS#6证书扩展、PKCS#7数字签名和PKCS#8私钥加密信息的属性类型。 PKCS#10:描述证书请求语法。

PKCS#11:称为Cyptoki,定义了一套独立于技术的程序设计接口,用于智能卡和PCMCIA卡之类的加密设备。

PKCS#12:描述个人信息交换语法标准。描述了将用户公钥、私钥、证书和其他相关信息打包的语法。

PKCS#13:椭圆曲线密码体制标准。