本篇文章纯属于想到哪写到哪,所写的内容也不一定对,因为白天工作中刚好谈到TLS协议,然后晚上查阅资料,牵涉出TCP/IP、PKI、CA、TLS/SSI等一系列知识点。本来已经睡下了,还是决定半夜爬起来把自己的一些理解记录下来,怕过一段时间后,把好不容易理解的地方又给遗忘了。
TLS/SSL
传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。TLS/SSL位于应用层和传输层之间,它可以为任何基于TCP等可靠连接的应用层协议提供安全性保证(加密、身份验证、完整性),如下图1。
下图2为客户端和服务端的通信流程,为何服务器的证书不能被伪造,因为服务器的证书为光放证书机构CA颁发,其公钥是公开的,以百度举例,其公钥是不是百度的,可通过CA公开的信息查询到,这样能确保公钥是百度的无疑,然后通过百度的公钥解密后如果和证书的摘要(哈希值)一致,则可以确定通信的对方就是百度的服务器,这样就确保了身份验证。
加密算法
-
散列(Hash)
把任意大小的文档变成一个 固定大小(MD5是32个字符)的字符串,过程不可逆。MD5,SHA1等。 -
对称加密(Symmetric Cryptography)
使用同一个密钥加密和解密,优点是速度快,缺点是密钥管理不方便,要求共享密钥。 DES,AES等。 -
非对称加密(Asymmetric Cryptography)
使用公钥和私钥来加密和解密,优点是密钥管理很方便,缺点是速度慢。RSA,DSA等。 -
数字签名(Digital Signature)
使用散列和非对称加密验证文档的真实性。先为要签名的信息生成一个Hash字串,Hash1,然后用你的私钥加密得到Encrypted(Hash1),这就是你对这个文档的数字签名。
当别人需要验证某个文档是否是你签名的时候,只需要用你的公钥解密你的签名得到Hash1,并和该文档计算出来的Hash2对比,查看是否一致。如果一致则说明你确实对该文档签过名,否则就是没有。
PKI
PKI:Public Key Infrastructure,公钥基础设施。
CA:Certificate Of Authority,认证中心。
完整的PKI/CA系统如下部分:
- 安全服务器:安全服务器面向普通用户,用于提供证书申请、浏览、证书撤销列表、证书下载等安全服务;用户需要首先得到安全服务器的证书(该证书由CA颁发);
- 注册机构RA:在CA体系结构中起承上启下的作用,一方面向CA转发安全服务器传输过来的证书申请请求,另一方面向LDAP服务器和安全服务器转发CA颁发的数字证书和证书撤销列表(CRL)。
- LDAP服务器:Lightweight Directory Access
Protocol(轻量目录访问协议),提供目录浏览服务,负责将注册机构服务器RA传输过来的用户信息以及数字证书加入到服务器上。用户通过访问LDAP服务器就能够得到其他用户的数字证书。 - CA服务器:整个证书机构的核心,负责证书的签发。CA首先
产生自身的私钥和公钥,然后生成数字证书,并且将数字正常传输给安全服务器。CA还负责为安全服务器、RA服务器生成数字证书。 - 数据库服务器:CA中的核心部分,用于CA中数据(如密钥和用户信息等)、日志、统计信息的存储和管理。
CA证书颁发
数字签名要发挥作用,首先需要接收方获取发送方的公钥。如何证明获取的公钥确实是发送方的公钥而不是假冒的呢?数字证书提供了一种发布公钥的简便方法。
<证书的申请、发布、使用>
<数字证书的生成和验证>