密码学01-基本概念
密码学基本概念
1.信息安全与安全威胁
威胁信息安全的主要方式 :
(1)信息泄露 (2)破坏信息的完整性 (3)拒绝服务 (4)非法使用 (5)窃听
(7)假冒 (8)旁路控制 (6)业务流分析 (9)授权侵犯 (10)特洛伊木马
(11)陷阱门 (12)抵赖 (13)重放 (14)计算机病毒 (15)人员不慎
(16)媒体废弃 (17)物理侵入 (18)窃取 (19)业务欺骗
攻击手段分类
-
被动攻击
- 被动攻击
- 监听(机密性)
- 消息内容获取
- 业务流分析
- 监听(机密性)
在被动攻击中,通过监听可以获取消息内容和进行业务流分析,威胁到信息的机密性。
- 被动攻击
-
主动攻击

- 主动攻击
- 中断(可用性)
- 篡改(完整性)
- 伪造(真实性)
在主动攻击中,攻击者可能通过中断来影响系统的可用性,通过篡改来破坏信息的完整性,以及通过伪造来破坏信息的真实性。
信息为什么不安全

在互联网通信中,Alice和Bob之间可能遇到的各种安全威胁,涉及机密性、完整性、身份认证和不可否认性。
- 机密性:
- 窃听:攻击者监听Alice和Bob之间的通信,获取敏感信息。
- 完整性:
- 篡改:攻击者修改Alice和Bob之间传递的信息,破坏信息的完整性。
- 身份认证:
- 冒名传送:攻击者冒充Alice或Bob发送信息,伪造身份。
- 不可否认性:
- 否认传送:Alice或Bob否认曾发送或接收某条信息。
- 可用性:
- 中断:攻击者通过中断通信来破坏系统的可用性。
这些威胁展示了在互联网通信中需要保护的信息安全属性,以确保数据在传输过程中的安全性。
什么是密码学
-
什么是密码?
- 密码是指采用特定变换的方法对信息等进行加密保护、安全认证的技术、产品和服务。 ——《中华人民共和国密码法》
-
什么是密码学?
-
密码学是研究编制密码和破译密码的技术科学。
-
研究密码变化的客观规律,应用于编制密码以保护通信秘密的,称为密码编码学。
-
应用于破译密码以获取通信情报的,称为密码分析学或破译学。
-
密码学就是来解决这些问题的关键技术
----有没有其他人看到这封信的内容?(机密性)
----信的内容是否被改动?(完整性)
----是否真是你写的信?(消息源认证)
----是否真是写给我的信?(通信实体认证)
----是否你真的给我写过信?(不可否认性)
密码算法的基本模型

加密: c=E(k1, m)
解密: m=D(k2, c)
密码算法
基本概念
- 明文
——要处理的数据——Message (Plaintext) - 密文
——处理后的数据——Ciphertext - 密钥
——秘密参数——Key - 加密函数
或 ——Encryption - 解密函数:
或 ——Decryption
密码算法需求:
- 需求1:可逆——算法的使用者可以将密文恢复成明文
- 需求2:不可逆——敌手无法将密文恢复成明文
- 秘密参数——密钥
密码算法实际上是一个带有秘密参数的函数。
- 知道秘密参数,求逆非常容易
- 不知道秘密参数,求逆是不可行的
一个好的密码体制至少应满足的两个条件:
(1)在已知明文m
和加密密钥k1
时,计算
在已知密文c
和解密密钥k2
时,计算
(2)在不知解密密钥k2
时,不可能由密文c
恢复出明文m
。
密码算法的分类
机密性:对称密钥加密(流密码、分组密码)、公钥加密
完整性:杂凑函数、消息摘要函数
认 证:数字签名、身份认证协议
不可否认性:数字签名
对称密钥加密算法

对称加密算法是一类加密方法,其中加密和解密使用相同的密钥。以下是对称加密算法的特点、应用和常见算法的简要描述:
特点
- 加解密密钥相同:
- 在对称加密中,加密和解密使用相同的密钥。这意味着发送方和接收方必须共享同一个密钥并保持其秘密。
- 加解密速度快:
- 对称加密算法通常比非对称加密算法快很多,因为它们使用更简单的数学运算。这使得对称加密非常适合处理大量数据。
应用
- 大量数据加密:
- 对称加密常用于加密大量数据,因为其高效的加密和解密速度。它适用于数据存储和数据传输中的加密,例如加密文件系统和VPN流量。
- 消息认证码(MAC):
- 对称加密还可以用于生成消息认证码,以确保数据在传输过程中未被篡改。这提供了数据完整性验证的手段。
常见算法
- ZUC:
- ZUC是一种流密码算法,广泛应用于我国的移动通信系统。
- DES(Data Encryption Standard):
- DES是一种较旧的对称加密算法,使用56位密钥。虽然已被认为不再安全,但它在加密技术的发展史上具有重要地位。
- AES(Advanced Encryption Standard):
- AES是一种非常流行的对称加密算法,使用128、192或256位密钥。它被广泛应用于各种安全协议和应用程序中,是目前最为推荐的对称加密算法之一。
- SM4:
- SM4是一种中国国家密码标准,主要用于无线局域网产品的安全保护。它也采用128位密钥。
公开密钥密码体制(非对称密码)

特点
- 密钥对:
- 公钥(Public Key):公开的,可以由任何人获取,用于加密数据或验证数字签名。
- 私钥(Private Key):保密的,仅由密钥拥有者持有,用于解密数据或生成数字签名。
- 非对称性:
- 加密和解密使用不同的密钥。用公钥加密的数据只能用对应的私钥解密,反之亦然。
- 安全性:
- 非对称密码体制依赖于数学难题(如大整数分解或椭圆曲线离散对数问题)的复杂性,保证了其安全性。即使知道公钥,也无法在合理时间内计算出私钥。
应用
- 数据加密:
- 非对称加密可以用于在不安全的网络环境中安全地传输加密数据。发送方使用接收方的公钥加密数据,接收方使用自己的私钥解密。
- 数字签名:
- 数字签名用于验证数据的来源和完整性。签名者使用自己的私钥生成签名,接收方使用签名者的公钥验证签名。
- 密钥交换:
- 非对称加密用于安全地交换对称加密的密钥。例如,TLS协议使用非对称加密来安全地协商对称密钥,从而加密后续的数据传输。
常见算法
- RSA(Rivest-Shamir-Adleman):
- 一种广泛使用的非对称加密算法,基于大整数分解问题。RSA可以用于加密和数字签名,密钥长度通常为1024位、2048位或更长。
- ECC(Elliptic Curve Cryptography):
- 基于椭圆曲线离散对数问题的非对称加密算法。ECC相对于RSA提供了更高的安全性和更短的密钥长度(例如,256位的ECC密钥安全性相当于3072位的RSA密钥)。
- DSA(Digital Signature Algorithm):
- 一种用于数字签名的标准算法,基于离散对数问题。DSA主要用于签名而不是加密。
- ElGamal:
- 一种基于离散对数问题的加密算法和数字签名算法。ElGamal加密和签名都提供了较高的安全性。
优缺点
优点:
- 密钥管理更方便:不需要安全地分发密钥,只需保护私钥。
- 提供数字签名功能:可以验证信息的来源和完整性。
缺点:
- 速度较慢:非对称加密算法比对称加密算法慢得多,不适合加密大量数据。
- 密钥长度较长:为了达到同样的安全性,非对称加密需要更长的密钥。
非对称密码体制在现代信息安全中扮演着重要角色,尤其在确保数据传输安全和验证数据真实性方面。
保密通信系统存在哪些安全威胁?
通信监听、数据篡改、拒绝访问、假冒通信、否认通信
1.2 密码分析学的前提
密码学学科分支
- 密码分析学
- 密码编码学
两者对立统一
密码分析学为编码学提供新方法、新手段;
密码编码学为分析学提供新思想、新结构。
安全的概念
Kerckhoffs假设:假定密码分析者和敌手知道所使用的密码系统。即密码体制的安全性仅依赖于对密钥的保密,而不应依赖于算法的保密。
一切秘密皆蕴含在密钥中!
假设敌手知道:
- 用的加密算法;
- 知道明文的概率分布规律;
- 知道密钥的概率分布规律;
- 知道所有可能的破译方法;
- 敌手能够拿到加密装置,可以对其进行能量消耗分析等等。
密码分析学的目标:
-
恢复合法密文相应的明文
-
恢复密钥
密码体制的攻击方式
密码分析者攻击密码体制的方法:
- 穷举攻击: 通过试遍所有的密钥来进行破译。
- 对抗: 可增大密钥的数量。
- 统计分析攻击: 通过分析密文和明文的统计规律来破译。
- 对抗: 设法使明文和密文的统计规律不一样。
- 解密变换攻击: 针对加密变换的数学基础,通过数学求解设法找到解密变换。
- 对抗: 选用具有坚实的数学基础和足够复杂的加密算法。
密码破译
- 唯密文攻击(Ciphertext Olny Attack)
- 已知明文攻击(Known Plaintext Attack)
- 选择明文攻击(Chosen Plaintext Attack)
- 选择密文攻击(Chosen Ciphertext Attack)
攻击强度由小到大
惟密文攻击
密码分析者仅知道一些密文。
最困难, 一般是穷搜索,对截获密文用所有可能密钥去试• 惟密文攻击敌手知道的信息量最少, 最易抵抗。
只要有足够的计算时间和存储容量,原则上可成功,但在实际上一种能保证安全要求的实用密码算法,都会设计得这一方法在实际上不可行。
一般的敌手需要对密文进行统计测试分析,为此需要知道被加密的明文类型,英文文本,图象等。
已知明文攻击
密码分析者知道一些明文和相应的密文。
在很多情况下,敌手可能有更多的信息,也许能够截获一个或多个明文及其对应的密文,或消息中将出现某种明文格式,这时的攻击称为已知明文攻击,敌手也许能从已知的明文被变换成密文的方式得到密钥
选择明文攻击
密码分析者可以选择一些明文,并得到相应的密文。
如果攻击者能在加密系统中插入自己选择的明文消息,则通过该明文消息对应的密文有可能确定出密钥的结构。
明文可以是精心选择的
选择密文攻击
密码分析者可以选择一些密文,并得到相应的明文。
攻击者利用解密算法,对自己所选的密文解密出相应的明文,有可能确定出密钥信息。
选择的密文可以与要破解的密文相关。
无条件安全与计算上安全
- 无条件安全的(不可破译的):
无论截获多少密文,都没有足够信息来唯一确定明文,则该密码是无条件安全的, 即对算法的破译不比猜测有优势。
- 计算上安全的:
使用有效资源对一个密码系统进行分析而未能破译,则该密码是强的或计算上安全的。
密码算法要满足的准则
密码算法只要满足以下两条准则之一就行:
- 破译密文的代价超过被加密信息的价值。
- 破译密文所花的时间超过信息的有用期。
1.3 古典密码算法
置换(Permutation) 密码
对明文字符或字符组进行位置移动的密码
明文的字母保持相同, 但顺序被打乱了。
天书( Scytale )
500 B.C.,斯巴达人在军事上用于加解密
发送者把一条羊皮纸螺旋形地缠在一个圆柱形木棒上,核心思想是置换。
字符映射: 天书置换密码通过一个字符映射表将明文字符替换成密文字符。这个映射表可以是随机生成的,也可以是预先设定好的。
加密过程:
- 明文:原始的、未加密的文本。
- 密文:通过字符映射表对明文字符进行替换得到的文本。
- 加密时,明文中的每个字符都被替换成映射表中指定的字符,从而生成密文。
解密过程: 解密过程是加密过程的逆过程。通过使用相同的字符映射表,将密文中的每个字符替换回原来的明文字符,从而恢复原始文本。
代替密码
代替(Substitution)密码构造一个或多个密文字母表, 然后用密文字母表中的字母或者字母组来代替明文字母或字母组,各字母或字母组的相对位置不变,但其本身的值改变了。
代替密码分为单表代替密码和多表代替密码
字母与数字的转换
代替密码算法针对英文字母进行处理。 首先将26个字母与十进制数字中的0~25一一对应, 如下表所示。 而这里的数的加法和乘法都定义为模26的加法和乘法。
字母 | a | b | c | d | e | f | g | h | i | j | k | l | m |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
数字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
字母 | n | o | p | q | r | s | t | u | v | w | x | y | z |
数字 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
单表代替密码可分为 :加法密码、乘法密码、仿射密码
加法密码
明文:
密文:
密钥:
解密:
凯撒(Caesar)密码就是一种加法密码(k=3)
乘法密码
明文:
密文:
密钥:
解密:
条件:
关键在于计算
方法:扩展的欧几里得算法
若
这里
仿射密码
加密函数:
密钥:
解密函数:
条件:
仿射密码是乘法密码和加法密码的结合。
单表替代的统计分析
单表替代的特点是相同的明文被加密成相同的密文, 这使得统计分析成为可能。
英文中字母出现频率是有规律的,只要能够收集到足够多的密文, 通过统计就能够很容易地进行密码的破译:
e
: 出现频率约为0.127;t, a, o, i, n, s, h, r
: 出现频率约在0.06到0.09之间d, l
: 的出现频率约为0.04c, u, m, w, f, g, y, p, b
:出现频率约在0.015到0.028之间
多表代替密码算法
Vigenere(维吉尼亚) 密码
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G |
B | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H |
C | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I |
D | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J |
E | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K |
F | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L |
G | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M |
H | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N |
I | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
J | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P |
K | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q |
L | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R |
M | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S |
N | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T |
O | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U |
P | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V |
Q | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W |
R | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X |
S | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y |
T | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
U | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A |
V | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B |
W | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C |
X | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D |
Y | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E |
每个字母往后移动3位, 相当于只有一种替换方式, 而维吉尼亚怎么做的呢? 也需要先选择一个词组或单词比如: hold。 可以得到:
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
H | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G |
O | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N |
L | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K |
D | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C |
多表代换密码
多表代换密码首先将明文 分为由 个字母构成的分组 ,对每个分组的加密为:
其中
对密文分组 的解密为:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!