对称加密与非对称加密的对称指的是什么?
对称加密就是用一个秘钥加密和解密,非对称加密就是加密、解密用的不同秘钥
这节要讲的是Diffine-Hellman秘钥交换协议,看看这个算法遵循什么协议机制,
之前我们讲的是怎么生成各自的公钥、怎么交换各自的公钥、怎么生成共享秘钥,
到目前还没谈到加密明文的内容,只是对秘钥大作文章,其实用户可以自己选择q和α,
并将q和α放入第一条消息,之前我们讲的变量XA,XB代表的是用户自己的私钥,YA,YB代表的是公钥,
第三节里面说到 Alice可以获得 共享秘钥 K= (YB)^XA mod q , Alice可以计算出这个K, 因为对于Alice而言
这个公式里的变量都是已知的,那么Alice可以计算出 Bob的 私钥XB么?
当然,Alice可以通过 K=(YA)^XB mod q这个公式, K已经知道了,求出XB即可,但由于求大素数的对数很困难,所有很难真的求解出
从全局来看,通信的双方都知道对方的各自私密信息,也就是双方是公开化的.
Key exchange protocol
1. Users could create random private/public DH keys each time they communicate
2. Users could create a known private /public DH key and publish in a directory, then used to securely communicate with them
Both of these are vulnerable to a man-in-the-middle attack
Authentication of the keys is nedded
中间人攻击
其实我们上面提到的Alice和 Bob的通信协议过程也是有弱点的,就是不能抵抗所谓的中间人攻击,
下面我们介绍下中间人攻击的方法和过程:
现在hacker先生成两个随机的私钥 XD1和XD2, 然后得出对应的公钥YD1和YD2,
在公钥交换的过程时,Alice想把自己的公钥传给Bob,但这时hacker截获YA,然后将YD1传给Bob,
黑客同时计算K2=(YA)^XD2 mod q, 也就是hacker计算出了自己产生的共享秘钥,这不是真的共享秘钥,
因为hacker并没有获得Bob的私钥,那Bob拿到的是hacker产生的公钥,并没有拿到Alice的公钥,
一句话就是,hacker干了Bob要干的事,然后还骗了Bob, Bob还不知道.
Bob这时开心的收到了YD1,计算 K1= (YD1)^XB mod q.
然后Bob将YB传给Alice,这时可恨的hacker又开始截获YB, 然后将YD2传给Alice,
hacker这时计算: K1= (YB)^XD1 mod q.
Alice收到 YD2,计算: K2=(YD2)^XA mod q,
这个过程hacker也干了Alice要干的事情,
但Alice 和Bob都以为自己顺利的完成了秘钥交换,他们以为自己既交换了各自的秘钥也交换了各自的私钥,
但是Bob和hacker共享了秘钥 K1,Alice和hacker共享了秘钥 K2,到此,问题已经很严重了!!!
第五节继续讲