第5章[第2部分]公钥密码及背包公钥密码算法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网络工程学院
密码体制举例
例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)。 t-1(mod1590)=37 对1001100001加密:43+473+903+1523=2942 对2942解密:37*2942=734 解超递增背包:得1001100001
网络工程学院
超递增背包变化成MH背包
MH背包公钥系统选的背包序列是由超递增序列进行以 下变换得到的。 设b1,b2,…,bn是超递增序列,选取k>2bn,选择t和k互 素,t-1为w(modk)的逆。作变换ak=tbk(modk),k=1,2,...,n. 于是得到一个序列a1,a2,...,an. 这个序列即为MH背包, 从外表上不再具有超递增的特性,MH背包公钥密码系统就 是以这样的序列{ai}作为公钥的。
网络工程学院
超递增背包
需要注意的是,并非所有的背包问题都没有有效算法 求解。如果序列a1,a2,…,an满足条件: i 1
ai > ∑ a j
j =1
, i=2,3,…,n
成立时,有多项式解法。这样的序列称为超递增序列。如 1,3,6,13,27,52是一个超递增序列,而1,3,4,9,15,25则 不是。 超递增背包问题的解是容易找到的。将总质量与序列 中最大的数比较,如果总质量小于这个数,则它不在背包 中;如果总质量大于这个数,则它在背包中,用背包质量 减去这个数,转向考查序列下一个最大的数,重复直到结 束,如果总质量变为零,那么有一个解,否则无解。 网络工程学院
网络工程学院
网络工程学院
超递增背包举例
例:考查总质量为70kg的一个背包,质量序列为: 2,3,6,13,27,52。 解:(1)最大的质量为52kg,小于70kg,所以52kg在背包中。 (2)用70kg减掉52kg剩18kg,下一个质量27kg比18kg大, 所以27kg不在背包中。 (3)再下一个质量13kg小于18kg,所以13kg在背包中。 (4)从18kg中减去13kg剩5kg,再下一个质量6kg比5kg大, 所以6kg不在背包中。 (5)继续这个过程将得出2kg和3kg都在背包中。 因此,我们得到的解是110101。
第5章 公钥密码体制(2) 章 公钥密码体制( )
网络工程学院
背包公钥密码算法
由Merkle和Hellman提出一个基于组合数学中背包问 题的公钥密码系统。这个背包系统称为MH背包问题。 背包问题是这样的:已知有n个物品,它们的重量分 别为a1,a2,…,an 。现在有一个重量为b的背包,装有其 … 中某些物品,问装的是哪些物品? 即为求xi=0或1,i=1,2,…, n,使满足:
背包公钥密码算法
算法复杂性理论已经证明:背包问题属于NP完备类, 即是NP类问题中难度最大的一类,求解这一类问题还没 有有效算法。所以,若要对NP问题求解,理论上只能采 用穷举搜索,那么就需要对2n中所有可能进行穷举搜索 (为什么?),这实际上是不可能完成的。 以n=100为例:2100=1.27×1030,以每秒搜索107种方 案的超高速计算机进行穷举,一年只能完成3.1536×1014 次,如果完成所有的穷举则需要4.02×1015(年),这显 然是不可能完成的。
简单例子
A=(43, 129, 215, 473, 903, 302, 561, 1165, 697, 1523) 上例中f(364) = f(0101101100) = 129+473+903+561+1165 = 3231,类似地可求出: f(609)=2942, f(686)=3584, f(32)=903, f(46)=3326, f(128)=215, f(261)=2817, f(44)=2629, f(648)=819。 32=00001 00000 128=00100 00000 由f的定义可见,已知x很容易求f(x),但已知f(x)求x就是 要解背包问题。 网络工程学院
∑ ai xi = b
i =1
n
网络工程学院
简单例子
ห้องสมุดไป่ตู้
例: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。
(251,252,253,257,13,283,60,125)作为公钥予以公布。
网络工程学院
背包加密体制举例(2)
对于明文m=10010100加密得密文: a1+a4+a6=251+257+283=791 接收方收到密文791后, 乘以t-1 modk得 791*2mod501=79mod501 解超递增序列背包问题: d1+3d2+5d3+13d4+26d5+65d6+120d7+250d8=79 所以 d1= d4= d6=1,d2= d3= d5= d7= d8=0 即得明文10010100。
网络工程学院
MH背包加密体制的证明
假定已知:d=d1d2…dn,其中d1,d2,…,dn是n位的0,1符号 串,令 c =a1d1+a2d2+…+andn c即为由背包序列a1,a2,...,an 加密明文 d=d1d2…dn 的密 文,则: t-1c= t-1 a1d1+ w-1 a2d2+…+ w-1 andn 因为ak=tbk(modk),k=1,2,...,n. 故t-1c=t-1 tb1d1 + t-1 tb2 d2+ …+ w-1 tbn dn =b1d1 + b2 d2+ …+ bndn 这是一个超递增背包问题,易解。
网络工程学院
背包加密体制举例(1)
已知1,3,5,13,26,65,120,250是超递增序列。 1+3+5+13+26+65+120+250=483 取k=501,t=251,则t-1=2 a1≡251×1≡251 mod 501 a3≡251×5≡253 mod 501 a5≡251×26≡13 mod 501 a7≡251×120≡60 mod 501 a2≡251×3≡252 mod 501 a4≡251×13≡257 mod 501 a6≡251×65≡283 mod 501 a8≡251×250≡125 mod 501
网络工程学院
明文变化
由背包问题构造公钥密码体制同样是要构造一个单向函 数f,将x(1≤x≤2n-1)写成长为n的二元表示0…001,0…010, 0…011,…,1…111,f(x)定义为A中所有ai的和,其中x的二 元表示的第i位为1,即 f(1)=f(0…001)=an f(2)=f(0…010)=an-1 f(3)=f(0…011)=an-1+an … f(2n-1)=f(1…111)=a1+a2+…+an 使用向量乘,有f(x)=ABx,其中Bx是将x的二元表示写成 的列向量。 网络工程学院