本文用于学习总结密码学基础知识。不是原创,我只是搬运工。主要参考文献:
https
密码学是研究编制密码和破译密码的技术科学。研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为破译学,总称密码学。
大约在公元前1900年(相当于古代中国的大禹时代),古埃及的一位石匠在主人的墓室石墙上刻下了一段象形文字,这段描述他的贵族主人一生事迹的文字,被西方密码专家认为是密码学的开端。
1949年,香农发表题为《保密系统的通信理论》的文章,发表在《贝尔实验室技术杂志》,为密码系统建立了理论基础,从此密码学成了一门科学。此前认为使用的密码体制为传统密码体制范畴。
密码学的英语单词是 Cryptograghy,是研究如何保护信息安全性的一门科学,组成分支分为编码学和密码分析学。
密码编码学主要研究对信息进行编码,实现信息的隐蔽。密码分析学主要研究加密消息的破译或消息的伪造。
明文:能直接代表原文含义的信息。用M(消息)或P(明文)表示,它可能是比特流(文本文件、位图、数字化的语音流或数字化的视频图像)。至于涉及到计算机,P是简单的二进制数据。明文可被传送或存储,无论在哪种情况,M指待加密的消息。
密文:经过加密处理之后,隐藏原文含义的信息。用C表示,它也是二进制数据,有时和M一样大,有时稍大(通过压缩和加密的结合,C有可能比P小些。然而,单单加密通常达不到这一点)。
加密算法:将明文转换成密文的实施过程。加密函数E作用于M得到C,用数学表示为E(M) = C.
解密算法:将密文转换成明文的实施过程。解密函数D作用于C产生M,用数学表示为D© = M。先加密后再解密消息,原始的明文将恢复出来,下面的等式必须成立:D(E(M)=M。
密钥:控制加密或解密过程的可变参数,分为加密密钥和解密密钥。用K表示。
分析方法:
攻击方法:
影响密码安全的主要因素:
如果算法的保密性是基于保持算法的秘密,这种算法称为受限制的算法。受限制的算法具有历史意义,但按现在的标准,它们的保密性已远远不够。大的或经常变换的用户组织不能使用它们,因为每有一个用户离开这个组织,其它的用户就必须改换另外不同的算法;如果有人无意暴露了这个秘密,所有人都必须改变他们的算法。
现代密码学用密钥解决了这个问题,所有这些算法的安全性都基于密钥的安全性。
任何密码系统的应用都需要在安全性和运行效率之间做出平衡,密码算法只要达到计算安全要求就具备了实用条件,并不需要实现理论上的绝对安全。1945年美国数学家克劳德·E·香农在其发布的《密码学的数学原理》中,严谨地证明了一次性密码本或者称为“弗纳姆密码”(Vernam)具有无条件安全性。但这种绝对安全的加密方式在实际操作中需要消耗大量资源,不具备大规模使用的可行性。事实上,当前得到广泛应用的密码系统都只具有计算安全性。
以时间划分,1976 年以前的密码算法都属于古典密码学,基本使用在军事机密和外交领域,它的特点就是加解密过程简单,一般用手工或机械就可以完成。
又称换位密码,加密过程中明文的字母保持相同,但是顺序被打乱。只要把位置恢复,就能得到明文。
公元前 500 年的古希腊斯巴达邦城,存在一种叫做棍子加密(也叫“塞塔式密码”)的加密方法。找一个腰带,将信息横着写在腰带上,但是这个信息是完全打乱的,需要一个可以解密的棍子,将腰带缠绕在棍子上,就可以恢复出明文。这也是最简单的置换密码的方式。
分类:
列置换密码:将明文字符P以固定的分组宽度m按行写出,构成m x n的矩阵[M]mxn,不够的按双方约定的字符补充,比如空格字符。然后通过某一交换列的位置次序的到矩阵[Mp]mxn,最后输出举证[Mp]mxn,即得到密文。
周期置换密码:周期置换密码是将明文p串按固定长度m分组.然后对每组中的子串按1,2…,m的某个置换重新排列位置从而得到密文,其中密钥σ包含分组长度信息。解密时同样对密文c按长度m分组,并按σ的逆置换σ-1把每组子串重新排列位置从而得到明文p。
明文中的每一个字符被替换成密文中的另一个字符。接收者对密文做反向替换就可以恢复明文。
乘法密码是简单代替密码的一种。它需要预先知道消息元素的个数,加密的过程其实是相当于对明文消息所组成的数组下标进行加密,然后用明文消息中加密后位置所对应的明文字符代替。
单表代换密码就很容易被破解,只要用频率分析表就可以破解(唯密文攻击),这是根据人类自然语言中,字母出现的频率不同来进行破解的。也相对应的出现防止破解的方法。
1854年由查尔斯·惠斯通(Charles Wheatstone)的英国人发明。
原理:是一种使用一个关键词方格来加密字符对的加密法,它依据一个5*5的正方形组成的密码表来编写,密码表里排列有25个字母。如果一种语言字母超过25个,可以去掉使用频率最少的一个。如,法语一般去掉w或k,德语则是把i和j合起来当成一个字母看待。英语中z使用最少,可以去掉它。
破译:它使用方便而且可以让频度分析法变成瞎子,在1854到1855年的克里米亚战争和1899年的布尔战争中有广泛应用。但在1915年的一战中被破译了。
该方法最早记录在吉奥万·巴蒂斯塔·贝拉索( Giovan Battista Bellaso)于1553年所著的书《吉奥万·巴蒂斯塔·贝拉索先生的密码》。1856年由法国密码学家 Blaise de Vigenere发明。
原理:Vigenere密码使用一个字符串作为密钥,字符串中的每一个字符都作为移位替换密码的密钥并确定一个替换表(即确定了使用多表中的哪个表)。
设密钥K=k1k2…kd,明文与密文表中均包含n个字母,明文 M=m1m2…,密文 C=c1c2…
则加密 Ci=(mi+ki)mod n
解密 Mi=(ci - ki+n)%n
在通常的Vigenere密码中,替换表由26个英文字母组成,为周期循环。若看成一维表,由于共26个字母,每个字母可做一个i 指定一个替换表,即共26个替换表。即本总密文表长度为26X26
Vigenere密码的26个密码表,每个表相对前一个表发生一次左移。若看成二维表,则可能更容易对比。左侧的a-z为密钥,上方的为明文, 由此(i,j)确定下此环境时的相应密文。
破译:维吉尼亚密码的关键在于它的密钥是循环重复的。如果我们知道了密钥的长度,那密文就可以被看作是交织在一起的凯撒密码,而其中每一个都可以单独破解。
由弗朗西斯·蒲福(Francis Beaufort)发明。它最知名的应用是哈格林M-209密码机。博福特密码属于对等加密,即加密算法与解密算法相同。
原理:博福特密码是按mod q减法运算的一种周期代替密码,
希尔密码由Lester S. Hill于1929年在《American Mathematical Monthly》杂志上首次提出。
原理:是运用基本矩阵论原理的替换密码。基本思想是,将d个明文字母通过线性变换将它们转换为d个密文字母。每个字母当作26进制数字:A=0, B=1, C=2… 一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果模26。解密只要作一次逆变换就可以了,密钥就是变换矩阵本身。
特点:抵抗频率分析攻击能力最强,而对已知明文攻击最弱。
破译:希尔密码算法的缺点在于线性变换的安全性很脆弱,易被攻击击破。容易受到已知明文攻击,因为它是完全线性的代数,因此会受到密钥的攻击。
恩尼格玛是对二战时期纳粹德国使用的一系列相似的转子机械加解密机器的统称,它包括了许多不同的型号,为密码学对称加密算法的流加密。多表代换。
原理:使用“恩尼格玛”通讯时,发信人首先要调节三个转子的方向(而这个转子的初始方向就是密匙,是收发双方必须预先约定好的),然后依次键入明文,并把显示器上灯泡闪亮的字母依次记下来,最后把记录下的闪亮字母按照顺序用正常的电报方式发送出去。收信方收到电文后,只要也使用一台“恩尼格玛”,按照原来的约定,把转子的方向调整到和发信方相同的初始方向上,然后依次键入收到的密文,显示器上自动闪亮的字母就是明文了。加密和解密的过程完全一样,这就是反射器的作用,同时反射器的一个副作用就是一个字母永远也不会被加密成它自己,因为反射器中一个字母总是被连接到另一个不同的字母。
安全性分析:“恩尼格玛”有三个转子(二战后期德国海军使用的“恩尼格玛”甚至有四个转子!)。“恩尼格玛”密码机的三个转子是可以拆卸下来并互相交换位置,这样一来初始方向的可能性一下就增加了六倍。“恩尼格玛”还有一道保障安全的关卡,在键盘和第一个转子之间有块连接板。通过这块连接板可以用一根连线把某个字母和另一个字母连接起来,这样这个字母的信号在进入转子之前就会转变为另一个字母的信号。这种连线最多可以有六根(后期的“恩尼格玛”甚至达到十根连线),这样就可以使6对字母的信号两两互换,其他没有插上连线的字母则保持不变。——当然连接板上的连线状况也是收发双方预先约定好的。
三个转子不同的方向组成了26x26x26=17576种可能性;三个转子间不同的相对位置为6种可能性;连接板上两两交换6对字母的可能性则是异常庞大,有100,391,791,500种;于是一共有17576x6x100,391,791,500,大约为10,000,000,000,000,000!即一亿亿种可能性!
破译:1932年,波兰密码学家马里安·雷耶夫斯基、杰尔兹·罗佐基和亨里克·佐加尔斯基根据恩尼格玛机的原理破译了它。
原理:其加密密钥和解密密钥相同,或实质上等同,即从一个易于推出另一个。它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的加密和解密表示为 EK(M)=C,DK©=M。
优点:保密性高,加密速度快,适合加密大量数据,易于通过硬件实现。
缺点:秘钥必须通过安全可靠的途径传输,秘钥的分发是保证安全的关键因素。
分类:一次只对明文中的单个比特(有时对字节)运算的算法称为序列算法或序列密码。另一类算法是对明文的一组比特亚行运算,这些比特组称为分组,相应的算法称为分组算法或分组密码。
现代计算机密码算法的典型分组长度为64比特——这个长度大到足以防止分析破译,但又小到足以方便使用(在计算机出现前,算法普遍地每次只对明文的一个字符运算,可认为是序列密码对字符序列的运算)。
原理:Stream Cipher,序列密码是一个随时间变化的加密变换。每次加密一位或一字节的明文,通过伪随机数发生器产生性能优良的伪随机序列(密钥流),用该序列加密明文消息序列,得到密文序列,解密过程也一样。序列密码的安全性能主要取决于密钥流或者密钥流产生器的特性。
优点:转换速度快、低错误传播,硬件实现电路更简单;
缺点:低扩散(意味着混乱不够)、插入及修改的不敏感性。密钥长度与明文长度一致,如果需要加密20M的明文,那么就需要20M的密文。序列密码容易被篡改。如果密钥流发生器每次都生成同样的密钥流的话,就很容易被破译。
分类:
1949年Shannon证明了只有一次一密的密码体制是绝对安全的,这给序列密码技术的研究以强大的支持,序列密码方案的发展是模仿一次一密系统的尝试,或者说“一次一密”的密码方案是序列密码的雏形。**如果序列密码所使用的是真正随机方式的、与消息流长度相同的密钥流,则此时的序列密码就是一次一密的密码体制。**序列密码涉及到大量的理论知识,提出了众多的设计原理,也得到了广泛的分析,但许多研究成果并没有完全公开,这也许是因为序列密码目前主要应用于军事和外交等机密部门的缘故。
示例:
它的加密方式是将明文和密钥进行异或运算,如:明文a,ASCLL码为97,二进制码为0110 0001;密钥为B,ASCLL码为66,二进制码为0100 0010,然后再按位异或:
这样得到的密文为0010 0011,对应的ascll为35,即“#”。
当我们拿到密文“#”以及密钥“B”以后,我们同样按照转换为ASCLL码,按位异或的方式,获得明文:
这样,我们获得了“0110 0001”,转换为十进制为97,对应ASCLL表,得到了字符“a”。
明文、密文和密钥序列都是由单独的位组成,即Xi,Yi,Si ∈{0,1}
加密:Yi = (Xi + Si) mod 2
解密:Xi = (Yi + Si) mod 2
原理:种子密钥k经过由安全信道传送给收、发双方后,由密钥流产生器生成加密和解密所需要的密钥流,而加、解密本身就是简单的模2加法运算。
特点:
原理:与同步序列密码需要收、发双方严格同步不同,自同步序列密码能够依靠自身的能力“自动地”实现收、发双方的同步,因而是一种不需要外部同步的序列密码系统
特点:
原理:分组密码使用的是一个不随时间变化的固定变换。将明文分为固定长度的组,用同一秘钥和算法对每一块加密,输出也是固定长度的密文,解密过程也一样。对于当前的许多分组密码,分组大小是 64 位,但这很可能会增加。
优点:扩散性好、插入敏感,不需要密钥同步,较强的适用性,适合作为加密标准。
缺点:加解密处理速度慢、存在错误传播。
分类:
电子编码本:Electronic Code Book,ECB, 一个明文分组加密成一个密文分组;可以使某些攻击更难以实施。 最大的缺点是同样的明文块会被加密成相同的密文块,不能很好地保证数据的机密性。
密码分组链接:Cipher-block chaining,CBC,每个明文块先与前一个密文块进行异或后,再进行加密。 为了保证每条消息的唯一性,在第一个块中需要使用初始化向量(IV)。CBC 受到广泛使用,例如在 DES(qv)实现中,而且在有关密码术的技术性方面的相应书籍中深入讨论了各种方式。主要缺点在于加密过程是串行的,无法被并行化,而且消息必须被填充到块大小的整数倍。在加密时,明文中的微小改变会导致其后的全部密文块发生改变。而解密时,密文中一位的改变只会导致其对应的明文块完全改变和下一个明文块中对应位发生改变,不会影响到其它明文的内容。解密过程可以被并行化。
密码反馈:Ciphertext feedback,CFB,前一个密文分组会被送回到密码算法的加密端,加密后与明文异或得到密文。第一个密文分组,不存在前一个输出的数据,所以需要初始向量化(IV)来代替。CFB的解密算法中依然执行的是加密操作,因为密钥流是通过加密操作实现的。
定义:Data Encryption Standard,即数据加密标准。1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。
原理:入口参数有三个Key、Data、Mode。其中Key为7个字节共56位(64位,第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)),是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。
步骤:
攻击方法:在已经知道明文和对应密文的情况下,通过穷举和暴力破解是可以破解DES的。对DES的三种主要攻击方法包括强力攻击、差分密码分析、线性密码分析。
定义:Triple DES,是DES向AES过渡的加密算法,它使用3条56位的密钥对数据进行三次加密。是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。
原理:使用两个密钥,执行三次DES算法,加密的过程是加密-解密-加密,解密的过程是解密-加密-解密。
3DES加密过程为:C=Ek3(Dk2(Ek1§))
3DES解密过程为:P=Dk1(EK2(Dk3©))
优点:
定义:是上海交通大学教授来学嘉与瑞士学者James Massey联合提出的。它在1990年正式公布并在以后得到增强。这种算法是在DES算法的基础上发展出来的,类似于三重DES。发展IDEA也是因为感到DES具有密钥太短等缺点。IDEA使用长度为128bit的密钥,数据块大小为64bit。IDEA属于“强”加密算法,至今还没有出现对该算法的有效攻击算法。
算法:它设计了一系列加密轮次,每轮加密都使用从完整的加密密钥中生成的一个子密钥。与DES的不同处在于,它采用软件实现和采用硬件实现同样快速。
密钥扩展:在加密之前,IDEA通过密钥扩展(Key Expansion)将128bit的密钥扩展为52个加密密钥EK(Encryption Key),然后由EK计算出解密密钥DK(Decryption Key)。EK和DK分为8组半密钥,每组长度为6Byte,前8组密钥用于8圈加密,最后半组密钥(4Byte)用于输出变换。IDEA的加密过程和解密过程是一样的,只不过使用不同的密钥(加密时用EK,解密时用DK)。
定义:Advanced Encryption Standard,高级加密标准。用来替代原先的DES,已经被多方分析且广为全世界所使用。该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,因此又称Rijndael加密法。由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。(严格地说,AES和Rijndael加密法并不完全一样,虽然在实际应用中二者可以互换,因为AES的区块长度固定为128位,密钥长度则可以是128,192或256位;而Rijndael使用的密钥和区块长度可以是32位的整数倍,以128位为下限,256位为上限。)
原理:使用的是置换-组合架构,在软件及硬件上都能快速地加解密,相对来说较易于实现,且只需要很少的存储器。AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“体(state)”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。
步骤:加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤。
AddRoundKey:—矩阵中的每一个字节都与该次回合密钥(round key)做XOR运算;在每次的加密循环中,都会由主密钥产生一把回合密钥(通过Rijndael密钥生成方案产生),该密钥大小会跟原矩阵一样。
SubBytes:矩阵中的各字节通过一个8位的S-box进行转换。这个步骤提供了加密法非线性的变换能力。 为了避免简单代数性质的攻击,S-box结合了乘法反元素及一个可逆的仿射变换矩阵建构而成。此外在建构S-box时,刻意避开了固定点与反固定点,即以S-box替换字节的结果会相当于错排的结果。
ShiftRows:将矩阵中的每个横列进行循环式移位。Rijndael算法的版本中,对于长度256比特的区块,第一行仍然维持不变,第二行、第三行、第四行的偏移量分别是1字节、3字节、4位组。AES偏移量是1、2、3。
MixColumns:为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每内联的四个字节。最后一个加密循环中省略MixColumns步骤,而以另一个AddRoundKey取代。
攻击方法:旁路攻击(又称旁道攻击、侧信道攻击)。旁道攻击不攻击密码本身,而是攻击那些实现于不安全系统(会在不经意间泄漏信息)上的加密系统。2005年4月,D.J. Bernstein公布了一种缓存时序攻击法,他以此破解了一个装载OpenSSL AES加密系统的客户服务器。为了设计使该服务器公布所有的时序信息,攻击算法使用了2亿多条筛选过的明码。
2005年10月,Eran Tromer和另外两个研究员发表了一篇论文,展示了数种针对AES的缓存时序攻击法[8]。
定义:其加密密钥和解密密钥不同,两个密钥在数学上相关,从一个很难推出另一个。其中的加密密钥可以公开,称为公开密钥,简称公钥(public key);解密密钥必须保密,称为私有密钥,简称私钥(private key)。
优点:密钥交换可通过公开信道进行,无需保密,既可用于加密也可用于签名。由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加密密钥的分发将变得 十分简单。非对称密码体制不但赋予了通信的保密性,还提供了消息的认证性,无需实现交换秘钥就可通过不安全信道安全地传递信息,简化了密钥管理的工作量,适应了通信网的需要,为保密学技术应用于商业领域开辟了广阔的前景。
缺点:加密速度不如对称密码,不适合大量数据加密,加密操作难以通过硬件实现。
起源:DH 密钥交换协议是在 1976 年 Diffie 和 Hellman 提出的《密码学新方向》中提出的协议,它主要解决的是密钥分发问题,是公钥密码学的开端,它的安全性是基于计算 Diffie-Hellman 问题的难解性。数学基础是费马小定理。
原理:甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反,使用乙方的公钥对数据进行加密,同理,乙方使用自己的私钥来进行解密。另一方面,甲方可以使用自己的私钥对机密信息进行签名后再发送给乙方;乙方再用甲方的公钥对甲方发送回来的数据进行验签。甲方只能用其私钥解密由其公钥加密后的任何信息。
分类:根据其所依据的难题一般分为,大素数分解问题类(IFP)、离散对数问题类(ECDLP)、椭圆曲线类。有时也把椭圆曲线类归为离散对数类。
非对称密码比对称密码更安全?任何一种算法的安全都依赖于秘钥的长度、破译密码的工作量,从抗分析的角度看,没有哪一方更优越。
非对称密码使对称密码成为过时技术?公钥算法很慢,一般用于密钥管理和数字签名,对称密码将长期存在,实际工程中采用对称密码与非对称密码相结合。
起源:RSA 算法是第一个公钥密码算法,也是第一个数字签名算法。它被提出的时间最早,关于它的研究最为广泛,因此也是理论上最成熟的密码学算法。在1977年被麻省理工学院的罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)三位科学家提出,由于难于破解,RSA 是目前应用最广泛的数字加密和签名技术,比如国内的支付宝就是通过RSA算法来进行签名验证。
原理:它的安全程度取决于秘钥的长度,目前主流可选秘钥长度为 1024位、2048位、4096位等。具有乘法同态性,也可以称为第一个乘法同态特性的算法。
密钥生成与加解密步骤:
破解:如果n可以被因数分解,d就可以算出,也就意味着私钥被破解。对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。目前被破解的最长RSA密钥是768个二进制位。RSA在选择密码攻击面前显得很脆弱。
演进:
定义:Elliptic curve cryptography,椭圆曲线密码学。椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。ECC被公认为在给定密钥长度下最安全的加密算法。比特币中的公私钥生成以及签名算法ECDSA都是基于ECC的。
优点:在某些情况下它比其他的方法使用更小的密钥——比如RSA加密算法——提供相当的或更高等级的安全(有研究表示160位的椭圆密钥与1024位的RSA密钥安全性相同);可以定义群之间的双线性映射,基于Weil对或是Tate对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。在私钥的加密解密速度上,ecc算法比RSA、DSA速度更快。存储空间占用小。带宽要求低。
缺点:加密和解密操作的实现比其他机制花费的时间长。
原理:椭圆曲线上的点P和Q。过P和Q做一条直线,交椭圆曲线为点R’,再过R’点做垂直于X轴的直线,交曲线另一点为R,定义P + Q = R。若P=Q,则为过P点的切线交于椭圆曲线为R’。类似的3P=P+P+P=P+2P=P+R。也就是说,当给定基点G时,“已知数x求点xG的运算”不难,因为有加法的性质,运算起来可以比较快。但反过来,“已知点xG求x的问题”则非常困难,因为只能遍历每一个x做运算。这就是椭圆曲线密码中所利用的“椭圆曲线上的离散对数问题”。给定椭圆曲线E,基点G和点xG,我们称xG为公钥,x值为私钥。
破解:目前由椭圆曲线公钥求解私钥的最有效算法复杂度为O(根号p),其中p是阶数n的最大素因子。
1977年,Merkle与Hellman合作设计了使用背包算法,该算法提出后密码学界提出了很多背包型加密算法。是目前国际公认的较理想公钥密码体制,是目前网络上进行保密通信和数字签名的较为有效的算法。
原理:假定甲想加密,则先产生一个较易求解的背包问题,并用它的解作为专用密钥;然后从这个问题出发,生成另一个难解的背包问题,并作为公共密钥。如果乙想向甲发送报文,乙就可以使用难解的背包问题对报文进行加密,由于这个问题十分难解,所以一般没有人能够破译密文;甲收到密文后,可以使用易解的专用密钥解密。背包加密分为加法背包和乘法背包。
破译:1982年就找到了攻破它的方法。利用孤立点破解;利用背包破解。
它在1985年由塔希尔·盖莫尔提出.
原理:基于Diffie-Hellman迪菲-赫尔曼密钥交换的非对称加密算法。既能用于数据加密也能用于数字签名,其安全性依赖于计算有限域上离散对数这一难题。它所根据的原理是:求解离散对数是困难的,而其逆运算可以应用平方乘的方法有效的计算出来。在使用EIGamal加密算法时,模运算是实现公钥密码加解密运算速度的关键。
安全性分析:ElGamal加密体制具有选择明文攻击下的不可区分性(IND-CPA),当且仅当计算Diffie-Hellman问题是困难的
于1978年提出,Robert J.McEliece是美国加州理工大学院电子工程系的知名教授。
原理:使用了一系列纠错代码Goppa,安全性基于纠错码问题(安全性基于一般译码问题的NP困难性)。是一种基于一个二进制线性码寻找最近码字的困难性的密码体制。
特点:安全性强,但计算效率低。
破解:随着量子计算机发展,该密钥体制可以被破解(2008年某学者提出相应的算法)。
Number Theory Research Unit。1996年由美国布朗大学三位数学教授学家Jeffrey Hoffstein,Jill Pipher,和Joseph H. Silverman发明的公开秘密体制。NTRU成为当前公钥体制研究的一个热点。NTRU是一个带有专利保护的开源公开密钥加密系统.
原理:它的安全性依赖于格中最短向量问题(SVP)。使用基于格的加密算法来加密数据。它包括两部分算法,NTRUEncrypt用来加密,NTRUSign用来进行数字签名。与其他流行的公钥加密系统不同,它可以防止被Shor算法破解,并显著提升了性能。NTRU算法具有抵抗量子计算攻击的能力,而RSA和ECC算法是无法抵抗量子计算的。
优点:在同等加密强度下,NTRU执行大开销的私钥操作比RSA算法快得多。RSA算法的私钥操作耗时与密钥长度呈三次方关系,而NTRU相应操作为二次方关系。抗量子计算攻击。
第一个基于格的密码体制是 1997 年提出的 Ajtai-Dwork 密码体制. 该体制的安全性基于 Ajtai的average-case 到 worst-case 的归约 .
2005年–2016年,第二代格密码出现并逐步完善,并实用化格密码算法 (Regev05, GPV08,MP12 BLISS ,NewHope, Frodo)。
2016年以后,格密码逐步得以标准化。
优点:格密码是一类备受关注的抗量子计算攻击的公钥密码体制。
最近向量问题是格上的困难问题