mbedTLS(前身 PolarSSL)是一个由 ARM 公司开源和维护的 SSL/TLS 算法库。其使用 C 编程语言以最小的编码占用空间实现了 SSL/TLS 功能及各种加密算法,易于理解、使用、集成和扩展,方便开发人员轻松地在嵌入式产品中使用 SSL/TLS 功能。

mbedTLS 软件包提供了如下的能力:

  • 完整的 SSL v3、TLS v1.0、TLS v1.1 和 TLS v1.2 协议实现
  • X.509 证书处理
  • 基于 TCP 的 TLS 传输加密
  • 基于 UDP 的 DTLS(Datagram TLS)传输加密
  • 其它加解密库实现

软件框架图

工作原理

mbedTLS 建立安全通信连接需要经过以下几个步骤:

  • 初始化 SSL/TLS 上下文
  • 建立 SSL/TLS 握手
  • 发送、接收数据
  • 交互完成,关闭连接

其中,最关键的步骤就是 SSL/TLS 握手 连接的建立,这里需要进行证书校验。

SSL/TLS 握手流程

DTLS 握手流程

为了避免拒绝服务攻击,DTLS采用和IKE一样的无状态 cookie 技术。当客户端发送 client hello 消息后,服务器发送 HelloVerifyRequest 消息,这个消息包含了无状态 cookie。客户端收到之后必须重传添加上了 cookie 的 clienthello。

DTLS 握手流程如下图所示:

mbed TLS 介绍相关推荐

  1. mbed TLS 概述

    系统概要 mbedtls 也许是最小巧的ssl代码库.高效.便于移植和集成.支持常见的安全算法,如:AES.DES.RSA.ECC.SHA256.MD5.BASE64等等.除此之外还支持公钥证书体系. ...

  2. 邮件协议POP3/IMAP/SMTP学习总结 SSL/TLS介绍 常用邮箱服务器设置

    邮箱协议介绍 首先,SMTP.POP和IMAP都是与邮件有关的协议.SMTP主要是负责传送邮件,而POP和IMAP是负责接收邮件. SMTP SMTP (Simple Mail Transfer Pr ...

  3. CA证书和TLS介绍

    数字签名 用自己的私钥给数据加密就叫数字签名 公钥传输威胁 在A和B的通信中,C可以把自己的公钥发给A,让A把C的公钥当成B的公钥,这样的话.B拿到加密数据反而无法解密,而C却可以解密出数据.从而实现 ...

  4. SSL 和 TLS 介绍

    SSL(Secure Sockets Layer 安全套接层)及其继任者传输层安全(Transport Layer Security,TLS) 是为网络通信提供安全及数据完整性的一种安全协议.TLS ...

  5. ESP32+Arduino IDE +Mbed TLS实现生成pem公钥及私钥 并测试加密解密

    由于本人技术有限 以下代码实现ESP32的硬件环境实现RSA算法,为下一步ESP32的加密通信提供可能,ESP32C3参考技术手册,其中含有硬件RSA计算器,但由于没有任何教程文档代码移植我暂时能查到 ...

  6. 【网络编程开发系列】好端端的MQTT-broker重新部署后居然出现TLS握手失败了

    摘要:本文通过一次真实的现网案例复盘,深度还原TLS握手问题的排查思路和方法,希望对广大读者有所启发和帮助. 文章目录 1 写在前面 2 问题描述 2.1 项目背景 2.2 现场问题 3 场景复现 3 ...

  7. 第一章 Silicon labs BLE 开发介绍

    Silicon labs BLE 开发人员指南 介绍 该文档涵盖了各个方面的发展,并且是对使用C开发的所有运行Bluetooth堆栈的Wireless Gecko产品的所有人的重要参考. 该文档涵盖以 ...

  8. mbed试玩—高速开发MCU应用(基于FRDM-KL25Z)

    mbed试玩 曾经參加一个站点的小小的比赛获得了一块Freescale的FRDM-KL25Z开发板.今天拿出来试玩的时候,插入电脑(板子连接OpenSDA接口)识别出一个128MB的虚拟磁盘,然后打开 ...

  9. 这就是你日日夜夜想要的docker!!!---------TLS加密远程连接Docker

    文章目录 一.Docker 存在的安全问题 1.Docker 自身漏洞 2.Docker 源码问题 3.Docker 架构缺陷与安全机制 二.TLS加密通讯协议 1.TLS介绍 2.CA证书 三.配置 ...

  10. 蚂蚁区块链第9课 SSL/TLS工作原理及在蚂蚁BAAS中的应用

    1,摘要 辉哥在学习蚂蚁BAAS系统时,发现了一堆证书或者公私钥名称,包括trustCa,ca.crt,client.crt,client.key,pub.txt,MyPKCS12.p12等等文件,不 ...

最新文章

  1. vue weex 调用原生toast_vue-template-compiler 还能这么用
  2. 网络传播侵权认定启用“服务器标准”
  3. Python中解决ModuleNotFoundError: No module named 'tensorflow._api'问题
  4. Sqoop(二)常用命令及常数解析
  5. CentOS 自动备份MySQL
  6. iTunes 错误 -50
  7. 腾讯Q3财报看点:净利近10年来首次下滑 为硬科技持续“烧钱”
  8. python移除字符串中指定元素_Python – 从作为另一个元素的子串的字符串列表中删除任何元素...
  9. python模块与类的区别_Python类、模块、包的概念及区别
  10. 南大通用发布数据库新产品 携手用户伙伴点亮世界级
  11. Python中[::-1]实现翻转列表的原理
  12. TTL电平和CMOS电平的区别,详细分析他们的区别
  13. linux磁盘扩容不影响原数据,linux 升级磁盘后扩容数据盘大小
  14. Android 热补丁方案
  15. 网络准入控制学习——Chap1
  16. 利用51单片机,矩阵键盘按键显示0--F在数码管
  17. 2018.08.21 bzoj4668: 冷战(并查集+启发式合并)
  18. 如何用帮助中心自助服务页面提高客户使用体验
  19. 再谈异常处理try-catch-finally
  20. 北斗网络同步时钟与GPS卫星时钟同步设备的区别

热门文章

  1. python四则运算表达式,用Python自动生成小学四则运算题目2.0版
  2. java 拼音首字母 高效_如何实现一个高效的拼音匹配库?解决多音字,首字母匹配等问题...
  3. cd40系列芯片_CD4068_CD4068PDF资料详细参数下载_Powered by 奥伟斯
  4. python中heading_python如何抓取几个csv的heading并存在excel里?
  5. obs点歌插件 html效果,OBS点歌插件
  6. 企业微信-通讯录管理-成员管理以及部门管理
  7. linux matconvnet编译,Windows/Linux平台下编译安装MatConvNet
  8. html 媒体查询改变字体,CSS----媒体查询设置根节点字体大小
  9. msdia80.dll-重装系统后有使用64位win7操作系统的同学注意!
  10. python timepicker_Android之日期时间选择控件DatePicker和TimePicker