ElGamal和背包体制

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10
背包密码体制
为此需要对超递增背包向量A进行伪装,使攻击者看到的只是 一般背包向量A’,接收者知道超递增背包向量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作为自己的公开密钥, t、t-1和k可作为其秘密的陷门 信息,即解密密钥. 利用超递增背包函数作加密变换, 明文接收者可以在多项式时间解密, 但是敌手如果也知道超递增背包向量,
背包密码体制是继Diffie和Hellman 1976年提出公钥密码体 制设想后的第一个公钥密码算法. 上述方案由Merkle和Hellman 于1978年提出. 两年后该体制 即被破译,破译的基本思想是找出任意模数k′和乘数t’, 使得用 k’和t’去乘公开的背包向量B时,能够产生超递增的背包向量 即可.
8
背包密码体制
Байду номын сангаас
怎样解密?
构造单向陷门函数f(x),为此引入一种特殊类型的背包向 量.
定义
背包向量A=(a1,a2,…,an)中的元素满足下列性质,
则称其为超递增的.
a j ai j 2,, n
i 1
j 1
9
背包密码体制
超递增背包向量对应的背包问题存在多项式 时间解法.
解法:已知s为背包容积,对A从右向左检查每 一元素,以确定是否在解中: 1) 若s≥an,则an在解中,令xn=1;若s<an,则an 不在解中,令xn=0. 然后令 s, s an s s an , s an 2) 对an-1重复上述过程,一直下去,直到检查出 若XA=S,则背包问题的解为Xa ; 1 是否在解中. 否则原背包问题无解 3) 检查结束后得解 x=(x1x2…xn).
中间人攻击
• 交换Y的过程中,Y有可能被替换假冒,而且不能发现 • 形式上,可以理解为一个中间人在跟双方同时通信,当 然通信内容在中间人那里是可见的
• A
• Xa • Ya • K=Yb’^Xa
E
Xb’ Xa’ Yb’ Ya’
B
Xb Yb K’=Y’a^Xb
相关结论
• maurer94towards – Towards the Equivalence of Breaking the Diffie-Hellman Protocol and Computing Discrete Logarithms – http://citeseer.nj.nec.com/maurer94towards.html • 结论 – 破译D-H密钥协商协议等价于计算离散对数 – RSA算法的安全性是否等价于大数的因子分解?
背包密码体制
若用f充当加密函数对明文消息m加密: 首先将m写成二元表示,再将其分成长为n的分组; 然后求每一分组的函数值,以函数值(背包容积)作为密文 分组.
7
背包密码体制
例. 背包向量仍取上例中的A,设待加密的明文是SAUNA AND HEALTH. 因为A长为10,所以应将明文分成长为10比特(即两个明文字 母)的分组SA,UN,A‘ ’,AN,D‘ ’,HE,AL,TH, 其相应的 二元序列为 若明文消息是英文文本,则可将每个字母用其在字母表中 1001100001 ,1010101110,0000100000,0000101110, 的序号表示,再将该序号转换为二进制形式( 5位即可), 0010000000 ,0100000101,0000101100,1010001000. 其中符号‘ ’表示空格 分别对以上二元序列作用于函数 f,得密文:(2942,3584,903, 3326,215,2817,2629,819).
12
背包密码体制
• 加密运算 对明文分组X=(x1x2…xn)的加密为 c=f(x)=B·X≡t·A·X mod k • 解密运算 首先由s≡t-1 c mod k,求出s作为超递增背包向量A的容积,再解 背包问题即得x=(x1x2…xn).
因为t-1 c mod k≡t-1tAX mod k≡AX mod k,而由k>∑ai,知AX<k, 所以t-1c mod k=AX,是惟一的.
• DH76,Diffie-Hellman • 步骤 – 选取大素数q和它的一个生成元g,这些参数公开 – A选择随机数Xa,B选择随机数Xb – A计算Ya=g^Xa mod q,B计算Yb=g^Xb mod q – 交换Ya,Yb – A计算K=Yb^Xa mod q,B计算K'=Ya^Xb mod q – 事实上,K=K'
4
背包密码体制
原则上讲,通过检查A的所有子集,总可找出问题的解(如果有 解的话). 上例中,A的子集共有210=1024个(包括空集). 如果A中元素个数n很大,子集个数2n将非常大, 且寻找满足要求 的A的子集没有比穷搜索更好的算法,因此背包问题是NP问题. 只要n足够大,那么,计算不可行.
5
背包密码体制
且不能重复使用. 为什么?
ElGamal算法
1) 密钥生成. 选择公开参数:p=97 及本原根 a=5 ; Bob 选择 秘密钥xB=58,计算并发布公钥 yB=558=44 mod 97. 2) Alice 要加密 M=3 给 Bob. 首先得到 Bob的公开密钥 yB=44,选择随机 k=36 计算: K=4436=75 mod 97. 计算密文对: C1 = 536 = 50 mod 97 ; C2 = 75.3 mod 97 = 31 mod 97. 发送 {50,31} 给Bob . 3) Bob 解密消息. 恢复消息密钥 K=5058=75 mod 97. Bob 计算 K-1 = 22 mod 97. Bob 恢复明文 M = 31*22 = 3 mod 97.
27
ElGamal加密算法安全性
1.攻击ElGamal加密算法等价于解离散对数问题 有限域上离散对数问题 已知(Zp,+,*)是一个有限域, g为Zp*的生成元,y∈ Zp ,求x使得y=gx mod p 如果求离散对数问题是容易的,则获得公钥攻击者能够解 出x,则算法完全破译.
EIGamal算法
• EIGamal公钥密码体制是基于离散对数问题的。 • 既可以用于加密,也可以用于签名,其安全性依赖于有限 域上计算离散对数的难度。 • 要产生一对密钥,首先选择一素数p,整数模p的一个原根 g,随机选取x,并且g和x都小于p,然后计算:y=gx mod p • 明文空间为P=Zp*(模p的剩余类环),密文空间为 C=Zp*×Zp* • 公开密钥是y,g,p,g,p可以为一组用户共享 • 私有密钥是x
14
背包密码体制
2) 取s=734,由734>701,得x10=1;令s=734-701=33,由 33<349,得x9=0;重复该过程得第一个明文分组是 1001100001,它对应的英文文本是SA; 3) 类似地得其他明文分组; 4) 解密结果为SAUNA AND HEALTH.
15
背包密码体制
13
背包密码体制
例: A=(1, 3, 5, 11, 21, 44, 87, 175, 349, 701)是一超递增背包向 量. k=1590,t=43,得t-1 ≡37 mod 1590. 用户收到的密文是(2942, 3584, 903, 3326, 215, 2817, 2629, 819) , 1) 由 37×2942≡734 mod 1590, 37×3584≡638 mod 1590, 37×903≡21 mod 1590, 37×3326≡632 mod 1590, 37×215 ≡5 mod 1590, 37×2817≡879 mod 1590, 37×2629≡283 mod 1590, 37×819≡93 mod 1590, 得(734, 638, 21, 632, 5, 879, 283, 93).
ElGamal加密算法
• 将明文信息M表示成{0,1,…,p-1}范围内的数 • 加密: – 秘密选择随机数k, k与p-1互素,0<=k<=p-1; 计算: • a=gk mod p • b=ykM mod p • (a,b)作为密文 • 解密: – M=(b/ax)mod p – ax≡gkx mod p , b/ax ≡ykM/ax≡gxkM/gxk≡M mod p k 需要永久保密, • 信息有扩张
11
背包密码体制
例: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).
16
Diffie-Hellman密钥交换
• 离散对数问题 y=gx mod p,其中g是生成元 求x的困难性 目前没有有效的方法 实际使用时常用Zp*和ECC上的点加法群 • Pohlig-Hellman algorithm – 如果p-1是小素数的乘积,则易求 – 因此,p-1应含有大素因子
Diffie-Hellman密钥交换协议
其他公钥密码学体制
1 背包密码学体制 2 Diffie-Hellman密码交换 3 ElGamal密码学体制
背包密码学体制
背包密码体制
背包问题:设A=(a1,a2,…,an)是由n个不同的正整数构成的背包向 量,s是背包容积.求A的子集A’,使子集中的元素ai的和恰好等于s.
例. A=(43, 129, 215, 473, 903, 302, 561, 1165, 697, 1523), s=3231. 由于 3231=129+473+903+561+1165. 所以从A中找出的满足要求的子集合是{129、473、903、561、 1165}.
背包问题可以构造一个单向函数f. 将x(1≤x≤2n-1)写成长为n的二元表示: 则,f(x)定义为
n
X ( x1 , x2 ,, xn1 ), xi {0,1}, 1 i n
f ( x) A X xi ai
.
i 1
f的定义可见: 上例中 x很容易求f(x),但已知f(x)求x就是要解 f(364) =已知 f(0101101100)=129+473+903+561+1165 = 3231, 背包问题,当 n较大时是计算不可行的. 类似地可求出 : 在实际应用中, n不能太小,至少为 200. f(609)=2942, f(686)=3584, f(32)=903, f(46)=3326, f(128)=215, f(261)=2817.
EIGamal公钥密码体制
Diffie-Hellman key distribution scheme 的变形能够用于安全交换 密钥 Published in 1985 by ElGamal: T. ElGamal, "A Public Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms", IEEE Trans. Information Theory, vol IT-31(4), pp469-472, July 1985. 安全性基于有限域上的离散对数问题的困难性. 缺点:增加了传送信息长度(2倍)
证明、分析和例子
• 证明K=K’ K=Yb^Xa mod q K’=Ya^Xb mod q =(g^Xb)^Xa mod q =(g^Xa)^Xb mod q = g^(XbXa) mod q =g^(XaXb) mod q • 举例 q=97,g=5 A选Xa=36,B选Xb=58,则 Ya=5^36%97=50,Yb=5^58%97=44 交换50,44 A算K=44^36%97=75,B算K’=50^58%97=75 • 分析(别人怎么计算K?) 别人看到了Ya和Yb,但需要计算Xa或Xb,即要算离散对数 Ya=g^Xa mod q,或Yb=g^Xb mod q
相关文档
最新文档