HTTPS,是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。默认端口是443.
SSL
可以从上面那句话看到,其实最主要的就是SSL。那什么是SSL呢?
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer
Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
SSL主要从3个方面保证信息传输的安全:
- 认证用户和服务器,确保数据发送到正确的客户机和服务器
- 加密数据以防止数据中途被窃取
- 维护数据的完整性,确保数据在传输过程中不被改变。
数字证书
要保证第一点,首先要求的是服务器已经经过国际公认的证书机构(CA)颁发了证书,然后这个服务器将自己的数字证书发送给你,你通过“根受信任机构列表”查看该证书的颁发者是否存在,并且查看该证书是否过期以及这个证书的持有者是否与服务器一致,任何一个不满足都将给出警告。
信息加密
当第一步完成之后,客户端就可以与服务器通信,那通信的过程中如何保证信息的安全呢?
介绍这一点,首先介绍一下,信息在传递过程中常常遭遇的“中间人攻击”。
简单来说,中间人攻击就在你与服务器通信的过程,将信息截取下来,并将信息修改后重新发送给服务器。
那要怎么防止这种事情的发生呢?
在SSL中运用到的算法主要有三种:
- 对称加密算法,如:DES、RC5、IDEA(分组加密),RC4(序列加密)
- 非对称加密算法, 如:RSA,DSA,DH
- 散列算法, 如:MD5,SHA,Base64,CRC
前两个算法主要用来对信息的加密,而最后一个用来确保信息的完整性。
对称加密算法
对于同一个消息,用同一个秘钥进行加密和解密,而秘钥只有双方知道。
非对称加密算法
又称为公钥加密算法,是指加密和解密使用不同的密钥(公开的公钥用于加密,私有的私钥用于解密)。比如A向B发送消息,B将数字证书(包含公钥)发送给A,A通过这个数字证书验证B,验证通过后,再用其中的公钥将要发送给B的消息加密,B收到后,再用私钥解密。
为什么在SSL中既要用到对称加密算法,又要非对称加密算法呢?
因为,对称加密算的效率要高于非对称加密算法,用非对称加密算法把对称加密算的秘钥发送给对方,之后就可以直接使用对称加密算法进行通信了。
散列算法
散列变换是指把文件内容通过某种公开的算法,变成固定长度的值(散列值),这个过程可以使用密钥也可以不使用。这种散列变换是不可逆的,也就是说不能从散列值变成原文。因此,散列变换通常用于验证原文是否被篡改
为了防止B将自己的证书发送个给A的过程中被篡改,该包含B证书、公钥以及其他个人信息的消息通过散列算法,生成摘要,在通过CA的公钥进行加密,生成数字签名,只要将这个数字签名与原始信息合并生成数字证书。当A收到后,用同样的散列算法将原始信息生成摘要,再用CA的私钥将数字签名解密,得到CA创建的消息摘要,两者一对比,就可以知道这个消息有没有人篡改。