走~走走~走走走走​🚶‍♂️🚶‍♂️🚶‍♂️

Modern CryptoⅠ Introduction


该博客。。大约是学校课程的一个小小的复习。

Note

如果你是某西南大专xx计划的学生,那么恭喜你在六选四里选到了唯一的宝藏课。 如果你是网安的,那你还会享受到1.1的权重(这是算保研的!),赢上加赢。

另外,校内可参考下一届xx计划学弟学妹们搞的复习文档

另有本博客附加说明:

说明框

这种格式一般而言是对性质、构造等的说明。

定义框

这种格式一般是对加密方案等定义的说明。

注意框

这种格式是对尤其需要注意的地方的说明。

话不多说,摆个📕先。

book

name:Introduction To Modern Cryptography

author:Jonathan Katz, Yehuda Lindell

一些先导概念

传统的密码学被称为 Codes 或是 Ciphers,如凯撒密码等这些构造方式;而现代密码学提供的与之对应的概念被称为 Encryption Scheme,并有严格的安全证明。两者的具体差别后面就会提到。

密钥相关

以下以及之后的讨论,默认为对称密钥加密。

在刚学密码学的时候,我们简单的假设密钥能够安全共享,避开对安全传递密钥过程的讨论(因为目前的知识无法对其进行讨论)。
另外,实际的安全方案里,妥善保存密钥是十分麻烦的,因此在刚开始学的时候,我们默认密钥能够安全保存。

基本记号

$$
\begin{split}
K:& key\quad space\\
M:& plaintext\quad space\\
C:& ciphertext\quad space
\end{split}
$$

类似于取值空间(概率论)的概念。
M在传统密码学中可能是一些字母(编码)表,但现代密码学将其设定为二进制字符串,对应现实中传递的信息。
加密方案(Encryption scheme)由以下部分组成:
$Gen->K(probabilistic,概率性)$ 密钥生成算法
$Enc:K\times M\rightarrow C$ 加密算法
$Dec:K\times C\rightarrow M$ 解密算法
加密算法必须保证正确性:$\forall k \in K,m \in M:Dec_k(Enc_k(m))=m $

现代密码学和传统密码学的一个重要区别是Kerckhoffs principle:

Kerckhoffs principle

The cipher method must not be required to be secret, and it must be able to fall into the hands of the enemy without inconvenience. 加密的方法必不能被要求是秘密的,并且这种加密的方法必定能够被敌手获取。

现代密码学放弃了对加密方案的保密性,因此你可以在网络上找到加密库,例如OpenSSL的加密方案具体如何操作。密码学认为,唯一应该保密的是密钥本身,而加密方案应当公开。(同时,这个原则也隐含了一点:不要用自己实现的加密方案)

为什么有这么第一眼看的蛮奇怪的要求捏?

warning

1.对加密方案保密不切实际的,诸如逆向工程、渗透攻破等方式便可以得到加密方案。即,你无法预计敌手会采取什么方式获取到你的加密方案;也因此,不能够认为对加密方案进行保密措施便能够确保更好的安全性。

2.相比而言,相较加密方案而言,更小的密钥更易保存,更改密钥也比更改方案更加容易

3.能够更好的在公开场合下讨论加密方案的安全性,从而促进加密方案的标准化。

传统加密(非古典密码学)

这里就简略了。

传统密码学更多意义上可以看作一种“艺术”,是一种智力上的比拼;但其也可以通过诸如暴力破解、频次分析、词法分析等方式破解,暴力破解的原因就是因为密钥空间不够大,如凯撒密码只要暴力枚举26次就能解。因此,你可以看到如今的加密方案密钥空间越来越大,DES为$2^{56}$,比特币采用$2^{90}$大小的密钥空间加密方案,AES的密钥空间已经扩展到了$2^{128},2^{256}$.

然而DES现在早就不安全了,令人感叹。不是因为算法本身有问题,而是密钥空间太小了。据说上个世纪的计算机就能攻破捏。

现代密码学

现代密码学有以下原则,来保证可证明性安全(归约安全)

  1. 提供形式化的安全定义。
  2. 精确的给定假设。
  3. 在假设的基础上,提供一个构造的加密方案的安全性证明,安全性基于安全定义。

安全定义

安全定义又分为两部分:

  1. 安全目标
  2. 威胁模型

只有明白了这两个才能进一步构造安全方案。

安全目标

形式化定义,也就是形式化以上的安全加密方案。

作用:

  1. 避免糊里糊涂的方案定义,能够提供一种方法去评估、证明安全性与否。
  2. 提供了方案比较的有效性。方案的安全性取决于具体的上下文环境,弱定义的安全方案可能比强定义更加有效。->模块化的可行性。

对于安全目标的定义:

info

不管攻击者有了多少信息。密文都不能泄露给敌手任何额外的关于明文的信息。

实际上,这种定义比想象中的要强。该加密方案不会泄露密钥、不会泄露明文信息,加密者也无法获取除了明文外的别的信息。因此,理论上,这种强定义便可阻绝一切可能的攻击。

这里并没有定义信息的“meaningful”,而是直接定义没有任何信息被泄露,因此该定义可以应对其他潜在的威胁。关于“不泄露任何关于明文的信息”,以及有关攻击手可能有的先验知识相关,在之后的第二、三章中便有涉及。

威胁模型

可以看看这里的威胁模型。

密码学中,认为由四种威胁模型,这些威胁模型代表了敌手的能力(但你无从得知敌手会做什么,这在实际应用中是合理的)

  1. Ciphertext-only attack,获取密文攻击,敌手仅能获取到传递的密文。
  2. Known-plaintext attack,获取明文攻击,敌手可以得到明文、密文对,他的攻击目标是攻破用相同密钥加密的密文。
  3. Chosen-plaintext attack(CPA),选择明文攻击,敌手任意选择明文,能够得到明文/密文对。CPA安全性是很重要的(后面的章节有讨论)
  4. Chosen-ciphertext attack(CCA),选择密文攻击,敌手能够得到任何密文的解密结果。

可以发现,由上到下的威胁模型,敌手越来越强。
当然,选择威胁模型时并不是越强越好,在实际方案中自己选择罢!

另外,需要点明的一点是,这里的attack便已经为之后的预言机模型打下某些基础。预言机的概念暂且不表。

相关假设

除了安全性证明需要精确的假设,其还可以让我们能够进行方案间的比较。基于更弱的安全性假设,能够有更高的自由度去构建加密方案,因此相较而言,弱安全性假设下的安全性证明更受到人们的青睐。

同时,精确假设也提供了:若组成加密方案的block被攻破后,假设仍然成立下的衡量原加密方案安全性的方式。

这里解释了一堆为什么采用建立在假设上的安全方案,而不是直接认为安全方案是安全的原因,这里略了(书P19)。

Turing Machine

图灵机模型在计算机科学中占有极为重要的地位,以其为基础建立的图灵机模型成为可计算性理论、计算复杂度理论中重要的一环。
在之后的学习中,将会学习到以下定理:

Strong Church-Turing Thesis

Every physically realisable computation can be simulated on a Turing Machine with at most polynomial slowdown. Probably only true if we exclude quantum computers.

相信大家都懂计算复杂度相关吧
也就是说,任何多项式算法,无论在现实中采用什么物理模型,都可以归约到图灵机模型,并且时间复杂度也同样是多项式。(当然还没有出来的量子计算机不在讨论范围内)

我觉得这块蛮重要的,就移到这里了,然而这是第三章的内容.

NP

你一定已经知道$P$和$NP$问题吧

有了图灵机模型,才能够讨论$NP$问题。实际上,密码学大部分的原语(大约是基本组成部分的意思)都建立在$NP\neq P$的基础上,这样才能讨论计算复杂性安全(后面的博客来讲)

公钥密码学(非以上讨论的对称密码)中的很多结构,例如因式分解的难解性就基于$NP$问题捏。

🧐课件中特地强调了这里介绍的precise assumption的重要性,例如数学证明的安全性需要这个,或者加密方案的比较(用弱假设限制的加密方案肯定更好嘛),以及构建加密方案的安全性。

😇这里介绍一下模块化的加密方案吧

实际上,密码学也是一个自底而上的不断构建的过程,构建复杂加密方案的时候需要之前验证过的简单的密码学部分。这样,即使部分出现问题,换一个component就行了;若加密方案出现问题,则认为是加密方案组织的问题,不是component的问题。两全其美啊嗯。

安全性

之前讨论的是可证明安全性,加密方案建立在安全目标和威胁模型的假设基础上证明其安全性。自然是和实际中的安全性是不一样的。

可证明安全性建立在安全目标、威胁模型的基础上,现实世界不会提供这么理想的模型的。同时,即使现实世界满足了可证明安全性的条件,也不能一定确保安全性,但这种方式自然是极难找到的。在密码学中不进行讨论。

若要构建加密方案,必须要建立在精确假设上的安全性证明上,这比启发式,或者没有假设的证明好。

关于启发式的证明:即使证明了对于一大批攻击下你的方案的安全性,也不能保证你的方案一定安全。


Author: ZzzRemake
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source ZzzRemake !
Comment
  TOC