面试题——对称加密和非对称加密
面试题高频:https和http的区别,对称加密和非对称加密的了解。
http
概念
- http协议是应用层的协议,又称:超文本传输协议(Hypertext transfer protocal),是浏览器和万维网(WWW)服务器之间通信的规则
- 默认端口:TCP 80
特点
- 无连接
虽然http协议是基于TCP传输的,TCP是面向连接的,但是http协议本身是无连接的。意思是,通信双方在交换http报文之前不需要先建立http连接。在完成TCP连接之后,客户端发送http请求报文,服务器处理完客户端请求,回送http响应报文,之后就断开连接,释放TCP连接。采用这种方式可以节省时间,尽快将资源释放以服务其他客户端,而数据的可靠传输交给TCP去完成。
问题:如果网页比较复杂,里面有很多图片、视频,每次点击这些图片或视频都需要建立一次TCP,然后再进行http请求,效率就比较低。
解决办法:后面提出了keep-alive,这个功能使客户端到服务器端的连接持续有效求,避免重新建立连接。
- 无状态
http协议对事务处理没有记忆能力。也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器响应时间与第一次被访问时一样,因为服务器不记得这个客户。这意味着每个请求都是独立的,无状态特性使得服务器更容易支持大量并发的http请求。
问题:如果一个客户端后续的访问需要用到之前的信息,则必须重传,导致每次请求会传输大量重复的内容。比如:购物网站。
解决办法:1、Cookie:保持登录信息到用户下次与服务器的对话。2、Session:当客户端访问服务器时,服务器根据需求设置session,将会话信息保留在服务器上,同时将sessionId传递给客户端浏览器,客户端将sessionId保留在内存中,以后浏览器每次请求都会带上这个sessionId,服务器根据这个sessionId,就能获取客户端的数据信息。
以下是WWW的工作过程:
客户端(浏览器) 服务器(WWW服务器)
---------------建立TCP连接---------------(三次握手)
-----1、请求文档(http请求报文)------>
<----2、响应文档(http响应报文)------
----------------释放TCP连接---------------(四次挥手)
https
概念
- https是http的扩展,这个s是security的意思,相比http,更安全,是因为它在传输层使用了安全协议:安全套接字层SSL(Secure Socket Layer).
- 默认端口:使用SSL的443端口
- 在发送方,SSL接收应用层的数据(如HTTP或IMAP报文),对数据进行加密,然后送往TCP套接字。在接收方,SSL从TCP套接字读取数据,解密之后把数据交给应用层。
应用层(http) |
应用层(http) |
SSL | |
TCP | TCP |
IP | IP |
HTTP HTTPS
安全协议
- 运输层的安全协议有SSL,TLS(Transport Layer Security),处在应用层和传输层之间。
SSL工作过程
当客户点击网站链接进行TCP连接后,先进行浏览器和服务器之间的握手协议,完成加密算法的协商和会话秘钥的传递,然后进行安全传输。大致过程如下:
(1)协商加密算法。浏览器向服务器发送自己的SSL版本号和一些可选的加密算法,B从中选定自己支持的算法,并告知A
(2)服务器鉴别。服务器向A发送一个包含其RSA公钥的的数字证书,A使用该证书的认证机构CA的公开发布的RSA公钥对其进行验证
(3)会话秘钥计算。A随机产生一个秘密数,用B的RSA公钥加密发送给B。双方根据协商的算法产生一个共享的对称会话秘钥。
(4)安全数据传输。双方用会话秘钥加密和解密之间传送的数据。
下图显示的是SSL建立会话的过程(非对称加密)。
对称加密和非对称加密
然后,就涉及到具体的加密算法了。
对称加密
- 加密方和解密方使用相同的秘钥
- 常用的算法:
- DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
- 3DES(Triple DES):是基于DES,对一块数据用三个不同的**进行三次加密,强度更高。
- AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高
- 特点:速度快,适合大数量级的加解密,安全性中等
- 问题:秘钥管理比较难
非对称加密
- 加密方和解密方使用不同的秘钥(每一端都拥有一对秘钥:公钥和私钥)
- 常用的算法:
- RSA:由 RSA 公司发明,是一个支持变长**的公共**算法,需要加密的文件块的长度也是可变的
- DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准)
- ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学
- 特点:秘钥容易管理
- 问题:速度慢,适合小数据量或数据签名
简单的加密设计: 用**对原文做 异或,置换,代换,移位
单向加密(散列)
- 使用信息摘要,加密性强的散列是不可逆的,无法通过散列结果推导出原始信息。一般用于验证信息的完整性,是否被篡改。
- MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,非可逆,相同的明文产生相同的密文。
- SHA(Secure Hash Algorithm):可以对任意长度的数据运算生成一个160位的数值
参考:
1、谢希仁的《计算机网络》