公有私有密钥数字证书
TCP/IP是可能被窃听的网络,按TCP/IP协议族的工作机制,通信内容在所有通信线路上都可能被窥视。
通信的加密
HTTP协议中没有加密机制,但可以通过和SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全层传输协议)的组合使用,加密HTTP的通信内容。
用SSL建立安全通信线路之后,就可以在这条线路上进行HTTP通信了,SSL和HTTP组合使用被称为HTTPS(HTTP Secure,超文本传输安全协议)。
通常,HTTP直接和TCP通信。当使用SSL时,则演变为先和SSL通信,再由SSL和TCP通信。简言之,所谓HTTPS,其实就是身披SSL协议这层外壳的HTTP。
在采用SSL后,HTTP就拥有乐儿HTTPS的加密、证书和完整性保护这些功能。
SSL是独立于HTTP的协议,因此不光是HTTP协议,其他运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用。
SSL采用一种叫做公开密钥加密的加密处理方式。加密和解密都会用到密钥,没有密钥就无法对密码解密,反过来说,任何人只要持有密钥就能解密,如果密钥被攻击者获得,那加密也就失去了意义。
共享密钥方式并不安全,因为任何人只要获得了密钥,都已对加密文件解密。
那怎么才能安全地传输信息呢?
使用两把密钥的公开密钥加密。
公开密钥加密方式很好地解决了共享密钥加密的困难。
公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,一把叫做公开密钥。
私有密钥自己保存,公开密钥可以随意发布。
使用公开密钥加密方式加密,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走。
证明公开密钥正确性的证书
遗憾的是,公开密钥加密方式还是存在一些问题,那就是无法证明公开密钥本身就是货真价实的公开密钥。
比如,正准备和某台服务器建立公开密钥加密方式下的通信时,如何证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥。或许再公开密钥传输途中,真正的公开密钥就已经被攻击者替换掉了。
为了解决上述问题,可以使用由数字证书认证机构(CA,Certificate Authority)和其相关机关颁发的公开密钥证书。
数字证书认证机构处于客户端与服务器双方都可信赖的第三方机构的立场上。 威瑞信(VeriSign) 就是其中一家非常有名的数字证书认证机构。 我们来介绍一下数字证书认证机构的业务流程。 首先, 服务器的运营人员向数字证书认证机构提出公开密钥的申请。 数字证书认证机构在判明提出申请者的身份之后, 会对已申请的公开密钥做数字签名, 然后分配这个已签名的公开密钥, 并将该公开密钥放入公钥证书后绑定在一起。
服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户端, 以进行公开密钥加密方式通信。 公钥证书也可叫做数字书或直接称为证书。
接到证书的客户端可使用数字证书认证机构的公开密钥, 对那张证书上的数字签名进行验证, 一旦验证通过, 客户端便可明确两件事:
一, 认证服务器的公开密钥的是真实有效的数字证书认证机构。
二,服务器的公开密钥是值得信赖的。