导论
-
在本节课程中,我们学习密码学导论,包括对称加密基本概念,古典密码学,现代密码学基本原则。通过学习这些在直觉上可被理解的古典密码学的加密方案和破解方法,建立对加密和安全性的直观概念,从而理解现代密码学基本原则为什么是必要的。
-
目录
-
密码学概念
- 密码学来自希腊单词kryptos,意为“隐藏,保密”,和graphin,意为“书写”,即秘写。
- 密码学在简明牛津字典中定义为书写或破解代码(code)的艺术。其中,Code(代码)是一个预先编排好的符号的系统,特别用于确保消息传输中的秘密。另外中文中“密码”相关的英文单词还包括password(口令)、cipher(加密方案)、key(密钥)。这些术语中要注意区分。
- 现在密码学的开端在1980年代。以DES、公钥密码学等成果为代表,并且密码学从军用转变为民用。
- 个人计算机以及互联网也如此。
- 密码学的发展得益于个人计算机和互联网的发展。开放环境下通信的需求催生了密码学。
- 参考教材IMC中对现代密码学定义:用于保护数字信息,系统和分布式计算免于敌对攻击的数学技术的科学研究。
-
什么是密码学?(思考)
- 漫画:在美国,密码学曾经被作为武器而被禁止出口
- 目前各国对密码学产品进出口都有严格限制
- 《中华人民共和国密码法》
- 第二条:本法所称密码,是指采用特定变换的方法对信息等进行加密保护、安全认证的技术、产品和服务。
- 第七条:核心密码、普通密码用于保护国家秘密信息,核心密码保护信息的最高密级为绝密级,普通密码保护信息的最高密级为机密级。核心密码、普通密码属于国家秘密。
-
私钥加密(private key encryption)设定
- 目标是构造一个加密方案,用于在预先共享了私钥(对称密钥)的双方之间进行保密通信。
- 隐含一个假设:存在某种方法,以保密的方式来分享一个密钥。
- 磁盘加密相当于同一个人在不同的时刻间通信。
-
Alice和Bob
- Alice和Bob是密码学领域最出名的人,他们首次出现在1978年的著名的RSA论文,《A Method for Obtaining Digital Signatures and Public-key Cryptosystems》(一种产生数字签名和公开密钥密码学系统的方法)。有关Alice和Bob的参考资料。
-
加密的词法
-
什么是加密方案?下面是一个形式化的描述。其中的符号与表达比较符合直觉。
-
作为发送者的Alice,向作为接收者的Bob,发送一个消息。该消息使用一个对称密钥加密。敌手(Adversary)窃听密文(窃听者通常命名为Eve),尝试获得明文。
-
key 密钥 k ∈ K k \in \mathcal{K} k∈K, plaintext (or message) 明文或消息 m ∈ M m \in \mathcal{M} m∈M, ciphertext 密文 c ∈ C c \in \mathcal{C} c∈C
- 用小写字母表示一个具体信息,用花体大写字母表示一个集合
-
Key-generation Algorithm 密钥生成算法 k ← G e n k \gets \mathsf{Gen} k←Gen
- 用左箭头" ← \leftarrow ←"表示随机生成结果的赋值
-
Encryption Algorithm 加密算法 c : = E n c k ( m ) c:= \mathsf{Enc}_k(m) c:=Enck(m)
- 用冒号加等号“ : = := :=”表示“deterministic assignment”(确定性赋值)
-
Decryption Algorithm 解密算法 m : = D e c k ( c ) m:= \mathsf{Dec}_k(c) m:=Deck(c)
-
Encryption scheme 加密方案: Π = ( G e n , E n c , D e c ) \Pi = (\mathsf{Gen}, \mathsf{Enc}, \mathsf{Dec}) Π=(Gen,Enc,Dec)
- 密钥生成算法也是加密方案的一部分!
-
Basic correctness requirement 基本正确性要求 : D e c k ( E n c k ( m ) ) = m \mathsf{Dec}_k(\mathsf{Enc}_k(m)) = m Deck(Enck(m))=m
- 对一个明文用一个密钥加密后,再用同一个密钥解密,应该得到相同的明文。
- 等号“=”表示“相等”,“是”
-
-
保护密钥还是隐瞒算法?
- 加密方案的“秘密”包括两部分:加密/解密算法和密钥,那么我们应该保密什么?
- 更容易维护一个短密钥的秘密
- 在密钥暴露的情况下,对于诚实方,更换密钥更容易
- 在许多人彼此通信的情况下,更容易采用相同算法,不同密钥
- Kerchhoffs原则 (柯克霍夫原则):加密方法一定不必是秘密,即便落入敌手也必无不妥
- 香农箴言:敌人了解系统
-
为什要“开放密码学设计”?
- 发表的设计经过公开检验会更强健
- 相对于被攻击者发现,由有道德的黑客来发现安全缺陷会更好
- 即便不公开,代码逆向工程(或被工业间谍泄漏)也构成了严重的安全威胁
- 使标准的建立成为可能
- 即使成为标准也不意味着安全:Dual EC是一个标准化的后门
- “Dual EC曾经与其他算法一起被NIST, ANSI和ISO标准化来产生随机数” ;“斯诺登披露,以及在关于Bullrun项目和SIGINT使能项目的报告,已经表明Dual EC是NSA颠覆标准的系统化工作的一部分。”“路透社报道,NSA在一笔交易中向RSA公司支付了1千万美元,用于将Dual EC设置为BSafe软件中优先或者缺省的数字生成方法。“
-
攻击场景
-
除了窃听密文(称为COA),敌手还有其它手段(敌手能力)
-
Ciphertext-only (COA) 唯密文: 敌手只观察密文
-
Known-plaintext (KPA) 已知明文: 敌手获知同一密钥下的若干明文/密文对
-
Chosen-plaintext (CPA) 选择明文: 敌手有获得所选择明文加密(获得该明文的密文)的能力
-
Chosen-ciphertext (CCA) 选择密文: 敌手有获得所选择的其它密文解密(获得该密文的明文)的能力
-
被动攻击: COA KPA,由于不是所有密文都是机密的
-
主动攻击: CPA CCA,当敌手能够加密/解密任何其所希望的信息
-
-
历史上的加密方案及其密码分析(Cryptanalysis)
-
下面学习古典密码,目的是了解加密并没有想象的复杂,但设计安全的加密是很困难的。同时,理解一些密码学设计的基本原则,并思考一个问题:如何确定一个加密方案是安全的?
-
凯撒加密方案(Caesar’s Cipher):凯撒将机密消息加密书写,这是将字母表中字母顺序改变使得没有一个单词可以被理解。若有人要解密,则他必须将字母表中第四个字母,即D,替换成A,并且对其它字母也这么做。
-
E n c ( m ) = m + 3 m o d 26 \mathsf{Enc}(m)=m+3\mod 26 Enc(m)=m+3mod26
-
例子:明文
begintheattacknow
,采用凯撒加密的密文是什么? -
其弱点是什么?
-
-
移位加密(Shift Cipher)
- E n c k ( m ) = m + k m o d 26 \mathsf{Enc}_k(m)=m+k\mod 26 Enck(m)=m+kmod26
- D e c k ( c ) = c − k m o d 26 \mathsf{Dec}_k(c)=c-k\mod 26 Deck(c)=c−kmod26
- 例子:解密
EHJLQWKHDWWDFNQRZ
- 弱点: 是什么?
- 充足密钥空间原则:任何安全加密方案必须具有一个经受住穷举搜索的密钥空间
- 问题:如何在穷举过程中自动化地确定密钥?
-
重合指数(Index of Coincidence)方法(寻找密钥 k k k)
-
如何自动确定解密出来的是英文?
-
重合指数 I I I是两个随机挑选(挑选后放回)字母相同的概率
-
令 p i p_i pi表示英文文本中第 i i i个字母的概率
I = def ∑ i = 0 25 p i 2 I \overset{\text{def}}{=}\sum_{i=0}^{25} p_i^2 I=defi=0∑25pi2
-
例子:计算
apple
的重合指数?-
先计算字符在字符串中出现的比例,a、l和e都是1/5,p是2/5
-
重合指数 = 3 × ( 1 5 ) 2 + ( 2 5 ) 2 = 7 25 =3\times \left( \frac{1}{5}\right)^2 + \left( \frac{2}{5}\right)^2 = \frac{7}{25} =3×(51)2+(52)2=257
-
-
根据统计,对于足够长的英文文本,其重合指数为0.065。
-
对于 j = 0 , 1 , … , 25 j = 0, 1, \dotsc , 25 j=0,1,…,25, 设 q j q_j qj为密文中第 j j j 个字母的概率,定义一个带参数 j j j的重合指数
I j = def ∑ i = 0 25 p i ⋅ q i + j I_j \overset{\text{def}}{=}\sum_{i=0}^{25} p_i \cdot q_{i+j} Ij=def
-