密码学之基础

  • 哈希函数

是指一种加密算法,它的输入可以任意长度,输出却都是固定长度,这种算法一般不用来解密,只是用来把任意长度的报文变成短小的报文摘要,用于文件或报文的完整性校验。常用的Hash哈希算法包括MD5,SHA1等。

  • 对称密码和非对称密码

对称密码是指加密和解密都是同一个密码的一种算法,常见的如DES,AES等。而非对称密码是指加密和解密是成对分开的密码算法,如RSA加密算法。

  • Diffie-Hellman密钥交换

Diffie-Hellman同样也是非对称加密算法,但这通常是专用于传递公钥证书的加密算法,用于在不安全的通道(如因特网)内交换公钥。这种算法让相互交互信息的用户很容易生成共同有效的各自密钥来解密公钥证书,而攻击者却很难根据截获的信息破解。

  • RSA:是指一种非对称的密钥算法,密码成对出现,一个用于加密(私钥),另一个用于解密(公钥),密钥长度是指模值的位长度,一般CA的密钥长度要2048位。
  • 用户证书:向用户传送公钥所使用的机制,密钥证书是公开密钥的容器。密钥证书通常包含接收者的公开密钥,公开密钥创建者的身份,密钥创建的日期和数字签名列表等。
  • CA证书:一种经第三方认证的密钥证书,CA代表认证机构,用它的私钥给用户公钥和一些相关信息一起加密,形成数字证书,用户可以用CA的公钥解密,得到用户的公钥(证书)。
  • 数字签名

用私钥对报文的摘要信息进行加密,叫做签名。因此CA签名也就是对某个公钥的哈希摘要用CA私钥进行加密并附在后面,对方得到公钥也进行哈希加密,与收到的哈希值进行比对,以确定该公钥证书是未被修改的CA承认的证书。

再理一遍:注意生成证书,实际上就是生成公钥,而这个公钥哈希后可以被CA签名(即被认证中心的CA私钥加密,而CA的公钥任何人都可以有,也就可以被接收方解开),接收方用CA公钥解开后得到哈希值,与收到的公钥的哈希值比对以确保公钥未被换过,真实可靠。 *

  • 密钥的编码格式(文件格式)

密钥包括私钥和公钥证书,DER是密钥的二进制表述格式,它直接就是二进制的数据可以直接使用;PEM格式既是对DER编码转码为Base64字符格式;通过解码(还包括处理特殊字符-、\n、\r、begin信息、end信息等),将会还原为DER格式;

  • X.509数字证书

X.509 是密码学里公钥证书组织形式的格式标准。X.509证书里含有公钥、身份信息和签名信息,以及发布时间,有效期等等。从密码学的角度来讲,X.509证书就是一个将某个密钥对中的公钥与某个主题(Subject)进行绑定的文件。具体来讲,和公钥进行绑定的不仅仅包括相应主题的可辨别名称(DN:Distinguished Name),可以包括主题相关的其它可选名称,比如Email地址、DNS名称等。

通常某个应用和服务,比如VPN,在收到请求时,会去寻找该ID对应的证书,注意,通常证书持有人的认定,是由主题(DN)决定的,DN中,通常只有的某些值可以决定该用户,比如email或CN等,CN的值可以是很多种,域名,IP, 人名,主机名等,如果是个人的email,早期是由DN的E或email字段指定,它并不由CN指定,email字段在RFC 5280经不用了,因此建议再–san 添加一个。单纯的CN并不会被strongswan认定为ID,因此颁给个人的用户证书,如果是用email作为ID,最好在证书生成时,用–san来指定。