读算法简史:从美索不达米亚到人工智能时代10纠错和加密

news/2025/2/8 7:03:08/文章来源:https://www.cnblogs.com/lying7/p/18702859

1. 纠错

1.1. 像互联网这样的通信系统,被设计成将信息的精确副本从发送方传输到接收方

1.2. 通常,接收到的信号会受到电子噪声的污染

  • 1.2.1. 噪声是任何会破坏预期信号的非预期信号的总称

  • 1.2.2. 噪声可能源于自然,也可能来自附近电子设备的干扰

  • 1.2.3. 如果噪声相对于信号足够强,就会导致信号转换回数据时出现错误

1.3. 检测和校正错误最简单的方法是重复

  • 1.3.1. 为了确保传输正确,一个重要的数据可能会连续发送3次

  • 1.3.2. 接收方比较所有3个副本

    • 1.3.2.1. 如果它们能匹配,则可以推定没有发生错误

    • 1.3.2.2. 如果只有两个副本能匹配,那么剩下的那一个可以被推定为出错了,两个相匹配的副本被认为是正确的

    • 1.3.2.3. 如果没有彼此匹配的副本,那么就无法确认真实的讯息是怎样的,必须请求重新传送

  • 1.3.3. 重复很好用,但非常低效

    • 1.3.3.1. 如果每个数据包发送3次,那么每秒可以传输的数据包数是添加错误保护之前的三分之一

1.4. 校验和(checksum)要高效得多

  • 1.4.1. 其思想是将所有字符(字母、数字和标点符号)均转换为数字

  • 1.4.2. 绝大多数情况下,如果校验和不匹配,就表明发生了传输错误

  • 1.4.3. 校验和是很常用的

    • 1.4.3.1. 国际标准书号(International Standard Book Number,ISBN)就包含一个校验和
  • 1.4.4. 基础校验和仅能用来检测错误,但无法弄清楚具体哪个数字是错误的

    • 1.4.4.1. 错误甚至可能就出现在校验和本身

      1.4.4.1.1. 在这种情况下,讯息本身是正确的

    • 1.4.4.2. 基础校验和要求讯息重传以修复错误

2. 理查德·汉明

2.1. Richard Hamming

2.2. 想知道是否可以优化校验和,使它能同时提供错误检测和错误纠正

2.3. 1915年出生于芝加哥,主修数学,最终获得伊利诺伊大学的博士学位

2.4. 校验和的最简单形式是奇偶校验位(parity bit)

  • 2.4.1. 与校验和一样,奇偶校验位和数据字(数据位的序列)是一起发送的

  • 2.4.2. 想要检查错误,接收方仅需要数1的数量

  • 2.4.3. 如果最终计数是偶数,则可以推定没有发生错误

  • 2.4.4. 如果计数是奇数,那么,十有八九,其中某个位上就出现了错误,0被错误地翻转为了1,或者1被错误地翻转为了0

  • 2.4.5. 当错误率很高时,需要额外增加奇偶校验位

2.5. 汉明设计了一种聪明的方法,使用多个奇偶校验位来检测和纠正一个个错误

  • 2.5.1. 诀窍在于,任何两个奇偶校验位保护的数据位都不是完全相同的

  • 2.5.2. 如果发生了一个错误,通过查看哪些奇偶校验位受到了影响就可以确定错误所在的位置

2.6. 汉明的精妙算法允许计算机检测和纠正一个个错误,代价是发送的总位数略有增加

  • 2.6.1. 4个奇偶校验位保护了11个数据位

    • 2.6.1.1. 只增加了36%的位数

2.7. 汉明码的生成和检查都极其容易

  • 2.7.1. 使它们非常适合高速处理,而这正是计算机网络、内存和存储系统所需要的

  • 2.7.2. 现代通信网络混合使用了汉明码、基本校验和,以及更新、更复杂的纠错码,以确保数据传输的完整和准确

2.8. 1968年,汉明因他发明的汉明码和在数值分析方面的其他工作获得了图灵奖

2.9. 1998年,仅仅退休一个月后,他在蒙特雷去世

3. 加密

3.1. 互联网最大的缺陷之一是它在设计时没有考虑到安全问题

  • 3.1.1. 其中一个麻烦是数据包很容易在途中被窃听者用电子设备读取

3.2. 加密(encryption)通过更改讯息的方式来避免窃听,只有预期的接收方能够复原出原始文本

  • 3.2.1. 明文(plaintext)

    • 3.2.1.1. 原始消息
  • 3.2.2. 密文(ciphertext)

    • 3.2.2.1. 加密的讯息

3.3. 尤利乌斯·恺撒对重要的私人信件也采用了加密技术

  • 3.3.1. 恺撒密码将原文中的每一个字母替换为一个替代字母

  • 3.3.2. 密文(ciphertext)被发送给接收方

  • 3.3.3. 接收方通过将每一个字母按字母表向左移动一个位置来复原原始消息

  • 3.3.4. 可以通过频率分析的方法来攻击恺撒密码

    • 3.3.4.1. E是英语中最常用的字母

    • 3.3.4.2. 一旦单个移位方式被破解,整条讯息就可以被解密

3.4. 没有一个加密方案是完美的

  • 3.4.1. 只要有足够长的时间和一次巧妙的攻击(attack),大多数密码都是可以被破解的

  • 3.4.2. 几乎所有的密码都有漏洞

3.5. 问题在于,攻击需要多长时间才能破解密码?

  • 3.5.1. 如果攻击所需时间长到不可接受,那么从实际角度来看,该密码就是安全的

4. 密钥分配问题

4.1. Key Distribution Problem

4.2. 网络并不安全,不能防止窃听

  • 4.2.1. 传递密钥唯一方便的方式是通过网络本身

4.3. 马丁·赫尔曼

  • 4.3.1. Martin Hellman

  • 4.3.2. 1945年出生于纽约

4.4. 惠特菲尔德·迪菲

  • 4.4.1. Whitfi eld Diffie

  • 4.4.2. 生于1944年,来自华盛顿特区,拥有MIT的数学学位

4.5. 迪菲和赫尔曼在2015年也获得了图灵奖

4.6. 拉尔夫·默克尔

  • 4.6.1. Ralph Merkle

  • 4.6.2. 出生于1952年

4.7. 1976年,迪菲和赫尔曼发表了一篇论文,描述了一种算法,那是第一批公钥交换的实用算法之一

  • 4.7.1. 这篇论文彻底改变了密码学

  • 4.7.2. 所有密钥都必须是私人密钥的神话被打破了

  • 4.7.3. 一种新的密码形式诞生了:公钥密码学(public key cryptography)

4.8. 迪菲-赫尔曼-默克尔密钥交换方案表明,双方可以经由公开讯息建立密钥

4.9. 传统加密算法使用对称(symmetric)密钥,这意味着加密和解密使用的是相同的密钥

  • 4.9.1. 对称加密的缺点是密钥必须始终保密

  • 4.9.2. 这个要求就引发了密钥分配问题

4.10. 公钥加密使用两个密钥:一个加密密钥和一个不同的非对称(asymmetric)解密密钥

  • 4.10.1. 它们必须能成功地用作加密-解密对,即用其中一个加密,用另一个解密,且必须最终能得到原始讯息的副本

  • 4.10.2. 必须不可能通过加密密钥来确定解密密钥是什么

4.11. 步骤

  • 4.11.1. 爱丽丝生成加密和解密密钥对。

  • 4.11.2. 爱丽丝自己保管解密密钥

  • 4.11.3. 她公开了加密密钥

  • 4.11.4. 鲍勃使用爱丽丝的公开加密密钥加密他的讯息

  • 4.11.5. 鲍勃将加密讯息发送给爱丽丝

  • 4.11.6. 爱丽丝使用她的私人解密密钥破解加密的讯息

4.12. 困难所在

  • 4.12.1. 必须无法从公开的加密密钥中确定私人解密密钥

  • 4.12.2. 解密密钥不能由加密密钥计算出来,没有人知道如何创建这种非对称密钥

4.13. 单向函数(one-way function)

  • 4.13.1. 一种无法从输出中轻易推断出输入的计算

5. RSA

5.1. 罗纳德·里维斯特

  • 5.1.1. Ronald Rivest

  • 5.1.2. 生于1947年,来自纽约州

5.2. 阿迪·沙米尔

  • 5.2.1. Adi Shamir

  • 5.2.2. 生于1952年,是以色列特拉维夫人

5.3. 伦纳德·阿德曼

  • 5.3.1. Leonard Adleman

  • 5.3.2. 生于1945年,在旧金山长大

5.4. 里维斯特、沙米尔和阿德曼于2002年获得了图灵奖

5.5. RSA算法如今是互联网加密技术的基石

5.6. RSA算法的加密和解密相当简单直接

  • 5.6.1. 加密密钥由两个数字组成——一个模数(modulus)和一个加密指数

  • 5.6.2. 解密密钥也包含两个数字——相同的模数和一个不同于加密指数的解密指数

5.7. 对数字组进行加密

  • 5.7.1. 计算输入数的加密指数次幂

  • 5.7.2. 除以模数,得到余数

  • 5.7.3. 输出余数

5.8. 解密过程

  • 5.8.1. 计算接收到的数字的解密指数次幂

  • 5.8.2. 除以模数,得到余数

  • 5.8.3. 输出余数

5.9. 时钟算术(clock arithmetic)

5.10. 数轴(number line)

5.11. 加密密钥和解密密钥是互补的

  • 5.11.1. 密钥对是特别挑选出来的,以便其中一个指数能抵消另一个指数的影响

  • 5.11.2. 绕时钟表面旋转的完整圈数并不重要

  • 5.11.3. 最重要的是指针最后指向的那个数字

5.12. 对密钥对的攻击可以归结为寻找两个素数,它们相乘得到模数

  • 5.12.1. 素数做乘法掩盖了选定的素数

  • 5.12.2. 对于很大的模数,相乘得到模数的素数对有很多可能,攻击者必须测试大量素数才能破解密码

  • 5.12.3. 当使用大模数时,用蛮力搜索寻找初始素数是非常耗时的

5.13. 密钥生成算法中的其他步骤确保了加密和解密是互反的

  • 5.13.1. 对于0到模数之间的所有值,解密可以还原加密的结果

5.14. 1977年,​《科学美国人》的一篇文章向大众读者介绍了RSA算法

  • 5.14.1. 在文末提供了一个100美元奖金的挑战,挑战者要在给定加密密钥的情况下破解RSA密文

  • 5.14.2. 模数相当大——一个129位的十进制数字

  • 5.14.3. 破解密码花了17年的时间

    • 5.14.3.1. 获胜的团队由600名志愿者组成,他们利用业余时间在世界各地的计算机上工作

5.15. RSA是军事级别的加密

5.16. 公匙加密现在被内置于万维网的安全套接层(Secure Socket Layer,SSL)中

  • 5.16.1. 当网站地址前面有“https:”时,你的计算机就正在使用SSL和附带的RSA算法与远程服务器通信

  • 5.16.2. 70%的网站流量使用SSL

  • 5.16.3. 为了防止密文被最新的超级计算机破解,密钥的长度不得不不断增加

  • 5.16.4. 现今,包含2048位(相当于617位的十进制数字)或更多数位的密钥很常见

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年java最新 ide 系列激活

2025 ide 激活N6IQ9MTOK0-eyJsaWNlbnNlSWQiOiJONklROU1UT0swIiwibGljZW5zZWVOYW1lIjoi5rC45LmF5Zyw5Z2AIHd3d8K3YWppaHVvwrdjb20iLCJsaWNlbnNlZVR5cGUiOiJQRVJTT05BTCIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb24iOiIiLCJjaGVja0NvbmN1cnJl…

INFINI Labs 产品更新 - Easysearch 增强 Rollup 能力,Console 完善 TopN 指标等

INFINI Labs 产品更新发布!此次更新,Easysearch 增强 Rollup 能力,支持更多的聚合方式;Console 完善了 TopN 的指标,支持自定义视图,并内嵌视图模板;Gateway 进行了多处优化以及修复相关 Bug 等等。欢迎下载体验,探索更多可能! INFINI Easysearch v1.10.1 INFINI Easy…

Proj CJI Paper Reading: Detecting language model attacks with perplexity

AbstractTool: PPL Findings:queries with adversarial suffixes have a higher perplexity, 可以利用这一点检测 仅仅使用perplexity filter对mix of prompt types不合适,会带来很高的假阳率Method: 使用Light-GDB根据perplexity和token length filter带有adversarial suffix…

年化收益17倍的红中探底(单针探底)操作策略

作者QQ: 396068801,加Q分享交流通达信红中探底指标。 红中探底条件: # 更新日志:# 2025-2-7 改为红中创10天新低,25日均线向上,尾盘进。# 止盈操作:涨停不卖, 每涨8%就卖一半,直到浮盈达到3倍清仓;高点跌8%清仓。# 止损: 买入后只要跌超6%就清仓止损。# 卖票时间: …

Java基础学习(十五)

Java基础学习(十五):IO流 目录Java基础学习(十五):IO流概念基本流字节输出流 FileOutputStream字节输入流 FileInputStream字符集Java 中的编码和解码字符输入流 FileReader字符输出流 FileWriter缓冲流字节缓冲流字符缓冲流转换流序列化流 和 反序列化流序列化流反序列化…

linux vm tools 问题

转载vmware tools 失效问题解决方式(Ubuntu 22 以及其他系统) - 知乎 今天新装了Kubuntu 以及 Ubuntu 版本均为 22x,一如既往的操作,最后发现VMware tools失效。 尝试输入vmware-user发现又可以了。 具体表现: 1、窗口分辨率可以缩放,无法复制粘贴,无法复制粘贴文件。 2…

【shell脚本】轻松搞定打包与Shell部署

本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作; 1. profiles指定不同环境的配置 通常一套程序分为了很多个部署环境:开发,测试,uat,线上 等,我们要想对这些环境区分配置文件,可以通过两种方式: 1、通过a…

01 HTML详解

一. HTML语言 HTML是超文本标记语言。超文本:文本、图片、声音、视频、表格、链接等等。 标记:由许许多多的标签组成。二. HTML结构 HTML 代码是由 "标签" 构成的。 形如: <body>hello</body>标签名 (body) 放到 < > 中。大部分标签成对出现。…

HTML详解

一. HTML语言 HTML是超文本标记语言。超文本:文本、图片、声音、视频、表格、链接等等。 标记:由许许多多的标签组成。二. HTML结构 HTML 代码是由 "标签" 构成的。 形如: <body>hello</body>标签名 (body) 放到 < > 中。大部分标签成对出现。…

【Nginx】Nginx 配置页面请求不走缓存 浏览器页面禁用缓存

我是Superman丶 巴韭特锁螺丝 2025年02月07日 08:50 陕西 前言 使用缓存的优点在于减少数据传输,节省网络流量,加快响应速度;减轻服务器压力;提供服务端的高可用性;缺点在于数据的不一致问题;增加成本 Nginx作为Web缓存服务器,介于客户端和应用服务器之间,当用户通过浏…

NLog日志(三)

程序开发日志输出常用逻辑 1.应用启动和关闭添加新配置<rules><!-- 默认日志记录器(仅控制台输出) --><logger name="*" minlevel="Debug" writeTo="logconsole" /><!-- 记录应用启动 & 关闭日志 --><logger n…

XXL-CACHE v1.2.0 | 多级缓存框架

Release Notes1、【增强】多序列化协议支持:针对L2缓存,组件化抽象Serializer,可灵活扩展更多序列化协议; 2、【优化】移除冗余依赖,精简Core体积;XXL- CACHE 快速接入示例代码参考github仓库 /test 目录:https://github.com/xuxueli/xxl-cache/tree/master/xxl-cache-s…