登 录
注 册
< 信息安全
数据安全
密码学
安全常识
透视公钥加密与中间人攻击
公钥基础设施与数字签名
热门推荐>>>
中台架构
中台建设与架构
Hadoop
源码分析-NN启动(三)
HBase
HBased对接Hive
Linux
Nginx高可用
Python
数据导出工具
Flink
3分钟搭建Flink SQL测试环境
Kafka
Kafka对接Flume
深度学习
卷积神经网络
数据结构与算法
选择合适的算法
MySQL
数据备份恢复
计算机系统
信号量同步线程
Hive
Hive调优参数大全
其他框架
Azkaban Flow1.0与2.0
ClickHouse
表引擎-其他类型
技术成长
最好的职业建议
精选书单
技术成长书单—机器学习
技术资讯
数据在线:计算将成为公共服务
开发工具
IntelliJ IDEA 20年发展回顾(二)
系统工具
Mac命令行工具
虚拟化
内存虚拟化概述
云原生
云原生构建现代化应用
云服务
一文搞懂公有云、私有云...
Java
Spring Boot依赖注入与Runners
Go
Go函数与方法
SQL
SQL模板
当前位置:
首页
>>
密码学
>>
公钥基础设施与数字签名
公钥基础设施与数字签名
2021-05-03 14:47:43 星期一 阅读:892
![](/static/images/article_images/1693753938.3264608.jpeg) #### 公钥基础设施PKI **`公钥基础设施`**是为了解决`中间人攻击`窃听公钥带来的信息泄露的方案之一。关于中间人攻击的详情见上篇分享的文章:[透视公钥加密与中间人攻击](https://libins.cn/detail/moduleName=suibi&articleId=ee6996f2baf408029636f4496d4d99af "透视公钥加密与中间人攻击") 公钥基础设施(Public Key Infrastructure,PKI)。PKI假设有一个称为`证书颁发机构的中央机构(Certificate Authority,CA)`。每个人都有CA公钥的副本,并信任CA。每个用户都生成一个公私钥对,并向CA提供他的公钥。CA验证用户的身份,然后签名他的公钥(这需要向CA机构支付一定费用)。 ![](/static/images/article_images/1620032181.8398113.jpeg) 当A与B进行公钥交换时,A将以下两部分内容发送给B >1、自己的公钥 2、CA对该公钥的签名 B收到A的请求后,检查A的公钥是否由CA正确签名,也就是验证证书是否有效。这就是SSL和TLS遵循的方法。 在这种情况下,A在给B发送公钥时,如果被中间人攻击,那么B收到的公钥、签名信息与CA提供的就不一致,从而判断为不安全的连接。 我们用浏览器上网来举例。一般来说,证书办法机构(CA)的公钥包含在操作系统的安装中,或随计算机中安装的浏览器打包发布。 使用SSL或TLS的网站向浏览器提供由CA签名的证书,该证书包含网站的公钥。浏览器会验证该签名的有效性。 下图分别展示了我们在访问网站时,证书有效和无效的示例: ![](/static/images/article_images/1620033290.0936754.png) 所以,我们在日常上网过程中,特别是涉及**在线支付的网站**,一定要注意观察浏览器提示连接是否是安全的。 --- #### 数字签名 数字签名的作用有三个: >1、 确认消息是签名者提供的 2、消息未被篡改 3、消息不可否认(签名者不能否认曾经签名该消息) **数字签名用于比特币协议**(注意:不是比特币加密算法)。比特币地址实际上是公钥,可以理解为银行账号。而私钥则被理解为解锁这些银行账户的签名。 要支出某个地址中的比特币,必须使用私钥对支出交易进行授权签名。签名的过程如下图: ![](/static/images/article_images/1620036625.2679634.jpeg) 1、A向B发送自己公钥 > 这里可以结合之前的PKI技术,免受中间人攻击。 但比特币不会受中间人攻击,因为公钥在区块链中是安全的。 2、A使用私钥对交易信息进行数字签名 3、A向B发送交易信息和数字签名 4、B收到交易信息和数字签名后,使用A的公钥验证签名 如果验证通过,则该交易信息确实来自A,否则,B拒绝该无效消息 --- *参考文献:《区块链与数字金融革命》*