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

news2024/9/22 17:20:08

目录

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 变得极其困难,目前尚无有效的算法能在合理的时间内完成这一任务。​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1935344.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python函数】string和json的互转函数封装

我是一名测试开发工程师(全栈),作品有全终端自动化测试框架wyTest,未羽研发测试管理平台,欢迎同行交流。 一、主要涉及2个方法: json.loads:将字符串转换成JSONjson.dumps:将JSON转…

Apache BookKeeper 一致性协议解析

导语 Apache Pulsar 是一个多租户、高性能的服务间消息传输解决方案,支持多租户、低延时、读写分离、跨地域复制(GEO replication)、快速扩容、灵活容错等特性。Pulsar 存储层依托于 BookKeeper 组件,所以本文简单探讨一下 BookK…

接口开发:Orcal数据库的批量修改sql

场景:在日常的CURD中一定会用到批量修改。在我们的项目中,使用的数据库是Orcal,由于之前基本都是使用Mysql的,使用的sql语句也基本都是用mysql的。但是在这次的接口编写时用mysql的批量修改出了问题,刚开始我还以为是写…

高频面试题-CSS

BFC 介绍下BFC (块级格式化上下文) 1>什么是BFC BFC即块级格式化上下文,是CSS可视化渲染的一部分, 它是一块独立的渲染区域,只有属于同一个BFC的元素才会互相影响,且不会影响其它外部元素。 2>如何创建BFC 根元素,即HTM…

浅谈端到端(自动驾驶)

一、 引言 端到端是近期非常火的话题,尤其在自动驾驶、具身智能等领域。去年UniAD的发布,给大家普及了端到端的网络设计,带动了行业的发展。产业界,特斯拉FSD Beta V12效果惊艳,近期理想也推出了双系统的E2E自动驾驶系…

qml 实现一个listview

主要通过qml实现listvie功能&#xff0c;主要包括右键菜单&#xff0c;滚动条&#xff0c;拖动改变内容等&#xff0c;c 与 qml之间的变量和函数的调用。 main.cpp #include <QQuickItem> #include <QQmlContext> #include "testlistmodel.h" int main…

(自用)高性能网络编程

Epoll - Reactor 设计模式 以餐厅大点餐为例 Reactor优点 Epoll - IO多路复用 1.创建EPOLL 句柄 相关函数 epoll_create #include <sys/epoll.h>int epoll_create(int size); 作用&#xff1a; 创建一个 epoll 实例 参数: size 参数用于指定 epoll 实例中管理的…

MongoDB教程(十二):MongoDB数据库索引

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、MongoD…

vue3前端开发-小兔鲜项目-图片懒加载的自定义标签

vue3前端开发-小兔鲜项目-图片懒加载的自定义标签&#xff01;很多大型网站&#xff0c;因为首页面渲染的内容太多了&#xff0c;然而有些用户&#xff0c;可能在顶部就发现了自己感兴趣的内容&#xff0c;直接就点击跳转去了其他页面&#xff0c;因此&#xff0c;完全没有必要…

Spring纯注解开发

前言 Spring3.0引入了纯注解开发的模式&#xff0c;框架的诞生是为了简化开发&#xff0c;那注解开发就是简化再简化。Spring的特性在整合MyBatis方面体现的淋漓尽致哦 一.注解开发 以前跟老韩学习SE时他就说&#xff1a;注解本质是一个继承了Annotation 的特殊接口,其具体实…

Apache SeaTunnel——OLAP 引擎的数据动脉

导读本文将分享如何利用 Apache SeaTunnel 将各个业务系统的数据同步到 OLAP 引擎。 主要内容包括以下六大部分&#xff1a; 1. Apache SeaTunnel 项目介绍 2. Apache SeaTunnel 核心功能 3.SeaTunnel 在 OLAP 场景下的应用 4. 社区近期计划 5. WhaleTunnel 产品特性 6. …

【框架】PHP框架详解-symfony框架

目录 一、框架概述 二、核心组件 三、特点与优势 四、开发流程 新机制 层次 网络应用框架 包涵观念 兼容的数据库 结构 开发环境捆绑 应用开源项目 公共特性 Symfony是一个用PHP语言编写的开放源代码的Web应用框架,旨在加速Web应用程序的开发过程,提高代码的可维…

VS2019+CMake+Vtk9.3.0+Qt5.14.2 配置

VS2019CMakeVtk9.3.0Qt5.14.2 配置环境 第一步 下载 基本配置 系统环境&#xff1a;windows11 x64 Qt&#xff1a;5.14.2 这是最后最新的LTS qt离线版本&#xff0c;后续版本都需要在线安装&#xff0c;同时使用qt5.14也避免版权问题。 Qt 5.14&#xff1a;大部分模块基于LG…

去中心化技术的变革力量:探索Web3的潜力

随着区块链技术的发展和应用&#xff0c;去中心化技术正成为数字世界中的一股强大变革力量。Web3作为去中心化应用的新兴范式&#xff0c;正在重新定义人们对于数据、互联网和价值交换的认知。本文将探索去中心化技术的基本概念、Web3的核心特征及其潜力应用&#xff0c;展示其…

Zabbix × openGauss完成兼容 | 信创路上,得其法则事半功倍

在当今快速发展的信息技术领域&#xff0c;数据库作为核心组件之一&#xff0c;其性能、可靠性和兼容性一直是企业和开发者关注的焦点。 近期&#xff0c;Zabbix与openGauss完成了兼容性认证&#xff0c;经过严格联合测试&#xff0c;双方产品实现完全兼容&#xff0c;整体运行…

手写简易版Spring IOC容器【学习】

这里写自定义目录标题 BeanDefinitionbeanDefinition类 单例对象单例对象注册(SingletonBeanRegistry)DefaultSingletonBeanRegistry 模板方法 BeanFactoryBeanFactory接口AbstractBeanFactory 抽象工厂模板 (getBean)AbstractAutowireCapableBeanFactory (createBean 创建bean…

离散数学,汉密尔顿图判定的实际问题,平面图,平面图的判定,欧拉公式,对偶图,五色定理的证明

目录 1.汉密尔顿图判定的实际问题 判断是否是汉密尔顿图 思考&#xff1a;下图中哪些是汉密尔顿图 例子 2.平面图 平面图的基本概念 并非所有的图都能嵌入平面 平面图的面与次数 欧拉公式 欧拉公式的证明 3.平面图的判定 同胚 kuratowski定理 ​4.对偶图 四…

docker 安装并测试(Ubuntu下)

1. 确认安装环境&#xff08;操作系统版本和 CPU 架构&#xff09; 2. 如果有旧版本的 docker 需要进行卸载 使用 docker 命令检查是否已经安装了 docker 如果 docker 已经安装&#xff0c;使用以下命令卸载&#xff1a; apt-get purge docker-ce docker-ce-cli containerd…

​1:1公有云能力整体输出,腾讯云“七剑”下云端

【全球云观察 &#xff5c; 科技热点关注】 曾几何时&#xff0c;云计算技术的兴起&#xff0c;为千行万业的数字化创新带来了诸多新机遇&#xff0c;同时也催生了新产业新业态新模式&#xff0c;激发出高质量发展的科技新动能。很显然&#xff0c;如今的云创新已成为高质量发…

【qt】VS中如何配置Qt环境

https://download.qt.io/official_releases/vsaddin/ 首先需要下载一下vsaddin,上面的是下载的网站. 下载的时候可能会出现下图的情况 说明你下的vsaddin和您的VS版本不匹配,所以你可以多下几个其他版本的vsAddin,一般都是和你VS版本相匹配的才可以,如Vs2022,那就试试vsaddin2…