可信通信(TLS/SSL协议)

比特币,以太坊,超级账本在建立网络连接保证节点间可靠通信的时,都直接采用了**传输层安全性协议(Transport Layer Security)**,TLS协议自从1999年发布以来已经广泛的应用在浏览器,电子邮件等应用中了,经过了大规模的验证,已经成为了互联网上保密通信的工业标准,可以说是目前构建区块链网络间通信的最佳选择。

1、TLS/SSL协议

TLS传输层安全性协议及其前身SSL安全套接层(Secure Sockets Layer)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。

TLS建立安全通信的方式是通过非对称加密的方式交换对称加密所用到的密钥,对后续的通信采用对称加密的方式确保安全,也就是握手阶段和传输阶段。

2、TLS/SSL握手过程

下面通过客户端(Client)如何向服务端(Server)建立连接。

第一步,客户端以明文的形式发起请求信息(client_hello),其中信息包含;

  • 客户端生成的随机数random_C
  • 支持的最高TLS协议版本
  • 客户端支持的加密套件cipher suites
  • 支持的压缩算法列表
  • 扩展字段

身份加密套件包括: 身份认证算法Au ,采用的密钥交换算法(密钥协商),对称加密算法,信息摘要算法Mac(校验信息的完整性)


第二步,服务端收到客户端发来的请求以后,返回协商的信息(server_hello),其中包括

  • 服务端生成的随机数random_S
  • 使用TLS协议的版本
  • 使用的压缩算法版本
  • 选择的加密套件cipher suites
  • 服务端配置的对应的证书链

第三步,客户端(Server)收到服务端发来的请求以后,首先会检查服务端证书的合法性,如果合法就会进行如下操作;

  • 客户端生成第三个随机数字pre-master
  • 计算协商秘钥enc_key=Func(random_C, random_S, pre-master)
  • 计算之前通信的所有参数的hash作为sessionSecret

sessionSecret和用数字证书携带的公钥加密pre-master发送给服务器(Server)


第四步,服务端(Server)收到客户端发来的请求后,会进行如下操作

  • 用私钥解密或者pre-master的值
  • 基于random_Srandom_Cpre-master计算协商秘钥enc_key=Func(random_C, random_S, pre-master)
  • 验证sessionSecret

服务端进行完上面的操作以后,会用协商秘钥加密sessionSecret作为encrypted_handshake_message消息发送给客户端。


第五步,客户端(Client)接收到encrypted_handshake_message消息以后,会用自己计算出的协商密钥解密encrypted_handshake_message查看里面sessionSecret是否和自己生成的一致,如果一致则用协商出来的密钥加密后续的通信。

sessionSecret就是TLS协议传输阶段对称加密所用到的密钥。

3、双向认证

上面的整个过程,都是客户端单向认证服务端,也是最为常用的场景。同时,服务端也可以要求验证客户端,比较常见的场景就是大额网银汇款转账会需要在电脑上插入U盾

U盾中包含银行签发的证书用来验证客户端。

双向认证在单向认证第二步的时候,服务器会要求客户端发送证书,来校验客户端证书有效性。

TLS通过上面的五个步骤完成了密钥的协商,其中用到了三个随机数random_C,random_S,pre-master,而如何通过三个随机数完成密钥交换就需要用到密钥协商算法。

相关推荐
奋斗的牛马4 小时前
FPGA--zynq学习 PS与PL交互(二) HP接口
单片机·嵌入式硬件·学习·fpga开发·信息与通信
渡我白衣15 小时前
字符串的陷阱与艺术——std::string全解析
网络·c++·人工智能·自然语言处理·智能路由器·信息与通信·caffe
Pluchon20 小时前
硅基计划6.0 伍 JavaEE 网络原理
网络·网络协议·学习·tcp/ip·udp·java-ee·信息与通信
Shang180989357261 天前
T41NQ/T41N高性能低功耗SOC芯片 软硬件资料T41NQ适用于各种AIoT应用,适用于智能安防、智能家居,机器视觉等领域方案
驱动开发·嵌入式硬件·计算机视觉·fpga开发·信息与通信·t41nq
北京耐用通信2 天前
耐达讯自动化Profibus光纤模块:智能仪表的“生命线”,极端环境通信无忧!
人工智能·物联网·网络协议·自动化·信息与通信
yongshao82 天前
KUKA机械臂使用EthernetKRL配置与C#上位机实现TCP通讯
tcp/ip·机器人·c#·信息与通信
奋斗的牛马2 天前
硬件基础知识-电容(一)
单片机·嵌入式硬件·学习·fpga开发·信息与通信
焦糖码奇朵、3 天前
移动通信网络建设-实验3:5G建设方案规划设计
5g·信息与通信·射频工程·基带工程
Fnetlink13 天前
智网案例精选|光联云网融合智驱,重塑金融数字化转型新格局
网络·信息与通信
奔跑吧邓邓子3 天前
【C语言实战(78)】C语言进阶:筑牢数据安全防线,密码学实战探秘
c语言·密码学·数据安全·开发实战