参考资料《我的第一本算法书》
第5章 安全算法
(1)传输数据时的四个问题:窃听、假冒、篡改、事后否认。
(2)解决“窃听”问题,可使用“加密”技术。而这一过程包括加密阶段和解密阶段。
①加密:经过某种运算(如用密钥对数据进行数值运算),变成计算机无法理解的数的过程。
②解密:通过密钥进行数值运算,把密文恢复成原本数据的过程。
(3)哈希函数
①可用于加密,比如用户输入的密码保存到服务器需要用到哈希函数。
②哈希函数可以把给定的数据转换成固定长度的无规律数值。
③特征如下:
*输出的哈希值数据长度不变;
*同样情况下,如果输入的数据相同,那么输出的哈希值也必定相同;
*即使输入数据有点相似,得到的哈希值也会有很大差异;
*当输入的两个数据完全不同时,输出的哈希值可能相同,这种情况称为哈希冲突,不过出现的概率低;
*不可能由哈希值反推算出原本的数据;
*求哈希值的计算相对容易。
④哈希函数的算法中,具有代表性的是MD5、SHA-1、SHA-2,其中SHA-2使用广泛。
(4)加密技术可分为两种:“共享密钥加密”(或“对称加密”,即加密和解密都使用相同密钥),“公共密钥加密”(或“非对称加密”,即加密和解密分别使用不同的密钥)。
(5)共享密钥加密
①实现其算法有:凯撒密码、AES、DES、动态口令。其中AES使用广泛。
②缺点:当收发双方无法直接沟通时,密钥也需要发送,此时密钥也有可能会被窃听到。所以,需要找到把密钥安全送出的方法,这就是“密钥分配问题”,可使用“密钥交换协议”和“公开密钥加密”。
(6)公开密钥加密
①加密用的密钥叫作“公开密钥”,解密用的密钥叫作“私有密钥”。
②其一般过程如下:
*由收数据方生成公开密钥和私有密钥;
*将公开密钥发给发数据方;
*发数据方用公开密钥加密,收数据方用私有密钥解密。
③缺点:
*也有可能发生“中间人攻击”,即中途替换公开密钥来窃听数据的攻击方法。这是因为发数据者无法判断收到的公开密钥是否是来自收数据者。
*加密和解密过程比较耗时。可以用“混合加密”解决这一问题。