更多操作
创建页面,内容为“{{首页}} = 一次一密 = == 基本介绍 == 1917年,Vernam提出了一种完善保密加密方案,现在被叫做一次一密(one-time pad)。在Vernam提出这个方案的时代,并没有证实其是完善保密加密(perfectly secret);事实上,当时还没有完善保密加密的概念。大约25年以后,香农(Shannon)引入了完善保密加密的概念,并且证实了一次一密能够达到完善保密加密的安全等级…” |
无编辑摘要 |
||
第71行: | 第71行: | ||
香农给“安全性”下的定义称作完善保密性(perfect secrecy),这是历史上关于密码安全性的第一个定义。 | 香农给“安全性”下的定义称作完善保密性(perfect secrecy),这是历史上关于密码安全性的第一个定义。 | ||
这个定义告诉我们,如果一个对称加密方案满足完善保密性,那么密文不会泄露明文的“任何信息”。 | 这个定义告诉我们,如果一个对称加密方案满足完善保密性,那么密文不会泄露明文的“任何信息”。 | ||
2025年3月4日 (二) 13:21的版本
一次一密
基本介绍
1917年,Vernam提出了一种完善保密加密方案,现在被叫做一次一密(one-time pad)。在Vernam提出这个方案的时代,并没有证实其是完善保密加密(perfectly secret);事实上,当时还没有完善保密加密的概念。大约25年以后,香农(Shannon)引入了完善保密加密的概念,并且证实了一次一密能够达到完善保密加密的安全等级。
基本规则
(此处多为口语化表述,想看更为专业的讲述可以自行搜索)
加密算法
加密算法有两个输入,分别是明文和密钥
加密就是明文和密钥进行按位异或运算
a | b | c |
---|---|---|
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
0 | 0 | 0 |
异或逻辑运算真值表(a、b输入c输出,相同输出0不同输出1)
解密算法
由于异或运算可逆(a异或b=c,c异或b=a,c异或a=b)
所以解密算法和加密算法一样都有两个输入,不过是密文和密钥
解密就是密文和密钥进行按位异或运算
a | b | c |
---|---|---|
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
0 | 0 | 0 |
异或逻辑运算真值表(a、b输入c输出,相同输出0不同输出1)
相关数学证明
前面讲了一次一密具有完善保密性,那么这一章将证明一次一密具有完善保密性
我们先复习一下完善保密性的概念
香农给“安全性”下的定义称作完善保密性(perfect secrecy),这是历史上关于密码安全性的第一个定义。 这个定义告诉我们,如果一个对称加密方案满足完善保密性,那么密文不会泄露明文的“任何信息”。
简单"翻译"一下上边的图:无论明文是什么,如果都能证明密文是均匀分布的,则可以说明一次一密方案是完美安全的。
攻击者窃听到任意一个密文后,该密文到底对应明文空间中的哪个明文?既然明文空间中任意两个明文加密后得到该密文的概率都是一样的,也即一丁点儿信息都没有从密文中泄露出来,那么攻击者自然不可能知道密文对应哪个明文。
所以,一个对称加密方案是完善保密的,它自然就是“安全”的。
完善保密性考虑的是唯密文攻击,也即攻击者手里只有窃听到的密文
好的,现在让我们证明一下
(完善保密性的等价定义)对于任意给定的密文c∈C,都存在一个常数N,使得对于∀m∈M,都有 |{k ∈ K : E(k, m) = c}| = N。(注意这里类似绝对值的符号表示集合的大小,也即集合元素数量)
通俗地讲,给定任意密文c,对于明文空间中的所有明文,如果把每个明文加密成c的密钥数量都是相等的(即都是N),那么加密方案就是完善保密的。(因为密钥数量都相等,所以每个明文加密成该密文的概率是一样的,即p=N/|K|,其中|K|表示密钥空间中的密钥数量。)
剩下的证明就当作作业补上来吧(作者懒癌犯了)
简单示例
明文m: 000111000
密钥k: 101101101
按位异或运算,m第一位为0,k第一位为1,异或运算后得到密文c的第一位1,依次操作得到密文
密文c: 101010101
c = m ⊕ k
m = c ⊕ k
常用工具
异或计算器