快好知 kuaihz

从产品角度看密码学的发展过程

从产品角度看密码学的发展过程

在产品经理眼中任何产品的形成都是基于用户需求,脱离用户需求的产品终究会被淘汰,任何产品的形成和发展都是在不断的满足用户的需求,密码学的发展过程也是如此。计算机网络的初衷就数据共享,然而数据共享过程中的信息安全显得尤为重要,密码学发展了起来。

下面就以一个小例子讲述密码学的发展过程:

A和B通过网络进行数据通讯,信息内容完全暴露在网络当中,任何人都可以获取数据内容。如图C就是一个信息盗窃者。

此时,网络使用者A,B产生了需求:信息内容不能被其他人获取。

于是产生了非对称加密方式,非对称加密就是通信双方通信过程中,消息发送者利用一个叫做密钥的东西对消息进行加密,而消息接收者同样需要应用这个密钥对消息进行解密。其他人即使盗取了加密的信息,在没有密钥的情况下,不能通过任何方式获得消息内容。目前比较成熟的对称加密算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等。有了对称加密后A与B的通信过程如下图

如图,非对称加密基本满足了网络使用者的需求,即使C盗取了网络数据,也不能获得A,B的消息内容。但是这种方式产生了一个新的问题,A,B间的密钥如何传递,如果密钥在传递过程中被C盗取,那之后的基于对称加密算法的通信仍是不安全的。

此时产生了新的需求,就是要安全的传递密钥,不能被其他人获取,也就是说通信过程中的第一条信息一定要确保安全。显然此时仍使用对称加密是无论如何都不能满足需求的。因为C随时可以盗取新的密钥解密加密的密钥。于是,非对称算法应运而生,在非对称加密算法中,密钥是成对出现,称为公钥和私钥,公钥公布于网络当中,私钥自己保存。使用公钥加密的消息只能通过私钥解密,使用私钥加密的消息只能通过公钥解密,目前成熟的非对称加密算法主要有RSA、Elgamal、背包算法、Rabin、D-H、ECC等。

此时A,B的传递密钥的过程变为,A利用B的公钥对消息加密,B接受到加密的消息后利用B的私钥对消息进行解密,获取消息内容。如图所示:

至此密钥的传递过程完成。即使C拿到了加密后的密匙,由于C没有B的私钥,所以无法解密消息内容。上述过程看似完美,但仍然存在两个重大问题:

B的公钥由谁保管,如果C冒充此人将自己的公钥发送给A,而B使用了C的公钥加密通信密钥,那么C盗取消息后便可利用自己的私钥解密消息内容获得通信密钥

由于B的公钥公布于网络,任何人都可以获取,那么C冒充A利用B的公钥加密通信密钥传递给B,B解密后利用该密钥进行信息加密,那么C便可轻松的获取消息的内容。

对于第1个问题的解决方法就是找到一个公认的第三方组织,保管注册用户的公钥。如果A需要B的公钥,就可以通过第三方拿到B的公钥。这样 第一问题就解决了,如果你非要说如果C黑掉了第三方组织怎么办?我只能说那就没得办了,密码学揪到最后没有安全性可言。

而第2个问题的解决方法要引入一个叫做信息摘要的东西,信息摘要也称为数字指纹,网络中任何小到一个字母a,或是一个1000G的文件都有自己独一无二的数字指纹。常见的提取数字指纹的算法就是md5, 通过md5算法。信息摘要经过加密就是我们常说的数字签名。接下来我们谈谈如何利用信息摘要解决问题2。

解决问题2的根本就在于如何证明B接受到的消息的确是A传输的。可以逆用上述的过程利用A的公钥证明A就是A!听起来有点拗口,下面详细说一下通信的过程。

A的加密过程:

A使用B的公钥加密信息M内容。

提取信息M的数字摘要。

利用自己的私钥加密M(数字签名)。

然后将这两部同时传递给B。

而B接受到消息后处理过程如下,

利用B的私钥解密消息,获得消息内容M。

提取M的数字指纹。

利用A的公钥提取解密数字签名。

对比提取的消息摘要和解密的数字签名,如果相同,说明消息的确来自于A。

至此A将密钥安全的传递到了B,后续就可以使用密钥进行通信了。这也是Https的工作过程。

最后图解:

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:从产品角度看密码学的发展过程  密码学  密码学词条  角度  角度词条  过程  过程词条  发展  发展词条  产品  产品词条