1. 网络传输分为明文传输和加密传输,显而易见加密传输才是安全的传输。

     常见的明文传输协议:http,smtp,dns,pop3,imap4

     最常见的加密传输:https

  2.数据加密的方式:

  1. 对称加密:加密方和解密方使用同一个密钥,其优点是:加密解密的速度快,适合于大量数据的加密。缺点是:无法进行密钥交换。

  2. 公钥加密(非对称加密):使用接受方的公钥进行加密,接收方在使用自己的私钥进行解密。缺点是:加密效率低,一般不用在数据加密上,通常是用在数据加密的密钥交换上的加密。

  3. 单向加密(摘要算法):获取数据的特征码,其特点是:定长的输出,加密过程不可逆,具有雪崩效应也称作蝴蝶效应。摘要算法也称为哈希算法、散列算法,可以将任意长度的数据转换成一个定长的、不可逆的数字。只要原文本不同,计算的结果必然不同(几乎不用考虑重复的情况)。摘要算法用于对比信息源是否一致,因为只要数据源发生变化,得到的摘要信息必然不同,通常用于签名校验。

  

     

  3. 数字签名

     数字签名同时使用非对称加密和摘要加密的方法,保证文件不被篡改的技术。原理:发送方使用摘要算法获得发布内容的摘要,然后使用私钥对摘要进行加密(加密后的数据就是数字签名),然后将发布内容、数字签名和公钥一起发送给接收方即可。接收方接收到内容后,首选取出公钥解密数字签名,获得正文的摘要数据,然后使用相同的摘要算法计算摘要数据,将计算的摘要与解密的摘要进行比较,若一致,则说明发布内容没有被篡改。

     注:只要拿到公钥,就能读取文件摘要。然而,不能对该摘要修改,因为修改之后没有私钥就没法加密,因为没法对摘要修改,那原文就不能修改,否则hash算法结果对不上。所以数字签名可以保证文件不被篡改。就算知道公钥也不行。(个人理解)

4. 证书 和数字证书

      签发者

      证书用途

      公钥

     加密算法

      HASH算法

      证书的到期时间等

    

      数字证书(CA),经过数字签名的数字证书。ca为证书申请者制作证书,并对证书内容进行数字签名,以保证该证书不会被篡改。

   

 例如,SSL/TLS 是最常用的传输加密协议:

SSL/TLS协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。为了保证公钥不被篡改,将公钥放在数字证书中即可


公钥加密计算量太大,为此每一次对话(session),客户端和服务器端都生成一个"对话密钥"(session key),用它来加密信息。由于"对话密钥"是对称加密,所以运算速度非常快,而服务器公钥只用于加密"对话密钥"本身,这样就减少了加密运算的消耗时间。


SSL/TLS通信过程:

1. client发送请求信息(client hello):

   包括:支持的协议,如:TLS 1.0

             生成一个随机数,用于生成对话密钥

             支持的加密方法:如RSA公钥加密

             支持的压缩方法

2 服务器回应(SeverHello):

          确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致, 服务器关闭加密通信。
           一个服务器生成的随机数,稍后用于生成"对话密钥"。
            确认使用的加密方法,比如RSA公钥加密。
           服务器证书。

3.客户端回应

             一个随机数。该随机数用服务器公钥加密,防止被窃听。
           编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
          客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的   hash值,用来供服务器校验。

4.服务器的最后回应

服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的"会话密钥"。然后,向客户端最后发送下面信息。

    (1)编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。

    (2)服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验