您现在的位置是:首页 >

为什么有的密码公开了加密方法仍然不泄密

火烧 2016-12-16 08:08:16 1055
把密码加密方法公诸于众却仍然可以起保密作用,这是不是天方夜谭?保密通信专家确实发明了一种“公开”加密密钥的密码体系,它是由狄菲和赫尔曼于1976年首先提出的。这种密码体系的基本思想是:每一个通信方都有一个加密密钥和一个解密密钥,加密密钥是公开的,而解密密钥

把密码加密方法公诸于众却仍然可以起保密作用,这是不是天方夜谭?保密通信专家确实发明了一种“公开”加密密钥的密码体系,它是由狄菲和赫尔曼于1976年首先提出的。这种密码体系的基本思想是:每一个通信方都有一个加密密钥和一个解密密钥,加密密钥是公开的,而解密密钥是严格保密的,只有他本人知道。

传统的密码学,如果加密密钥被第三者掌握,那么解密密钥随即也就知道了,而在公开密钥的密码体系中,加密密钥与解密密钥不相干,即使知道了加密密钥,也无法破译密文。

目前使用的公开密钥的密码体系有两种,一种叫背包式,一种叫RSA式。

背包式密码体系与数学中的“背包问题”有关。所谓“背包问题”是这样的:一个旅行者的背包容积为M,他有若干件物品,容积分别为a1,a2,…,an,背包容不下所有的物品,因此,他要从中挑选若干件装进背包,问怎样挑选,使背包装得无空隙?

一般的背包问题至今还没有找到完整的解法,但对于简单的类型还是不难求解的。例如,背包容积为14,物品容积a1=1,a2=3,a3=5,a4=10,a5=21,那么,我们可以挑出a1,a2,a4三件物品装进背包就可以了。如果所挑出的物品记为1,挑剩的物品记为0,那么依次可得11010,这个二进位制数也就是这个背包问题的解。

我们可以把11010看做一个明文,把其中的1和0依次与a1=1,a2=3,a3=5,a4=10,a5=21相乘,其和为14,这个过程可以看做加密,所得的结果14可以看做密文。如果第三者截得了密文14,也知道了a1,a2,…,a5这一组数值,很快可以求得11010这一个二进位制数(明文),因为这个简单的背包问题很容易求解。这种方式的编码也就没有什么价值。因此,密码专家在此基础上做了点手脚。譬如,对上面的a1,a2,…,a5中的每一个数都乘以7,再除以45,所得余数分别是b1=7,b2=21,b3=35,b4=25,b5=12。然后将明文11010中的每一位数字分别依次与b1,b2,…,b5相乘,再相加,即:

1×7+l×21+0×35+1×25+0×12=53,

所得的结果为53(密文)。第三者即使截获了密文53,也查到了a1,a2,…,a5,仍然难以求出明文11010,因为这是一个难解的一般背包问题。但收信人乙利用只有自己知道的7和45这两个数(解密密钥),却可以轻而易举地从a1,a2,…,a5求得b1,b2,…,b5,从而求出明文11010。

对于很大的整数,我们至今还没有一套方法能够将它们分解为质数的积。RSA体制正是利用这一点设计的。RSA体制的基本思想是:取两个质数(一般应该取很大的质数,譬如是六七十位的质数,这里为简便起见,取得很小),假定这两个质数是p=5,q=11。将它们相乘,得n=55。然后,算出l=(p-1)(q-1)=40。再取一个与l互质的数e,譬如e=7。n和e就可以作为加密密钥加以公开。

如果发信人甲,要将明文“3”告诉乙,那么,就可以利用乙的加密密钥n、e加密:求出3的e次幂,再除以n得到余数42。这个“42”就是密文。乙收到“42”之后,利用只有自己知道的解密密钥d=23解密:求出42的d次幂,再除以n,余数是3(明文)。如果第三者收到密文42,即使他查出乙的加密密钥n和e,也无法破译密码。因为解密时要用到d,而求d,必须将n分解为p与q的积,要知道n是几百位的大数,要将它分解谈何容易!所以,第三者也只能“望数兴叹”了。

预计大整数的分解问题几十年内还难以解决,所以RSA体制或许还可以通行一段时间。而背包体制却已变得越来越不安全。当然任何一种保密方法都只是相对而言的,随着科学技术的进步,旧的保密方法肯定会变得越来越不保密,因而也必然会有新的保密体制产生。

关键词:密码 加密 加密密钥 解密 解密密钥 背包问题

永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码