EBU7140 Security and Authentication(一)常见加密算法

前言

主要根据 EBU7140 课程内容整理,比较偏向应试~

Block1:介绍课程,传统加密方式。

Block2:公钥加密的原理和应用。

Block3:一些特定安全协议技术(如防火墙 Kerberos身份验证协议等)。

Block4:电子邮件安全,网络安全。

B1

网络安全的意义不必多说。军事领域通信,日常生活交易……

这门课程的标题叫做“安全与认证”,安全和认证分别是指什么?

security system: Deter, Prevent, Detect and Correct security violations of data transmission.

安全系统:阻止、预防、检测和纠正数据传输中的安全违规行为。

安全架构 security architecture

安全架构主要包含三个内容:使数据信息泄露的安全攻击 attack,检测、预防、恢复安全攻击的安全机制 mechanism,防止攻击的进程安全服务 services。

安全攻击主要有以下几种,都比较好理解:

1701581604261

安全攻击也分为被动 passive 和主动 active。

安全机制:我们知道“安全”是一个抽象的东西,不能被提供。但是可以通过增加安全攻击的难度使得系统被称为“更安全”,比如加密技术。Cryptography

安全服务:比如安全认证 Authentication 鉴别用户权限;access control 只让有权限的人访问;校验数据机密性完整性……

下图是一些术语,我感觉不会考概念,只是题干里出现的时候要知道意思。

image-20231203134408877

从上到下:明文(未加密的数据),加密,密文,解密,密钥(用于加密解密,用法要看具体加密算法);加密,哈希算法,数字签名(通过加密算法来确保这个信息是我发送的);访问控制,数据机密性,数据完整性,不可否认性,身份认证。image-20231203134942164

三者是包含的关系,security 是一些基本定义,mechanism 是利用 security 的一些算法,services 是结合 mechansim 实现的一些功能。

网络安全模型

简化一下就是发送信息的时候,网络安全服务帮我们加密后发给对方,对方借助网络安全服务解密后得到数据。1701583057001

加密举例

凯撒密码

最古老,最简单的加密方法:凯撒密码 Caesar Cipher,字母平移。凯撒当时用过这种方式和他的军官联络。image-20231203135900106

如果我们知道密文是通过凯撒加密的,那么破解非常简单,顶多试25次就能得到答案。

维吉尼亚密码

维吉尼亚密码 Vigenère Cipher:多字码替换 Polyalphabetic Substitution,本质上是多次凯撒密码得到的。

我们需要一个明文字符串和 key 字符串(用于加密)。1701583540014

image-20231203140434357

比如明文 M,key 第一个是 S,那么对应密码表中的 E 字母。

明文 Y,第二个 key 是 T,对应 R。

算法:(明文对应字母 + key 对应字母) mod 26 (A 算 0)

解密:(密文对应字母 - key 对应字母) mod 26 (A 算 0)

转子加密

转子加密 Rotor Encryption:多层滚轮的机械结构。

单滚轮:

1701584519743

每加密一个,滚轮左移一下。

多滚轮:不同层滚轮转速不同。

这是德国发明的加密机器,不过后来也是逐渐被破解了。

格栅加密

格栅加密 the grille:利用一个格栅图区遮挡。收发双方应该是共有一份格栅图。

image-20231203142409238

每次取一部分数据后顺时针旋转格栅图,再取一部分数据。

加密系统的分类

  • 隐写术 Steganography :把数据藏起来,不能直接发现的加密方式。比如调整像素的最低有效位,音频文件中通过频谱调整或频率转移……本质是你第一眼看不到明文。

  • 加密 Cryptographic :密文给你了,就在这张纸上,这个就是数据。但是你需要解密才能看。

  • 加密方法:替换和移位 Substitution & Transposition. 比较好理解。

  • 使用的密钥数量:对称加密和非对称加密 Transposition & Asymmetric。加密解密用一个密钥就是对称加密。

  • 明文处理方式:流加密和块加密 Stream Cipher & Block Cipher。一次处理一个元素和一块多个元素的区别。

前面的凯撒密码算是流加密,格栅我觉得应该算块加密。

流加密1:简单的异或

举一个流加密的例子,简单说就是明文和密钥逐位异或运算得到密文,再异或一次解密。因为一个位和0或者1异或2次都会得到他自己。

image-20231224142256770

计算量小,加密快。但是太简单了,如果知道明文密文就知道密钥了;且攻击者篡改消息后无法被察觉,没有类似奇偶校验的那种保证信息没有被篡改的机制。

流加密2:one time pad

第二种流加密方法叫 one time pad 一次性记事本,无法被破坏。即每次传输都使用一个新的随机密钥,长度和要传输的信息一样,**密文和明文没有统计上的关系,**用这个密钥来加密。问题在于怎么把密钥发给对方,密钥太大,而且该算法也容易出错。

块加密1:乱序

比如每10个字母重新排一次顺序,from {1,2,3,4,5,6,7,8,9,10} to {3,1,2,10,7,5,4,8,6,9}。

image-20231224143239261

块加密2:普莱费尔方阵密码

playfair 方阵密码,初见有点蒙,看明白了发现还是挺有意思的。

首先我们用密钥生成一个5*5的加密方阵。比如密钥是 “MY SECRET CODE IS”,我们去掉重复字母和空格,变为 “MYSECRTODI”,写在方阵里,其余部分按字母表没出现的字母顺序填充。

1703400024911

对于明文,首先我们把明文拆成一对一对的字母组合,如果出现某一对字母组合重复,就把第二个换成 X 或 Q。

1703400165306

对于每一对字母,我们先去加密方阵里找到对应的字母位置。

  1. 如果他俩不在同一行同一列,那么就组成了一个矩形的两个对角线,我们用这个矩形的另外两个对角线字母替换他俩。

1703400279889

  1. 如果他俩在同一行,就都用右边的字母替换。

1703400308311

  1. 如果他俩在同一列,就都用下面的字母替换。

1703400332750

挺安全的哈,这么复杂。问题在于密钥不能泄露出去(用于生成加密矩阵的密钥),一旦泄露就完蛋。

密钥协商协议 key agreement

上面这些都是一些比较传统的加密方式,问题基本在于:密钥不能泄露。所以当时人们就需要一些双方制定协商密钥的方式,不然如果第一次发密钥的时候被截获了,后面的信息传输都相当于是透明的了。

针对破解密钥的攻击方式主要有两种,一种是密码分析攻击 Cryptanalysis Attacks,针对可能使用的加密方式和该方式明文和密钥的一些加密规律进行破解。比如福尔摩斯里面有一章(跳舞的人),当时密信只是给每个字母创建了一个不同动作的小人符号,福尔摩斯先从英语中e出现次数最多的规律开始推,得到了e对应的符号,接着是其他字母……逐渐破解。

第二种是暴力破解法 Brute-force Attacks,想起以前搬校区的时候我有个3位密码锁是隔壁宿舍同学帮我暴力试出来的hhh。不过有一点区别,那个是试密码,这里的暴力破解是试密钥。

加密算法的安全性怎么评价,其实任何一个密码肯定早晚都是能破译出来的(大不了破译50年,100年,1万年?),要说密钥安全不是说绝对破解不出来,而是:

  1. 破解出来的性价比不高,破解需要花费的人力财力物力比不上密钥的价值。我给同学传个纸条我估计没人闲的没事干来破解,像核弹密码那种估计很多人虎视眈眈。
  2. 明文有效期比破解时间短。比如军队发消息:今晚发起总攻,敌人明天中午破解出来了,大势已去了。

破解

以撒密码破解

和福尔摩斯一样的方法,我们根据字母出现频率去猜。

image-20231224150352021

大不了 shift 25次,总能破解出来吧?

不过更有效的破解方式是向量计算概率,深度学习里面对分类问题的预测也有异曲同工之妙,我们通过一定的算法量化不同 key 是正解的概率,最后比较并选出最可能是 key 的偏移量,而我们并不用关心对于非正确的预测值(感兴趣可以看看我的这篇文章:深度学习(五)softmax 回归之:分类算法介绍,如何加载 Fashion-MINIST 数据集-CSDN博客)。

1703401974314

上表是当前密文的字母出现频率(我称其为密文向量),下图是统计字幕出现频率(我称其为频率向量)。

破解方法:我们让密文向量 shift 一下,与频率向量相乘,算出预测概率;shift 值尝试从1到25,算出每种预测值大小,最后取其最大值。

1703402083556

维吉尼亚密码破解

维吉尼亚密码是一个26*26的矩形,通过明文和密钥找对应位置的字母那个。也就是说密钥不是一个简单的数字偏移量了,而是一个字符串。

首先我们需要猜出密钥长度。我们观察一下重复组合出现的次数(好像是2-3个字母?)

1703402831149

感觉上重复组合出现的比较常见的距离为3,所以密钥是3的倍数(这不依靠算法的话应该还是挺难找的)。

然后我们还是尝试密文 shift 偏移,每次偏移记下偏移量和发生的数字重复情况。比如下图是 shift +2 的偏移情况。

1703402913331

偏移量与重复情况如下:

image-20231224153018033

而且我们知道密钥长度很可能是3的倍数。那么我们把密文分成三等分,3k,3k+1,3k+2。

image-20231224153127390

接下来,对于这三组数据,分别做和以撒密码破解类似的向量破解运算,并求和得出最可能的密钥。

原理上,首先以撒密码和维吉尼亚密码区别在于维吉尼亚密码是一个密钥字符串重复多次的以撒密码,比如 abcabcabc…… 如果我们估测出维吉尼亚密码长度为3,那么 3k 位置的字符串相当于都用 a 加密的凯撒密码,3k+1 位置的字符串都用 b 加密,3k+2 位置都用 c 加密,分别运用以撒密码破解即可。

传统加密

用对称加密的块加密算法也被称为传统加密。

Feistel Algorithm:对密码分块,进行多轮加密处理的算法。比较典型的是 DES。

DES

DES data encryption standard 是一种加密标准。具体 DES 算法有很多。

b9b70bf83ca39e1f461c945e70ab6b9

取64位数据,右边的32位用置换表扩展到48位和密钥异或,再通过s-box置换表置换到32位,和左边的32位异或得到新一轮的右边32位,然后下一轮的时候右边32位变成新的左边32位。

密钥是64位密钥,置换表后变为56位,每一轮是移位后置换表变为48位,再和48位message异或。

S-Box 作用第一是压缩长度进行密钥运算,第二是增加安全性。

1703885492600

DES 安全性和密钥长度,s-box 和特定排列的选择有关(就是替换表和密钥长度)。

DES 56位密钥相对来说安全性不高(虽然已经足够把我绕晕了我觉得),因此可以多重 DES。

Double DES

两次 DES 加密,用不同的密钥。

E K 1 ( E K 2 ( m ) ) E_{K1}(E_{K2}(m)) EK1(EK2(m))

一开始我觉得有没有可能找到一种密钥 k3 使得他和 k1 k2 加密两次是一样的效果呢,那两次加密就没意义了。不过好像根据算法特性,这是不可能发生的。

单重 DES 密钥等级是 256 ,双重是 257

双重 DES 的一个破解方式:中间相遇攻击 Meet-in-the-middle attack。假设双重 DES 只加密一次时的中间值为 X(即 E_{K2}(m) 或者 D_K1©),我们只需要两对已知明文密文对就可以破解双重 DES。

  1. 明文用所有可能密钥加密一次,密文用所有可能密钥解密一次。看看其中得到的中间值 X 相同的密钥对有哪些。
  2. 把这个密钥对拿去检验另一组已知的明文密文(可选),如果也得到相同的中间值 X,说明这个密钥对是正确的。

TDEA

三重 DES。

C = E K 3 ( E K 2 − 1 ( E K 1 ( m ) ) ) C=E_{K3}(E_{K2}^{-1}(E_{K1}(m))) C=EK3(EK21(EK1(m)))

-1 代表解密。解密正相反,K3 解密,K2 加密,K1 解密。

AES

随着计算机计算能力的进步,DES 相对不再安全了,因此 AES 新的加密标准被推出。

标准如下:

  1. 需要支持三种长度密钥,128位 192位 256位。
  2. 块大小只能是128位。
  3. 不像 Feistel Algorithm 拆开几部分分别处理(对于一块数据,拆成左右两部分),AES 每次都是对一整块数据进行处理的。

当时美国国家标准技术研究所制定 AES 标准后征集大家的算法实现,想找到更加安全的算法。比较有名的作品就是 Rijndael。

Rijndael

简单来说分为以下四轮:

image-20231230151610413

  1. S-box 字节替换。一个字节8位,前4位表示16行,后4位表示16列,去替换表里找到对应替换项。

    img

  2. 行移位,不同行移位不同。

    img

  3. 列混合 MixColumns,列与常数矩阵做乘法运算得到新的列。

    img

    比如:

    在这里插入图片描述

  4. 轮密钥加 AddRoundKey,这一步算是真正的加密,密钥和 state 矩阵异或。一般会根据用户密钥进行密钥扩展,生成多轮子密钥,每一轮加密的时候使用不同的密钥。

    img

整体流程是先 add round key 一次,然后 substitute bytes, shift rows, mix cloumns, add round key 这四部分重复 N_{r-1} 次。

不过其实这个加密方法也没有看着那么复杂,甚至不需要尝试2128 次密钥,2100 就可以(应该是根据一些密钥分析技术)。

操作模式

Mode of operation 改进加密方式的方法,原则上尽量避免同一个密钥会产生相同的加密结果,这也是我们前面几种加密方式最大的弊端。反正相同密钥会产生相同的加密结果,那么大不了暴力尝试2128 次不也就尝试出来了么。

ECB Electronic Code Book

电子代码簿,就是简单的分组加密。

1703923215199

不过想想我们破解 DES 的方法,相同密钥加密会产生相同结果的问题并没有解决,我们只要知道明文密文对,尝试所有密钥即可破解。

CBC Cipher Block Chaining

每个明文块先和前一个密文异或,再用密钥加密。c0 初始密文块是双方约定好的一个用于加密的信息。

1703923885608

解密正好相反。

1703923901681

复杂度更高了。不过加密的时候没法并行加密,必须串行加密因为依赖关系。解密的时候还是可以并行解密的。

CFB Cipher feedback

初始向量加密后与明文块1异或,得到密文块1;密文块1加密后与明文块2异或,得到密文块2;……

IV 初始化向量类似 CBC 的 c0,是双方用于起始加密的一个信息。

1703924346531

解密流程差不多,不过不是和明文异或得到异或了,是和密文异或得到明文。

1703924499062

缺点也是加密无法并行运算,而且前面计算错误会影响后面的计算结果。

OFB Output feedback mode (OFB)

和 CFB 区别在于 CFB 是前一个密文块作为后一块加密的初始向量,因此会发生错误传播 Error Propagation。而 OFB 是没和明文异或的时候就作为下一个块的初始向量了,不会发生错误传播。而且如果提前计算好了 IV 向量的多轮加密值,可以直接与分组明文进行并行加密运算。

1703924930996

CTR Counter mode

一个自增的加密计数器作为初始向量。

1703925187031

也可以并行计算,速度很快。

1703925245706

密钥分发

  • 一个最重要的问题:双方怎么同步密钥。如果发密钥的过程中被截住了,那算法再吊也没用啊。

  • 密钥传送通道必须要比发信息通道更安全。

  • 还有一个问题就是怎么通过签名确保密钥是对方发给我的。比如中间人截获了A给B发的密钥,自己伪造了一个密钥给B,B根本不知道他的密钥被修改过。

密钥发送可以通过物理通道(亲手给对方?)。或者如果两个人以前有旧的密钥,现在想换新了,新密钥可以通过旧密钥加密发送。或者两个人可以通过彼此之间的加密连接发送。

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

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

相关文章

AppWeb认证绕过漏洞(CVE-2018-8715)

一、环境搭建 二、影响版本 三、构造payload Authorization: Digest usernameadmin 四、抓包获取sesion 五、修改数据包、认证头 记得设置用户名 六、漏洞存在特征(Gigest)

日志框架简介-Slf4j+Logback入门实践 | 京东云技术团队

前言 随着互联网和大数据的迅猛发展,分布式日志系统和日志分析系统已广泛应用,几乎所有应用程序都使用各种日志框架记录程序运行信息。因此,作为工程师,了解主流的日志记录框架非常重要。虽然应用程序的运行结果不受日志的有无影…

【Matlab】BP 神经网络时序预测算法

资源下载: https://download.csdn.net/download/vvoennvv/88681507 一,概述 BP 神经网络是一种常见的人工神经网络,也是一种有监督学习的神经网络。其全称为“Back Propagation”,即反向传播算法。BP 神经网络主要由输入层、隐藏层…

如何恢复 iPhone 上永久删除的照片?

2007年,苹果公司推出了一款惊天动地的智能手机,也就是后来的iPhone。你会惊讶地发现,迄今为止,苹果公司已经售出了 7 亿部 iPhone 设备。根据最新一项调查数据,智能手机利润的 95% 都进了苹果公司的腰包。 如此受欢迎…

Android实验:contentprovider 实验+SQLite 数据库的实现

目录 SQLite实验目的实验内容实验要求项目结构代码实现结果展示 SQLite SQLite 是一个开源的嵌入式关系数据库,实现了自给自足的、无服务器的、配置无需的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库系统不同,…

安全生产知识竞赛活动方案

为进一步普及安全生产法律法规知识,增强安全意识,提高安全技能,经研究,决定举办以“加强安全法治、保障安全生产”为主题的新修订《安全生产法》知识竞赛活动,现将有关事项通知如下: 一、活动时间&#xf…

【教学类-43-03】20231229 N宫格数独3.0(n=1、2、3、4、6、8、9) (ChatGPT AI对话大师生成 回溯算法)

作品展示: 背景需求: 大4班20号说:我不会做这种(九宫格),我做的是小格子的, 他把手工纸翻过来,在反面自己画了矩阵格子。向我展示:“我会做这种!” 原来他会…

分类预测 | Matlab实现SCSO-SVM基于沙猫群优化算法优化支持向量机的多变量分类预测【23年新算法】

分类预测 | Matlab实现SCSO-SVM基于沙猫群优化算法优化支持向量机的多变量分类预测【23年新算法】 目录 分类预测 | Matlab实现SCSO-SVM基于沙猫群优化算法优化支持向量机的多变量分类预测【23年新算法】分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现SCSO-…

2023十大编程语言及未来展望

2023十大编程语言及未来展望 1. 2023年十大编程语言排行榜2. 十大编程语言未来展望PythonCCJavaC#JavaScriptPHPVisual BasicSQLAssembly language 1. 2023年十大编程语言排行榜 TIOBE排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎&a…

Peter算法小课堂—浮点数危机

大家先想想下面这个代码运行结果&#xff1a; #include <bits/stdc.h> using namespace std; int main(){double x5.2;double y4.11.1;cout<<(x<y)<<endl;cout<<x-y<<endl;return 0; } 最终发现&#xff0c; &#xff1f;&#xff1f;&…

css 用多个阴影做出光斑投影的效果 box-shadow

css 用多个阴影做出光斑投影的效果 box-shadow 你首先需要知道的一点是 box-shadow 可以接收多个值&#xff0c;也就是可以设置多个阴影&#xff0c;这样就可以做一个类似光斑投影的效果。 一、效果 二、代码 里面用到了我一些 scss 工具方法&#xff0c;不过不影响&#xf…

【音视频 ffmpeg 学习】 RTMP推流 mp4文件

1.RTMP(实时消息传输协议)是Adobe 公司开发的一个基于TCP的应用层协议。 2.RTMP协议中基本的数据单元称为消息&#xff08;Message&#xff09;。 3.当RTMP协议在互联网中传输数据的时候&#xff0c;消息会被拆分成更小的单元&#xff0c;称为消息块&#xff08;Chunk&#xff…

二叉树的中序遍历,力扣

目录 题目地址&#xff1a; 题目&#xff1a; 解题方法&#xff1a; 解题分析&#xff1a; 解题思路&#xff1a; 代码实现&#xff1a; 注&#xff1a; 代码实现&#xff08;递归&#xff09;&#xff1a; 代码实现&#xff08;迭代&#xff09;&#xff1a; 题目地址&#xf…

【目标检测】yolov8结构及代码分析

yolov8代码:https://github.com/ultralytics/ultralytics yolov8的整体结构如下图&#xff08;来自mmyolo&#xff09;&#xff1a; yolov8的配置文件&#xff1a; # Ultralytics YOLO &#x1f680;, AGPL-3.0 license # YOLOv8 object detection model with P3-P5 outputs.…

跨境电商迎来综合竞争力比拼时代 五大趋势解读跨境2024

过去几年&#xff0c;跨境电商成为外贸出口增长的一大亮点&#xff0c;随着年底国务院办公厅《关于加快内外贸一体化发展的若干措施》的发布&#xff0c;跨境电商在促进经济发展、助力内外贸一体化发展方面的价值更加凸显。 这是跨境电商变化最快的时代&#xff0c;也是跨境电…

GrayLog日志平台的基本使用-ssh之Email报警

1、首先编辑并添加邮件配置到server.conf&#xff08;注意&#xff1a;是添加&#xff09; vim /etc/graylog/server/server.conf # Email transport transport_email_enabled true transport_email_hostname smtp.qq.com transport_email_port 465 transport_email_use_a…

Net6 Core webApi发布到IIS

Net6 Core Api发布到IIS不同于webapi&#xff0c;依赖框架不同&#xff0c;配置也移至项目内Program.cs 一、发布到指定文件夹和IIS&#xff0c;不过注意IIS应用程序池选择的是 “无托管代码“ 在IIS管理器中点击浏览&#xff0c;访问接口路径报500.19&#xff0c;原因是所依赖…

杰发科技AC7840——EEPROM初探

0.序 7840和7801的模拟EEPROM使用不太一样 1.现象 按照官方Demo&#xff0c;在这样的配置下&#xff0c;我们看到存储是这样的&#xff08;连续三个数字1 2 3&#xff09;。 使用串口工具的多帧发送功能 看不出多少规律 修改代码后 发现如下规律&#xff1a; 前四个字节是…

GBASE南大通用携手宇信科技打造“一表通”全链路解决方案

什么是“一表通”&#xff1f; “一表通”是国家金融监督管理总局为发挥统计监督效能、完善银行保险监管统计制度、推进监管数据标准化建设、打破数据壁垒&#xff0c;而制定的新型监管数据统计规范。相较于以往的报送接口&#xff0c;“一表通”提高了对报送时效性、校验准确…

stm32学习笔记:TIM-定时中断和外部时钟

定时器四部分讲解内容&#xff0c;本文是第一部分 ​​​​​TIM简介 基本定时器 时基单元&#xff1a;预分频器、计数器、自动重装载寄存器 预分频器之前&#xff0c;连接的就是基准计数时钟的输入&#xff0c;由于基本定时器只能选择内部时钟&#xff0c;所以可以认为这根…