打开/关闭菜单
切换首选项菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

一次一密

来自迷雾wiki
Musicraft留言 | 贡献2025年3月4日 (二) 13:35的版本

探索隐藏在现实边缘的真相


一次一密

基本介绍

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),这是历史上关于密码安全性的第一个定义。

<math>\forall</math>


这个定义告诉我们,如果一个对称加密方案满足完善保密性,那么密文不会泄露明文的“任何信息”。

简单"翻译"一下上边的图:无论明文是什么,如果都能证明密文是均匀分布的,则可以说明一次一密方案是完美安全的。

攻击者窃听到任意一个密文后,该密文到底对应明文空间中的哪个明文?既然明文空间中任意两个明文加密后得到该密文的概率都是一样的,也即一丁点儿信息都没有从密文中泄露出来,那么攻击者自然不可能知道密文对应哪个明文。

      所以,一个对称加密方案是完善保密的,它自然就是“安全”的。

完善保密性考虑的是唯密文攻击,也即攻击者手里只有窃听到的密文

好的,现在让我们证明一下

(完善保密性的等价定义)对于任意给定的密文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

常用工具

异或计算器