现代密码学2.2、2.3--由“一次一密”引出具有完美安全的密码方案共同缺点
现代密码学2.2、2.3--由“一次一密/One-Time Pad”引出具有完美安全的密码方案共同缺点
- One-Time Pad密码方案
- 定义
- 正确性/correctness
- 完美隐藏性/perfectly secret
- 具有完美隐藏性的密码方案的共同缺点
- 特例缺点
- 共同缺点
博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些笔记供自己回忆,如有错误请指正。整理成一个系列现代密码学,方便检索。
《现代密码学》第一章所介绍的古典密码,全都已经被破解了,而2.1节介绍了具有完美隐藏性的密码方案的定义。了解完美隐藏性后,《现代密码学》在2.2、2.3节向我们介绍了一种具有完美隐藏性的密码方案One-Time Pad,进而引出这样的密码方案不可避免的缺点,并严格证明这些缺点是所有具有完美隐藏性的密码方案不可避免的。
One-Time Pad密码方案
定义
给定一个正整数lll,明文空间、密钥空间、密文空间都是{0,1}l\{0,1\}^l{0,1}l,长度为lll的01串。
GenGenGen:从密钥空间K={0,1}l\mathcal{K}=\{0,1\}^lK={0,1}l中均匀随机取出一个字符串作为密钥kkk,每一个的概率都是2−l2^{-l}2−l
EncEncEnc:对于明文m∈{0,1}lm\in \{0,1\}^lm∈{0,1}l,用密钥k∈{0,1}lk\in \{0,1\}^lk∈{0,1}l加密,得到密文c:=k⨁mc:=k\bigoplus mc:=k⨁m
DecDecDec:对于密文c∈{0,1}lc\in \{0,1\}^lc∈{0,1}l,用密钥k∈{0,1}lk\in \{0,1\}^lk∈{0,1}l解密,得到明文m:=k⨁cm:=k\bigoplus cm:=k⨁c
正确性/correctness
易证:Dec(Enck(m))=Dec(k⨁m)=k⨁k⨁m=mDec(Enc_k(m))=Dec(k\bigoplus m)=k\bigoplus k\bigoplus m=mDec(Enck(m))=Dec(k⨁m)=k⨁k⨁m=m
(因为k⨁k=0lk\bigoplus k=0^lk⨁k=0l,0l⨁m=m0^l\bigoplus m=m0l⨁m=m,异或是相同为0,不同为1)
完美隐藏性/perfectly secret
要证Pr[M=m∣C=c]=Pr[M=m]Pr[M=m|C=c]=Pr[M=m]Pr[M=m∣C=c]=Pr[M=m]
- Pr[M=m∣C=c]=Pr[C=c∣M=m]⋅Pr[M=m]Pr[C=c]Pr[M=m|C=c]=\frac{Pr[C=c|M=m]\cdot Pr[M=m]}{Pr[C=c]}Pr[M=m∣C=c]=Pr[C=c]Pr[C=c∣M=m]⋅Pr[M=m]
- Pr[C=c∣M=m]=Pr[Enck(m)=c]=Pr[k⨁m=c]=Pr[k=m⨁c]=2−lPr[C=c|M=m]=Pr[Enc_k(m)=c]=Pr[k\bigoplus m=c]=Pr[k=m\bigoplus c]=2^{-l}Pr[C=c∣M=m]=Pr[Enck(m)=c]=Pr[k⨁m=c]=Pr[k=m⨁c]=2−l
→Pr[C=c]=∑m∈MPr[C=c∣M=m]⋅Pr[M=m]=∑m∈M2−l⋅Pr[M=m]=2−l\rightarrow Pr[C=c]=\sum_{m\in \mathcal{M}}Pr[C=c|M=m]\cdot Pr[M=m]=\sum_{m\in \mathcal{M}}2^{-l}\cdot Pr[M=m]=2^{-l}→Pr[C=c]=∑m∈MPr[C=c∣M=m]⋅Pr[M=m]=∑m∈M2−l⋅Pr[M=m]=2−l
→Pr[M=m∣C=c]=2−l⋅Pr[M=m]2−l=Pr[M=m]\rightarrow Pr[M=m|C=c]=\frac{2^{-l}\cdot Pr[M=m]}{2^{-l}}=Pr[M=m]→Pr[M=m∣C=c]=2−l2−l⋅Pr[M=m]=Pr[M=m]
具有完美隐藏性的密码方案的共同缺点
特例缺点
通过一个特例:One-Time Pad,可以看出它的缺点主要有两个:
- 密钥需要和明文一样长,很难保存这么长的密钥,且在知道明文前无法确定密钥长度。
- 一个密钥只能用一次,如果用两次,则有
c1=k⨁m1,c2=k⨁m2c_1=k\bigoplus m_1,c_2=k\bigoplus m_2c1=k⨁m1,c2=k⨁m2,
→c1⨁c2=m1⨁m2\rightarrow c_1\bigoplus c_2=m_1\bigoplus m_2→c1⨁c2=m1⨁m2,这样会泄露部分信息。
共同缺点
要有密钥空间∣K∣≥|\mathcal{K}|\ge∣K∣≥明文空间∣M∣|\mathcal{M}|∣M∣,才是具有完美隐藏性的密码方案。
证明:反证法,假设密钥空间K<\mathcal{K}<K<明文空间M\mathcal{M}M。
- 令M(c)\mathcal{M}(c)M(c)表示密文ccc解密后得到的明文,由于密钥kkk不确定,所以这是一个明文集合:M(c)={m∣m=Deck(c)\mathcal{M}(c)=\{m|m=Dec_k(c)M(c)={m∣m=Deck(c) for k∈K}k\in \mathcal{K}\}k∈K}
由于Deck()Dec_k()Deck()是确定性函数,即对于一个密钥kkk,解密的明文结果只可能是一个确定的明文mmm。那么∀c∈C,∣M(c)∣≤∣K∣\forall c\in \mathcal{C},| \mathcal{M}(c) |\le |\mathcal{K}|∀c∈C,∣M(c)∣≤∣K∣。 - 因为∣K∣<∣M∣|\mathcal{K}|<|\mathcal{M}|∣K∣<∣M∣,那么∃m′∈M,m′∉M(c)\exists m' \in \mathcal{M},m'\notin \mathcal{M}(c)∃m′∈M,m′∈/M(c)。
- 那么Pr[M=m′∣C=c]=0≠Pr[M=m′]Pr[M=m'|C=c]=0\neq Pr[M=m']Pr[M=m′∣C=c]=0=Pr[M=m′]。
现代密码学2.2、2.3--由“一次一密”引出具有完美安全的密码方案共同缺点相关推荐
- 现代密码学2.4--香农定理/Shannon Theorem:完美安全的充分必要条件
现代密码学2.4--香农定理/Shannon Theorem:完美安全的充分必要条件 香农定理/Shannon Theorem 博主正在学习INTRODUCTION TO MODERN CRYPTOG ...
- 现代密码学概论(3 Edition)第一章
现代密码学概论(3 Edition) by Jonathan Katz and Yehuda Lindell 文章目录 **现代密码学概论**(3 Edition) by Jonathan Katz ...
- 《数学之美》第17章 由电视剧《暗算》所想到的—谈谈密码学的数学原理
1 密码学的自发时代 对于一种好的编码方法,破译者应该无法从密码中统计出明码的规律. 好的密码必须做到根据已知的明文和密文的对应推断不出新的秘闻内容. 2 信息论时代的密码学 信息论实际上是情报学的直 ...
- 在量子计算机到来之前,请准备好抗量子破解的密码学
如果量子计算在未来取得突破性进展,一直守护着互联网的安全系统将变得岌岌可危.世界从此会变成怎样?第一个研发出实用量子计算机的政府或机构将会得到整个世界的秘密吗?事情并没有想象中那么糟糕.事实上,即便有 ...
- 现代密码学5.5--Random-Oracle模型
现代密码学5.5--Random-Oracle模型 博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz ...
- 现代密码学5.4--对哈希函数的攻击
现代密码学5.4--对哈希函数的攻击 生日攻击 生日问题 博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan K ...
- 现代密码学5.3--Hash and MAC
现代密码学5.3--Hash and MAC 构造 安全性证明 博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonatha ...
- 现代密码学4.2--消息验证码/MAC
现代密码学4.2--消息验证码/MAC 定义 安全性 博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Kat ...
- 现代密码学4.1--消息完整性
现代密码学4.1--消息完整性 消息完整性/message integrity 消息完整性与加密的不同 博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Secon ...
最新文章
- 关于一些运算((与运算)、|(或运算)、^(异或运算)........)的本质理解【转】...
- android 自定义viewgroup onmeasure,一篇文章搞懂Android 自定义Viewgroup的难点
- classpass 配置mysql_jmeter压测学习18-JDBC配置连接mysql数据库
- 主要编程教学语言的讨论
- 我的挨踢人物传之又是一年找工作时
- 遨博机器人展示_高交会:智能机器人走入大众生活
- HTTP的概念以及请求消息的数据格式
- 解决:fatal error: opencv2/xfeatures2d.hpp: No such file or directory
- MT2503芯片平台方案开发项目资料介绍
- ftp服务器的作用及意义,FTP服务器的作用
- 青年计算机技术专家,院士专家热议推动计算机技术自立自强
- banner代码分析
- 前端JS 实现将24位RGB颜色转换16位RGB颜色
- group by column中的column与前面条件发生的错误的解决方案
- 520被女朋友三番两次拉黑后,我用 Python 写了个“舔狗”必备神器
- bitset的使用方法
- 聚焦运营商信创运维,美信时代监控易四大亮点值得一试!
- Uva1218 Perfect Services
- Pyramid Mask Text Detector阅读笔记
- 关于计算机优点缺点的英语作文,关于网络优缺点的英语作文(精选3篇)
热门文章
- JPA_‘Basic‘ attribute type should not be a container怎么解决
- php重置指针,PHP数组指针函数 current,end,next,prev,reset,each
- html制作花样链接卡页面_使用HTML5实现刮刮卡效果
- IT 系统巡检时,需要关注哪些指标?
- 数据中心空调系统中的冷却塔应用手册
- Python之pandas:pandas中常见的数据类型转换四大方法以及遇到的一些坑之详细攻略
- 成功解决AttributeError: module tensorflow.image has no attribute resize
- DL之InceptionV4/ResNet:InceptionV4/Inception-ResNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- DL之CNN:利用CNN(keras, CTC loss, {image_ocr})算法实现OCR光学字符识别
- ML与math:机器学习与高等数学基础概念、代码实现、案例应用之详细攻略——基础篇