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

SSL/TLS介绍及其物联网应用

[复制链接]
  • TA的每日心情
    开心
    2019-7-29 13:53
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    453

    主题

    1357

    帖子

    0

    金豆

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    3992
    最后登录
    2019-8-20
    发表于 6 天前 | 显示全部楼层 |阅读模式
    作为IT从业人员,大部分人都听说过SSL3.0/TLS1.0/TLS1.2/TLS1.3,但又经常混淆其概念,那我们来看看他们之间的区别与联系。

    SSL(Secure Socket Layer)和TLS(Transport Security Layer)都是安全网络连接的加密协议。这些不同版本的协议,今天在网页浏览、邮件、物联网等方面得到广泛应用,以确保连接通信的安全性。


    SSL/TLS简介


    我们先来看下SSL/TLS的发展历程,如下图所示,从SSL1.0一直发展到TLS1.3。
    50.png
    SSL3.0


    大家从它的版本号上就能看出来,SSL3.0是第三版。SSL协议是由美国网景公司设计开发。

    第一版SSL1.0并没有公开发布;第二版SSL2.0在1995年2月发布,但由于存在数个严重的安全漏洞而被3.0版本替代(其实最主要的缺陷是中间人攻击)。

    SSL3.0版本发布于1996年,主要用在HTTPS。和前两个版本比较有了很大的提高,比如,加入了SHA-1算法来保证数据完整性,使用证书进行双向认证。毕竟这是20年前定义的协议。现在看来,随着计算机算力的大幅提升,使用的很多算法都强度不够。几年前,就有对SSL3.0的“POODLE”攻击。

    TLS1.0

    TLS1.0是SSL3.0的更新版,1999年1月IETF(互联网工程任务组)通过RFC2246对其进行定义。

    注:关于IETF(The Internet Engineering Task Force)请参见中国通信标准化协会的介绍或自行上网搜索。

    和SSL3.0相比,TLS1.0的变化并不大,但是这两个版本并不能够兼容。主要变化如下:

        密钥的产生方式不同;

        MAC算法的不同——SSL3.0使用的是早期的HMAC修改版,TLS1.0使用的是HMAC;

        TLS1.0有更多警告信息;

        TLS1.0支持DSS/DH。

    TLS1.1

    2006年4月IETF通过RFC4346定义了TLS1.1,它是TLS1.0的更新版本,主要变化如下:

        显式初始向量(IV)代替了隐式初始向量,以防止CBC攻击;

        对填充(padding)错误的处理使用bad_record_mac报警,而不是使用以前的decryption_failed报警;

        为协议的参数定义了IANA注册机制;

        过早关闭(premature closes)不再导致会话的不可恢复。

    TLS1.2

    2008年8月IETF通过RFC5246定义了TLS1.2,主要改变如下:

        在伪随机数函数中,MD5/SHA-1组合方式被cipher-suite-specified伪随机数函数代替;

        在数字签名算法中,MD5/SHA-1的组合方式被单散列所取代;

        客户端和服务器能够制定可以接受的散列和签名算法;

        对认证加密的数据模式支持;

    更严格的检查加密版本。

    TLS1.3

    2016年IETF通过RFC8446定义了TLS1.3。在TLS1.3中,客户端首先不仅发送ClientHello支持的密码列表,而且还猜测服务器将选择哪种密钥协商算法,并发送密钥共享,这可以节省开销,提高速度。

    TLS1.3提供1-RTT(round trip time)握手机制。新特征如下:

        废除不支持前向安全性的RSA和DH密钥交换算法;

        MAC只使用AEAD算法;

        禁止RC4/SHA1等不安全的算法;

        加密握手消息;

        减少往返时延RTT,支持0-RTT(如果客户端之前已经连接)。

    SSL/TLS实现

    以上简要介绍了安全网络连接SSL/TLS的发展历程,我们再来看下当前比较流行的几种软件实现库。

    OpenSSL

    OpenSSL是开源软件,C语言所写,囊括了主要的密码算法(比如AES、DES、Blow fish、RC2、EC、RSA等)、信息摘要算法(MD2、MD5、SHA等)、常用的密钥和证书封装管理功能(产生密钥,对密钥的解析,X.509证书的编解码等)及SSL/TLS协议(SSL3.0, TLS1.2等,OpenSSL 1.1.1已经支持TLS1.3协议),并提供丰富的应用程序供测试或者其他目的的使用。OpenSSL支持主流的操作系统,Linux、Windows等系统都支持的非常完善,而且安装方便。

    MbedTLS

    MbedTLS的前身是开源的加密算法库PolarSSL,现已被arm公司收购并由arm技术团队进行维护和更新。mbedTLS核心代码使用C语言编程实现。

    MbedTLS主要面向小型嵌入式设备,代码紧凑,执行效率高,可以说是行业内最小巧的加密算法库。MbedTLS从功能上分为3个部分:加密算法库;X.509证书的处理库;SSL/TLS协议实现(支持SSL3.0/TLS1.0/TLS1.1/TLS1.2)。NXP的多款芯片的SDK都移植了MbedTLS软件。
    SSL/TLS的物联网应用

    SSL/TLS最早用在因特网的安全连接,现在物联网的安全连接也在使用TLS协议,AWS的安全IoT就是使用的TLS1.2协议。NXP的LPC54018物联网模块支持AWS的云连接,其主要特征如下:

        支持TLS1.2协议的的安全连接,使用的是MbedTLS软件库;

        支持Amazon FreeRTOS;

        Longsys IEEE802.11b/g/n WIFI模块;

        通过CE/FCC认证;

        完整的物联网开发软件包。

    有关LPC54018物联网模块的详细资料,可访问:https://www.nxp.com/support/developer-resources/nxp-designs/lpc54018-iot-module-for-the-lpc540xx-family-of-mcus:OM40007
    51.png
    另外,NXP还有一个使用安全芯片A71CH与AWS安全连接的参考设计。A71CH实现了TLS1.2中的ECDSA/ECDH等功能,当然还实现了密钥、证书等的管理和随机数的产生。详细资料,请访问:https://www.nxp.com/docs/en/application-note/AN12131.pdf
    52.png






    作者:Sawyer           文章出处:恩智浦MCU加油站

    今天天气不错!签到!
    回复

    使用道具 举报

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

    本版积分规则

    小黑屋|手机版|Archiver|恩智浦技术社区

    GMT+8, 2019-8-20 13:02 , Processed in 0.066732 second(s), 13 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

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