三十三、加密

news/2024/11/16 22:37:15/

本集重点

  • 多层防御
  • 加密&解密
  • 凯撒加密
  • 替换加密
  • 移位加密&列移位加密
  • 德国Enigma加密机
  • 1977年“数据加密标准”
  • 2001年“高级加密标准”
  • 密钥交换
  • 用颜色来举例“单向函数”和“密钥加密”的原理
  • 迪菲——赫尔曼密钥交换
  • 非对称加密
  • 非对称加密算法

在这里插入图片描述

多层防御

在过去两集,我们聊了很多计算机安全话题。但事实是,世上不存在100%安全的系统。总会有漏洞存在,而且安全专家知道这一点。所以系统架构师会部署多层防御*(defense in depth),用多层不同的安全机制来阻碍攻击者,就像城堡的设计一样:(入侵者)首先要避开弓箭手、穿过护城河、翻过城墙、避开热油、打败守卫…不过我们这里要说的是,计算机安全中最常见的防御形式:密码学(cryptography)。

加密&解密

密码学一词来自cryto和graphy,大致翻译成“密码写作”。为了加密信息,要用加密算法(cypher)把明文转为密文。将明文转为密文叫加密(encryption),把密文恢复回明文叫解密(decryption)。

凯撒加密

加密算法早在计算机出现前就有了。朱利叶斯·凯撒就使用凯撒加密(Caesae cipher)的方法来加密私人信件。他会把信件中的字母向后移动三个位置(比如A变成D)。为了解密,接收者要知道:1.用了什么算法;2.要偏移的字母位数。

替换加密

有一大类算法叫“替换加密”(substitution cipher),凯撒密码是其中一种。该算法按照某种机制把每个字母替换成其他字母。但是有个巨大的缺点,每个字母的出现频率是一样的。比如E是英语中出现频率最高的字母,如果把E加密X,那么密文中X的出现频率会很高。熟练的密码破译师(cryptanalyst)可以从统计数据中发现规律,进而破译密码。

移位加密&列移位加密

另一类加密算法叫做“移位加密”(transposition cipher)。我们可以看下面这个例子:
我们来看一个简单例子叫“列移位加密”(columnar transposition cipher),我们把明文填入55的网格。
在这里插入图片描述
为了加密信息,我们换个顺序来读。比如从左边开始,从下往上,一次一列。加密后字母的排列不同了。
在这里插入图片描述
解密的关键是,收信人需要知道读取方向和网格大小是5
5。

德国Enigma加密机

到了1900年代,人们用密码学做了加密机器。其中最有名的是德国的英格玛(Enigma),纳粹在战时用英格玛加密通讯信息。Enigma是一台像打字机的机器,有键盘和灯板,两者都有完整的字母表。而且它有一系列“转子”(rotros),是加密的关键。
在这里插入图片描述
首先我们只看一个转子,它一面有26个接触点,代表26个字母,然后线会连到另一面来替换字母。这个过程就是替换加密。
在这里插入图片描述
但是英格玛更加复杂一些,因为它有3个或更多转子,一个转子的输出作为下一个转子的输入。转子是一个叫反射器的电路,它会将转子的每个引脚连接到另一个引脚,并把信号发回给转子。最后机器前方有一个插板,可以把输入键盘的字母预先进行替换。假如我们输入h,电信号会通过转子、到达反射器、然后回到转子和插板,并照亮键盘灯板上的字母“L”。
在这里插入图片描述
而如果我们按下l,键盘板上的h就会亮起来。换句话说,加密和解密的步骤是一样的。只要我们能确保发送机和接收机的初始配置是一样的就行。而英格玛将字母加密后变成另一个字母将会成为其弱点之一。这也是日后图灵破译英格玛机的关键之处。
为了不让英格玛只是简单的字母替换,每输入一个字母,转子就会转一个,类似于汽车里程表。如果输入"A-A-A",输出可能会变成"B-D-K"。映射会随着每次按键而改变。

1977年“数据加密标准”

随着计算机出现,加密从硬件转往软件。早期加密算法中,应用最广泛的是IBM和NSA于1977年开发的数据开发标准(data encryption standard,DES)。DES最初使用的是56bit长度的二进制密钥,因此有 2 56 2^{56} 256个不同的密钥。1977年时只有NSA有这个能力破解这种密钥,但是到1999年一台25万美元的计算机能在两天内把DES的所有可能密钥都试一遍,因此DES算法不再安全。

2001年“高级加密标准”

因此2001年推出了:高级加密标准(Advanced Encryption Standard,AES)。AES使用更长的密钥——128位/192位/256位——让暴力破解更加困难。128位的密钥,哪怕用现在地球上的所有计算机,也要上万亿年才能试遍所有组合。AES将数据切成一块一块,每块16字节,然后用密钥进行一系列替换加密和移位加密。然后加上一些其他操作进一步加密信息。每一块数据会重复这个过程10次或以上。采取10次以及使用128位是基于性能的权衡,如果要花几小时加密和发邮件,或几分钟载入网站,没人愿意用。AES在性能和安全性之间取得平衡,如今AES被广泛使用,比如iPhone上加密文件、用WPA2协议在WiFi中访问HTTPS网站。

密钥交换

到目前为止,我们讨论过的加密技术都依赖于发送者和接收者都知道密钥。发件人用密钥加密,收件人用相同的密钥解密。以前,密钥可以口头约定,或依靠物品。比如德国人给英格玛配了密码本,上面有每天的配置。但是互联网时代没有办法这样做:你能想象打开密码本才能访问YouTube吗?我们需要某种方法在公开的互联网上传递密钥给对方。这看起来好像不安全,如果密钥被黑客拦截了,黑客不就能解密通信了吗?解决方案就是密钥交换(key exchange)。密钥交换是一种不发送密钥,但依然让两台计算机在密钥上达成共识的算法。我们可以使用单向函数(one-way function)来做到这一点。

用颜色来举例“单向函数”和“密钥加密”的原理

单项函数是一种数学操作,很容易算出结果,但想从结果逆向推算出输入非常困难。我们使用颜色进行比喻:将颜色混合在一起很容易,但是想知道混合了什么颜色很难,要尝试很多种可能才知道。在这个比喻下,我们的密钥是一种独特的颜色。首先有一个公开的颜色,所有人都可以看到,然后我和约翰各选择一个秘密颜色——只有自己才知道。
在这里插入图片描述
为了交换密钥,我把我的秘密颜色和公开颜色混合在一起,然后发送给约翰——写信发、用信鸽发,怎么样都行。约翰将他的秘密颜色和公共颜色也混合在一起并发送给我.
在这里插入图片描述

然后我在收到约翰的颜色之后再把我的秘密颜色加入进去。现在3种颜色混合在一起。John也做一样的事情。这样我们有了一样的颜色。
在这里插入图片描述
我们可以把这个颜色作为秘钥,尽管我们从来没有给对方发送过颜色。外部的人可以知道我们的公共颜色,或者我们发送给对方的颜色,但是终究无法知道我们通过一系列处理得到的最终颜色。

迪菲——赫尔曼密钥交换

数学单向函数是完美的,我们可以用迪菲-赫尔曼密钥交换(Diffe-Hellman Key Exchange)。

非对称加密

非对称加密算法


http://www.ppmy.cn/news/238797.html

相关文章

内存超频时序怎么调_内存超频(ddr4内存时序多少为好)

一般衡量内存的性能,主要看内存的频率和这个频率下的时序,而cl值又是内存时序的一项很重要的参数,cl值原则上越小越好。 这两套内存,一套2800mhz cl16,频率占。。 c14好,但是,如果频率一样,这点时序的差异是没有性能差距的,如果是3200c15,比2133c14性能反而好很多,频…

LKT6830C安全MCU(一):资源介绍

LKT6830C是以32位高安全CPU为基础开发的高性能、高安全性的MCU主控。LKT6830C 除了具有SPI、IIC、UART、GPIO等常用外设接口外同时芯片内置定时器、看门狗、PWM、DMA等功能。在充分保证芯片内部程序存储和运行安全的前提下,满足客户各种基本应用开发的要求。 LKT683…

uniapp没有localstorage可使用uni.setStorage

1: localStorage.getItem WEB应用的快速发展,本地存储一些数据也成为一种重要的需求,实现的方案也有很多,最普通的就是cookie了,大家也经常都用,但是cookie的缺点是显而易见的,其他的方案比如:…

Xilinx原语——IDDR与ODDR的使用(Ultrascale系列)

Xilinx原语——IDDR与ODDR的使用(Ultrascale系列) 一、IDDR1.1 OPPOSITE_EDGE1.2 SAME_EDGE1.3 SAME_EDGE_PIPELINED1.4 三种模式异同 二、ODDR三、IDDR与ODDR仿真3.1 IDDR仿真3.1.1 IDDR顶层3.1.2 TestBench3.1.3 仿真结果 3.2 ODDR仿真3.2.1 ODDR顶层文…

从git上拉取项目

目录 一、前期准备,获取git下载链接 二、idea下载 2.1.打开git下载界面 2.2.进入下载界面 2.3.下载前期配置 2.4.输入账号密码 2.5.下载完成后idea打开 2.6.下载完成后文件目录展示 三、命令行下载 3.1.打开所需要下载的项目路径 3.2.进入黑窗口 …

某鱼APP x-sign x-mini-wua x-sgext 分析成果

百度到的算法都是HOOK模拟器 感觉不是很稳定所以自己研究 对分析算法有兴趣的朋友私我,欢迎定制其他APP算法 def get_sign(Pm):#这里是加密需要的字段arg0 Pm[appKey]arg1 Pm[utdid] "&"arg1 arg1 Pm[uid] "&"arg1 arg1 Pm[r…

智头条|欧盟达成《人工智能法》协议,全球前沿科技齐聚AWE 2023

行业动态 华为云联手多方推进数字化,软通动力深度参与 华为云宣布启动“‘百城万企’应用现代化中国行”,旨在推动应用现代化进程、助力数字中国高质量落地。软通动力是该行动的参与者之一,共同探索符合区域特点、产业趋势、政企现状的数字化…

solr高级查询应用---按字段分组查询(group)

solr的group查询类似于关系数据库的group by,可以用于一个或者几个字段去重、显示一个group的前几条记录等。 下面,进行简单的实战操作,以下solr中的测试数据,参考:https://blog.csdn.net/weixin_43231076/article/de…