【密码学】北航公开课《密码的奥秘》笔记

课程链接:

【公开课】北京航空航天大学:密码的奥秘

注1:本章内容仅用于记录个人收获,如有误,为个人理解出现偏误,望指正。
注2:本章内容更像是一个密码学导论,仅作 Introduction 的 作用。

第一讲 密码的起源

(该部分内容均为纯个人见解,正误性有待商榷,请慎重读取。)

  1. 一切信息内容的传递形式都可以从某种程度上视为“密码“
  2. 密码 的形式:即映射、hash。 将 抽象、非抽象的信息,映射为文字、图画等。
  3. 密码 的本质:使用信息发送方和信息接收方可以理解,而其他任意第三方无法理解或难以理解的语言形式,传递信息。
  4. 密码 的目的:秘密传递信息。控制信息可知范围。

注:第1点的补充例子
三个人在一起,两个人会说方言,另一个听不懂方言,那么这两个人如果有悄悄话要说,那么方言便成为了这个场合中的一种密码。

第二讲 古典密码(※)

一、 前置定义:

明文 :加密之前的、人可以直接阅读理解的文字
密文:加密之后的,人难以直接理解的文字
密钥:可以将密文和明文进行相互转化的 关键钥匙。

二、 古典密码的两大基本方法:

  1. 置换密码 :不更改字母(不更改语言)只更改文字顺序。
  2. 代换密码 :将明文字母,单表代换、多表代换、多字母代换。

三、凯撒密码(单表代换密码)

加密方式:
将每个字母按字母表顺序后推(前移)k位

例:
明文: students
密钥:后移3位
密文:vwxghqwv

优点: 加密方式简单
缺点: 容易被穷举法破译;且语言已知,容易识别

四、维吉尼亚密码(多表代换密码)

加密方式
(查表法,或 加和取模法
给定密钥串 key,明文串str,将key重复写若干次,使key串与str串等长。得下列形式。将对应位加和并取模得密文。

例:
明文: 0 1 2 3 4 5
密钥: 0 1 2, 模 5
key: 0 1 2 0 1 2
密文: 0 1 4 3 0 2

注: 字母串同理。
优点: 相对复杂,相同的明文字母可能对应多个密文字母。
缺点: 如果密钥足够长,期间就会出现大量重复密文序列,通过计算重复密文序列间的公因子,分析者可精确计算密钥长度。

五、普莱费尔密码(多字母代换)

加密方式:

part1. 密钥表 制作规则
绘制 5*5 的方格表,后续将所有的 i 和 j 视为同一个字母。(26个字母,正好25个格子)
给定密钥单词,将密钥单词中的字母按单词中出现的顺序(重复字母只填入一次)依次填入表格;
表格中剩余位置,按字典序将其余字母依次填入。

part2. 密钥表 使用规则
step1. 明文串 分组
先将明文中所有的 J 和 I 都用 I表示
(两两分组)然后将明文串中的相邻字符进行两两分组。
(组内字母不同)如果某一组中的两个字母为同一字母,则在其中插入随机无效字母,然后重新分组。
(组内字母都为两个)如果串长为奇数,则补无效字母到最后一组。

step 2. 明文串翻译:
对于每组字母对有三种情况
1: 两个字母在密钥表中位于同一行:”同行代换“,每个字母用其同行的下一位(如果没有下一位则用首位)代替。
2:两个字母在密钥表中位于同一列:”同列代换“,每个字母用其同列的下一位(如果没有下一位则用首位)代替。
3:不同行且不同列: 第一字母定行,第二字母定列,对应位置字母为密文的第一字母;第二字母定行,第一字母定列,对应位置字母为密文的第二字母。
即 明文= (key [a][b],key[c][d]),
则 密文= (key [a][d],key[c][b])。

按上述规则,将每组字母代换后,得到密文。

解密: 如果得到密钥单词,即可绘制密钥表,从而对应解密。

优点:单频次方法攻击无效
缺点:双频率法可攻破。
(虽然我也不知道这俩啥意思)
(后注:大概是说,在大样本前提下,依据概率论与数理统计知识,单个字母在英文中的使用频率基本固定,因此可以根据单个字母的出现频率依次对照,实现密码破译。双频率,即不看单个字母的频率,而看 “字母对“ 出现的频率。)

六、 置换密码:

通过置换矩阵加密信息。
加密方式:

part 1 绘制 置换矩阵
给定密钥单词,将密钥单词作为矩阵的第一行,
将明文串 从矩阵的第二行开始按序抄写,自动换行。
以此法得到置换矩阵

part 2 使用 置换矩阵
将 密钥单词更改顺序,对应列顺序一同更改(换列),从而得到密文

例:
密钥单词: hand
明文: meet at school
密钥表:
h a n d
m e e t
a t s c
h o o l
置换矩阵:
a d h n
e t m e
t c a s
o l h o
得密文: etmetcasolho

七、 一次一密 密码体制

即 基于以上各类古典密码,采取每次使用一个密钥,使用后即销毁密钥并更改密钥的方式。
优点: 随机性强、难以破解。
缺点: 制作密钥表工作量大;每次都需要进行密钥表的物理传递过程,中途可能被截获的概率极高。

八、 古典密码学展现的密码学思想

注:古典密码学中体现了现代密码学的核心思想——“扩散” 和 “混淆”
扩散: 即 将各个字母分布位置 在文章中打散,变得更加均匀。 一般依靠 “置换” 实现。
混淆: 即 调整各个字母在文章中出现的 频次,以打破相应统计学规律(防止频次攻击)。一般依靠 “代换” 实现。

第三讲 机械密码

  1. 两次世界大战中密码谍报对于战局的影响至关重要。 欧洲战局Enigma密码机、sigaba密码机,日本二战的 “紫色密码机”
  2. 所谓机械密码,即:基于古典密码理论,战争时期中 物理密码锁的实现

第四讲 现代密码学(※)

一、 现代密码学——知识大纲

密码学分为两大部分:密码编码学(即加密)密码分析学(即破译)
基础知识 :数论、物理学。(单向函数、陷门单向函数、杂凑函数等)
单钥密码 :DES、AES。 分组密码、流密码、消息认证码
双钥密码 :RSA、ECC。 公钥加密、数字签名

二、 对称密码体制(单钥密码)(传统密码)

1. 定义:

信息收发双方拥有相同的密钥

2. 单钥密码种类:

流密码: 将明文以 bit 或 字符 为单位, 分别与 密钥流 进行 加和取模运算, 得到密文。在二进制的情况下,则 %2,即异或运算。
分组密码: 先将明文划分为若干组,一般分组长度是 64bit 的倍数, 然后分组加密。 (因为计算机 2^64 位,计算得快)

3. DES单钥加密算法:Data Encryption Standard

分组与密钥长度: 将明文 以 64 bit / 组 进行分组; 密钥固定为 64 bit
算法流程:
在这里插入图片描述
意义解析: 置换操作 以实现 扩散的目的; 迭代变换以 实现 混淆的目的; 多轮迭代变换 以增加数学组合,增加密码强度。

4. AES单钥加密算法: Advanced Encryption Standard

分组与密钥长度: 将明文 以 128 bit / 组 进行分组; 密钥长度根据安全性需求进行选择,一般为 128bit 192bit 256bit
算法流程:
在这里插入图片描述
意义解析:
从密码强度上来看,将 加和取模、代换、置换 三种古典密码方法综合使用,外加多轮迭代,加密性更强。
从使用实际上来看,根据安全性需求进行密钥长度的选择,提高了加密效率。

5. 详解链接: 单钥密码体制

三、非对称密码体制(双钥密码)(公钥密码)

1. 定义:

发送方和接收方使用不同的密钥,但这两个密钥都为一方拥有。
如果 A 要传送密文给 B,则使用B的公钥进行加密,B接收后用自己的私钥进行解密。

2. 密钥构造原理

用于构造公钥密码体制的函数依赖于各类数学难题。
其本质原理在于 用于加密的函数 为 单向函数 (难以逆解) 陷门单向函数 (知道陷门后则容易求逆,否则难以求逆)

3. Diffie 和 Hellman 提出公钥算法

数学基础:有限域上求离散对数。

4. RSA 算法

数学基础: 基于 大整数分解 为质因数的复杂性
优点: 极难破译
缺点: 加密也很慢

5. ECC 椭圆曲线 密码体制

数学基础: 基于 有限域上的 椭圆曲线点集 所构成的群上定义的离散对数
优点: 在相同安全性前提下,ECC的密钥更短

6. 详解链接: 双钥密码体制

四、小结:

1. 单钥 与 双钥 对比

在这里插入图片描述

2. 三种算法的比较(DES与AES,RSA,ECC)

DES 密钥长度 固定为56位,当前已经可以被暴力打破
AES 密钥长度 可根据需求增长
RSA与ECC密钥长度即对应安全性如图:
在这里插入图片描述

第五讲 密码破译

一、密钥破译方法

1. 直接窃取

就是直接偷,或者偷听

2. 密钥穷搜索

通过暴力搜索、字典攻击两种搜索方式,暴力搜索密钥

3. 密码分析攻击

根据数学理论进行密钥的分析。
四种分析方法:唯密文攻击、已知明文攻击、选择明文攻击、选择密文攻击。

4. 现代密码分析

  1. 确定性分析:通过已知量与已知的数学关系,进行密钥破译
  2. 统计性分析:利用明文的已知规律进行 破译
  3. 差分密码分析:通过明文的差值对于密文的影响,从而分析密钥
  4. 线性分析:对于单向函数求 线性近似表达式,从而分析
  5. 插值分析:根据拉格朗日差值法的思想,对加密算法(函数)进行等价变换。
  6. 密钥相关攻击:通过分析两个密钥之间的关系。

第六讲 密码的未来

  1. 量子计算机对密码的破译:量子计算机计算速度巨快,对于RSA公钥算法,因为其所应用的大整数分解数学理论在普通计算机中难以解决,但量子计算机可在分钟内解决。
  2. 量子密码: 通过量子形式作密码加密,具有不可窃听性。 量子性质:观测者的改变会改变信息的内容,因此当有人窃听密文时,窃听者和接收者所接受的量子信息也会发生改变,从而失去正确信息。
课程简介    随着”新基建“的推行,其中涉及到的工业互联网、物联网、人工智能、云计算、区块链,无一不是与安全相关,所有数据的存储、传输、签名认证都涉及到密码学技术,所以在这样的大环境下再结合我多年安全开发经验,设计出这门课程。    因为密码学技术在新基建中的重要性,所以使其成为底层开发人员所必备的技能。特别是现在的区块链技术是全面应用密码学,大数据技术和人工智能技术也要解决隐私安全问题。所以现在学习相关技术是非常必要的技术储备,并且可以改造现有的系统,提升其安全性。课程学习目标了解DES算法原理VS2019创建C++项目,并导入openssl库学会OpenSSL DES算法加解密接口加密文件并做PKCS7 Padding 数据填充解密数据并做数据填充解析课程特点    面向工程应用    市面上的一些密码学课程和密码学的书籍,很多都是从考证出发,讲解算法原理并不面向工程应用,而我们现在缺少的是工程应用相关的知识,本课程从工程应用出发,每种技术都主要讲解其在工程中的使用,并演示工程应用的代码。    从零实现部分算法    课程中实现了base16编解码 ,XOR对称加解密算法,PKCS7 pading数据填充算法,通过对一些简单算法的实现,从而加深对密码学的理解。    理论与实践结合    课程如果只是讲代码,同学并不能理解接口背后的原理,在项目设计中就会留下隐患,出现错误也不容易排查出问题。    如果只讲理论,比如对密码学的一些研究,对于大部分从事工程应用的同学并没有必要,而是理论与实践结合,一切为了工程实践。    代码现场打出    代码不放在ppt而是现场打出,更好的让学员理解代码编写的逻辑,老师现场敲出代码正是展示出了工程项目的思考,每个步骤为什么要这么做,考虑了哪些异常,    易学不枯燥    课程为了确保大部分人开发者都学得会,理解算法原理(才能真正理解算法特性),学会工程应用(接口调用,但不局限接口调用,理解接口背后的机制,并能解决工程中会出现的问题),阅读算法源码但不实现密码算法,,并能将密码学投入到实际工程中,如果是想学习具体的加密算法实现,请关注我后面的课程。课程用到的技术    课程主要演示基于 VS2019 C++,部分演示基于ubuntu 18.04 GCC makefile    如果没有装linux系统,对本课程的学习也没有影响    课程中的OpenSSL基于最新的3.0版本,如果是openss 1.1.1版本也支持,再低的版本不支持国密算法。 课程常见问题课程讲解用的什么平台和工具?    课程演示主要在windows,基于VS2019 ,一些项目会移植到Linux在ubuntu18.04上我不会Linux能否学习本门课程?    可以的,课程主要在Windows上,Linux部分只是移植,可以暂时跳过,熟悉了Linux再过来看我不会C/C++ 语言是否能学习本门课程?    至少要会C语言,C++特性用得不多,但做了一个封装,可以预习一些C++基础。会不会讲算法实现,会不会太难学不会?    课程偏工程应用,具体的AES,椭圆曲线、RSA等算法只通过图示讲原理,一些简单hash算法会读一些源码,并不去实现,课程中会单独实现简洁的XOR对称加密和base16算法(代码量不大易懂)。其他的应用我们都基于OpenSSL3.0的SDK调用算法。课程提供源码和PPT吗?    课程中所有讲解的源码都提供,课程的上课的ppt也提供,PPT提供pdf版,只可以用于学习,不得商用,代码可以用于商用软件项目,涉及到开源系统部分,需要遵守开源的协议,但不得用于网络教学。要观看全部内容请点击c++实战区块链核心密码学-基于opensslhttps://edu.csdn.net/course/play/29593
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GoesM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值