目录
1 什么是密码学(密码学基础概念)
1.1 基础概念
考虑这样一个场景,Alice希望将消息m秘密地发送给Bob,并且不希望窃听者Eve获得消息的具体内容。
- 明文(plaintext):Alice希望发送的信息m
- 密文(ciphertext):Alice将明文m转换为密文c发送给Bob
- 加密算法(encryption algorithm):Alice使用加密算法将明文m转换为密文c,可以表示为Enc
- 解密算法(decryption algorithm):Bob使用解密算法将密文c转换为明文m,可以表示为Dec
- 密钥生成算法(key generation algorithm):用于生成随机密钥k,可以表示为KeyGen
- 加密方案(encryption scheme):三种算法的集合(Enc,Dec,KeyGen)
1.2 柯克霍夫原则
密码系统应该就算被所有人知道系统的运作步骤,仍然是安全的。
对应1.1中描述的场景,柯克霍夫原则指出,加密方案本身应当是可以公开的。如果系统的安全性依赖于加密方案的保密,那么一旦方案被泄露则需要发明新的算法,其难度可见一斑。因此,需要考虑在系统中将其他的信息保密用以确保系统的安全性,即密钥。在保密密钥的情况下,如果发生密钥被泄露的情况,重新选择密钥进行加解密即可,而不是发明新的算法。
2 一次性密码本(One-Time Pad)
2.1 加密方案
在一次性密码本中,明文、密文、密钥均为01串。此处的表示密钥k的长度,即01串的位数。在一次性密码本中,的大小不影响系统的安全性,但是要求必须与明文的长度相匹配。
KeyGen:从长度为的01串中均匀采样
Enc:明文和密钥做异或运算(XOR,exclusive or),加密得到密文
Dec:密钥和密文做异或运算,解密得到明文
2.2 正确性
正确性指的是Bob能通过解密收到的密文得到正确的明文,即对于任意的,满足,其证明如下:
2.3 安全性
从攻击者Eve的角度来看,得到一个密文等价于从如下的窃听算法得到一个输出:
这个算法不是描述攻击者做了什么,而是表示攻击者所得到的信息的产生过程(由Alice和Bob执行)。 将攻击者视为接收窃听算法输出的过程,则安全性指的是,窃听算法的输出不会暴露输入m。
窃听算法EAVESDROP(m)是一种随机算法,因此我们可以将其看做关于输出值的概率分布。得到一个密文就相当于从分布EAVESDROP(m)中随机采样。
证明一次性密码本的安全性,只需要证明“对于每个概率分布EAVESDROP(m)服从均匀分布”。换而言之,对于所有的长度为的明文来说,加密后的密文的概率分布是相同的。其证明如下:
对于给定的计算EAVESDROP(m)输出c的概率。
由于,
则有,其中k是从随机选择的,服从均匀分布。
因此,EAVESDROP(m)服从均匀分布,
如果攻击者获得一个用一次性密码本加密的密文,其中密钥被均匀地选择并且对攻击者来说是保密的,那么这个密文就会是均匀分布的。确保了一次性密码本的安全性。
2.4 局限性
一次性密码本在实践中是非常局限的,主要体现在:
- 一次性密码本要求密钥和明文以及密文都是等长的,一方面,当原文很长的时候对应的密文也会很长;另一方面,会存在“先有鸡还是先有蛋的问题”,即Bob如果想解密就必须拿到密钥,如果Alice能够隐私地传输密钥给Bob,为什么不直接将原文隐私地传送给Bob呢?
- 每个密钥只用一次,意味着每次加密都要不停地更换密钥,增加了复杂性。
疑问
直观上,如果越小,那么密文被激活成功教程的概率就越大,。但是书中指出的大小不影响系统的安全性,此处想表达的含义是啥?
今天的文章【The Joy of Cryptography 学习笔记】| 第1章 一次性密码本(One-Time Pad)和柯克霍夫原则(Kerckhoffs‘ Principle)[通俗易懂]分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/88806.html