今天,我们来谈谈对称加密算法中的密钥。如果你不熟悉密码学的基本概念,你可以复习我的最后一篇文章。看看密码学No.72。
我们都知道,对称密钥可以用来传输加密信息。
从以上过程可以看出,如果传送者和接收者都有密钥 KEY ,然后可以在不安全的信道下安全通信。目前流行的对称加密算法有 AES、DES、3DES、TDEA、Blowfish、RC5、IDEA等算法。。
所以问题是,传输者和接受者都需要有相同的钥匙,那么如何实现这个过程呢?事实上,我们可以这样做,做两个钥匙,然后把它放在信封里面对面交易。拿到信封后,我们回家锁上门,盖上被子,打开手电筒,偷偷地看着钥匙,然后把它记在脑海里,这样几乎没有人能偷,对吧?
理想的情况应该是这样的:
但在 *** 世界里,基本上一切都是不安全的,可能会有坏人,比如一个叫做F中途截获密钥的人,那么A和B所有所有的交流都会被监控。
你看,所有的消息都被破译了。A 跟 B 之间的密钥和不一样。
那到底该怎么办呢?这时,我们又要搬出伟大的数学了。今天,我们将介绍一种算法 迪菲-赫尔曼密钥交换,该算法可以解决不安全信道下的安全密钥交换问题。
迪菲-赫尔曼密钥交换(Diffie–Hellman key exchange,简称“D–H”) 是一种安全协议。它允许双方在没有任何事先信息的情况下通过不安全信道建立密钥。该密钥可以在后续通信中作为对称密钥加密通信内容。
主要思路是根据数学指数运算法进行本地计算(本地计算可视为安全),并使用模具运算降低传输值。算法的一般过程如下图所示。
首先确定公共数对 (3 和 17)***都是质数,防止别人猜测,其中3是幂计算的底数,17是求模值。(百度去这两个概念不清楚)
交换过程分为 3 part 。
第 1 part :A 和 B 各自生成私钥。
第 2 part :A 和 B 计算指数,然后求模。
第 3 part :A 和 B 对接收到的信息进行指数操作,然后求模,获得最终的公共对称密钥。
这样, 3、17、6、12 的公共数量就完全公开了,但如果没有密钥,你想猜到 A 和 B 的公共密钥是什么是要花很多钱的,尤其是我们把 3和17 的公共数设置得非常非常大,然后 A 和 B 的私钥也设置得非常非常大,这在短期内是不可破解的,甚至需要数百万年或更长时间,所以我们说这个算法是安全的。
那么,如何保证 A 和 B 计算后得到的数量是一致的?
我们可以这样看。
A 端:
接收 12 = 3^13 mod 17
所以 3 ^ 12 mod 17 = 3 ^ (13 * 12) mod 17
B 端:
接收 6 = 3^15 mod 17
所以 3 ^ 6 mod 17 = 3 ^ (12 * 13) mod 17
根据指数运算的规律,我们可以知道
3 ^ 6 mod 17 = 3 ^ (12 * 13) mod 17 = 3 ^ (13 * 12) mod 17
好吧,不管最终计算的数字是什么,我们都能保证 A 和 B 拥有的密钥是相同的值,然后所有后续通信都使用该值加密并传输。
虽然这个 *** 很棒,但如果 A 要和 5 个人沟通,那么 A 要保存 5 密钥,久而久之,A会崩溃的。。。
如果你不想这样做,你能做什么?关注以下密码系列,您可以回答这些问题。
【本文为51CTO专栏作者“大蕉”请通过作者微信微信官方账号转载原稿。“程序员叫大蕉”获取授权】
戳这里,看作者更好的文章
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。