【The Joy of Cryptography 学习笔记】| 第1章 一次性密码本(One-Time Pad)和柯克霍夫原则(Kerckhoffs‘ Principle)[通俗易懂]

【The Joy of Cryptography 学习笔记】| 第1章 一次性密码本(One-Time Pad)和柯克霍夫原则(Kerckhoffs‘ Principle)[通俗易懂]【TheJoyofCryptography学习笔记】第1章主要讲述了密码学基础概念、柯克霍夫原则(Kerckhoffs’Principle)和一次性密码本(One-TimePad)

目录

1 什么是密码学(密码学基础概念)

1.1 基础概念

1.2 柯克霍夫原则

2 一次性密码本(One-Time Pad)

2.1 加密方案

2.2 正确性

2.3 安全性

2.4 局限性

疑问


1 什么是密码学(密码学基础概念)

1.1 基础概念

考虑这样一个场景,Alice希望将消息m秘密地发送给Bob,并且不希望窃听者Eve获得消息的具体内容。

【The Joy of Cryptography 学习笔记】| 第1章 一次性密码本(One-Time Pad)和柯克霍夫原则(Kerckhoffs‘ Principle)[通俗易懂]

  • 明文(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 加密方案

【The Joy of Cryptography 学习笔记】| 第1章 一次性密码本(One-Time Pad)和柯克霍夫原则(Kerckhoffs‘ Principle)[通俗易懂]

在一次性密码本中,明文、密文、密钥均为01串。此处的\lambda表示密钥k的长度,即01串的位数。在一次性密码本中,\lambda的大小不影响系统的安全性,但是要求\lambda必须与明文的长度相匹配

KeyGen:从长度为\lambda的01串中均匀采样

Enc:明文和密钥做异或运算(XOR,exclusive or),加密得到密文

Dec:密钥和密文做异或运算,解密得到明文

2.2 正确性

正确性指的是Bob能通过解密收到的密文得到正确的明文,即对于任意的k,m\in (0,1)^{\lambda},满足Dec(k,Enc(k,m))=m,其证明如下:


Dec(k, Enc(k,m))=Dec(k,k\oplus m)\newline =k\oplus (k\oplus m)\newline =k\oplus k\oplus m\newline =m


2.3 安全性

从攻击者Eve的角度来看,得到一个密文等价于从如下的窃听算法得到一个输出:

【The Joy of Cryptography 学习笔记】| 第1章 一次性密码本(One-Time Pad)和柯克霍夫原则(Kerckhoffs‘ Principle)[通俗易懂]

这个算法不是描述攻击者做了什么,而是表示攻击者所得到的信息的产生过程(由Alice和Bob执行)。 将攻击者视为接收窃听算法输出的过程,则安全性指的是,窃听算法的输出不会暴露输入m。

窃听算法EAVESDROP(m)是一种随机算法,因此我们可以将其看做关于输出值的概率分布。得到一个密文就相当于从分布EAVESDROP(m)中随机采样。

证明一次性密码本的安全性,只需要证明“对于每个m\in (0,1)^{\lambda}概率分布EAVESDROP(m)服从均匀分布”。换而言之,对于所有的长度为\lambda的明文来说,加密后的密文的概率分布是相同的。其证明如下:


对于给定的c,m\in (0,1)^{\lambda}计算EAVESDROP(m)输出c的概率。

由于c=k\oplus m\Leftrightarrow k=m\oplus c

则有Pr[eavesdrop(m) = c]=Pr[k=m\oplus c],其中k是从(0,1)^{\lambda}随机选择的,服从均匀分布。

因此,EAVESDROP(m)服从均匀分布,Pr[eavesdrop(m)=c]=\frac{1}{2^{\lambda}}


如果攻击者获得一个用一次性密码本加密的密文,其中密钥被均匀地选择并且对攻击者来说是保密的,那么这个密文就会是均匀分布的。确保了一次性密码本的安全性。

2.4 局限性

一次性密码本在实践中是非常局限的,主要体现在:

  1. 一次性密码本要求密钥和明文以及密文都是等长的,一方面,当原文很长的时候对应的密文也会很长;另一方面,会存在“先有鸡还是先有蛋的问题”,即Bob如果想解密就必须拿到密钥,如果Alice能够隐私地传输密钥给Bob,为什么不直接将原文隐私地传送给Bob呢?
  2. 每个密钥只用一次,意味着每次加密都要不停地更换密钥,增加了复杂性。

疑问

直观上,如果\lambda越小,那么密文被激活成功教程的概率就越大,Pr[eavesdrop(m)=c]=\frac{1}{2^{\lambda}}。但是书中指出\lambda的大小不影响系统的安全性,此处想表达的含义是啥?

今天的文章【The Joy of Cryptography 学习笔记】| 第1章 一次性密码本(One-Time Pad)和柯克霍夫原则(Kerckhoffs‘ Principle)[通俗易懂]分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/88806.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注