密码学基础
对称加密(又称单钥加密、私钥加密、共享密钥加密)
:加密和解密使用同一个密钥,常见算法有AES
和DES
等。非对称加密(又称双钥加密、公钥加密)
:有一对密钥,私钥
和公钥
,公钥加密的数据,只能用对应的私钥来解密,反之亦然,常见算法有RSA
,DSA
,DH
,ECDSA
等。数字签名(Digital Signature)
:本质上就是用私钥对数据的摘要(md5, sha256, ...)
进行加密就生成了私钥持有人的签名,然后持有对应公钥的人可以对签名进行解密,如果能解密则证明该签名确实是由持有私钥的人签署的,然后用约定的摘要算法计算数据的摘要并与解密出的摘要对比,如果一样则证明数据没有被篡改。数字证书(Digital Certificate)
:假设 Alice 在有一对密钥 A(公钥 A-pub 和私钥 A-pri)的情况下,使用另外一对密钥 B (公钥 B-pub 和私钥 B-pri)的私钥 B-pri 对 A 密钥的公钥 A-pub 和拥有者信息
进行加密就生成了可以用来证明 Alice 身份的证书 Alice-A.cert。然后 Alice 将公钥 B-pub 分发给 Bob,以后 Bob 要和 Alice 通信前先向 Alice 索要证书 Alice-A.cert,Bob 得到证书后使用公钥 B-pub 对证书进行解密,能够解密并且解密后的拥有者信息确实是 Alice 则证明对方确实是 Alice,然后就可以使用解密后得到的公钥 A-pub 加密消息发送给 Alice 了,Alice 收到消息后可以使用私钥 A-pri 对消息进行解密。证书机构(Certificate Authority,简称 CA)
:把数字证书例子中的密钥对 B 改为第三个人 Tom 拥有,并且 Alice 和 Bob 都信任 Tom,那么 Tom 就是一个证书分发机构。Tom 可以分别为 Alice 和 Bob 生成他们的证书,并且向他们提供 CA 证书(或称为根证书
,即 Tom 的证书),Bob 可以使用 CA 证书验证 Alice 的证书,Alice 也可以 CA 证书验证 Bob 的证书。
SSL/TLS 简介
SSL
: secure socket layer
TLS
: transport layer security
1994年,NetScape公司设计了SSL协议(Secure Sockets Layer)的1.0版,但是未发布。
1995年,NetScape公司发布SSL 2.0版,很快发现有严重漏洞。
1996年,SSL 3.0版问世,得到大规模应用。
1999年,互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版。
2006年和2008年,TLS进行了两次升级,分别为TLS 1.1版和TLS 1.2版。最新的变动是2011年TLS 1.2的修订版。
目前,应用最广泛的是TLS 1.0,接下来是SSL 3.0。但是,主流浏览器都已经实现了TLS 1.2的支持。
TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。
SSL/TLS 原理
SSL/TLS协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。
参考资料
- [密码学笔记] : https://www.ruanyifeng.com/blog/2006/12/notes_on_cryptography.html
- [数字签名] : https://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
- [SSL/TLS协议运行机制的概述] : https://www.ruanyifeng.com/blog/2014/02/ssl_tls.html