开始先问个问题:对称加密和非对称加密的对称指的是什么? 答案请看第四节
接着第二节继续来,现在有个黑客,他监视了Alice和Bob公钥交换的全过程并且想拿到这个共享秘钥K,因为 XA,XB是私有的,只对Alice和Bob自己知道,黑客并不知道,所有黑客看到的过程里只有 q, α, YA,YB, 也就是hacker只能通过这些信息来推算K,要想知道K, hacker必须通过离散对数计算,对于大素数求其离散对数是极其困难的,所以黑客没招!!
总之一句话: 本算法的安全性是建立在:求 素数的模 素数幂运算 相对容易,但计算离散对数很难.
上面说了那么多,下面举个简单例子:
q=353, α=3, XA=97,XB=233, 求对应的公钥?
这题求公钥还是非常简单的,YA= α^XA mod q = 3 ^ 97 mod 353=
YB =α^ XB mod q = 3^ 233 mod 353=
上面两个式子怎么解? 用什么定理解呢?
YA=3 ^ 97 mod 353
3^2≡9 mod 353
3^4≡ 81 mod 353
3^8≡ 81*81 ≡207 mod 353
3^16≡ 207*207≡136 mod 353
3^32≡ 236*236≡ 140 mod 353
3^64≡ 140*140≡ 19600≡ 185 mod 353
so then YA= 3^97 = 3^(64+32+1)≡185*140*3 mod 353≡ 40
同理求出 YB=248
这里想问一下: 上面计算过程用的什么定理?没错,是中国剩余定理(the Chinese Remainder Theorem- CRT)
现在他们各自的公钥都解出来了,接下来是交换公钥,各自拿到对方的公钥之后再计算出共享秘钥,
Alice拿到YB后计算: K=(YB)^XA mod 353= 248^97 mod 353 = 160
Bob拿到YA后计算:K=(YA)^XB mod 353=40^233 mod 353= 160
同样,上面两个计算也用CRT求解即可,
现在,我们黑客能获得 q:353, α=3, YA=40, YB=248
这个例子里我们用的数值都比较小,所有hacker想破解K的方法是什么?
即,K= YB^ XA mod 353= YA^ XB mod 353
这个等式里的未知数是XA,XB
只要知道其中一个就能立即知道共享秘钥,
但恰巧的是hacker可以通过 YA=α^XA mod 353=40 反解出 XA,也就是用穷举攻击求离散对数,
但真实情况下数值是很大的,不可行
综上,Diffine-Hellman秘钥交换算法被破解目前还是不可能的!