第三集 公开密钥密码学
引入:传统的对称加密,是基于密钥的,密钥一旦公开,就毫无安全可言了。
问题:上一讲讲过是密钥分配问题和数字签名问题。
解决:公钥加密算法【使用两个密钥。不对称:加密密钥不能解密。利用的是数论的理论】
PS:对称加密和不对称加密是相互补充,而不是替代,因为对称加密代价较高,慢。
一、起源
斯坦福大学教授Diffie和Hellman提出。他们给出体系的同时又给出了Diffie-Hellman算法(只能交换密钥,不能加密)
1978年,MIT的R、S、A三位教授设计出了RSA算法。
二、原理
公钥(公开):加密消息,验证签名
私钥(不公开):解密信息,进行签名
精妙之处:在传输之前,无需秘密地交换密钥,因为加密用的乙的公钥是公开的。
But,既然乙的公钥是公开的,那么谁都可以给乙发信息,那么如何确认是甲发过来的呢?
处理:公钥体系处理,使用甲的私钥进行加密。乙可以用甲的公钥解密。(可以用甲的公钥解密的信息,加密必定是甲的私钥,那么谁有甲的私钥,必定是甲)【注意!注意!这里是用“私钥”加密,而用“公钥”解密!这里面其实是一类具有对称性的特殊函数,可以这样运算的,比较复杂,不赘述】
But,问题又来了。报文是用甲的私钥加密的,那么用甲的公钥可以解开,而这个公钥是公开的,那么加密其实没什么意义,形同虚设。
所以,解决方法就是:复合
- 先用自己的私钥对报文加密【保证报文是甲发的】
- 再用对方的公钥对报文加密【保证报文只有乙能打开】
**应该是先签名再加密。
三、公钥的应用
可分为三个类别:
加密/解密(提供安全性)
数字签名(提供认证)
密钥交换(回话密钥,这个把加解密的内容换成密钥就行了)
四、RSA算法
基于大数分解。
Maybe你会想,如果我是黑客,我拿到了N之后,就可以分解出p,q,自然可以算出欧拉函数,而私钥是欧拉函数的逆元,已知公钥,自然可以求出私钥,那么安全性何在呢?
呵呵,上面的想法是没错的。但是关键就是,拿到N之后分解成p,q是数学上的“大数分解”问题,属于NP问题,目前暂时无解...
【小结】这一集主要讲的是公钥密码体系:公钥认证、公钥加解密,然后介绍了最富盛名的RSA算法。【默默地吐槽一句校园网的网速好垃圾...半个小时的视频卡得要死...还是edu的资源,如果不是,我连网页都打不开...】