网站首页 > 技术文章 正文
来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。
从产品角度看密码学的发展过程
在产品经理眼中任何产品的形成都是基于用户需求,脱离用户需求的产品终究会被淘汰,任何产品的形成和发展都是在不断的满足用户的需求,密码学的发展过程也是如此。计算机网络的初衷就数据共享,然而数据共享过程中的信息安全显得尤为重要,密码学发展了起来。
下面就以一个小例子讲述密码学的发展过程:
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的工作过程。
最后图解:
本文由 @某尘土1001 原创发布于人人都是产品经理 ,未经许可,禁止转载。
- 上一篇: 谷歌说要帮你干掉密码,听上去好没安全感的样子
- 下一篇: 常见的加密方式有哪几种,各有哪些优缺点
猜你喜欢
- 2024-10-29 程序员之网络安全系列(四):数据加密之非对称秘钥
- 2024-10-29 还对这两个概念认识模糊?简述对称加密和非对称加密
- 2024-10-29 一文详细解读https 一文移相全桥拓扑原理详解解析
- 2024-10-29 软考-信息安全工程师学习笔记-第3章密码学基本理论(1)
- 2024-10-29 量子计算机真的可以破解任何密码吗?
- 2024-10-29 谈谈HTTPS演变过程 鼠的演变过程图解
- 2024-10-29 高考数学九省卷的变化与影响 高考数学第9题
- 2024-10-29 区块链百科之 数 字 签 名 区块链中大量用到数字签名技术
- 2024-10-29 对称加密与非对称加密,到底有啥区别?
- 2024-10-29 软考-信息安全工程师学习笔记11——数字签名
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)