当前位置: 首页 > 科技观察

加密算法中的密钥交换有点不安全

时间:2023-03-16 16:09:21 科技观察

今天我们就来说说对称加密算法中的密钥问题。如果您不熟悉密码学的基本概念,可以查看我之前的文章。看看第72号密码学。我们都知道对称密钥可以用来传输加密信息,过程是这样的。从上面的过程我们可以看出,如果发送方和接收方都拥有密钥KEY,那么就可以在不安全的通道下进行安全通信。目前比较流行的对称加密算法有AES、DES、3DES、TDEA、Blowfish、RC5、IDEA等算法。.那么问题来了,发送方和接收方都需要拥有相同的密钥,那么这个过程如何实现呢?现实中,我们可以这样做,把一把钥匙复印两份,然后装在一个信封里,进行面对面的交易。拿到信封后,回到家,锁上门,盖好被子,打开手电筒,偷偷看一眼钥匙,记在心里。几乎没有人能偷走它,对吧?理想的情况应该是这样的:但是在网络世界中,基本上一切都是不安全的,可能会有人乱来,比如一个叫F的人出来,中途截获了密钥,那么A和B之后的所有通信都会被监控。看,所有的信息都被破译了。此时A和B之间的key是否相同。那么该怎么办?这个时候,我们又要搬出伟大的数学了。今天我们介绍一种Diffie-Hellman密钥交换算法。该算法可以解决不安全通道中的安全密钥交换问题。它是如何实现的?.迪菲-赫尔曼密钥交换(Diffie-Hellmankeyexchange,简称“D-H”)是一种安全协议。它允许两方通过不安全的通道建立密钥,而无需来自另一方的任何事先信息。该密钥可以作为对称密钥在后续通信中对通信内容进行加密。主要思想是根据数学指数运算的规则进行局部计算(局部计算可以认为是安全的),同时使用模运算来减少传输数的值。算法的大致流程如下图所示。先确定一个公众号对(3和17)。这个数对绝对是质数,防止别人猜。其中,3作为幂计算的基数,17作为模数的值。(这两个概念不清楚的可以自行百度)交流过程分为3个部分。第1部分:A和B各自生成一个私钥。第2部分:A和B的幂运算,然后取模。第三部分:A和B对接收到的消息进行指数运算,然后计算模数得到最终的公钥。这样公号3、17、6、12都是完全公开的,但是如果没有钥匙的话,猜A和B的公钥是什么还是需要很多钱的。特别的,我们把3和17这两个公钥设置的非常非常大,然后A和B的私钥也设置的非常非常大,电脑短时间内是牢不可破的,甚至需要数百万年甚至更长的时间,所以我们说这个算法是安全的。那么,如何保证A和B运算后得到的数是一致的呢?我们可以这样看。A面:收到12=3^13mod17so3^12mod17=3^(13*12)mod17B面:收到6=3^15mod17so3^6mod17=3^(12*13)mod17根据指数运算的规律,我们可以知道3^6mod17=3^(12*13)mod17=3^(13*12)mod17是好的,不管最终计算否不管数字是多少,我们都可以保证A和B拥有的密钥是相同的值,之后所有的通信都将使用这个值进行加密和传输。这个方法虽然很棒,但是想想下面的过程,如果A要和5个人交流,那么A需要保存5个key,久而久之,A就会崩溃。..如果你不想这样做,你能做什么?关注以下密码学系列来回答这些问题。【本文为专栏作家“大脚”原创稿件,转载请通过作者微信公众号“一个叫大脚的程序员”获得授权】点此查看本作者更多好文