-
公钥密码体制的特点
-
最大的特点
-
将加密和解密能力分开
-
-
算法的重要特性
-
已知密码算法和加密密钥,求解解密密钥在计算上不可行。
-
-
公钥体制加密
-
公钥用于加密,私钥用于解密,私钥只有自己知道
-
-
公钥体制认证
-
私钥用于加密,公钥用于解密,私钥只有自己知道
-
完成了对信息来源和信息完整性的认证
-
问题
-
需要很大的存储空间,既需要存储明文,也需存储密文(数字签字)
-
消息会被任何人窃听
-
-
解决
-
减小文件的数字签名的大小,得到一个较短的比特串(认证符)
-
为同时提供认证功能和保密性,可使用双重加密:先用私钥加密(提供数字签字),后用公钥加密
-
-
-
-
公钥密码算法满足的要求
-
本质:是一个陷门单向函数
-
函数是易于计算的,但求逆是不可行的
-
研究公钥密码算法就是找出合适的陷门单向函数
-
-
密钥对的产生是容易的(由接收方产生)
-
加密,解密在计算上是容易的
-
由公钥求私钥是不可行的
-
由密文,公钥,恢复明文是不可行的
-
加解密次序可换(对部分算法有要求)
-
-
对公钥密码体制的攻击
-
密钥太短,则容易受到穷搜索攻击
-
解决:密钥足够长。但密钥太长会使得加解密太慢而不实用
-
-
寻找从公开钥计算秘密钥的方法
-
可能字攻击(仅适用于对公钥密码算法的攻击)
-
用公钥对可能的密钥(明文)加密,若结果和密文一致,则对应的密钥(明文)被找出
-
本质是对密钥(明文)的穷搜索攻击
-
解决:在明文后添加一些随机比特
-
-
-
RSA算法
-
地位
-
理论上最成熟完善的公钥密码体制
-
-
密钥的产生
-
d * e 同余 1 mod ψ(pq)
-
p,q是保密的大素数,gcd(e,ψ(pq))=1
-
以{e,n}为公开钥,{d,n}为秘密钥
-
寻找大素数是一个繁琐的工作,计算e、d可由Euclid算法完成
-
-
密钥的安全性要求
-
|p-q|足够大
-
否则顺序检查大于 根号n的整数x,容易找到x²-n=y²
-
-
p-1和q-1有大的素因子
-
这是因为可能的重复加密攻击法,重复加密能够恢复出密文m
-
-
-
分组
-
使得每个分组对应的十进制数小于n,即分组长度小于logn
-
-
加密
-
c 同余m的e次方(mod n)
-
-
解密
-
m 同余 c的d次方 (mod n)
-
m和n未必互素
-
-
问题
-
中间结果大,重复的指数运算
-
解决
-
利用模运算的性质减小中间结果
-
采用快速指数算法
-
-
解密的速度过慢
-
解决
-
利用中国剩余定理
-
-
-
安全性
-
基于分解大整数的困难性假定
-
假设是NP问题
-
当n成功被分解时,攻击成功
-
-
估计在未来一段时期,密钥长度介于1024-2048比特之间的RSA是安全的
-
不通过大整数分解的方法的攻击
-
由p,q确定ψ(n)和由ψ(n)确定p,q是等价的,即由n,ψ(n),便能轻易得到p,q
-
-
-
攻击
-
共模攻击
-
当模数n相同,明文消息相同时
-
敌手截获c1,c2,利用Euclid算法,e1,e2进行辗转相除,c1,n进行辗转相除,获得m
-
-
-
低指数攻击
-
当e很小,ni互素(否则通过辗转相除能获得ni的分解)时
-
由中国剩余定理求出m
-
-
-
-
-
背包密码体制
-
原理
-
设A是n个不同正整数构成的n元组,s是密文,背包问题就是从A中找到ai,使其和等于s。
-
-
加密
-
把二进制数x(长度=n)对应位置为1的ai相加,得到s。即完成一个十进制数到另一个十进制数的单向映射
-
-
解密
-
由于A的所有子集非常大,故背包问题是NPC问题。解密无异于穷搜
-
-
优化
-
构建超递增背包向量
-
容易通过贪婪算法求解
-
问题
-
敌手若得知超递增背包向量,也容易解密
-
-
解决
-
用模乘对A进行伪装,k>∑ai,gcd(t,k)=1,B 同余t*A mod k
-
-
以B作为公钥,以t,t逆,k作为私钥
-
-
-
改进后的解密
-
用t逆*c mod k求出s,把s当做超递增背包向量A的容积
-
-
破译
-
不必找到正确的k和t,只要找到能够产生超递增背包向量的任意k和t
-
-
-
Rabin密码体制
-
破译该体制等价于大整数分解
-
特征
-
对同一密文,有可能有两个以上对应的明文
-
选取公钥e=2
-
e小意味着d大,而d大意味着难解密,但e小容易被低指数攻击
-
-
-
密钥的产生
-
选取两个形如4k+3的大素数,计算n=p*q
-
-
加密
-
c 同余 m²(mod n)
-
-
解密
-
方程的解容易求出,每个方程都有两个解
-
由于每个方程都有两个解,故一共有四个解,也即每一密文对应的明文不唯一。
-
-
-
-
NTRU公钥密码系统
-
基于环的公钥密码系统
-
特点
-
密钥短
-
容易产生
-
算法运算快
-
所需存储空间小
-
-
算法的参数
-
3个整数(N,p,q)和4个次数为N-1的整系数多项式集合Lf,Lg,LΦ,Lm
-
gcd(p,q)=1,q>p,p,q未必是素数
-
-
密钥的产生
-
由接收方完成
-
从Lg中选取f,g,f在模q下逆元为Fq,f在模p下逆元为Fp,计算h同余Fq*g mod q
-
以h为公开钥,f为私密钥
-
-
加密
-
从Lm中选取m,从LΦ中选取Φ,计算e同余pΦ*h+m mod q
-
-
解密
-
计算a同余f*e mod q,a的系数在-q/2到q/2之间
-
m同余Fp*a mod p
-
-
-
椭圆曲线密码体制
-
特点
-
可以用短的多的密钥来获得较大的安全性
-
-
有限域上的椭圆曲线
-
加法具有加法运算的一般性质
-
当4a²+27b²=0时,点Q的倍点运算无定义
-
Ep(a,b)表示0≤x<p,0≤y<p的整点(第一象限中的整数点)并上无穷远点O,最终Ep(a,b)是一个Abel群
-
当P是Ep(a,b)上的点时,-P也是Ep(a,b)中的点(mod p)
-
倍点计算方法
-
P126
-
-
椭圆曲线上的点数
-
定理4-22
-
-
-
明文消息到椭圆曲线上的嵌入
-
设明文消息是m,k是一个足够大的整数,计算x=mk+j,直到x³+ax+b(mod p)有正平方根
-
-
椭圆曲线到明文消息的获取
-
m=向下取整 x/30
-
-
椭圆曲线上的密码
-
由k,P易求Q,但由P,Q求k是困难的,即椭圆曲线上的离散对数问题
-
-
-
Diffie-Hellman密钥交换
-
基于有限域上离散对数问题的公钥体制
-
密钥交换
-
取Ep(a,b)的一个生成元G(x1,y1),要求G的阶是一个非常大的素数
-
A选取小于n的整数na作为秘密钥,将PA=nA*G作为公开钥
-
由K=nB*PA产生双方的共享密钥
-
-
-
ELGamal密码体制
-
基于有限域上离散对数问题的公钥体制
-
算法
-
选取素数p,及小于p的随机数g,密钥x
-
计算y 同余 g的x次方 mod p
-
将{y,g,p}作为公钥,x作为私钥
-
-
加密
-
C1 同余 g
mod p,C2 同余 y
* M mod p,gcd(p-1,k)=1
-
密文为(C1,C2)
-
-
解密
-
M=C2/C1的x次方 mod p
-
-
-
利用椭圆曲线实现ElGamal密码体制
-
加密
-
取Ep(a,b)及其生成元G(x1,y1),将明文m嵌入到曲线上的点Pm
-
用户A选取小于阶的整数nA,以PA=nA*G作为公钥
-
选取随机正整数k,计算Cm={kG,Pm+kPA}
-
-
解密
-
第二个点减去nA对第一个点的倍乘
-
-
相比于有限域上的离散对数问题的公钥体制的优点
-
安全性高
-
难以解决离散对数问题
-
-
密钥量小
-
椭圆曲线密码体制所需的密钥量,远少于有限域上的离散对数问题的公钥体制的密钥量
-
-
灵活性好
-
有限域的q确定时,循环群确定。
-
而椭圆曲线的q确定时,通过改变曲线参数,得到不同的循环群
-
-
-
其他优点
-
椭圆曲线具有丰富的群结构和多选择性
-
保持和RSA体制同样安全性能的前提下大大缩短密钥长度
-
-
-
基于素数域的SM2椭圆曲线公钥密码加密算法
-
中国商用公钥密码标准算法
-
基本参数
-
Fp的阶为m比特长的素数,p尽可能大
-
任取长度不小于192比特的比特串SEED;利用256比特输出的SM3哈希算法得到H,进一步利用H和p得到r
-
定义曲线E(Fp):y²=x²+ax+b,满足rb²同余a³ mod p,且4a³+27b²≠0 mod p
-
定义基点G=(xG,yG)及其阶n,阶为m比特长的素数
-
计算余因子h=|E(Fp)|/n
-
-
密钥的产生
-
秘密钥取1~n-1的随机数dB
-
B的公开钥取PB=dB*G
-
-
加密
-
图4-5
-
-
解密
-
图4-6
-
-