SSL是安全套接层(Secure Sockets Layer)的缩写,最早是Netscape公司推出浏览器是提出的。HTTP协议在整个互联网构建中起到了及其重大的作用,但是传统的HTTP协议使用明文进行数据的传输,这就存在着数据被窃取或者篡改的风险,而SSL证书则能在其中对安全起到加固的作用。
HTTPS是Hyper Text Transfer Protocol over SecureSocket Layer的缩写,它相当于HTTP + SSL的实现。在引入SSL之前,传统的SSL之间存在信任的危机:
- 无证上岗的网站提供良莠不齐的信息,甚至大量钓鱼网站的存在,使得用户难以判断其是否是安全的
- “中间人”可能会在网络数据传输中窃取本来希望仅传输给特定用户的数据
- 数据的篡改也可能会存在,数据发送方发送数据,接收方无法证明这个数据就是发送方所提供并未篡改,除了安全,不可抵赖性无法得到保证。
浏览器或者客户端以https://的方式对服务器端提供的服务进行访问时,实际上就是通过SSL连接使用的HTTP协议,保证了用户数据在传输过程中的安全。
加密算法 对称密钥算法
对称密钥算法以DES和AES最为著名,其最主要的特征是“同一把钥匙”,也就是说加密解密都是使用同样的密钥,非常容易理解,使用的过程如下图所示:
发送方使用明文数据和密钥进行加密,加密后的数据在网络上或者其他方式进行传输,接收方拿同一把钥匙进行解密。对称密钥算法非常快速、易用和方便,但是每次每对发送者/接收者都使用唯一的密钥进行通信(相同就更加不安全了),在数量增大的情况下,在密钥管理上将会非常之复杂,密钥的安全需要得到保证,同时由于没有数字签名,不可抵赖性也无法得到保证。
对称密钥算法中有很多优秀的传统算法,DES和AES是其中的翘楚:
- DES:算法名称为数据加密算法(Data Encryption Standard)的DES出自于IBM之手,后在美国军方采纳得到了更为广泛的应用。一般来说DES提供56位的密钥,这在当下的计算能力之下,一般都能很快的被破解掉
- AES:算法名称为(Advanced Encryption Standard)的AES就是DES的替代算法之一,由NIST(美国国家标准与技术研究院)在2001年11月发布,并在2002年成为有效标准,是最流行的对称密钥加密算法之一。
相较于同一把钥匙加密和解密的对称密钥算法,加密和解密使用不同钥匙的算法则是非对称密钥算法,其中RSA和DSA较为著名。以Bob发行的公钥和密钥为例,使用过程示例如下图所示:
可以看到与前面对称密钥算法的区别在于,加密和解密使用的密钥不同。非对称密钥由如下特点:
- 公钥:可以公开传输和使用,一般用于数据传输之前的加密
- 私钥:必须严格保存,代表使用者身份,可以进行加密数据的解密
由于加密和解密不是同一把钥匙,只有拥有私钥才能进行解密,只要将私钥进行严格管理就能保证相对的安全性。 非对称密钥算法中有很多优秀的传统算法,比如RSA:
- RSA:RAS是1977年MIT麻省理工学院的罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)所共同提出,此算法也是以三人姓名的首字母组成。算法的基本理论基础在于大数分解的安全性,虽然RSA无法抵抗穷举,但在量子计算机真正使用之前还是相对很安全的,也是目前主流的安全加密算法。
基于椭圆曲线理论的公钥加密技术ECC是从另外一个角度创建的非对称加密算法,以及DSA(Digital Signature Algorithm)数字签名算法,它是一种数字签名标准,严格来说不算是加密算法,使用也较为广泛。
使用SSL进行数据传输
HTTPS使用SSL对HTTP协议的安全进行的加强,在理论上SSL可以对基于TCP的任何协议进行支持。一个使用SSL的客户端和
在这个过程之中,基于非对称密钥算法公钥和私钥起到了重要作用:
- 公钥:上图中提到的证书实际上包含了公钥和其他一些服务器端的信息,客户端使用公钥对要传输的数据进行加密。
- 私钥:私钥只有服务器才拥有,数据即使被窃取,没有私钥也无法获得客户端传递的信息,这也是非对称密钥的重要思路。
建立在非对称密钥算法基础之上的SSL能够在一定程度上保证数据传输过程的安全,但是还是由很多风险,在下一篇文章中介绍“Man-in-the-middle”的一些基础知识。