7.2背包公钥加密算法
1、R.Merkle和M.Hellman在1978年根據(jù)組合數(shù)學(xué)中背包問題提出了
第一個公鑰密碼算法。又稱為MH背包算法。
2、背包問題
設(shè)有一堆物品,體積各不相同,問能否從這堆物品中找出幾個正好裝滿一個給定容量的背包?
3、理論上講,通過檢查背包向量V的所有子集,計算出每個子集的元素之和,總可找出一個子集作為背包問題的解,因此背包問題又稱為子集合問題。
當(dāng)背包的長度n過大時,堆全部子集進行窮舉式搜索是不可能的
有一類特殊的背包問題是容易求解的
超遞增背包問題
4、背包算法的描述
背包密碼密鑰對產(chǎn)生的具體過程:
5、加密變換:
1)將二進制明文消息劃分成長度與非超遞增向量U長度相等的明文分組b1b2…bn
2)計算明文分組向量B=(b1,b2,.。。。,bn)與非超遞增向量
U=(u1,u2,。。。,un)的內(nèi)積B。U=b1u1+b2u2+…+bnun
所得結(jié)果為密文
6、解密變換
1)先還原出超遞增背包向量V=t的-1次方Umod k =t的-1次方tV mod k
2)再將密文BX(點乘)U模k乘以t的-1次方的結(jié)果作為超遞增背包問題的背包容量,求解超遞增背包問題,得到消息明文。
7、背包算法的安全性
背包算法利用難解的一般背包問題作為公開密鑰,對明文進行加密
私有密鑰則利用易解的超遞增背包問題給出了一個解密的簡單方法
8、背包算法破解
基本思想:
找出一對任意的k‘和t’,使得用公開的背包向量U模k‘乘t’后得到一個超遞增向量
WHY?
MH背包體制公開密鑰是由超遞增向量變換而來,雖經(jīng)過模乘置亂,但超遞增向量內(nèi)在的規(guī)律并不能完全被隱藏,給攻擊者留下可乘之機
9、背包算法是第一個使公鑰密碼體制成為現(xiàn)實的密碼算法,他說明了如何將數(shù)學(xué)難題應(yīng)用于公鑰密碼算法的設(shè)計
優(yōu)點:加解密速度很快
缺點:不安全性
總結(jié)
以上是生活随笔為你收集整理的7.2背包公钥加密算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux(11)-Ubuntu装系统
- 下一篇: flask html 模板继承,Flas