现代密码学 第4章
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
m=EPKA(c)=EPKA(DSKA(m))
安全性:
由于SkA 是保密的,其他人都不可能伪造密文c,可用 A的 公开钥解密时得到有意义的消息m。因此可以验证消 息m来自A而不是其他人,而实现了对A所发消息的认证
。
2020/2/1
3
公钥密码认证体制
图4.2 公钥密码体制认证框图
2020/2/1
4
公钥保密和认证体制
现保密通信) 只能由一个用户加密消息而使多个用户可以解读(可用于认证系
统中对消息进行数字签字)。 无需事先分配密钥。
2020/2/1
1
公钥体制加密
m 发送者A
c 加密算法
解密算法
密码分析员 m
接收者B
m’ SK’B
ቤተ መጻሕፍቲ ባይዱPKB
SKB
密钥源
图4.1 公钥体制加密的框图
公钥体制加、解密 安全保障
m=D (c)=DSKB (EPKB(m))
2020/2/1
3 yx
18
4.4 背包密码体制
设A=(a1,a2,…,an)是由n个不同的正整数构成的n 元组,s是另一已知的正整数。背包问题就是从A 中求出所有的ai,使其和等于s。其中A称为背包向 量,s是背包的容积。
例如,A=(43, 129, 215, 473, 903, 302, 561, 1165, 697, 1523),s=3231。由于
x2 c mod p
x
2
c
mod
q
2020/2/1
2020/2/1
24
4.5 Rabin密码体制
Rabin密码体制是对RSA的一种修正,它有以下两 个特点:
它不是以一一对应的单向陷门函数为基础,对 同一密文,可能有两个以上对应的明文;
破译该体制等价于对大整数的分解。 RSA中选取的公开钥e满足1<e<φ (n),且 gcd(e,φ (n))=1。Rabin密码体制则取e=2。
2020/2/1
9
RSA算法概况
MIT 三 位 年 青 数 学 家 R.L.Rivest , A.Shamir 和 L.Adleman[Rivest 等 1978, 1979]发现了一种用数论构造双钥的方法, 称作MIT体制,后来被广泛称之为RSA体制。
它既可用于加密、又可用于数字签字。 RSA算法的安全性基于数论中大整数分解的
的 加解密次序可换,即EPKB[DSKB(m)]=DSKB[EPKB(m)] ,不是
对任何算法都做此要求。
2020/2/1
6
单向函数
一个可逆函数f:AB,若它满足: 1o 对所有xA,易于计算f(x)。 2o 对“几乎所有xA”由f(x)求x“极为困难”,以至
于实际上不可能做到,则称f为一单向(One-way)
2020/2/1
22
4.4 背包密码体制
例4.10 A=(1, 3, 5, 11, 21, 44, 87, 175, 349, 701)是一 超递增背包向量,取k=1590,t=43, gcd(43, 1590)=1 ,得 B=(43, 129, 215, 473, 903, 302, 561, 1165, 697, 1523)。
c≡195 mod 119≡2476099 mod 119≡66 解密为
6677mod 119≡19
2020/2/1
14
4.3.2 RSA算法中的计算问题
1.RSA的加密与解密过程 加密与解密过程,都为求一个整数的整数次
幂,再取模。再者考虑如何提高加、解密运算 中指数运算的有效性。 2. RSA密钥的产生 产生密钥时,需要考虑两个大素数p、q的选 取,以及e的选取和d的计算。
消息为m,密文为
c1 me1 mod n c2 me2 mod n
因为(e1,e2)=1,用欧几里德算法可求 r e1+s e2=1假 定r为负数,从而可知由Euclidean算法可计算 (c1-1) -r c2s=m mod n
2020/2/1
17
对RSA的攻击-低指数攻击
令网中三用户的加密钥e均选3,而有不同的模n1, n2,
困难性。
2020/2/1
10
4.3.1 算法描述
1. 密钥的产生 ① 选两个保密的大素数p和q。 ② 计算n=p×q,φ(n)=(p-1)(q-1),其中φ(n)是n的欧拉函 数值。 ③ 选一整数e,满足1<e<φ(n),且gcd(φ(n),e)=1。 ④ 计算d,满足d·e≡1 mod φ(n),即d是e在模φ(n)下的乘 法逆元,因e与φ (n)互素,由模运算可知,它的乘法逆元一 定存在。 ⑤ 以{e,n}为公开钥,{d,n}为秘密钥。
2020/2/1
25
4.5 Rabin密码体制
1. 密钥的产生
随机选择两个大素数p、q,满足p≡q≡3 mod 4,即这两 个素数形式为4k+3;计算n=p×q。以n作为公开钥,p、q 作为秘密钥。
2. 加密
c≡m2 mod n
其中m是明文分组,c是对应的密文分组。
3. 解密
解密就是求c模n的平方根,即解x2≡c mod n,由中国剩余 定理知解该方程等价于解方程组
3231=129+473+903+561+1165 所以从A中找出的满足要求的数有129、473、903、561、 1165。
2020/2/1
19
4.4 背包密码体制
定义背包向量A=(a1,a2,…,an)称为超递增的, 如果
j 1
a j ai j 2, … , n i 1
2020/2/1
•从公开钥PKB和密文c要推出明文m或解密钥SKB在计算上
是不可行的。
•由于任一用户都可用用户B的公开钥PKB 向他发送机密消息,
因而密文c不具有认证性。
2020/2/1
2
公钥密码认证体制
用户A以自己的秘密钥SkA对消息m进行A的专用变换 DSKA,A计算密文:c=DSKA(m)送给用户B,B验证c:
4.2 公钥密码体制的基本概念
4.2.1 公钥密码体制的原理
公钥体制(Public key system) (Diffie和Hellman,1976)
每个用户都有一对选定的密钥(公钥k1;私钥k2),公开的密钥k1
可以像电话号码一样进行注册公布。 主要特点: 加密和解密能力分开 多个用户加密的消息只能由一个用户解读,(用于公共网络中实
为了同时提供认证功能和保密性,可使用双重加、 解密。
图4.3 公钥密码体制的认证、保密框图
2020/2/1
5
公钥密码应满足的要求
接收方B产生密钥对在计算上是容易的 发送方A用收方的公开钥对消息m加密以产生密文c在计算上
是容易的。 收方B用自己的秘密钥对密文c解密在计算上是容易的。 敌手由密文c和B的公开密钥恢复明文在计算上是不可行的。 敌手由密文c和B的公开密钥恢复秘密密钥在计算上是不可行
20
4.4 背包密码体制
超递增背包向量对应的背包问题很容易通过以下算法求解。
已知s为背包容积,对A从右向左检查每一元素,以确定是 否在解中。若s≥an,则an在解中,令xn=1;若s<an,则an 不在解中,令xn=0。下面令
s
s, s
s an ,
an s
an
对an-1重复上述过程,一直下去,直到检查出a1是否在解中。 检查结束后得 x=(x1x2…xn),Bx=(x1x2…xn)T。
密钥长度应该介于1024bit到2048bit之间
由n直接求(n)等价于分解n
|p-q|要大 p-1,q-1都应有大的素因子。
e<n且d<n1/4,则d能被容易的确定。
2020/2/1
16
对RSA的攻击-共模攻击
每一用户有相同的模数n 设用户的公开密钥分别为e1,e2,且e1,e2互素,明文
n3,若有一用户将消息x传给三个用户的密文分别
为
y1=x 3 mod n1 x< n1
y2=x 3 mod n2 x< n2
y3=x 3 mod n3 x< n3
一般选n1, n2, n3互素(否则,可求出公因子,而降低 安全性),利用中国余定理,可从y1, y2, y3求出 y=x 3 mod (n1 n2 n3)。 由x<n1, x<n2, x<n3,可 得x3< n1 n2, n3,故有
限门单向函数是一族可逆函数fk,满足
1. Y=fk(X)易于计算(当k和X已知) 2. X=f-1k(Y)易于计算(当k和Y已知) 3. X=f-1k(Y)计算上不可行(Y已知但k未知)
研究公钥密码算法就是找出合适的单向限门函数
2020/2/1
8
4.2.3 对公钥密码体制的攻击
穷搜索攻击 寻找从公开钥计算秘密钥的方法 可能字攻击
2020/2/1
11
算法描述-加密和解密
2. 加密 加密时首先将明文比特串分组,使得每个分组
对应的十进制数小于n,即分组长度小于log2n。 然后对每个明文分组m,作加密运算:
c≡me mod n 3. 解密 对密文分组的解密运算为:
m≡cd mod n
2020/2/1
12
解密正确性证明
cd mod n ≡med mod n ≡m1 modj(n) mod n ≡ mkj(n)+1 mod n
在得到B后,对明文分组x=(x1x2…xn)的加密运算为 c=f(x)=B·Bx≡t·A·Bx mod k
对单向函数f(x),t、t-1和k可作为其秘密的陷门信息,即解 密密钥。解密时首先由s≡t-1 c mod k,求出s作为超递增背 包向量A的容积,再解背包问题即得x=(x1x2…xn)。这是因 为t-1 c mod k≡t-1tABx mod k≡ABx mod k,而由k>∑ai ,知ABx<k,所以t-1c mod k=ABx,是惟一的。
两边同乘m=cp, mkj(n)+1≡m+rcpq=m+rcn,即 mkj(n)+1≡m mod n
2020/2/1
13
RSA算法例题
例4.8 选p=7,q=17。求n=p×q=119, φ (n)=(p-1)(q-1)=96。取e=5,满足1<e<φ (n) ,且gcd(φ(n),e)=1。确定满足d·e=1 mod 96且 小于96的d,因为77×5=385=4×96+1,所以d 为77,因此公开钥为{5,119},秘密钥为{77, 119}。设明文m=19,则由加密过程得密文为
2020/2/1
15
RSA的安全性
RSA的安全性是基于分解大整数的困难性假定(尚未证明分解 大整数是NP问题)
如果分解n=p×q,则立即获得(n)=(p-1)(q-1),从而 能够确定e的模(n)乘法逆d
RSA-129历时8个月被于1996年4月被成功分解,RSA -130于1996年4月被成功分解
m与n互素,由欧拉定理
mj(n)≡1 mod n, mkj(n)≡1 mod n, mkj(n)+1≡m mod n
gcd(m,n) ≠1,m是p的倍数或q的倍数,设m=cp,此 时gcd(m,q)=1,由欧拉定理, mj(q)≡1 mod q, mkj(q)≡1 mod q, [mkj(q)] j(p)≡1 mod q mkj(n)≡1 mod q,存在一整数r,使mkj(n)≡1+rq
2020/2/1
21
4.4 背包密码体制
解密 为此可用模乘对A进行伪装,模乘的模数k和乘数t
皆取为常量,满足k>∑ai,gcd(t,k)=1,即t在 模k下有乘法逆元。设
bi≡t·ai mod k,i=1,2,…,n 得一新的背包向量B=(b1,b2,…,bn),记为B≡t·A
mod k,用户以B作为自己的公开钥。
2020/2/1
23
4.4 背包密码体制
背包密码体制是Diffie和Hellman 1976 年提出公钥密码体制的设想后的第一个公钥密 码体制,由Merkle和Hellman 1978年提出。 然而又过了两年该体制即被破译,破译的基本 思想是不必找出正确的模数k和乘数t(即陷门 信息),只须找出任意模数k′和乘数t′,使得用 k′和t′去乘公开的背包向量B时,能够产生超递 增的背包向量即可。
函数。 定义中的“易于计算”是指函数值能在其输入长度
的多项式时间内求出,即若输入长度为n,计算函 数的时间是na的倍数,a为一固定的常数。 若计算函数时间是an的倍数,则为不可能做到的。
2020/2/1
7
限门单向函数
单向函数是求逆困难的函数,而单向陷门函数 (Trapdoor one-way function),是在不知陷门 信息下求逆困难的函数,当知道陷门信息后,求 逆是易于实现的。
安全性:
由于SkA 是保密的,其他人都不可能伪造密文c,可用 A的 公开钥解密时得到有意义的消息m。因此可以验证消 息m来自A而不是其他人,而实现了对A所发消息的认证
。
2020/2/1
3
公钥密码认证体制
图4.2 公钥密码体制认证框图
2020/2/1
4
公钥保密和认证体制
现保密通信) 只能由一个用户加密消息而使多个用户可以解读(可用于认证系
统中对消息进行数字签字)。 无需事先分配密钥。
2020/2/1
1
公钥体制加密
m 发送者A
c 加密算法
解密算法
密码分析员 m
接收者B
m’ SK’B
ቤተ መጻሕፍቲ ባይዱPKB
SKB
密钥源
图4.1 公钥体制加密的框图
公钥体制加、解密 安全保障
m=D (c)=DSKB (EPKB(m))
2020/2/1
3 yx
18
4.4 背包密码体制
设A=(a1,a2,…,an)是由n个不同的正整数构成的n 元组,s是另一已知的正整数。背包问题就是从A 中求出所有的ai,使其和等于s。其中A称为背包向 量,s是背包的容积。
例如,A=(43, 129, 215, 473, 903, 302, 561, 1165, 697, 1523),s=3231。由于
x2 c mod p
x
2
c
mod
q
2020/2/1
2020/2/1
24
4.5 Rabin密码体制
Rabin密码体制是对RSA的一种修正,它有以下两 个特点:
它不是以一一对应的单向陷门函数为基础,对 同一密文,可能有两个以上对应的明文;
破译该体制等价于对大整数的分解。 RSA中选取的公开钥e满足1<e<φ (n),且 gcd(e,φ (n))=1。Rabin密码体制则取e=2。
2020/2/1
9
RSA算法概况
MIT 三 位 年 青 数 学 家 R.L.Rivest , A.Shamir 和 L.Adleman[Rivest 等 1978, 1979]发现了一种用数论构造双钥的方法, 称作MIT体制,后来被广泛称之为RSA体制。
它既可用于加密、又可用于数字签字。 RSA算法的安全性基于数论中大整数分解的
的 加解密次序可换,即EPKB[DSKB(m)]=DSKB[EPKB(m)] ,不是
对任何算法都做此要求。
2020/2/1
6
单向函数
一个可逆函数f:AB,若它满足: 1o 对所有xA,易于计算f(x)。 2o 对“几乎所有xA”由f(x)求x“极为困难”,以至
于实际上不可能做到,则称f为一单向(One-way)
2020/2/1
22
4.4 背包密码体制
例4.10 A=(1, 3, 5, 11, 21, 44, 87, 175, 349, 701)是一 超递增背包向量,取k=1590,t=43, gcd(43, 1590)=1 ,得 B=(43, 129, 215, 473, 903, 302, 561, 1165, 697, 1523)。
c≡195 mod 119≡2476099 mod 119≡66 解密为
6677mod 119≡19
2020/2/1
14
4.3.2 RSA算法中的计算问题
1.RSA的加密与解密过程 加密与解密过程,都为求一个整数的整数次
幂,再取模。再者考虑如何提高加、解密运算 中指数运算的有效性。 2. RSA密钥的产生 产生密钥时,需要考虑两个大素数p、q的选 取,以及e的选取和d的计算。
消息为m,密文为
c1 me1 mod n c2 me2 mod n
因为(e1,e2)=1,用欧几里德算法可求 r e1+s e2=1假 定r为负数,从而可知由Euclidean算法可计算 (c1-1) -r c2s=m mod n
2020/2/1
17
对RSA的攻击-低指数攻击
令网中三用户的加密钥e均选3,而有不同的模n1, n2,
困难性。
2020/2/1
10
4.3.1 算法描述
1. 密钥的产生 ① 选两个保密的大素数p和q。 ② 计算n=p×q,φ(n)=(p-1)(q-1),其中φ(n)是n的欧拉函 数值。 ③ 选一整数e,满足1<e<φ(n),且gcd(φ(n),e)=1。 ④ 计算d,满足d·e≡1 mod φ(n),即d是e在模φ(n)下的乘 法逆元,因e与φ (n)互素,由模运算可知,它的乘法逆元一 定存在。 ⑤ 以{e,n}为公开钥,{d,n}为秘密钥。
2020/2/1
25
4.5 Rabin密码体制
1. 密钥的产生
随机选择两个大素数p、q,满足p≡q≡3 mod 4,即这两 个素数形式为4k+3;计算n=p×q。以n作为公开钥,p、q 作为秘密钥。
2. 加密
c≡m2 mod n
其中m是明文分组,c是对应的密文分组。
3. 解密
解密就是求c模n的平方根,即解x2≡c mod n,由中国剩余 定理知解该方程等价于解方程组
3231=129+473+903+561+1165 所以从A中找出的满足要求的数有129、473、903、561、 1165。
2020/2/1
19
4.4 背包密码体制
定义背包向量A=(a1,a2,…,an)称为超递增的, 如果
j 1
a j ai j 2, … , n i 1
2020/2/1
•从公开钥PKB和密文c要推出明文m或解密钥SKB在计算上
是不可行的。
•由于任一用户都可用用户B的公开钥PKB 向他发送机密消息,
因而密文c不具有认证性。
2020/2/1
2
公钥密码认证体制
用户A以自己的秘密钥SkA对消息m进行A的专用变换 DSKA,A计算密文:c=DSKA(m)送给用户B,B验证c:
4.2 公钥密码体制的基本概念
4.2.1 公钥密码体制的原理
公钥体制(Public key system) (Diffie和Hellman,1976)
每个用户都有一对选定的密钥(公钥k1;私钥k2),公开的密钥k1
可以像电话号码一样进行注册公布。 主要特点: 加密和解密能力分开 多个用户加密的消息只能由一个用户解读,(用于公共网络中实
为了同时提供认证功能和保密性,可使用双重加、 解密。
图4.3 公钥密码体制的认证、保密框图
2020/2/1
5
公钥密码应满足的要求
接收方B产生密钥对在计算上是容易的 发送方A用收方的公开钥对消息m加密以产生密文c在计算上
是容易的。 收方B用自己的秘密钥对密文c解密在计算上是容易的。 敌手由密文c和B的公开密钥恢复明文在计算上是不可行的。 敌手由密文c和B的公开密钥恢复秘密密钥在计算上是不可行
20
4.4 背包密码体制
超递增背包向量对应的背包问题很容易通过以下算法求解。
已知s为背包容积,对A从右向左检查每一元素,以确定是 否在解中。若s≥an,则an在解中,令xn=1;若s<an,则an 不在解中,令xn=0。下面令
s
s, s
s an ,
an s
an
对an-1重复上述过程,一直下去,直到检查出a1是否在解中。 检查结束后得 x=(x1x2…xn),Bx=(x1x2…xn)T。
密钥长度应该介于1024bit到2048bit之间
由n直接求(n)等价于分解n
|p-q|要大 p-1,q-1都应有大的素因子。
e<n且d<n1/4,则d能被容易的确定。
2020/2/1
16
对RSA的攻击-共模攻击
每一用户有相同的模数n 设用户的公开密钥分别为e1,e2,且e1,e2互素,明文
n3,若有一用户将消息x传给三个用户的密文分别
为
y1=x 3 mod n1 x< n1
y2=x 3 mod n2 x< n2
y3=x 3 mod n3 x< n3
一般选n1, n2, n3互素(否则,可求出公因子,而降低 安全性),利用中国余定理,可从y1, y2, y3求出 y=x 3 mod (n1 n2 n3)。 由x<n1, x<n2, x<n3,可 得x3< n1 n2, n3,故有
限门单向函数是一族可逆函数fk,满足
1. Y=fk(X)易于计算(当k和X已知) 2. X=f-1k(Y)易于计算(当k和Y已知) 3. X=f-1k(Y)计算上不可行(Y已知但k未知)
研究公钥密码算法就是找出合适的单向限门函数
2020/2/1
8
4.2.3 对公钥密码体制的攻击
穷搜索攻击 寻找从公开钥计算秘密钥的方法 可能字攻击
2020/2/1
11
算法描述-加密和解密
2. 加密 加密时首先将明文比特串分组,使得每个分组
对应的十进制数小于n,即分组长度小于log2n。 然后对每个明文分组m,作加密运算:
c≡me mod n 3. 解密 对密文分组的解密运算为:
m≡cd mod n
2020/2/1
12
解密正确性证明
cd mod n ≡med mod n ≡m1 modj(n) mod n ≡ mkj(n)+1 mod n
在得到B后,对明文分组x=(x1x2…xn)的加密运算为 c=f(x)=B·Bx≡t·A·Bx mod k
对单向函数f(x),t、t-1和k可作为其秘密的陷门信息,即解 密密钥。解密时首先由s≡t-1 c mod k,求出s作为超递增背 包向量A的容积,再解背包问题即得x=(x1x2…xn)。这是因 为t-1 c mod k≡t-1tABx mod k≡ABx mod k,而由k>∑ai ,知ABx<k,所以t-1c mod k=ABx,是惟一的。
两边同乘m=cp, mkj(n)+1≡m+rcpq=m+rcn,即 mkj(n)+1≡m mod n
2020/2/1
13
RSA算法例题
例4.8 选p=7,q=17。求n=p×q=119, φ (n)=(p-1)(q-1)=96。取e=5,满足1<e<φ (n) ,且gcd(φ(n),e)=1。确定满足d·e=1 mod 96且 小于96的d,因为77×5=385=4×96+1,所以d 为77,因此公开钥为{5,119},秘密钥为{77, 119}。设明文m=19,则由加密过程得密文为
2020/2/1
15
RSA的安全性
RSA的安全性是基于分解大整数的困难性假定(尚未证明分解 大整数是NP问题)
如果分解n=p×q,则立即获得(n)=(p-1)(q-1),从而 能够确定e的模(n)乘法逆d
RSA-129历时8个月被于1996年4月被成功分解,RSA -130于1996年4月被成功分解
m与n互素,由欧拉定理
mj(n)≡1 mod n, mkj(n)≡1 mod n, mkj(n)+1≡m mod n
gcd(m,n) ≠1,m是p的倍数或q的倍数,设m=cp,此 时gcd(m,q)=1,由欧拉定理, mj(q)≡1 mod q, mkj(q)≡1 mod q, [mkj(q)] j(p)≡1 mod q mkj(n)≡1 mod q,存在一整数r,使mkj(n)≡1+rq
2020/2/1
21
4.4 背包密码体制
解密 为此可用模乘对A进行伪装,模乘的模数k和乘数t
皆取为常量,满足k>∑ai,gcd(t,k)=1,即t在 模k下有乘法逆元。设
bi≡t·ai mod k,i=1,2,…,n 得一新的背包向量B=(b1,b2,…,bn),记为B≡t·A
mod k,用户以B作为自己的公开钥。
2020/2/1
23
4.4 背包密码体制
背包密码体制是Diffie和Hellman 1976 年提出公钥密码体制的设想后的第一个公钥密 码体制,由Merkle和Hellman 1978年提出。 然而又过了两年该体制即被破译,破译的基本 思想是不必找出正确的模数k和乘数t(即陷门 信息),只须找出任意模数k′和乘数t′,使得用 k′和t′去乘公开的背包向量B时,能够产生超递 增的背包向量即可。
函数。 定义中的“易于计算”是指函数值能在其输入长度
的多项式时间内求出,即若输入长度为n,计算函 数的时间是na的倍数,a为一固定的常数。 若计算函数时间是an的倍数,则为不可能做到的。
2020/2/1
7
限门单向函数
单向函数是求逆困难的函数,而单向陷门函数 (Trapdoor one-way function),是在不知陷门 信息下求逆困难的函数,当知道陷门信息后,求 逆是易于实现的。