笔记:密码学 Week 6

这是Coursera课程Cryptography的第六周的笔记。
本周讲的是关于Public Key Cryptography的概念,也就是公钥密码学,也称为非对称密码学。以前我只知道RSA算法。我知道RSA算法是怎么来的,它可以作什么,局限性是什么。然而把它放在一个大的概念里,将RSA只看作非对称加密算法中的一种,这仍是第一次。若是数学家没有提出利用大质数难分解的性质制做密码,天然就不会有RSA算法了。那么还会有公钥密码吗?基本的密码体系会有变化吗?git

生词本算法

chicken-and-egg problem
asymmetry 不对称
factor 因式分解
Indistinguishability 不可分辨
spoof 欺骗
discrete 离散的
logarthm 对数
subtlety 细微的差异
derivation 派生
disseminate 散布,传播
legitimate 合法的数据库

The public-Key Revolution

Key distribution problem

如何在加密通讯前交换密钥呢?
虽然能够经过物理方法交换,但物理交换一般价格很高,并且效率低下。安全

Key management problem

有N我的,若是容许他们跟其余人通讯,他们就须要预先交换O(N2)的密钥,这是很是大量的工做。oracle

Lack of support for open system

两我的预先没有关系,如何交换密钥呢?
例如一个顾客想要在网上使用信用卡购买物品,例如你想给老师发一封关于课程的邮件,你预先没有在这家网上商店购买过东西,也不认识老师,可是你仍然但愿用安全的信道进行通讯。函数

“经典”密码学没法解决这些问题

私钥密码不可以解决在信道不安全时私钥如何交换的问题。
1976 《New Directions in Cryptography》ui

新的方向

利用不对称的问题。例如因式分解:将两个质数相乘很容易,将相乘后的结果分开很难。
利用不对称性来让两方在公开讨论的状况下交换一个共享的不公开密钥。
也就是说,在一个全是人的房间,A和B在房间的两端喊话,却交换了一对除A与B之外无人知晓得密钥。加密

Formally(正式定义看ppt)

假设攻击者是个窃听者,能够听到信道,不可改变信息
攻击者获得传输数据的几率不大于1/2+eorm

注意

没法计算出密钥是个弱的保证
密钥从所选集合中彻底没法辨认(indistinguishable)才是个强的保证ip

Modern key-exchange protocols

仅针对被动窃听者的安全是不够的
须要带验证的密钥交换,例如,两房预先知道对方的ID,而且这种ID不得被欺骗

Diffie Hellman Key Exchange

Key Exchange

安全目标:当窃听者获取全部通讯文本后,密钥K仍然是不可辨认的。

Decisional Diffie-Hellman problem DDH问题

安全性

对窃听者没法计算出key

细微的差异

咱们本须要的是某个长度的不可辨认的k1,可是咱们却得到了某个组下的key2,因而就有了从key2到k1的映射问题。
解决方法:key derivation 密钥派生
用一个合适的hash函数作映射,将某个组下的密钥映射到指定的区段内。

公钥设置

一方生成了一对密钥:公钥和私钥。
公钥普遍传播,私钥本身保留,不向任何人传播
也被称为非对称加密

公钥分发

  1. 全部人将公钥放入同一个数据库,供其余人查询。
  2. 通讯时,一方将公钥传送给对方。
    在这两种状况下,咱们都假设了攻击者是被动窃听者(至少在公钥交换阶段)

非对称加密解决的问题

  1. 公钥能够在公开的(允许窃听,不允许改变)信道中传播,而私钥加密法则没法在公开的信道中传播密码。
  2. 对私钥加密法,必须让每一个用户存储其余N-1个用户的密钥。非对称则可使用公钥数据库。
  3. 可让预先没有关系的两个实体找到对方的公钥并通讯。

为何还要研究对称加密

  1. 更适合的应用场景:磁盘加密
  2. 一般对称加密的效率是非对称加密效率的两到三个数量级

Public-key encryption

包含3个多项式时间算法:

Gen keygen
Enc 加密
Dec 解密

CPA安全

注意

没有encryption oracle。
没有perfectly secure的公钥加密。
没有肯定性的公钥加密体系是CPA-Secure的。

Chosen-ciphertext attack

攻击者是一个合法用户
攻击者更容易得到它所选定的明文和对应的密文
延展性问题:知道明文和对应的密文后,可能派生出另外一对相关的明文和密文

Hybrid encryption

因为非对称加密效率低下,咱们能够用非对称加密方法去加密一个对称加密密钥,而后用对称加密密钥去加密明文。
发送时,将加密的对称加密密钥和密文一块儿发送。

El Gamal encryption

gen The public key is (G, q, g, gx), the secret key is x
enc ciphertext is gy, hy·m
Dec c2/c1x

安全性

若是DDH是难的,那么El Gamal是CPA-Secure的。
离散对数难度的假设对公钥加密是不够的。

实际上

G, q, g是标准算法,而且与全世界共享
把消息做为组来对待并不方便,这就须要使用密钥派生。
使用混合算法

Chosen-ciphertext attacks

El Gamal Encryption不是CCA安全的
使用密钥派生可使算法变成CCA安全
DHIES/ECIES

基于RSA的公钥加密

  1. 选择等长的随机质数p,q
  2. 计算N=pq
  3. 选择e,d,使得 e·d = 1 mod (p-1)(q-1)
  4. RSA假设:仅拥有N,e时,难以计算c的第e个根,其中C来自N。

安全性

这个体系是决定性的,因此不多是CPA Secure的
RSA假设仅仅指算均匀的c得第e个根,只有当m是均匀的时候,c才是均匀的
RSA假设仅仅指彻底计算的状况,事实上能够得到关于第e个根得一部分信息

PKCS#1 v1.5

RSA Labs, 1993
加密时,加入随机的padding
问题:
1. 没法证实是CPA-Secure的,除非m很是短
2. 当r很小的时候,已知已经有Chosen-plaintext attacks
3. 已知有Chosen-ciphertext attack

PKCS#1 v2.0

OAEP
引入冗余

安全性

当RSA假设成立时,RSA-OAEP是CCA-Secure的。 在实践中普遍使用。

相关文章
相关标签/搜索