第三章 公开密钥密码学
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机网络安全技术
第三章 公开密钥密码学
第三章 公开密钥密码学
• 对称密钥密码体制存在的问题
密钥分配问题 N(N-1)/2个密钥 层次式密钥结构并未根本解决问题 EKm[Ks],EKs[M] 签名验证问题
南京理工大学计算机科学与技术学院
第三章 公开密钥密码学
• 公开密钥密码体制的概念是在解决对称密钥密码体制 中的密钥分配与数字签名问题时提出的。
南京理工大学计算机科学与技术学院
§3.1.3 对公开密钥密码编码学的要求
• 这些要求本质上在于设计一个陷门单向函数。
敌手即使知道公开密钥KUb和密文C,要想恢复原来的报文 M在计算上是不可行的; 加密和解密函数可以以两个次序中的任何一个来使用: M = DKRb[EKUb(M)] = EKUb[DKRb(M)]
p
即,每个合数都可以唯一地分解出素数因子。 例如: 91 = 7×13 3600 = 24×32×52
P
南京理工大学计算机科学与技术学院
பைடு நூலகம்
§3.2.1 RSA的数论基础
• 互素
若gcd(a, b) = 1,则称a和b互素。 如果a和b都是整数,而m是一个固定的正整数,则当m|ab时,称a和b模m同余,记为a b(mod m)。
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 公开密钥密码系统:加密与鉴别
源点A X Y Z 终点B
报文源点
加密算法
加密算法
解密算法
Y
解密算法
X
报文终点
KUb
KRb
密钥对 产生源
KRa
KUa
密钥对 产生源
Z = EKUb[EKRa[X]] X = DKUa[DKRb[Z]]
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
解密 接收方B收到该报文后,使用其私有密钥解密报文,而 其他所有收到该报文的人都无法解密报文,因为只有 B 才有 B的私有密钥。 P = DKRb[C]
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 密码学中使用的符号约定
参与方B容易通过计算产生出一对密钥(公开密钥KUb,私 有密钥KRb); 在知道公开密钥KUb和待加密报文M的情况下,发送方A可 以很容易通过计算产生对应的密文,即 C = EKUb(M) 在计算上是容易的; 接收方B使用私有密钥KRb容易通过计算解密所得到的密文, 以便恢复原来的明文,即 M = DKRb(C) = DKRb[EKUb(M)] 在计算上是容易的; 敌手即使知道公开密钥KUb,要确定私有密钥KRb在计算上 是不可行的;
南京理工大学计算机科学与技术学院
§3.2 RSA公钥密码
• RSA算法是由MIT的Ron Rivest、Adi Shamir和Len Adleman于1977年研制并于1978年首次发表的一种 算法,且成为惟一被广泛接受并实现的通用公开密钥 加密方式。 • RSA是一种分组密码,其中的明文和密文都是对于某 个n的从0到n-1之间的整数。
南京理工大学计算机科学与技术学院
§3.1.3 对公开密钥密码编码学的要求
• 陷门单向函数是一族可逆函数fk,满足
• 因此,研究公钥密码算法就是要找出合适的陷门单向 函数。
当已知k和X时,Y = fk(X)易于计算; 当已知k和Y时,X = fk-1(Y)易于计算; 当已知Y但未知k时,求X = fk-1(Y)在计算上是不可行的。
• 公开密钥密码系统:鉴别
密码分析者 源点A
ˆR K a
终点B
报文源点
X
加密算法
Y
解密算法
X
目的端
KRa
KUa
密钥对 产生源
Y = EKRa[X] X = DKUa[Y]
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
报文是用A的私有密钥进行加密的,只有A才能发送该报文, 因此整个加密报文可以被当作A的数字签名,得不到A的私 有密钥就不可能对报文进行改动。 所以,在实现数据完整性的同时,还实现了发送方的鉴别。
南京理工大学计算机科学与技术学院
§3.1.2 公开密钥密码系统的应用
• 各种公开密钥密码系统的应用范围
算法 RSA Diffie-Hellman DSS 加密/解密 是 否 否 数字签名 是 否 是 密钥交换 是 是 否
南京理工大学计算机科学与技术学院
§3.1.3 对公开密钥密码编码学的要求
• 公开密钥密码算法必须满足以下条件
1976年,W. Diffie与M. E. Hellman首次提出公开密钥密 码体制的概念。
• 公钥密码体制的出现在密码学历史上是迄今为止最大 的、而且是惟一真正的革命。
南京理工大学计算机科学与技术学院
第三章 公开密钥密码学
• • • • • §3.1 公开密钥密码系统原理 §3.2 RSA公钥密码 §3.3 公开密钥管理 §3.4 Diffie-Hellman密钥交换协议 §3.5 ElGamal公钥密码体制
常规加密中使用的秘密密钥Km(m是修饰符) 例如,AB之间的秘密密钥Kab,会话密钥Ks 公钥加密中使用的公开密钥KUa、私有密钥KRa 加密 EKab[P]、EKUb[P](加密)、EKRa[P](签名) 解密 DKab[C]、DKRb[C](解密)、DKUa[C](鉴别)
南京理工大学计算机科学与技术学院
• 同余
南京理工大学计算机科学与技术学院
§3.2.1 RSA的数论基础
• 模运算及其性质
[a (mod n) + b (mod n)] mod n = (a+b) mod n [a (mod n) - b (mod n)]mod n = (a-b) mod n [a (mod n) · b (mod n)] mod n = (a·b) mod n a · b = 1 mod n (乘法逆元)
§3.1.1 公开密钥密码系统
• 公开密钥加密既可以使用本方的私有密钥,也可以使 用对方的公开密钥。
公开密钥密码系统:加密 使用对方B的公开密钥KUB进行加密可以实现数据的加 密。 公开密钥密码系统:鉴别 而使用本方A的私有密钥KRA进行加密实现数字签名和 鉴别。 公开密钥密码系统:加密与鉴别
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 公开密钥密码系统:加密
密码分析者 源点A
ˆ X ˆR K b
终点B
报文源点
X
加密算法
Y
解密算法
X
目的端
KUb
KRb 密钥对 产生源
Y = EKUb(X) X = EKRb(Y)
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 公开密钥加密过程中的重要步骤
密钥产生 网络中的每个端系统都产生一对用于其将报文进行加密 和解密的密钥。 密钥公开 每个系统都通过将自己的公开密钥放进一个登记本或者 文件来公布它,而另一个私有密钥则是保密。 加密 发送方A向接收方B发送一个报文,A使用B的公开密钥 加密该报文。 C = EKUb[P] 解密(…)
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 使用公钥加密
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 使用私钥加密
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 公开密钥密码体制的特点
公开密钥算法基于数学函数而不是替代和置换。 公开密钥密码体制中的密钥是非对称的,它使用两个不同 的密钥,这对于保密通信、密钥分配和鉴别等领域都有着 深远的影响。 公开密钥密码成功地解决了计算机网络安全的身份鉴别、 数字签名等问题,推动了包括电子商务在内的一大批网络 应用的不断深入发展。 使密钥管理变得容易。 加密和解密较常规密钥密码体制慢。
南京理工大学计算机科学与技术学院
§3.1.2 公开密钥密码系统的应用
• 根据应用的需要,发送方可以使用发送方的私有密钥、 接收方的公开密钥,或者两个都使用,以完成某种类 型的密码编码解码功能。 • 大体来说,可以将公开密钥密码系统分为三类
加密/解密 发送方用接收方的公开密钥加密报文。 数字签名 发送方使用自己的私有密钥“签署”报文。 签署功能是通过对于报文,或者作为报文的一个函数的 一小块数据应用密码算法完成的。 密钥交换 两方合作以便交换会话密钥。
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 常规加密与公开密钥加密的比较
常规加密 加密解密 安全条件 加密速度 方便性 密钥数量 功能 同一密钥 密钥必须保密 快 密钥分配不便 N(N-1)/2 加密 公开密钥加密 不同但相关的密钥 其中一个保密 慢 密钥公开方便 2N 加密、签名、密钥分配
§3.2.1 RSA的数论基础 §3.2.2 算法描述 §3.2.3 RSA算法中的计算问题 §3.2.4 对RSA的攻击方法 练习
南京理工大学计算机科学与技术学院
§3.2.1 RSA的数论基础
• 素数
素数是大于1,且仅能被1和它本身整除的自然数;否则为 合数。
• 任何大于1的整数a都能被因式分解为如下的惟一形 式: a ap 其中a p 0
南京理工大学计算机科学与技术学院
§3.1 公开密钥密码系统原理
• 公开密钥密码系统原理
§3.1.1 公开密钥密码系统 §3.1.2 公开密钥密码系统的应用 §3.1.3 对公开密钥密码编码学的要求
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 公开密钥密码算法要求每个参与方拥有一对相关的密 钥:
• 欧拉定理
费马小定理
南京理工大学计算机科学与技术学院
§3.2.1 RSA的数论基础
• 中国剩余定理
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 需要澄清的几个错误观念
公开密钥加密方法要比传统的加密方法更加安全。 事实上,任何加密方案的安全程度都依赖于密钥的长度 和破译密码所需要的工作量。 公开密钥密码体制是一种通用技术,它已使传统密码体制 变得陈旧。 其实正相反,由于当前公开密钥加密在计算上的巨大开 销,在可预见的将来常规加密并不会被抛弃。 公开密钥的密钥分配实现起来很简单。 事实上,使用公开密钥密码体制分配密钥仍需要某种形 式的协议。
• 如果a与n互素,则存在b使得
• 定义集合Zp为小于p的所有非负整数集合:
Zp = {0, 1, 2, …, (p-1)} 若p是素数,则集合Zp中的所有数均与p互素。
南京理工大学计算机科学与技术学院
• 费马定理
如果p是素数,a与p互素,则 ap-1 = 1 mod p 证明 集合Zp中的所有数均与a相乘模p,结果将以某种次序涵 盖Zp中的数,且a · 0 0 mod p。 因此,(p-1)个数{a mod p, 2a mod p, …, (p-1)a mod p}是{1,2, …, p-1}的一个排列。 将这些数相乘可得 (a mod p) (2a mod p) …((p-1)a mod p) = (p-1)! mod p p-1,所以 (p-1)!ap-1 = 由于a·2a·…·((p-1)a) = (p-1)!a (p-1)! mod p,因为(p-1)!与p互素,所以可以在等式 两端去掉(p-1)!。 p-1 = 1 mod p 即a
一个公开,称为公开密钥; 另一个保密,称为私有密钥。
• 公开密钥算法使用一个密钥进行加密,而使用另一个 不同但是相关的密钥进行解密。
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 公开密钥算法具有以下重要特性
仅仅知道密码算法和加密密钥而要确定解密密钥,在计算 上是不可行的; 两个相关密钥中任何一个都可以用作加密而让另外一个用 作解密。 例如,RSA算法。
§3.2.1 RSA的数论基础
• 欧拉函数
φ (n)表示小于n,且与n互素的正整数的个数。 若p是素数,则φ (p) = p-1。 若p, q是素数,则φ (pq) = (p-1)(q-1)。 对于任何互素的整数a和n,有 aφ (n) 1 mod n 若p为素数,则ap a mod p。
第三章 公开密钥密码学
第三章 公开密钥密码学
• 对称密钥密码体制存在的问题
密钥分配问题 N(N-1)/2个密钥 层次式密钥结构并未根本解决问题 EKm[Ks],EKs[M] 签名验证问题
南京理工大学计算机科学与技术学院
第三章 公开密钥密码学
• 公开密钥密码体制的概念是在解决对称密钥密码体制 中的密钥分配与数字签名问题时提出的。
南京理工大学计算机科学与技术学院
§3.1.3 对公开密钥密码编码学的要求
• 这些要求本质上在于设计一个陷门单向函数。
敌手即使知道公开密钥KUb和密文C,要想恢复原来的报文 M在计算上是不可行的; 加密和解密函数可以以两个次序中的任何一个来使用: M = DKRb[EKUb(M)] = EKUb[DKRb(M)]
p
即,每个合数都可以唯一地分解出素数因子。 例如: 91 = 7×13 3600 = 24×32×52
P
南京理工大学计算机科学与技术学院
பைடு நூலகம்
§3.2.1 RSA的数论基础
• 互素
若gcd(a, b) = 1,则称a和b互素。 如果a和b都是整数,而m是一个固定的正整数,则当m|ab时,称a和b模m同余,记为a b(mod m)。
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 公开密钥密码系统:加密与鉴别
源点A X Y Z 终点B
报文源点
加密算法
加密算法
解密算法
Y
解密算法
X
报文终点
KUb
KRb
密钥对 产生源
KRa
KUa
密钥对 产生源
Z = EKUb[EKRa[X]] X = DKUa[DKRb[Z]]
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
解密 接收方B收到该报文后,使用其私有密钥解密报文,而 其他所有收到该报文的人都无法解密报文,因为只有 B 才有 B的私有密钥。 P = DKRb[C]
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 密码学中使用的符号约定
参与方B容易通过计算产生出一对密钥(公开密钥KUb,私 有密钥KRb); 在知道公开密钥KUb和待加密报文M的情况下,发送方A可 以很容易通过计算产生对应的密文,即 C = EKUb(M) 在计算上是容易的; 接收方B使用私有密钥KRb容易通过计算解密所得到的密文, 以便恢复原来的明文,即 M = DKRb(C) = DKRb[EKUb(M)] 在计算上是容易的; 敌手即使知道公开密钥KUb,要确定私有密钥KRb在计算上 是不可行的;
南京理工大学计算机科学与技术学院
§3.2 RSA公钥密码
• RSA算法是由MIT的Ron Rivest、Adi Shamir和Len Adleman于1977年研制并于1978年首次发表的一种 算法,且成为惟一被广泛接受并实现的通用公开密钥 加密方式。 • RSA是一种分组密码,其中的明文和密文都是对于某 个n的从0到n-1之间的整数。
南京理工大学计算机科学与技术学院
§3.1.3 对公开密钥密码编码学的要求
• 陷门单向函数是一族可逆函数fk,满足
• 因此,研究公钥密码算法就是要找出合适的陷门单向 函数。
当已知k和X时,Y = fk(X)易于计算; 当已知k和Y时,X = fk-1(Y)易于计算; 当已知Y但未知k时,求X = fk-1(Y)在计算上是不可行的。
• 公开密钥密码系统:鉴别
密码分析者 源点A
ˆR K a
终点B
报文源点
X
加密算法
Y
解密算法
X
目的端
KRa
KUa
密钥对 产生源
Y = EKRa[X] X = DKUa[Y]
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
报文是用A的私有密钥进行加密的,只有A才能发送该报文, 因此整个加密报文可以被当作A的数字签名,得不到A的私 有密钥就不可能对报文进行改动。 所以,在实现数据完整性的同时,还实现了发送方的鉴别。
南京理工大学计算机科学与技术学院
§3.1.2 公开密钥密码系统的应用
• 各种公开密钥密码系统的应用范围
算法 RSA Diffie-Hellman DSS 加密/解密 是 否 否 数字签名 是 否 是 密钥交换 是 是 否
南京理工大学计算机科学与技术学院
§3.1.3 对公开密钥密码编码学的要求
• 公开密钥密码算法必须满足以下条件
1976年,W. Diffie与M. E. Hellman首次提出公开密钥密 码体制的概念。
• 公钥密码体制的出现在密码学历史上是迄今为止最大 的、而且是惟一真正的革命。
南京理工大学计算机科学与技术学院
第三章 公开密钥密码学
• • • • • §3.1 公开密钥密码系统原理 §3.2 RSA公钥密码 §3.3 公开密钥管理 §3.4 Diffie-Hellman密钥交换协议 §3.5 ElGamal公钥密码体制
常规加密中使用的秘密密钥Km(m是修饰符) 例如,AB之间的秘密密钥Kab,会话密钥Ks 公钥加密中使用的公开密钥KUa、私有密钥KRa 加密 EKab[P]、EKUb[P](加密)、EKRa[P](签名) 解密 DKab[C]、DKRb[C](解密)、DKUa[C](鉴别)
南京理工大学计算机科学与技术学院
• 同余
南京理工大学计算机科学与技术学院
§3.2.1 RSA的数论基础
• 模运算及其性质
[a (mod n) + b (mod n)] mod n = (a+b) mod n [a (mod n) - b (mod n)]mod n = (a-b) mod n [a (mod n) · b (mod n)] mod n = (a·b) mod n a · b = 1 mod n (乘法逆元)
§3.1.1 公开密钥密码系统
• 公开密钥加密既可以使用本方的私有密钥,也可以使 用对方的公开密钥。
公开密钥密码系统:加密 使用对方B的公开密钥KUB进行加密可以实现数据的加 密。 公开密钥密码系统:鉴别 而使用本方A的私有密钥KRA进行加密实现数字签名和 鉴别。 公开密钥密码系统:加密与鉴别
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 公开密钥密码系统:加密
密码分析者 源点A
ˆ X ˆR K b
终点B
报文源点
X
加密算法
Y
解密算法
X
目的端
KUb
KRb 密钥对 产生源
Y = EKUb(X) X = EKRb(Y)
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 公开密钥加密过程中的重要步骤
密钥产生 网络中的每个端系统都产生一对用于其将报文进行加密 和解密的密钥。 密钥公开 每个系统都通过将自己的公开密钥放进一个登记本或者 文件来公布它,而另一个私有密钥则是保密。 加密 发送方A向接收方B发送一个报文,A使用B的公开密钥 加密该报文。 C = EKUb[P] 解密(…)
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 使用公钥加密
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 使用私钥加密
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 公开密钥密码体制的特点
公开密钥算法基于数学函数而不是替代和置换。 公开密钥密码体制中的密钥是非对称的,它使用两个不同 的密钥,这对于保密通信、密钥分配和鉴别等领域都有着 深远的影响。 公开密钥密码成功地解决了计算机网络安全的身份鉴别、 数字签名等问题,推动了包括电子商务在内的一大批网络 应用的不断深入发展。 使密钥管理变得容易。 加密和解密较常规密钥密码体制慢。
南京理工大学计算机科学与技术学院
§3.1.2 公开密钥密码系统的应用
• 根据应用的需要,发送方可以使用发送方的私有密钥、 接收方的公开密钥,或者两个都使用,以完成某种类 型的密码编码解码功能。 • 大体来说,可以将公开密钥密码系统分为三类
加密/解密 发送方用接收方的公开密钥加密报文。 数字签名 发送方使用自己的私有密钥“签署”报文。 签署功能是通过对于报文,或者作为报文的一个函数的 一小块数据应用密码算法完成的。 密钥交换 两方合作以便交换会话密钥。
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 常规加密与公开密钥加密的比较
常规加密 加密解密 安全条件 加密速度 方便性 密钥数量 功能 同一密钥 密钥必须保密 快 密钥分配不便 N(N-1)/2 加密 公开密钥加密 不同但相关的密钥 其中一个保密 慢 密钥公开方便 2N 加密、签名、密钥分配
§3.2.1 RSA的数论基础 §3.2.2 算法描述 §3.2.3 RSA算法中的计算问题 §3.2.4 对RSA的攻击方法 练习
南京理工大学计算机科学与技术学院
§3.2.1 RSA的数论基础
• 素数
素数是大于1,且仅能被1和它本身整除的自然数;否则为 合数。
• 任何大于1的整数a都能被因式分解为如下的惟一形 式: a ap 其中a p 0
南京理工大学计算机科学与技术学院
§3.1 公开密钥密码系统原理
• 公开密钥密码系统原理
§3.1.1 公开密钥密码系统 §3.1.2 公开密钥密码系统的应用 §3.1.3 对公开密钥密码编码学的要求
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 公开密钥密码算法要求每个参与方拥有一对相关的密 钥:
• 欧拉定理
费马小定理
南京理工大学计算机科学与技术学院
§3.2.1 RSA的数论基础
• 中国剩余定理
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 需要澄清的几个错误观念
公开密钥加密方法要比传统的加密方法更加安全。 事实上,任何加密方案的安全程度都依赖于密钥的长度 和破译密码所需要的工作量。 公开密钥密码体制是一种通用技术,它已使传统密码体制 变得陈旧。 其实正相反,由于当前公开密钥加密在计算上的巨大开 销,在可预见的将来常规加密并不会被抛弃。 公开密钥的密钥分配实现起来很简单。 事实上,使用公开密钥密码体制分配密钥仍需要某种形 式的协议。
• 如果a与n互素,则存在b使得
• 定义集合Zp为小于p的所有非负整数集合:
Zp = {0, 1, 2, …, (p-1)} 若p是素数,则集合Zp中的所有数均与p互素。
南京理工大学计算机科学与技术学院
• 费马定理
如果p是素数,a与p互素,则 ap-1 = 1 mod p 证明 集合Zp中的所有数均与a相乘模p,结果将以某种次序涵 盖Zp中的数,且a · 0 0 mod p。 因此,(p-1)个数{a mod p, 2a mod p, …, (p-1)a mod p}是{1,2, …, p-1}的一个排列。 将这些数相乘可得 (a mod p) (2a mod p) …((p-1)a mod p) = (p-1)! mod p p-1,所以 (p-1)!ap-1 = 由于a·2a·…·((p-1)a) = (p-1)!a (p-1)! mod p,因为(p-1)!与p互素,所以可以在等式 两端去掉(p-1)!。 p-1 = 1 mod p 即a
一个公开,称为公开密钥; 另一个保密,称为私有密钥。
• 公开密钥算法使用一个密钥进行加密,而使用另一个 不同但是相关的密钥进行解密。
南京理工大学计算机科学与技术学院
§3.1.1 公开密钥密码系统
• 公开密钥算法具有以下重要特性
仅仅知道密码算法和加密密钥而要确定解密密钥,在计算 上是不可行的; 两个相关密钥中任何一个都可以用作加密而让另外一个用 作解密。 例如,RSA算法。
§3.2.1 RSA的数论基础
• 欧拉函数
φ (n)表示小于n,且与n互素的正整数的个数。 若p是素数,则φ (p) = p-1。 若p, q是素数,则φ (pq) = (p-1)(q-1)。 对于任何互素的整数a和n,有 aφ (n) 1 mod n 若p为素数,则ap a mod p。