请选择 进入手机版 | 继续访问电脑版
查看: 1199|回复: 0

[技术交流] IOT-WiFi-mbedTLS协议(1)

[复制链接]

185

主题

204

帖子

596

积分

利尔达员工

Rank: 9Rank: 9Rank: 9

积分
596
发表于 2021-4-16 15:18:14 | 显示全部楼层 |阅读模式
  一、信息为什么要加密

  信息安全是大家比较关注的话题,互联网是一个比较开发的平台,在方便的同时,也会存在许多安全问题,各种网络漏洞也是层出不穷。为防止第三者窃取通信信息,就需要将通信的数据进行加密,而互联网的通信安全就是基于SSl/TLS之上的。SSL/TLS协议发展过程为:1994年 SSL1.0,1995年 SSL2.0,1996年 SSL3.0 ,1999年 TLS1.0,2006年 TLS1.1,2008年 TLS1.2,2015年 TLS1.3。其中,在前面的基础上,SSL 3.0版问世并得到大规模应用;互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版,也称为SSL 3.1;SSL和TLS指的是同一套加密协议,只是不同时期的名字差异。2006年和2008年,TLS进行了两次升级,分别为TLS 1.1版和TLS 1.2版。一般推荐使用TLS 1.2,主流的浏览器都支持。

  二、SSL/TLS演化

  2.1 明文时代

  服务器向客户端发送信息,直接以明文形式发送。缺点显而易见,第三方很容易就窃取到信息,也可以进行篡改后发给客户端,而且客户端收到后并不知情,以为是服务器发来的。

  2.2 对称加密时代

  服务器和客户端保存一份相同的秘钥,服务器发出的信息先经过加密,客户端收到后使用同样的密码进行解密。这种加密和解密使用同一个密钥的算法称为对称加密算法。短期内第三方对加密数据无能为力,但是每次变更秘钥需要事先协商,如果协商出问题,服务器告知客户端新秘钥时,秘钥被第三方截取,那后续的密文对第三方来说,他也可以解密成明文。也可以篡改明文信息后,再使用同样的秘钥加密后发给客户端。

  2.3 非对称加密时代

  既然进行秘钥交换存在风险,服务器和客户端采用非对称加密算法。双方各自保存私钥、公钥,两者配对,私钥自己保存,公钥由私钥运算生成发给对方,不能由公钥反推算出私钥;但是使用公钥加密的密文,却可以使用私钥解密;使用私钥签名,使用公钥验证;这种加密和解密使用不同的密钥的算法成为非对称加密算法。通信前,双发先将自己的公钥发给对方,私钥保密;服务器先使用客户端提供的公钥加密数据,同时也使用自己的私钥进行签名标记,一起打包后发给客户端,客户端使用自己的私钥进行解密,再使用服务器的公钥进行验证,确认收到的信息是否来自服务器。这种形式的加密通信,协商传输的是公钥,即使被第三方截取,他也不能解密后续的信息,因为解密得使用私钥。但是百密一疏,如果第三方子在最初交互公钥时,截取公钥,把服务器发给客户端的公钥截取,把自己的假公钥发给客户端;截取客户端发出的数据,第三方用自己的私钥解密,然后再使用自己的私钥加密后发给服务器。整了这么复杂的一套加密协议,结果还是存在隐患。

  2.4 公证时代

  问题就出在公钥交换,客户端收到一份公钥,如何证明这公钥确实是服务器发出的?譬如买房,只有房管局确认盖章导入系统的房产证,才是真的房产证,才能放心进行交易。通过CA(Certificate Authority)证书颁发机构来保证公钥的真实性,为公钥的真实性进行担保公证。CA也是基于非对称加密算法,服务器先先把自己的公钥交给CA,CA用自己的私钥加密这些数据,加密完的数据称为服务器的数字证书,先前服务器发给客户端的公钥,改为发送CA加密之后的数字证书。客户端收到以后,通过CA发布的CA证书(包含了CA的公钥),来解密服务器的数字证书,从而获得服务器的公钥。问题是客户端怎么确保CA证书不是第三方伪造的?CA证书是提前预置在浏览器或操作系统,或者嵌入式设备内,不需要联网获取,自然也不存在劫持篡改的问题。虽然第三方还是可以拦截带公钥的数字签名证书,可以用CA公钥解密看到内容;但是他没CA的秘钥,无法伪造出正确的数字签名证书,也就是服务器的真实公钥第三方可见不可改,改了客户端会发现异常,但只有公钥并没什么价值。
  2.5 TLS协议时代

  公证时代的解决方案就是SSL/TLS协议加密通信基础。因为使用非对称加密算法比对称加密算法要复杂,消耗运算资源,为考虑效率,非对称加密只会用来传递一条信息,即对称加密的密钥。对称加密的密钥确定,后续有效信息使用对称加密算法进行网络传输。既保证了网络通信的安全性,又不影响效率。

  SSL/TLS协议的基本过程:1、通过CA体系交换公钥 2、使用非对称加密算法,交换用于对称加密的密钥 3、有效数据使用对称加密算法,进行密文传输前两步又称为"握手阶段"(handshake),是SSL/TLS加密通信的基础。

  2.6 TLS的应用

  在SSL/TLS出现之前,很多应用层协议(http、ftp、smtp等)都存在着网络安全问题。最常见的http协议,在传输过程中使用的是明文信息,传输报文一旦被截获便会泄露传输内容;传输过程中报文如果被篡改,对方无法轻易发现;无法保证消息交换的对端身份的可靠性。为了解决此类安全问题,在应用层和传输层之间加入了SSL/TLS协议,升级为https。SSL/TLS目前已经广泛用于数据安全协议。关于SSL/TLS有很多开源软件包,如openSSL,mbedtls等。openSSL功能更强大,mbedtls小巧更适合嵌入式设备。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表