密码学 ************************** :视频课程: `网络安全之密码学 `_ 现代密码学的核心 =========================== 散列函数 --------------------- 散列函数(Hash Function)是一种将任意长度的输入数据转换成固定长度输出的算法。这个输出值通常被称为散列值(Hash Value)、哈希码(Hash Code)、摘要(Digest)或简称为哈希(Hash)。散列函数的设计目的是为了实现快速查找和数据完整性验证。 对称密码 ----------------------- 对称密码(Symmetric Cryptography),也称为私钥加密或共享密钥加密,是一种加密技术,其中加密和解密过程使用同一个密钥。这意味着发送方和接收方必须事先共享一个秘密密钥,并确保这个密钥的安全性,以防止未经授权的第三方访问。 **密钥交换问题** 对称加密的一个主要问题是密钥的分发。为了解决这个问题,通常会结合使用非对称加密技术来安全地交换对称密钥。例如,在SSL/TLS协议中,客户端和服务器首先使用非对称加密技术(如RSA)来安全地协商和交换一个对称密钥,然后使用该对称密钥进行后续的数据加密和解密。 DES加密算法 ~~~~~~~~~~~~~~~~~~~~~~~~~ 将明文通过一系列复杂的变换转换成密文 尽管DES在其发布初期被认为是安全的,但随着计算能力的显著提升,特别是分布式计算和专门硬件的发展,DES逐渐变得不再安全。1998年,EFF(Electronic Frontier Foundation,电子前沿基金会)构建了一台专用机器,仅用几天时间就成功破解了DES。因此,DES不再推荐用于新的应用系统中。取而代之的是更强大的加密算法,如AES(Advanced Encryption Standard,高级加密标准),它提供了更高的安全性和灵活性。 AES加密算法 ~~~~~~~~~~~~~~~~~~~~~~~~~ AES(Advanced Encryption Standard,高级加密标准)是一种广泛使用的对称密钥加密技术,旨在替代早期的DES(Data Encryption Standard,数据加密标准)。AES由比利时密码学家Joan Daemen和Vincent Rijmen设计,最初被称为Rijndael算法。2001年,美国国家标准与技术研究院(NIST)正式采纳AES作为联邦信息处理标准FIPS PUB 197,用于保护敏感但非机密的信息。 AES因其高效性、安全性以及良好的性能而在全球范围内得到了广泛应用,尤其是在网络通信、文件加密、移动设备等领域。截至2024年,AES仍然是被广泛认可和采用的加密标准之一,没有已知的有效攻击方法可以在合理的时间内破解AES加密的数据,前提是使用了足够长的密钥并正确实现了加密算法。 非对称密码 ----------------------- 非对称密码(Asymmetric Cryptography),也称为公钥加密,是一种加密技术,其中加密和解密过程使用一对不同的密钥:公钥(Public Key)和私钥(Private Key)。这对密钥具有以下特点: * 公钥:可以公开分发,任何人都可以使用它来加密数据。 * 私钥:必须保密,只有拥有者才能使用它来解密数据 base64 ===================== 不是加密算法,是可读性算法,目的不是为了保护我们的数据,而是为了可读性 .. hint:: 可读性是指解决了加密解密等过程可能出现的乱码,坏处是存储占用变大了。 base64由64个字符组成,大写A-Z, 小写a-z, 数字0-9, 两个符号+和/ 消息摘要 ====================== 消息摘要(Message Digest),又称数字摘要(Digital Digest),是一种通过单向哈希(Hash)函数将任意长度的信息转换成固定长度的输出的技术。这个输出值被称为消息摘要或数字指纹。消息摘要的主要特点包括: * 固定长度:无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。 * 唯一性:理想情况下,不同的输入应产生不同的摘要。虽然存在理论上的哈希碰撞(即不同的输入产生相同的输出),但在实际应用中找到这样的碰撞是非常困难的。 * 单向性:消息摘要函数是不可逆的,即从摘要值无法推导出原始信息。 * 敏感性:即使是输入信息的微小改变,也会导致摘要值的显著变化。 常见的消息摘要算法 * MD5:MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希算法,产生128位(16字节)的摘要值。尽管MD5曾经非常流行,但由于其安全性问题,现在不再推荐用于安全敏感的应用。 * SHA系列:SHA(Secure Hash Algorithm)是由美国国家安全局(NSA)设计的一系列安全哈希算法。 * SHA-1:产生160位(20字节)的摘要值。虽然SHA-1比MD5更安全,但随着计算能力的增强,其安全性也受到了质疑,目前也不建议在新的应用中使用。 * SHA-2:包括SHA-224、SHA-256、SHA-384和SHA-512等多个变种,分别产生224位、256位、384位和512位的摘要值。SHA-2系列算法目前被认为是安全的,广泛应用于各种安全协议中。 * SHA-3:是SHA-2的继任者,旨在提供更高的安全性和性能。 消息摘要的应用 * 数据完整性验证:通过比较消息摘要,可以验证数据在传输过程中是否被篡改。 * 密码存储:许多系统存储用户的密码时,并不是直接存储密码本身,而是存储密码的哈希值。当用户登录时,系统会计算输入密码的哈希值并与存储的哈希值进行比较。 * 数字签名:在数字签名过程中,通常会对消息的摘要进行签名,而不是对整个消息进行签名,以提高效率。 * 文件校验:在下载文件时,提供文件的哈希值可以帮助用户验证下载的文件是否完整且未被篡改。 数字签名 =============================== 数字签名是一种用于验证数字消息或文档真实性的技术。它提供了一种方法来确保信息的完整性、来源的真实性和不可否认性(即发送者不能否认他们发送的消息)。数字签名基于公钥加密技术,具体来说,涉及到一对密钥:一个私钥和一个公钥。 和身份认证的区别 ------------------------------------ 身份认证主要解决的是“你是谁”的问题,而数字签名解决的是“这条消息是你发送的”和“这条消息没有被篡改”的问题。 在某些场景下,数字签名可以作为身份认证的一种补充手段,例如在企业内部网络中使用数字证书进行身份验证。