密码技术与应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第8讲
第4章 密码技术与应用—— 非对称密码技术、密钥管理
梁雪梅
1、理解非对称加密技术原理 2、掌握非对称加密算法RSA算法原理及特点 3、掌握常见的密钥管理方法 4、理解散列算法的作用
教学目的:
教学重点:
1、理解非对称加密技术原理 2、掌握非对称加密算法RSA算法原理及特点 3、掌握常见的密钥管理方法 4、理解散列算法的作用
2.算法描述
(1)密钥的产生
① 选两个保密的大素数p和q; ② 计算n=p*q,φ(n)=(p-1)(q-1),其中φ(n)是n的欧拉函数 值; ③ 选一整数e,满足1<e<φ(n),且gcd(φ(n),e)=1,即φ(n )与e互质; ④ 再取另一个数d,满足d*e=1 mod φ(n),(表示d*e除以φ(n) 的余数为1,或者说d是e在模φ(n)下的乘法逆元,因e与φ(n)互质 ,由模运算可知,它的乘法逆元一定存在); ⑤ 以PK={e,n}为公钥,SK={d,n}为私钥。
为了保证RSA算法的安全性,p和q的选择时须注意: (1)p和q的长度相差不要太大; (2)p-1和q-1都应应大数因子; (3)gcd(p-1,q-1)的值应较小。此外,研究结果表明, 如果e<n且d<n1/4,则d能被较容易地确定。
Diffie-Hellman密钥交换协议
Diffie-Hellman的安全性是基于zp上的离散对数问题。设 p是一个满足要求的大素数,0<a<p,并且a是循环群zp的生 成元,a和p公开,所有用户都可以得到a和p。
解密算法
私有密钥
公钥 公钥
私钥 私钥
不可相互推导
解决了密钥的发布和管理问题,是目前商业密 码的核心 解密和加密速度较慢,这是一个弱点。
ຫໍສະໝຸດ Baidu
三重DES
1979年初,IBM意识到密钥的长度太短,于是设计了一 种方法,利用三重加密来有效地增加密钥长度,三重 DES 使用两个密钥,执行三次 DES 算法。下图中的方 框 E 和 D 分别表示执行加密和解密算法。因此加密时 是 E-D-E,解密时是 D-E-D。
在两个用户A与B通信时,它们可以通过如下步骤协商 通信所使用的密钥:
A
2 p Ar 0
①
用户A选取一个大的随机数rA( s A a r (mod p) ,并且把SA发送给用户B;
),计算:
② 用户B选取一个m随机数rB( 0 rB p 2 ),计算: sB a rB (mod p) 。并且把SB发送给用户A;
(2)加密:
加密时首先将明文m比特串分组,使得每个分组对 应的十进制数小于n,即分组的长度小于log2n。然后对 每组明文分组,作加密运算:
c me m n od
(3)解密:
对密文分组的解密运算为:m cd mod n
3.RSA的安全性
RSA的安全性是基于分解大整数的困难性假定,之所以 假定是因为至今还未能证明分解大真整数就是np问题,也许 有尚未发现的多项式时间分解算法。 估计在未来一段比较长的时期,密钥长度介于1024比特 至2048比特之间的RSA是安全的。
K1 K2 K1 密文 E D 加密 E 密文 D E 解密 D K1 K2 K1 明文
明文
两个问题: 第一,为什么只使用两个密码而不是三个? 第二,为什么使用EDE模式而不是EEE模式?
教学过程
1
一、非对称密码技术
2
二、散列算法
3
三、密钥管理
非对称密钥密码技术也称为双钥或公钥密码技术 ,研究的基本工具不再象对称密码技术那样是代 换和置换,而是数学函数。
如果根据所依据的难解问题,公钥密码体制可以分为这 样3类: ① 大整数分解问题类; ② 离散对数问题类; ③ 椭圆曲线类(也时被归为离散对数问题类)。
人们已经研究出的公钥密码算法:
• 基于大整数分解问题的公钥密码体制 • 基于有限域中的离散对数问题 • 基于代数编码系统的Mceliece公钥密码算法 • 基于有限自动机的公开密码技术 • 基椭圆曲线的公开密钥密码技术 其中,除椭圆曲线公钥密码算法是在椭圆曲线上进行 运算之外,其余各公钥密码算法均在有限域上进行。
,其中
是B的公
④ 这样c=(c1,c2)是密文,用户A把二元组(c1,c2)传送给B。 (2)解密算法:用户B接收到二元组(c1,c2)后,计算: 。由于:
c 2 (c1 ) 1 (mod p)
d
样用户B通过二元组(c1,c2)解密就得到了正确的明文m了。
) p d om( 1 ) d1c( 2c
① 用户A将x编码成一个在0到p-1之间的整数,m作为传输 的明文(m∈{0,1,……..p-1}(这里的m是编码后的明文) ;
② 用户A挑选一个随机数k(1≤k≤p-2),并计算:c1=ak( mod p)(注:k需保密);
③ 用户A计算 钥。
c2 m k mod p( a d mod p)
ElGamal公钥密码技术
ElGamal密码体制的安全性是基于离散对数的难解性, 既可用于加密又可用于数字签名的公钥密码技术。到目前 为止,它仍是一个安全性能良好的公钥体制,下面讨论其 算法。 采用ElGamal体制的密码系统中,所有的用户都共享 一个素数p以及一个zp的生成元a。系统中的每一用户u都随 机挑选一个整数d,1≤d≤p-2,并计算: a d mod p ,然后 ,用户u公开 作为公开密钥并保存整数d作为自己的秘密 密钥。 (1)加密算法:假设用户A想传送信息给B,A采用如 下算法加密明文信息m:
ECC的密钥长度 160 211 256 其它算法的密钥长度 RSA/DSA RSA/DSA AES-Small 1024 2048 128
384
521
AES-Medium
AES-Large
192
256
1.椭圆曲线(EC)上的基本运算
在EC上定义的加法运算如下: 对于 p ( x , y ) EC Q ( x2 , y2 ) EC , ,P+Q的运算结果如下: ① P+Ο=P (Ο为加法单位元,也是在EC上的一个无穷远 点的特殊点,也看作Ο); ② 若x1=x2,y1=-y2,那么P+Q=Ο(即为无穷远点); ③ 若不满足②,则P+Q=(x3,y3),其中:
对称密码体制
明文 密文 加密算法 网络信道 密钥 加密密钥
解密算法
明文
两者相等
解密密钥
优点:加密或解密运算速度快,加密强度高, 并且算法公开 缺点:密钥分发困难,更新周期长,丌便于管 理 常见算法:DES、IDEA、AES等
非对称密码体制
明文 密文 加密算法 公开密钥 不相等 网络信道 明文
非对称密码算法基本原理
非对称加密算法 的基本原理是:每个用 户都有一对预先选定的 密钥:一个是可以公开 的,以Kl表示,另一个 则是秘密的,以K2表 示,公开的密钥K1可 以像电话号码一样进行 注册公布,因此不对称 加密系统又称作公钥系 统 。其有两种表现形 式,一种是公钥加密然 后用私钥解密,一种是 私钥加密然后公钥解密。
复习:密码分析的分类
加密模型
密码体制的分类
按将明文转化为密文的操作类型分:置换密码和 移位密码 按明文的处理方法分:分组密码(块密码)和序 列密码(流密码) 按密钥的使用个数分:对称密码体制(秘密/专 用密钥加密体制、私钥密码体制)、非对称密码 体制(公钥密码体制)和混合密码体制
• 根据分析者具备的条件,通常分为4类: ① 唯密文攻击(Ciphertext-only attack) • 分析者有一个或更多的用同一密钥加密的密文。 ② 已知明文攻击(Known-plaintext attack) • 除了待破解的密文,分析者还有一些明文和用同一密钥加密的对应密文。 ③ 选择明文攻击(Chosen-plaintext attack) • 分析者可以得到所需要的任何明文对应的密文,这些密文和待破解的密文 是用同一密钥加密的。密码分析者可以选择一些明文,并得到相应的密文, 而且可以选择被加密的明文,并试图推导出加密密钥或算法。 ④ 选择密文攻击(Chosen-ciphertext attack) • 分析这可以得到所需要的任何密文对应的明文,类似地,这些密文和待破 解的密文是同一密钥加密的,获得密钥是分析者的主要目的。密码分析者可 以选择不同的密文,并能得到相应的明文,并试图推导出加密密钥。 ⑤ 选择密钥攻击(Chosen-key attack)
它们二者需要满足条件:
K2是K1的逆,即K2[E(X)]=K1。 K2和K1都容易计算。
由K1出发去求解K2十分困难。
下图是公钥密码技术示意图:
公钥密码的加密变换E(eB,m)与解密交换D(dB,c)应满足这 样一些要求:① D(dB,c)是E(eB,m)的逆变换,即对任何的明 文m有:D(dB,c)= D(dB ,E(eB,m))=m;② 在已知加密密 钥eB时,E(eB,m)的计算不难;在已知解密密钥dB时,D(dB,c) 的计算也不难;③ 若不知道dB,那么即使知道eB,具体的加密与解 密算法过程及密文c,确定明文的计算是不可行的。 设计公开密钥密码体制就变成了寻找陷门单向函数。可以提供单 向函数的三大数学难题分别是:① 大整数分解问题(简称IFP);② 离散对数问题(简称DLP);③ 椭圆曲线离散对数问题(简称ECDLP )。
1.RSA的基本原理: RSA是基于大整数难分解的公钥密码技术。
RSA是基于这样一个十分简单的数论事实而设计的:将两个大的素 数相乘十分容易,但想分解它们是十分困难的,因此将乘积公开作为加 密密钥。
基于大整数分解的公钥密码体制的安全性主要依赖 于大整数(大合数)的难分解问题。大整数的分解问题可 以被表述:已知整数n,n是两个素数的积,即n=p.q 。求 解p、q的值。 大整数分解是计算上困难的问题,目前还不存在一般 性的有效解决算法。
一、非对称密码技术
采用非对称密码技术的每个用户都有一对密钥: 一个是可以公开的(称为加密密钥或公钥),可以象 电话号码一样进行注册公布;另一个则是秘密的(称 为秘密密钥或解密密钥或私钥,它由用户严格保密保 存)。它的主要特点是将加密和解密能力分开,因而 可以实现多个用户加密的信息只能由一个用户解读, 或由一个用户加密的信息而多个用户可以解读。前者 可以用于公共网络中实现通信保密,而后者可以用于 实现对用户的认证。
=
(m. k (mod p)).(( a k (mod p)) d ) 1
= m.( .(a d )1)k (mod p) m ,这
椭圆曲线密码算法
使用基于椭圆曲线密码体制的安全性依赖于由椭圆曲线群上的点 构成的代数系统中的离散对数问题的难解性。 它与有限域上的离散对数问题或整数分解问题的情形不同,与其他 公钥体制相比,椭圆曲线密码体制的优势在于:密钥长度大大减少( 256比特的ECC密钥就可以达到对称密钥128比特的安全水平,如下表所 示),实现速度快等。这是因为随着计算机速度的加快,为达到特定安 全级别所需的密钥长度的增长,相比之下RSA及使用有限域的公钥密码 体制要慢得多。 ECC与其它密码算法的密钥长度对照表
RSA 算法
RSA的名字来源于它们的创建者。1978年由麻省理 工学院的Ronald.L Rivest、以色列魏茨曼科学中心的Adi Shamir和南加 洲大学的Lenoard M. Adleman发表了著名的论文“A Method for Obtaining Digital Signature and Public-Key Cryptosystems(获得数字签 名和公开密钥密码系统的一种方法)”,并提出的一种用数论构造的、 也是迄今为止理论上最为成熟完善的公钥密码技术——RSA,该技术已 得到广泛的应用。在RSA算法中,它使用广为公开的公钥加密通信,密 文只能被持有与之相配的私钥的人才能解开。
③ 用户A计算 由于有:
K SB A (modp) (arB (modp))rA (modp) arArB (modp) S A B (modp) k '
r r
K SB A (modp)
r
,用户B计算 K ' S Ar (modp) 。
B
这样通信双方得到共同的密钥k,这样就可以实现交换 密钥了。
第4章 密码技术与应用—— 非对称密码技术、密钥管理
梁雪梅
1、理解非对称加密技术原理 2、掌握非对称加密算法RSA算法原理及特点 3、掌握常见的密钥管理方法 4、理解散列算法的作用
教学目的:
教学重点:
1、理解非对称加密技术原理 2、掌握非对称加密算法RSA算法原理及特点 3、掌握常见的密钥管理方法 4、理解散列算法的作用
2.算法描述
(1)密钥的产生
① 选两个保密的大素数p和q; ② 计算n=p*q,φ(n)=(p-1)(q-1),其中φ(n)是n的欧拉函数 值; ③ 选一整数e,满足1<e<φ(n),且gcd(φ(n),e)=1,即φ(n )与e互质; ④ 再取另一个数d,满足d*e=1 mod φ(n),(表示d*e除以φ(n) 的余数为1,或者说d是e在模φ(n)下的乘法逆元,因e与φ(n)互质 ,由模运算可知,它的乘法逆元一定存在); ⑤ 以PK={e,n}为公钥,SK={d,n}为私钥。
为了保证RSA算法的安全性,p和q的选择时须注意: (1)p和q的长度相差不要太大; (2)p-1和q-1都应应大数因子; (3)gcd(p-1,q-1)的值应较小。此外,研究结果表明, 如果e<n且d<n1/4,则d能被较容易地确定。
Diffie-Hellman密钥交换协议
Diffie-Hellman的安全性是基于zp上的离散对数问题。设 p是一个满足要求的大素数,0<a<p,并且a是循环群zp的生 成元,a和p公开,所有用户都可以得到a和p。
解密算法
私有密钥
公钥 公钥
私钥 私钥
不可相互推导
解决了密钥的发布和管理问题,是目前商业密 码的核心 解密和加密速度较慢,这是一个弱点。
ຫໍສະໝຸດ Baidu
三重DES
1979年初,IBM意识到密钥的长度太短,于是设计了一 种方法,利用三重加密来有效地增加密钥长度,三重 DES 使用两个密钥,执行三次 DES 算法。下图中的方 框 E 和 D 分别表示执行加密和解密算法。因此加密时 是 E-D-E,解密时是 D-E-D。
在两个用户A与B通信时,它们可以通过如下步骤协商 通信所使用的密钥:
A
2 p Ar 0
①
用户A选取一个大的随机数rA( s A a r (mod p) ,并且把SA发送给用户B;
),计算:
② 用户B选取一个m随机数rB( 0 rB p 2 ),计算: sB a rB (mod p) 。并且把SB发送给用户A;
(2)加密:
加密时首先将明文m比特串分组,使得每个分组对 应的十进制数小于n,即分组的长度小于log2n。然后对 每组明文分组,作加密运算:
c me m n od
(3)解密:
对密文分组的解密运算为:m cd mod n
3.RSA的安全性
RSA的安全性是基于分解大整数的困难性假定,之所以 假定是因为至今还未能证明分解大真整数就是np问题,也许 有尚未发现的多项式时间分解算法。 估计在未来一段比较长的时期,密钥长度介于1024比特 至2048比特之间的RSA是安全的。
K1 K2 K1 密文 E D 加密 E 密文 D E 解密 D K1 K2 K1 明文
明文
两个问题: 第一,为什么只使用两个密码而不是三个? 第二,为什么使用EDE模式而不是EEE模式?
教学过程
1
一、非对称密码技术
2
二、散列算法
3
三、密钥管理
非对称密钥密码技术也称为双钥或公钥密码技术 ,研究的基本工具不再象对称密码技术那样是代 换和置换,而是数学函数。
如果根据所依据的难解问题,公钥密码体制可以分为这 样3类: ① 大整数分解问题类; ② 离散对数问题类; ③ 椭圆曲线类(也时被归为离散对数问题类)。
人们已经研究出的公钥密码算法:
• 基于大整数分解问题的公钥密码体制 • 基于有限域中的离散对数问题 • 基于代数编码系统的Mceliece公钥密码算法 • 基于有限自动机的公开密码技术 • 基椭圆曲线的公开密钥密码技术 其中,除椭圆曲线公钥密码算法是在椭圆曲线上进行 运算之外,其余各公钥密码算法均在有限域上进行。
,其中
是B的公
④ 这样c=(c1,c2)是密文,用户A把二元组(c1,c2)传送给B。 (2)解密算法:用户B接收到二元组(c1,c2)后,计算: 。由于:
c 2 (c1 ) 1 (mod p)
d
样用户B通过二元组(c1,c2)解密就得到了正确的明文m了。
) p d om( 1 ) d1c( 2c
① 用户A将x编码成一个在0到p-1之间的整数,m作为传输 的明文(m∈{0,1,……..p-1}(这里的m是编码后的明文) ;
② 用户A挑选一个随机数k(1≤k≤p-2),并计算:c1=ak( mod p)(注:k需保密);
③ 用户A计算 钥。
c2 m k mod p( a d mod p)
ElGamal公钥密码技术
ElGamal密码体制的安全性是基于离散对数的难解性, 既可用于加密又可用于数字签名的公钥密码技术。到目前 为止,它仍是一个安全性能良好的公钥体制,下面讨论其 算法。 采用ElGamal体制的密码系统中,所有的用户都共享 一个素数p以及一个zp的生成元a。系统中的每一用户u都随 机挑选一个整数d,1≤d≤p-2,并计算: a d mod p ,然后 ,用户u公开 作为公开密钥并保存整数d作为自己的秘密 密钥。 (1)加密算法:假设用户A想传送信息给B,A采用如 下算法加密明文信息m:
ECC的密钥长度 160 211 256 其它算法的密钥长度 RSA/DSA RSA/DSA AES-Small 1024 2048 128
384
521
AES-Medium
AES-Large
192
256
1.椭圆曲线(EC)上的基本运算
在EC上定义的加法运算如下: 对于 p ( x , y ) EC Q ( x2 , y2 ) EC , ,P+Q的运算结果如下: ① P+Ο=P (Ο为加法单位元,也是在EC上的一个无穷远 点的特殊点,也看作Ο); ② 若x1=x2,y1=-y2,那么P+Q=Ο(即为无穷远点); ③ 若不满足②,则P+Q=(x3,y3),其中:
对称密码体制
明文 密文 加密算法 网络信道 密钥 加密密钥
解密算法
明文
两者相等
解密密钥
优点:加密或解密运算速度快,加密强度高, 并且算法公开 缺点:密钥分发困难,更新周期长,丌便于管 理 常见算法:DES、IDEA、AES等
非对称密码体制
明文 密文 加密算法 公开密钥 不相等 网络信道 明文
非对称密码算法基本原理
非对称加密算法 的基本原理是:每个用 户都有一对预先选定的 密钥:一个是可以公开 的,以Kl表示,另一个 则是秘密的,以K2表 示,公开的密钥K1可 以像电话号码一样进行 注册公布,因此不对称 加密系统又称作公钥系 统 。其有两种表现形 式,一种是公钥加密然 后用私钥解密,一种是 私钥加密然后公钥解密。
复习:密码分析的分类
加密模型
密码体制的分类
按将明文转化为密文的操作类型分:置换密码和 移位密码 按明文的处理方法分:分组密码(块密码)和序 列密码(流密码) 按密钥的使用个数分:对称密码体制(秘密/专 用密钥加密体制、私钥密码体制)、非对称密码 体制(公钥密码体制)和混合密码体制
• 根据分析者具备的条件,通常分为4类: ① 唯密文攻击(Ciphertext-only attack) • 分析者有一个或更多的用同一密钥加密的密文。 ② 已知明文攻击(Known-plaintext attack) • 除了待破解的密文,分析者还有一些明文和用同一密钥加密的对应密文。 ③ 选择明文攻击(Chosen-plaintext attack) • 分析者可以得到所需要的任何明文对应的密文,这些密文和待破解的密文 是用同一密钥加密的。密码分析者可以选择一些明文,并得到相应的密文, 而且可以选择被加密的明文,并试图推导出加密密钥或算法。 ④ 选择密文攻击(Chosen-ciphertext attack) • 分析这可以得到所需要的任何密文对应的明文,类似地,这些密文和待破 解的密文是同一密钥加密的,获得密钥是分析者的主要目的。密码分析者可 以选择不同的密文,并能得到相应的明文,并试图推导出加密密钥。 ⑤ 选择密钥攻击(Chosen-key attack)
它们二者需要满足条件:
K2是K1的逆,即K2[E(X)]=K1。 K2和K1都容易计算。
由K1出发去求解K2十分困难。
下图是公钥密码技术示意图:
公钥密码的加密变换E(eB,m)与解密交换D(dB,c)应满足这 样一些要求:① D(dB,c)是E(eB,m)的逆变换,即对任何的明 文m有:D(dB,c)= D(dB ,E(eB,m))=m;② 在已知加密密 钥eB时,E(eB,m)的计算不难;在已知解密密钥dB时,D(dB,c) 的计算也不难;③ 若不知道dB,那么即使知道eB,具体的加密与解 密算法过程及密文c,确定明文的计算是不可行的。 设计公开密钥密码体制就变成了寻找陷门单向函数。可以提供单 向函数的三大数学难题分别是:① 大整数分解问题(简称IFP);② 离散对数问题(简称DLP);③ 椭圆曲线离散对数问题(简称ECDLP )。
1.RSA的基本原理: RSA是基于大整数难分解的公钥密码技术。
RSA是基于这样一个十分简单的数论事实而设计的:将两个大的素 数相乘十分容易,但想分解它们是十分困难的,因此将乘积公开作为加 密密钥。
基于大整数分解的公钥密码体制的安全性主要依赖 于大整数(大合数)的难分解问题。大整数的分解问题可 以被表述:已知整数n,n是两个素数的积,即n=p.q 。求 解p、q的值。 大整数分解是计算上困难的问题,目前还不存在一般 性的有效解决算法。
一、非对称密码技术
采用非对称密码技术的每个用户都有一对密钥: 一个是可以公开的(称为加密密钥或公钥),可以象 电话号码一样进行注册公布;另一个则是秘密的(称 为秘密密钥或解密密钥或私钥,它由用户严格保密保 存)。它的主要特点是将加密和解密能力分开,因而 可以实现多个用户加密的信息只能由一个用户解读, 或由一个用户加密的信息而多个用户可以解读。前者 可以用于公共网络中实现通信保密,而后者可以用于 实现对用户的认证。
=
(m. k (mod p)).(( a k (mod p)) d ) 1
= m.( .(a d )1)k (mod p) m ,这
椭圆曲线密码算法
使用基于椭圆曲线密码体制的安全性依赖于由椭圆曲线群上的点 构成的代数系统中的离散对数问题的难解性。 它与有限域上的离散对数问题或整数分解问题的情形不同,与其他 公钥体制相比,椭圆曲线密码体制的优势在于:密钥长度大大减少( 256比特的ECC密钥就可以达到对称密钥128比特的安全水平,如下表所 示),实现速度快等。这是因为随着计算机速度的加快,为达到特定安 全级别所需的密钥长度的增长,相比之下RSA及使用有限域的公钥密码 体制要慢得多。 ECC与其它密码算法的密钥长度对照表
RSA 算法
RSA的名字来源于它们的创建者。1978年由麻省理 工学院的Ronald.L Rivest、以色列魏茨曼科学中心的Adi Shamir和南加 洲大学的Lenoard M. Adleman发表了著名的论文“A Method for Obtaining Digital Signature and Public-Key Cryptosystems(获得数字签 名和公开密钥密码系统的一种方法)”,并提出的一种用数论构造的、 也是迄今为止理论上最为成熟完善的公钥密码技术——RSA,该技术已 得到广泛的应用。在RSA算法中,它使用广为公开的公钥加密通信,密 文只能被持有与之相配的私钥的人才能解开。
③ 用户A计算 由于有:
K SB A (modp) (arB (modp))rA (modp) arArB (modp) S A B (modp) k '
r r
K SB A (modp)
r
,用户B计算 K ' S Ar (modp) 。
B
这样通信双方得到共同的密钥k,这样就可以实现交换 密钥了。