Bootstrap

什么是信息指纹和信息加密——《数学之美》第16、17章以及其他各种资料的读书笔记

目录

1. 信息指纹

1.1 概念

1.2 相关算法的演进历程

1.3 哈希碰撞

1.4 雪崩效应

1.5 应用场景

2. 信息加密

2.1 密码学的简要历史

2.1.1 古代密码学:智慧的萌芽

2.1.2 中世纪至文艺复兴:密码术的兴起

2.1.3 近代密码学:机械密码机的诞生

2.1.4 现代密码学:复杂科学的诞生

2.2 古典密码学的缺陷

2.3 现代密码学

2.3.1 对称加密

2.3.2 非对称加密(公开密钥加密)

2.4 以RSA算法来说明公开密钥的原理

2.4.1 密钥生成

2.4.2 加密过程

2.4.3 解密过程

2.4.4 安全性分析


1. 信息指纹

1.1 概念

信息指纹,或称为哈希值(Hash Value),是数据的一个独一无二且不可逆的数字表示。通过哈希算法,无论原始数据的大小或内容如何,都可以生成一个固定长度的字符串。这个字符串的唯一性(在理想情况下)使得它像是指纹一样,可以用来唯一标识原始数据。由于哈希算法的单向性,从哈希值反向推导出原始数据(即“解哈希”)在实际上是不可能的。

在前面关于搜索引擎的读书笔记中有讲到,在搭建搜索引擎的过程中,为了高效地管理网页的下载状态,爬虫在下载每个网页后会利用特定算法对原始网站地址进行处理,生成一个简洁的“指纹”标识,并将这一指纹而非原始冗长的URL存储在数据库中。此举旨在减少内存占用,同时简化后续对网页是否已下载的快速比对流程,从而优化整体性能和效率。如下所示:

原始网站地址:

对应的信息指纹:

1.2 相关算法的演进历程

哈希算法是生成信息指纹的关键。常见的哈希算法包括一下几种,其发展是一个不断追求更高安全性与更好性能的过程:​​​​​

1)MD5(Message-Digest Algorithm 5)

  • 历史地位:MD5曾因其高效性与易用性在文件校验、数字签名等领域得到广泛应用。
  • 安全挑战:然而,随着密码学研究的深入,MD5的碰撞问题逐渐暴露,即存在不同的输入数据产生相同哈希值的情况,这极大地削弱了其在安全敏感场景下的可靠性。
  • 当前状态:因此,尽管MD5在非安全关键应用中可能仍被见到,但已不再推荐用于需要高安全性的场合。

2)SHA-1(Secure Hash Algorithm 1)

  • 安全性提升:作为MD5的后继者,SHA-1在设计上增强了安全性,曾一度被视为无懈可击的哈希算法。
  • 安全漏洞:然而,近年来中国王小云教授揭示了SHA-1的弱点,特别是其存在理论上的碰撞可能性,这引发了对其安全性的广泛质疑。
  • 现状:目前,SHA-1已被多数安全标准与协议弃用,特别是在需要高安全保证的场合,如SSL/TLS证书签发中,已不再接受SHA-1签名的证书。

3)SHA-256(Secure Hash Algorithm 2 with 256-bit digest size)

  • 继任者优势:作为SHA-1的升级版本,SHA-256不仅解决了SHA-1已知的安全问题,还通过增加输出长度(256位)进一步提升了抗碰撞能力。
  • 广泛应用:目前,SHA-256已成为众多安全敏感应用的首选哈希算法,包括加密货币(如比特币)的区块哈希、文件完整性校验等。
  • 性能与安全性平衡:它在提供高水平安全性的同时,也保持了良好的计算效率。

4)BLAKE2

  • 新兴力量:BLAKE2是一种相对较新的哈希算法,旨在结合高速度与强安全性。
  • 性能优势:与SHA-256相比,BLAKE2在多种硬件平台上展现了更快的处理速度,特别是在并行计算环境中。
  • 安全性与灵活性:它不仅提供了多种输出长度选项,还包含了如BLAKE2b和BLAKE2s等变体,以满足不同场景下的需求。
  • 应用前景:随着对加密性能要求的不断提高,BLAKE2在加密货币、云计算及大数据处理等领域展现出广阔的应用前景。

1.3 哈希碰撞​​​​​​​

哈希碰撞,即两个不同的输入值经过哈希函数处理后得到了相同的输出值(哈希值),其影响主要体现在以下几个方面:

1)性能下降

  • 查询效率降低:在哈希表等数据结构中,哈希函数用于将键(key)映射到索引或位置,以便快速查找或检索数据。当哈希碰撞发生时,不同的键可能会被映射到哈希表的同一个位置(称为“桶”),导致需要对该桶中的多个元素进行遍历以找到目标元素,从而增加了查询的时间复杂度。在最坏的情况下,如果哈希表中的所有元素都映射到了同一个桶中,那么哈希表的性能将退化到O(n)的线性时间复杂度,与未使用哈希表时直接遍历列表的性能相当。
  • 插入和删除操作变慢:与查询操作类似,哈希碰撞也会使得插入和删除操作的效率降低。因为当发生碰撞时,需要额外处理桶中的元素,如通过链表或红黑树等方式解决冲突,这些额外的处理步骤都会增加操作的时间复杂度。

2)存储效率降低

  • 空间利用不充分哈希碰撞使得多个元素被映射到同一个桶中,从而导致哈希表的存储空间得不到充分利用。理想情况下,哈希表应该能够均匀地将元素分布在各个桶中,以最大化空间利用率。然而,哈希碰撞却打破了这种均匀性,降低了存储效率。

3)数据完整性和安全性问题

  • 数据完整性受损:如果哈希算法用于数据完整性检验(如文件校验和),那么哈希碰撞的发生将意味着两个不同的数据可能拥有相同的哈希值。这将使得接收方无法仅凭哈希值来判断数据的完整性和真实性,因为可能存在另一个完全不同的数据也拥有相同的哈希值。
  • 安全性漏洞:在密码学和数字签名等安全领域,哈希碰撞可能被恶意利用来伪造签名或绕过认证。例如,攻击者可能通过精心构造的数据来触发哈希碰撞,从而生成与合法签名具有相同哈希值的伪造签名。这将使得验证系统无法区分合法签名和伪造签名,导致安全漏洞。

5)破坏哈希函数的随机性

  • 影响系统性能哈希函数的一个重要特性是其随机性。然而,当哈希碰撞发生时,这种随机性将受到破坏。因为碰撞意味着不同的输入产生了相同的输出,这违背了哈希函数的随机性原则。这种随机性的破坏可能会进一步影响依赖哈希函数的其他系统组件的性能和可靠性。

1.4 雪崩效应

这些哈希算法的核心设计原则之一便是融入了“雪崩效应”(Avalanche Effect),这一特性确保了算法在面临原始数据中的任何细微变动时,都能引发哈希值发生显著且不可预测的变化。

这种设计旨在最大化哈希函数的敏感性,从而增强其在多个关键领域的应用效能:

1)数据完整性验证通过比较数据的当前哈希值与先前存储的哈希值,可以迅速检测到数据是否在传输或存储过程中被篡改,即使改动非常微小。雪崩效应保证了这种检测的准确性,因为任何细微的数据变化都会导致哈希值的巨大差异。

2)密码学安全在密码学和加密应用中,哈希算法用于生成消息摘要或数字签名。雪崩效应确保了即使消息内容只有微小差异,其哈希值也会截然不同,这大大增强了加密系统的安全性,防止了攻击者通过微小改动来伪造或绕过安全验证。

3)分布式系统和数据库在分布式系统和数据库中,哈希函数常用于数据分区和索引。雪崩效应确保了数据的均匀分布,因为即使数据项之间只有细微差别,它们也可能会被映射到完全不同的哈希桶中,从而优化了存储和查询效率。

4)防止碰撞攻击尽管哈希碰撞在理论上总是存在的(尤其是在哈希值空间相对于输入空间较小时),但雪崩效应增加了寻找特定碰撞的难度,因为攻击者需要精确控制输入数据的微小变化来诱导出特定的哈希值变化,这在实践中是极其困难的。

1.5 应用场景

1)文件完整性验证在文件下载或传输完成后,用户能够采用与提供者相同的先进哈希算法(如SHA-256或BLAKE2b),独立计算接收文件的哈希值。这一步骤确保了文件内容的精确无误,用户通过将计算出的哈希值与提供者提供的官方哈希值进行比对,能够迅速且准确地验证文件是否在传输过程中被篡改或损坏,从而保障了数据的完整性和安全性。

2)去重存储去重存储技术通过哈希值的独特性质实现了高效的空间优化。无论是大型数据库管理系统还是复杂的文件系统,都可以利用哈希算法为存储项生成唯一标识符。当新数据项被添加时,系统会先计算其哈希值,并与现有存储项的哈希值进行比对。若发现重复(即哈希值相同),则自动避免冗余存储,转而通过链接或引用指向现有数据项,从而显著节省了存储空间,提高了存储效率,并减少了不必要的资源消耗。

3)版权保护哈希算法在版权保护领域也发挥着不可替代的作用。对于数字内容(包括但不限于音乐、视频、软件、电子书等),版权所有者可以为其生成唯一的哈希指纹,作为版权认证的基础。这些哈希值被注册在版权数据库或区块链等不可篡改的记录系统中,为版权追踪和侵权检测提供了强有力的技术支持。当发现疑似侵权内容时,通过计算其哈希值并与版权数据库中的记录进行比对,可以快速准确地识别出侵权行为。

2. 信息加密

2.1 密码学的简要历史

下面只是简单的概括了密码的演进历程,对这块有兴趣进一步了解的同学,可以去看下科普园地_国家密码管理局

2.1.1 古代密码学:智慧的萌芽

在远古时代,人们可能就已经开始使用简单的替换和置换方法来隐藏信息,如通过替换字母表中的字母顺序(如凯撒密码)或重新排列文字的顺序(如栅栏密码)来加密信息,如下图所示:

2.1.2 中世纪至文艺复兴:密码术的兴起

在中世纪和文艺复兴时期,密码术得到了显著的发展,出现了更加复杂的替换和置换密码系统,如维吉尼亚密码。这些密码系统不仅提高了加密的复杂度,还引入了密钥的概念,使得加密过程更加灵活和难以破解。

2.1.3 近代密码学:机械密码机的诞生

进入近代,随着工业革命的到来,密码学也迎来了新的变革。二战期间,为了应对军事通信需求,各国纷纷研制出了机械密码机,如德国的恩尼格玛机。这些机械密码机通过复杂的机械结构和算法实现了高速加密和解密,极大地提高了通信的安全性。然而,随着计算机技术的兴起,机械密码机逐渐被更加先进的电子密码系统所取代。

2.1.4 现代密码学:复杂科学的诞生

自20世纪中叶以来,随着计算机技术的飞速发展,密码学也迎来了前所未有的繁荣时期。现代密码学已经从一个简单的艺术领域演变为一个涉及数学、计算机科学、电子工程等多个学科的复杂科学领域。在这一时期,出现了许多先进的加密算法和协议,如对称加密算法(如AES)、非对称加密算法(如RSA)、数字签名、公钥基础设施(PKI)等。

2.2 古典密码学的缺陷

古典密码学中的密钥虽然设计得相对复杂,但在计算机强大的计算能力面前,这些复杂性往往显得微不足道。例如,凯撒密码等简单代换密码,其密钥仅为一个固定的位移值,通过频率分析(例如)等方法很容易被破解。而对于更为复杂的古典密码算法,如维吉尼亚密码等,虽然在一定程度上提高了破解难度,但在现代计算机面前,其安全性依然不堪一击。

2.3 现代密码学

2.3.1 对称加密

原理与特点
对称加密,又称私钥加密或单密钥加密,是一种使用相同密钥(称为共享密钥或对称密钥)进行加密和解密的加密方法。这种加密方式依赖于密钥的保密性来确保信息的安全性。由于加密和解密使用同一密钥,因此加密和解密过程在速度上非常高效,适合处理大量数据。

优点

  • 速度快由于加密和解密算法相对简单,处理速度较快。
  • 资源消耗低较少的计算资源即可满足加密需求。

缺点

  • 密钥管理复杂在通信双方之间安全地共享和更新密钥是一项挑战,尤其是在涉及多方通信的情况下。
  • 安全性风险一旦密钥被泄露,所有使用该密钥加密的信息都将不再安全。

2.3.2 非对称加密(公开密钥加密)

原理与特点
非对称加密,又称公钥加密,使用一对密钥:公钥和私钥。公钥可以公开给任何人,用于加密数据或验证数字签名;而私钥则必须保密,用于解密数据或生成数字签名。这种加密方式基于复杂的数学难题(如大数因数分解、离散对数等),使得没有私钥的情况下解密几乎不可能。

优点

  • 密钥管理简单公钥可以公开分发,无需担心被截获;私钥由用户单独保管,无需安全地传输给通信对方。
  • 安全性高即使公钥被公开,也无法直接推导出私钥,保证了加密数据的安全性。

缺点

  • 加密速度慢与对称加密相比,非对称加密的计算复杂度更高,因此加密速度较慢。
  • 资源消耗大加密和解密过程需要更多的计算资源。

2.4 以RSA算法来说明公开密钥的原理

2.4.1 密钥生成

  1. 选择两个大的质数 p 和 q,并计算它们的乘积 n=p\cdot q 。n 用于公钥和私钥的模运算。

  2. 计算欧拉函数  \varphi (n),对于  n=p\cdot q,有 \varphi (n) = (p-1)\cdot (q-1)

  3. 选择一个小于 \varphi (n) 的整数 e,使得 gcd(e,\varphi (n))=1 ,即 e 与 \varphi (n) 互质,最大公约数为1。e 用作公钥的一部分。

  4. 计算 e 关于 \varphi (n) 的模逆元 d,即找到一个整数 d,满足 ed \equiv 1 \ \displaystyle (mod \ \varphi(n)),即 e  d的乘积与 \varphi (n) 取模的结果等于1。d 用作私钥的一部分。

公钥是 (e,n),私钥是 (d,n)

2.4.2 加密过程

设 m 是待加密的明文消息(必须小于 n),加密后的密文 c 计算如下:

c = m^e \mod n

2.4.3 解密过程

接收方收到密文 c 后,使用私钥 (d,n) 进行解密,得到明文 m

m = c^d \mod n

由于 e 和 d 是模逆元,上述解密过程能够正确恢复出原始明文 m体证明过程我就不放了,需要用到模运算相关定理以及欧拉定理)

2.4.4 安全性分析

RSA算法的安全性依赖于大数分解的困难性。在不知道私钥 d 的情况下,即使知道公钥 (e,n) 和密文 c,也无法有效地计算出明文 m这是因为从 e 和 n 推导出 d 在计算上是不可行的,除非能够分解 n 为 p 和 q然而,当 n 的位数很大时(如2048位或更长),分解 n 变得极其困难,目前尚无有效的算法能在合理的时间内完成这一任务。​​​​​​​

;