背包的变体是什么?

很复杂,但我无论如何也看不懂。

南非共和国(Republic of South Africa)

1977年,也就是Diffie-Hellman的论文发表一年后,麻省理工学院的三名研究人员基于这一思想开发了一种实用的方法。这就是RSA,它是以三个开发者的首字母命名的——罗恩·里维斯特、阿迪·萨莫尔和伦纳德·阿德尔曼,RSA可能是应用最广泛的公钥密码系统。1983在美国为RSA申请了专利,它被正式采用为标准。虽然它的出口至今仍受限制,但它已被广泛用于实现美国以外的地方发展。

与其他此类系统一样,RSA使用大素数来构造密钥对。每个密钥对* * *享有两个素数的乘积,即模数,但每个密钥对也有特定的指数。RSA实验室对RSA密码系统的原理解释如下:

“用两个大素数P和Q,计算它们的乘积n = pq;n是模数。选一个比n小的数E,它与(p-1)(q-1)是素数,即除了1,E和(p-1)没有其他公因数。求另一个数d使得(ed-1)能被(p-1)(q-1)整除。值e和d分别称为公共指数和私有指数。公钥就是这个对数(n,e);私钥就是这个对数(n,d)。”

知道了公钥就能得到得到私钥的方法,但是要靠把模因子分解成它的素数。这很难,通过选择一个足够长的键,基本上可以做到。需要考虑的是模块的长度;目前RSA实验室建议普通公司使用的密钥大小应该是1024位,对于极其重要的资料,则加倍大小,即2048位。对于日常使用来说,768位的密钥长度就足够了,因为使用当前的技术无法轻易破解。保护数据的成本总是需要结合数据的价值以及破坏保护的成本是否过高来考虑。RSA实验室提到了最近关于RSA密钥长度安全的研究,该研究基于1995中可用的因式分解技术。这项研究表明,用八个月的努力和不到一百万美元,分解512位的密钥是可能的。事实上,在1999中,作为传统RSA安全挑战的一部分,分解一个特定的RSA 512数字(称为RSA-155)需要七个月的时间。

请记住:对于所提供的安全范围,这里给出的所有数字都是平均值,有时更快地识别特定的私钥也很重要。同样,所提供的安全性假设是基于素数的因式分解,这是非常困难的。如果发现一种新的数学技术可以让因式分解变得简单,这种假设就会改变,然后RSA和类似算法提供的安全性可能会立刻变得一文不值。

另外请注意,增加密钥长度会影响加密/解密的速度,所以有一个权衡。模数翻倍会使使用公钥的运算时间增加4倍左右,而使用私钥加密/解密所需的时间会增加8倍。此外,当模数加倍时,生成密钥的时间将平均增加到16倍。如果计算能力继续快速提升,而事实上非对称密码通常用于短文本,这在实际应用中不是问题。

其他非对称密码系统

以其开发者命名的ElGamal系统基于离散对数问题,具有加密和签名变体,而数字签名算法(DSA)部分基于ElGamal。该系统看起来像RSA一样安全,但它通常较慢,加密期间扩展消息所需的时间是RSA的两倍。这些限制不影响该算法在签名中的使用。

其他系统包括1978年首次发表的Merkle-Hellman背包密码系统,1984年首次发表的Chor-里维斯特密码系统及其1988年的修订版。此外,澳洲和新西兰也发展了LUC公开密码匙系统。McEliece公钥加密算法基于代数编码理论,使用一类称为Goppa码的纠错码。这些代码提供了快速解码,但使用的密钥大小约为半万亿,并且消息文本在加密过程中也大大扩展了。

20世纪80年代中期提出了一种更先进的公钥密码系统,称为椭圆曲线密码系统,现在已经引起了人们的兴趣。这些系统基于代数几何中的数值理论和数学构造,并且通常定义在有限域上。虽然这些方案使用短的密钥长度,但是它们似乎可以提供与现有系统类似的安全性,并且一些方案在移动计算或基于智能卡的系统中可能特别有用。RSA实验室提出,密钥长度为160比特的椭圆曲线密码系统可以提供与密钥长度为1024比特的RSA几乎相同的安全性。但问题是,椭圆曲线密码体制对于一些尚未充分发展的特殊攻击可能是脆弱的。