打开/关闭搜索
搜索
打开/关闭菜单
12
174
16
438
迷雾wiki
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
上传文件
切换首选项菜单
通知
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
创建账号
登录
查看“一次一密”的源代码
来自迷雾wiki
分享此页面
查看
阅读
查看源代码
查看历史
associated-pages
页面
讨论
更多操作
←
一次一密
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{首页}} = 一次一密 = == 基本介绍 == 1917年,Vernam提出了一种完善保密加密方案,现在被叫做一次一密(one-time pad)。在Vernam提出这个方案的时代,并没有证实其是完善保密加密(perfectly secret);事实上,当时还没有完善保密加密的概念。大约25年以后,香农(Shannon)引入了完善保密加密的概念,并且证实了一次一密能够达到完善保密加密的安全等级。 == 基本规则 == (此处多为口语化表述,想看更为专业的讲述可以自行搜索) === 加密算法 === 加密算法有两个输入,分别是明文和密钥 加密就是明文和密钥进行按位异或运算 {| class="wikitable" !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) 所以解密算法和加密算法一样都有两个输入,不过是密文和密钥 解密就是密文和密钥进行按位异或运算 {| class="wikitable" !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 == 常用工具 == 异或计算器
该页面使用的模板:
模板:首页
(
查看源代码
)
返回
一次一密
。