面试题——对称加密和非对称加密

面试题高频: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、谢希仁的《计算机网络》

2、Https/SSL/对称加密/非对称加密

3、对称算法和非对称算法举例