密码学基础-清华大学讲稿
18
古典密码
仿射密码 加密函数取形式为 y=e(x)=ax+b (mod 26), a,b,x,y∈Z/(26), 要求唯一解的充要条件是gcd( a,26)=1 加密函数取形式为: x =dk(y)=a-1(y-b)(mod 26)
可能的密钥是26*12=311个
19
二、分组密码
20
密码的设计原则
•信息需要共享... •信息需要使用... •信息需要交换... •信息需要传输...
4
为什么需要密码
信息的存储: 在公开的地方 信息的交换: 使用非隐秘介质 信息的传输: 通过不安全信道
5
基本概念
密码学(Cryptology): 是研究信息系统 安全保密的科学. 密码编码学(Cryptography): 主要研究 对信息进行编码,实现对信息的隐蔽. 密码分析学(Cryptanalytics):主要研究 加密消的特点分类: 对称密码算法(symmetric cipher):又称传统密 码算法(conventional cipher),就是加密密钥和 解密密钥相同,或实质上等同,即从一个易于 推出另一个。又称秘密密钥算法或单密钥算 法。 非对称密钥算法(asymmetric cipher): 加密密钥 和解密密钥不相同。如果从一个很难推出另一 个。又称公开密钥算法(public-key cipher) 。 公开密钥算法用一个密钥进行加密, 而用另一 个进行解密.其中的加密密钥可以公开,又称公 开密钥(public key),简称公钥.解密密钥必须
明文和密文在0~n-1之间,n是一个正整数
应用最广泛的公钥密码算法 只在美国申请专利,且已于2000年9月到期
43
RSA算法描述
分组大小为k, 2k < n ≤ 2k+1 加密: C = Me mod n 解密: M = Cd mod n = Med mod n 公钥: KP={e,n}, 私钥: KS={d,n} 上述算法需要满足以下条件:
30
分组密码的分析方法
根据攻击者所掌握的信息,可将分组密码的攻击分为以 下几类: – 唯密文攻击 – 已知明文攻击 – 选择明文攻击 • 攻击的复杂度 – 数据复杂度:实施该攻击所需输入的数据量 – 处理复杂度:处理这些数据所需要的计算量
31
三、公钥密码
32
基本思想
加密与解密由不同的密钥完成 (KP,KS) 加密: X Y: Y = EKP(X) 解密: Y X: X = DKS(Y) = DKS(EKP(X)) 从解密密钥得到加密密钥在计算上是不可行的
23
分组密码的操作模式
电子密码本ECB (electronic codebook mode) 密码分组链接CBC (cipher block chaining) 密码反馈CFB (cipher feedback) 输出反馈OFB (output feedback)
24
电子密码本(ECB)
Ci = EK(Pi) ⇔ Pi = DK(Ci)
能够找到e,d,n,使得Med mod n = M, 对所有M<n 计算Me和Cd相对容易 从e和n得到d是在计算上不可行的
44
公钥密码与私钥密码
公钥密码由于速度慢,直接用于加密效率低 当单向通信的时候,可以采用公钥和私钥结合 的办法。如设B的公开密钥为Pb,A要向B发送 消息m。则A可以用私钥k加密m,再用Pb加密 k,同时把E(k,m)和E(Pb,k)发给B. 当双向通信时,A、B可以利用公钥协商一个 私钥密码的密钥。
密码学基础
李德全
Dequanli@, Lidequan@
中科院, 软件所 信息安全国家重点实验室
(2005.08.19于清华大学信息楼FIT1-101会议室)
1
主要内容
一、密码简介 二、分组密码 三、公钥密码 四、消息认证
2
一、密码简介
3
信息为什么不安全
35
如何设计一个公钥算法
公钥和私钥必须相关,而且从公钥到私钥 不可推断
必须要找到一个难题,从一个方向走是容易 的,从另一个方向走是困难的 如何把这个难题跟加解密结合起来
计算可行和不可行的界
36
公钥密码学的研究情况
与计算复杂性理论密切相关 计算复杂性理论可以提供指导
但是需求不尽相同
• 计算复杂性通常针对一个孤立的问题进行研究 • 而公钥密码学往往需要考虑一些相关的问题 比如,密码分析还需要考虑已知明文、选择明文等相关 的情形
33
公钥密码学的历史
76年Diffie和Hellman发表了“密码学的新方 向”,奠定了公钥密码学的基础 公钥技术是二十世纪最伟大的思想之一
改变了密钥分发的方式 可以广泛用于数字签名和身份认证服务
78年,RSA算法 PKI
34
公钥算法的条件
公钥算法的条件:
产生一对密钥是计算可行的 已知公钥和明文,产生密文是计算可行的 接收方利用私钥来解密密文是计算可行的 对于攻击者,利用公钥来推断私钥是计算不可行的 已知公钥和密文,恢复明文是计算不可行的 (可选)加密和解密的顺序可交换
6
基本术语
消息被称为明文(Plaintext)。用某种方法伪装消息 以隐藏它的内容的过程称为加密(Encrtption),被 加密的消息称为密文(Ciphertext),而把密文转变 为明文的过程称为解密(Decryption)。 密码算法(Cryptography Algorithm):是用于加密和 解密的数学函数。 密钥(key),加密或解密所需要的除密码算法之外 的关键信息. 密码员对明文进行加密操作时所采用的一组规则称 作加密算法(Encryption Algorithm). 所传送消息的预定对象称为接收者(Receiver). 接收者对密文解密所采用的一组规则称为解密算法 (Decryption Algorithm).
15
古典密码
•
单表替换密码的破译
•
通过字母的使用频率破译
16
古典密码
移位密码 移12位:
移3位,即Caesar密码
17
古典密码
移位密码分析 给定加密的消息: PHHW PH DIWHU WKH WRJD SDUWB 如果移1位得:QIIX QI…. 如果移2位得:RJJY RJ…. … 如果移23位得: meet me after the toga party 可能尝试的密钥只有26个, 而事实上,还有一个 是不变,因此,最多尝试25次即可得到明文!
信息的保密取决于密钥的保密,加密算法 可以公开——
一切秘密寓于密钥之中
(Kerckhoff假设)
21
分组密码设计要求
Diffusion(扩散) 密文没有统计特征,明文一位影响密文 的多位,密钥的一位也影响密文的多位 Confusion(混淆) 明文与密文、密钥与密文的依赖关系充 分复杂 结构简单、易于分析
7
加密与解密
密钥 密文 明文 加密算法 明文 解密算法 密钥
加密和解密算法的操作通常都是在一组密钥的控制下进行的,分别称 为加密密钥(Encryption Key) 和解密密钥(Decryption Key).
8
加密通信模型
攻击者 x y x
发方 k 密钥源
加密机
解密机
收方
安全信道
密码学的目的:发方和收方两个人在不安全的 信道上进行通信,而敌方(攻击者)不能理解 他们通信的内容。
• •
27
密文反馈CFB模式
• CFB:分组密码 流密码 Si 为移位寄存器,j为流单元宽度 加密: Ci =Pi⊕(EK(Si)的高j位) Si+1=(Si<<j)|Ci 解密: Pi=Ci⊕(EK(Si)的高j位) Si+1=(Si<<j)|Ci
28
密文反馈CFB
29
输出反馈模式(OFB)
做法:
选择一个整数 m > ∑ai (i = 1,…,n) 然后选择一个与m互素的整数w,然后 ai’ = wai (mod m) (i = 1,…,n) 这里的ai’是伪随机分布的 这样得到的背包是非超递增背包
40
基于背包问题的公钥密码系统 ——MH公钥算法
加密
将明文分为长度为n的块X=(x1,…,xn) 然后用公钥A’ = (a1’, …, an’),将明文变为密文 S S = E(X) = ∑ai’xi
解密
先计算S’ = w-1S mod m 再求解简单背包问题
S’ = ∑aixi
41
背包密码系统的意义
是第一个公钥密码系统 有较好的理论价值 在实践过程中,大多数的背包方案都已 被破解,或者证明存在缺陷
42
RSA算法
1977年由Ron Rivest、Adi Shamir和Len Adleman发明,1978年公布 是一种分组加密算法。
9
密码体制
密码体制:它是一个五元组(P,C,K,E,D)满足条 件: (1)P是可能明文的有限集;(明文空间) (2)C是可能密文的有限集;(密文空间) (3)K是一切可能密钥构成的有限集;(密钥空 间) ek : P → C dk ∈D ek ∈E dk : C K,有一个加密算法 *(4)任意k∈→P 和相应的 解密算法 ,使得 和 分别为加密解密函数,满足dk(ek(x))=x, 这里 x ∈P。 10
11
对称密钥密码又可分为
分组密码(也称块密码) 每次对一块数据加密 多数网络加密应用 DES,IDEA,RC6,Rijndael 流密码(序列密码) 每次对一位或一字节加密
12
密码学的起源和发展
三个阶段: • 1949年之前 密码学是一门艺术 • 1949~1975年 密码学成为科学 • 1976年以后 密码学的新方向——公钥密码学
讨论的情形不同
• 计算复杂性考虑最坏的情形 • 而对于公钥密码学则是不够的