网络攻防学习笔记 Day20
数字签名以密码技术为基础,其安全性取决于签名所使用的密码系统的安全程度。目前,数字签名主要通过公开密钥密码系统实现,此类数字签名可以看作公开密钥密码系统加密过程的颠倒使用。
身份认证技术主要包括口令认证、信物认证、地址认证、用户特征认证和密码学认证。
基于共享密钥的认证的基本要求是示证者和验证者共享密钥(通常是对称密码体制下的对称密钥)。对于只有少量用户的系统,每个用户预先分配的密钥的数量不多,共享还比较容易实现。但是,如果系统规模较大,通常需要一个可信第三方作为在线密钥分配器。
在公开密钥密码体制中,虽然用户的公钥是公开的,但如果公钥的真实性和完整性受到网络攻击的威胁,则基于公钥的各种应用的安全性将受到危害。因此,必须由可信第三方将公钥和用户的身份信息绑定在一起,并进行数字签名,这就是数字证书的概念。
一般来说,数字证书是一种由一个可信任的权威机构签署的信息集合。在不同的应用中有不同的证书,如公钥证书(Public Key Certificate,PKC)、PGP 证书、SET 证书等。
公钥证书主要用于确保公钥及其与用户绑定关系的安全,一般包含持证主体身份信息、主体的公钥信息、CA 信息以及附加信息,再加上用 CA 私钥对上述信息的数字签名。
证书文件主要有三种:X.509 证书、PKCS#12 证书和 PKCS#7 证书。其中,X.509 证书是最经常使用的证书,它仅包含公钥信息而没有私钥信息,是可以公开进行发布的,所以 X.509 证书对象一般都不需要加密。
在 Windows 系统中,X.509 证书文件的后缀名经常是 DER、CER,都可以被文件系统自动识别。对于 OpenSSL 来说,证书文件的后缀通常为 PEM。
PKCS#12 证书不同于 X.509 证书,它可以包含一个或多个证书,并且还可以包含证书对应的私钥。PKCS#12 的私钥是经过加密的,密钥由用户提供的口令产生。因此,在使用 PKCS#12 证书的时候一般会要求用户输入密钥口令。PKCS#12 证书文件在 Windows 系统中的后缀名是 PFX。
PKCS#7(RFC 2315)可以封装一个或多个 X.509 证书或者 PKCS#6 证书(PKCS#6 是一种不经常使用的证书格式)、相关证书链上的 CA 证书,并且可以包含 CRL 信息。与 PKCS#12 证书不同的是,PKCS#7 不包含私钥信息。
所谓“证书指纹”是指对证书全部编码内容(也就是证书文件)进行散列运算得到的散列值,也就是证书的数字指纹。证书指纹并不是证书的一部分,它的作用也与证书中的证书签名有所不同。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/74d34961430f092d73afd7590】。文章转载请联系作者。
评论