《大型分布式网站架构设计与实践》阅读笔记05

常用的安全算法

本节介绍的常用的安全算法主要包括摘要算法、对称加密算法、非对称加密算法、信息编码等,为后面章节内容的叙述做铺垫,笔者将着重介绍各种算法的使用场景与使用方法,避免涉及密码学相关理论的枯燥无味的叙述。关于各种算法的实现过程与思路,此处只做概述性的介绍,涉及数学与密码学相关领域的知识,读者可进一步查阅相关的资料进行了解和学习。

数字摘要

也称为消息摘要,它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash函数对消息进行计算而产生。如果消息在传递的途中改变了,接收者通过对收到的消息采用相同的Hash重新计算,新产生的摘要与原摘要进行比较,就可知道消息是否被篡改了,因此消息摘要能够验证消息的完整性。消息摘要采用单向Hash 函数,将需要计算的内容“摘要”成固定长度的串,这个串也称为数字指纹。这个串有固定的长度,且不同的明文摘要成密文,其结果总是不同的(相对的,这个后面会介绍),而同样的明文其摘要必定一致。这样这串摘要便可成为验证明文是否是“真身”的“指纹”了。

有关消息摘要的特点总结如下:
(1)无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。例如,应用MD5算法计算的摘要消息有128个比特位,而使用SHA-1算法计算出来的摘要消息有160个比特位。
(2)一般只要输入的消息不同,对其进行摘要以后产生的摘要消息也不相同,但相同的输入必会产生相同的输出。这是一个好的消息摘要算法所需要具备的性质:输入改变了,输出也就改变了,两条相似的消息的摘要却大相径庭。好的摘要算法很难从中找到“碰撞”,虽然“碰撞”肯定是存在的。
(3)由于消息摘要并不包含原文的完整信息,因此只能进行正向的信息摘要,而无法从摘要中恢复出原来的消息,甚至根本就找不到任何与原信息相关的信息。当然,可以采用暴力攻击的方法,尝试每一个可能的信息,计算其摘要,看看是否与已有的摘要相同。如果采用这种方式,最终肯定能恢复出摘要的消息,但是这种穷举的方式以目前的计算水平来看,需要耗费相当长的时间,因此被认为是几乎不可能实现的。

对称加密算法

对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发送方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,生成复杂的加密密文进行发送,数据接收方收到密文后,若想读取原文,则需要使用加密使用的密钥及相同算法的逆算法对加密的密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发送和接收双方都使用这个密钥对数据进行加密和解密,这就要求加密和解密方事先都必须知道加密的密钥。

对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。优势在于加解密的高速度和使用长密钥时的难破解性,但是,对称加密算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对加密的密文进行解密,因此密钥的保护对于加密信息是否安全至关重要。
常用的对称加密算法包括DES算法、3DES算法、AES算法等。

非对称加密算法

非对称加密算法又称为公开密钥加密算法,它需要两个密钥,一个称为公开密钥(publickey),即公钥;另一个称为私有密钥(private key),即私钥。公钥与私钥需要配对使用,如果用公钥对数据进行加密,只有用对应的私钥才能进行解密,而如果使用私钥对数据进行加密,那么只有用对应的公钥才能进行解密。因为加密和解密使用的是两个不同的密钥,所以这种算法称为非对称加密算法。
非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公钥向其他人公开,得到该公钥的乙方使用该密钥对机密信息进行加密后再发送给甲方,甲方再使用自己保存的另一把专用密钥(即私钥)对加密后的信息进行解密。

非对称加密算法的特点:对称加密算法中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥,所以保证其安全性就是保证密钥的安全,而一旦密钥在传输过程中泄露,加密信息就不再安全。而非对称加密算法中包含有两种密钥,其中一个是公开的,这样就不需要像对称加密算法那样,需要传输密钥给对方进行数据加密了,大大地提高了加密算法的安全性。非对称加密算法能够保证,即使是在获知公钥、加密算法和加密算法源代码的情况下,也无法获得公钥对应的私钥,因此也无法对公钥加密的密文进行解密。
但是由于非对称加密算法的复杂性,使得其加密解密速度远没有对称加密解密的速度快。为了解决加解密速度问题,人们广泛使用对称与非对称加密算法结合使用的办法,优缺点互补,达到时间和安全的平衡:对称加密算法加密速度快,人们用它来加密较长的文件,然后用非对称加密算法来给文件密钥加密,解决了对称加密算法的密钥分发问题。
当前使用最为广泛的非对称加密算法非RSA莫属。

数字证书

数字证书(Digital Certificate)也称为电子证书,类似于日常生活中的身份证,也是另外一种形式的身份认证,用于标识网络中的用户身份。数字证书集合了多种密码学的加密算法,证书自身带有公钥信息,可以完成相应的加密、解密操作,同时,还拥有自身信息的数字签名,可以鉴别证书的颁发机构,以及证书内容的完整性。由于证书本身含有用户的认证信息,因此可以作为用户身份识别的依据。
通常数字证书会包含如下内容:
对象的名称(人、服务器、组织);
证书的过期时间;
证书的颁发机构(谁为证书担保);
证书颁发机构对证书信息的数字签名;
签名算法;
对象的公钥。

原文地址:https://www.cnblogs.com/ywqtro/p/14881779.html