借助mbedTLS了解DTLS握手协议

2024年Go最新mbedtls 库基础及其应用,阿里Golang面试题 随着物联网的发展,设备节点的安全问题也越来越重要,相比互联网的openSSL,物联网的嵌入式设备适合小巧灵活的MbedTLS,曾用名PolarSSL,可以根据需求进行配置,降低对硬件资源的消耗。mbedtls_ssl_set_bio注册的读写接口支持设为非阻塞,mbedtls_ssl_write和mbedtls_ssl_read对应用层接口,在底层socket上报read_ready之后,判断当前握手已经完成,再执行mbedtls_ssl_read。独立的模块设计,降低模块之间的耦合度。 阅读详情

引子

本文将会利用mbedTLS协议栈,通过dump协议栈调试信息,抓包,代码分析等方式来对DTLS的握手协议进行介绍。

DTLS简介

简单说,DTLS(Datagram Transport Layer Security)实现了在UDP协议之上的TLS安全层。由于基于TCP的SSL/TLS没有办法处理UDP报文的丢包及重排序(这些问题一般交给UDP的上层应用解决),DTLS在原本TLS的基础上做了一些小改动(复用大部分TLS的代码)来解决如下UDP上实现TLS的问题:

  1. TLS记录层内记录的强关联性及无序号
  2. 握手协议的可靠性
    • 包丢失重传机制(UDP无重传机制)
    • 无法按序接收(握手需要对包按顺序处理,而UDP包的到达并非按序,包头没有TCP那样的Seq/Ack number)
    • 握手协议包长(证书之类传输可能达到KB级别)导致的UDP分包组包(类似于UDP在IP层的分包)
  3. 重复包(Replay)检测

由于UDP/DTLS相较于TCP/TLS的轻量化及较小的开销,目前被更多的运用的嵌入式环境中。例如CoAP使用DTLS来实现安全通路,CoAP及其上层的LWM2M则运用在物联网和云端的通讯上。

如果你已经很熟悉TLS,那么看到这里后就请忽略此文:)

如何借助mbedTLS来分析握手协议

mbedTLS(前身PolarSSL)是面向嵌入式系统,实现的一套易用的加解密算法和SSL/TLS库。mbedTLS系统开销极小,对于系统资源要求不高。mbedTLS是开源项目,并且使用Apache 2.0许可证,使得用户既可以讲mbedTLS使用在开源项目中,也可以应用于商业项目。目前使用mbedTLS的项目很多,例如Monkey HTTP Daemon,LinkSYS路由器。

我们在这里简单的利用mbedTLS自带的dtls_client/dtls_server的测试程序来分析握手协议。这里要说明的是mbedTLS这个自带的DTLS 测试程序,服务器只在localhost做bind,客户端也只连接到localhost。实际上是个loopback测试。并且使用了TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384的Cipher Suite,也就是用椭圆曲线(EC)的DH算法来实现密钥(Session Key)的协商,用RSA来实现密钥协商时交换的EC类型,DH公钥等数据的签名加密。所以握手的流程和其他一些加密方式会有所差别。比如和单纯的RSA密钥交换方式比起来,会多一个“Server Key Exchange”报文。

下载mbedTLS

$git clone https://github.com/ARMmbed/mbedtls

打开调试

在program/dtls_client.c, dtls_server.c里,增大DEBUG_LEVEL,然后将my_debug里加上时间戳信息。使能协议栈的内部调试信息,方便对比客户端和服务端的流程:

#define DEBUG_LEVEL 100

static void my_debug( void *ctx, int level,
                      const char *file, int line,
                      const char *str )
{
    struct timeval tv;

    ((void) level);

    gettimeofday(&tv, NULL);
    //strftime(outstr, sizeof(outstr), "%H:%M:%S", tmp);

    mbedtls_fprintf( (FILE *) ctx, "[%06ld.%ld]%s:%04d: %s", tv.tv_sec, tv.tv_usec, file, line, str );
    fflush(  (FILE *) ctx  );
}

编译

在Ubuntu上可以直接编译。

$ make

编译结果为

  • 服务器:program/ssl/dtls_server
  • 客户端: program/ssl/dtls_client

抓包

打开wireshark之类的抓包工具,对本地网卡进行抓包。先跑server,后跑client。在抓包结束后,加dtls的display filter既可以:

Wireshark抓包截图: (导出pcapng包下载)

有了TLS协议栈的调试信息,Wireshark的实际的抓包数据再加上源代码,我们就很容易来分析DTLS的握手协议。当然gdb拿过来直接调试也行,不过需要把DEBUG宏在编译时打开:

$ make DEBUG=1

DTLS握手协议分析

DTLS握手协议和TLS类似。DTLS协议在UDP之上实现了客户机与服务器双方的握手连接,在握手过程中验证对方的身份,并且使用RSA或者DH(Diffie-Hellman)实现会话密钥的建立,以便在后面的数据传输中对数据加密。它利用cookie验证机制和证书实现了通信双方的身份认证;并且用在报文段头部加上序号,缓存乱序到达的报文段;还利用重传机制实现了可靠传送。在握手完成后,通信双方就可以利用握手阶段协商好的会话密钥来对应用数据进行加解密。

简易握手流程图:

从流程图上看,有(1)(3)两个“Client Hello”请求,他两之间的区别是第二个包含有(2)”Hello Verify Request”里服务端发来的Cookie。要使得DTLS握手正真开始,服务端必须要判断发送请求的客户端是否是有效客户端。通过这样的Cookie交互,可以很大程度上保护服务端不受DoS的攻击。如果利用Cookie,服务端会在收到每个客户请求后返回一个体积大很多的证书给被攻击者,超大量证书有可能造成被攻击者的瘫痪。当首次建立连接时,(1)请求包中的cookie为空,服务端根据客户端的源IP地址通过哈希方法随机生成一个cookie,并填入(2)”Hello Verify Request”包中发送给客户端。客户端收到Cookie后,再次发送带有该Cookie的“Client Hello”包(3),服务端收到该包后便检查报文段里面的cookie值和之前发给该客户端的Cookie值是否完全相同,若是,则通过Cookie验证,继续进行握手连接;若不是,则拒绝建立连接。所以说(1)(2)步骤只在第一次连接时发生,之后在Cookie有效的情况下,DTLS握手从步骤(3)开始。

  • 客户端的实现都在ssl_cli.c里,状态机由mbedtls_ssl_handshake_client_step()处理
  • 服务端的实现则在ssl_srv.c里,状态机由mbedtls_ssl_handshake_server_step()处理

(3)”Client Hello”由函数ssl_write_client_hello()实现报文填充和发送,内容主要包含:

  1. Random 32字节随机数,前4字节为当前时间+28字节随机数
  2. Cookie,从报文(2)中获得
  3. Cipher Suite,客户端可以支持的密钥交换,数据加密方式
  4. Compression methods,是否压缩,及压缩方式
  5. Extension,例如服务器主机名;支持的签名加密方式,EC曲线类型等

服务端收到报文(3)后,会调用函数ssl_parse_client_hello()做一系列协商工作:
将Random保存;验证Cookie是否和客户端的IP匹配;根据客户端提供的Cipher Suite找最佳匹配的,能提供的Cipher算法集合。在mbedTLS的例子里使用了ECDHE_RSA_WITH_AES_256_GCM_SHA384(ECDHE密钥协商算法、RSA签名、GCM-AES对称密钥加密传输数据、SHA384哈希签名)。如果协商没有问题,服务端就调用ssl_write_server_hello()会发送报文(4)”Server Hello”,告诉客户端使用什么Cipher Suite做握手,什么压缩方式,然后利用随机数生成一个Session ID。并且以客户端同样的方式生成的Random随机数,将随机数和Session ID放入报文中。紧接着服务端会接连发送报文(5)(6)(7)

(5)”Certification”服务端会将他自己的证书发送给客户端。证书中的肯定有一个证书的Subject是和Server Name相匹配的(commonName=”localhost”,organizationName=”PolarSSL”)。测试程序中其实发送了3个证书,subject分别是localhost, PolarSSL Test CA及PolarSSL Test EC CA。PolarSSL Test CA实际上是localhost的父证书,这里就涉及到一个CA Chain的概念。现实情况中(例如浏览器访问HTTPS服务器),服务器发给客户端的证书一般是终端用户证书(end-user CA),客户端需要通过证书认证来检查服务器是否可信。首先客户端在自己安装(浏览器安装时都会默认安装可靠证书)的一系列中间证书(intermediate CA)和根证书(ROOT CA)中查找该终端用户证书的父证书,以及该父证书的父证书,直到追溯到根证书,建立起这些证书的关系:CA Chain。然后使用该终端用户证书的父证书的公钥来验证终端用户证书的完整性,然后找到父证书的父证书,以同样的方式验证父证书完整性,直到遇到根证书。一般来讲,终端客户证书的Issuer都会和某个中间或者根证书的Subject相匹配,也就意味着客户证书是由某个中间或根证书发行机构签发,并且终端客户证书中的签名是由父证书拥有者的私钥加密的。由于根证书的Subject和Issuer都是自己,所以客户端的根证书一定要保证是Trust CA颁发的,否则没有办法自己验证自己。

回到我们的例子,客户端在初始化的时候加载了PolarSSL Test CA的根证书(当然只是测试的根证书),这个和现实的情况类似。客户端收到(5)”Certification”报文后,很快就可以查找到”localhost”这个终端用户证书的根证书是”PolarSSL Test CA”,一次便验证通过了。验证的代码在:mbedtls_x509_crt_verify_with_profile()。验证通过后,客户端实际上就获得了证书中的公钥。证书验证完毕,说明服务端的身份没有问题,可以进行下一步密钥协商。

(6)”Server Key Exchange”是Session Key协商的重要一步ssl_write_server_key_exchange(),测试程序中使用了ECDHE_RSA的协商方式。服务端首先要将在(3)”Client Hello”阶段和客户端协商使用的EC曲线类型找出来,这里协商的曲线类型是secp512r1(0x0019)。利用该曲线类型,加载对应于该曲线的参数p,b,G(x,y),n (服务端和客户端参数相同,参考:library/ecp_curves.c)。调用mbedtls_ecdh_gen_public(),首先生成一个随机数私钥a(范围[1, n-1]),然后计算Qs=aG,产生ECDHE的Public Key Qs,再用服务端的私钥(和localhost证书中的公钥配对的)对Qs做签名(SHA512做哈希,RSA加密)。最后将曲线类型,公钥Qs,签名算法及签名写入(6)的报文中,发送给客户端。由于ECDHE(Elliptic curve Diffie–Hellman)算法较为复杂,我也不是非常理解,在这里就不深入讨论了。具体可以参考:
WikiPage
总之,ECDHE算法很快,而且不需要暴露预主密码(premaster secret,马上谈到)。后面客户端也会做同样的操作,生成自己的私钥b,计算Qc。双方交换Q后,可以计算得到相同的预主密码:bQs=baG=abG=aQc。之后双方就可以用这个abG预主密码和之前(3)(4)报文中的客户端、服务端的Random来生成对称密钥Session Key(master secret)。预主密码如何生成密钥,可以参考mbedtls_ssl_derive_keys():

master = PRF( premaster, "master secret", randbytes )[0..47]

因为premaster secret不需要做交换,而是在本地计算产生,所以说ECDHE的密钥协商方式比RSA更安全。

(7)”Server Hello Done”会紧接着(6)发送,内容很简单,标示了handshake type 14,,告诉客户端Hello阶段结束。

(8)”Client Key Exchange”客户端在收到(6)报文后,获取服务端发送过来的EC曲线类型和Qs,使用和服务端一样的流程生成私钥b,计算公钥Qc=bG,将Qc放入该报文,并发送给服务端。此时不需要再做签名,后面”Finish”报文会再次让双方验证密钥的一致性。

(9)”Change Cipher Spec”客户端接着发送该报文,告诉服务端Session Key我已经生成,双方可以用密钥Session Key(master secret)开始加密通讯了。

(10)”Finished”该报文由客户端发送mbedtls_ssl_write_finished(),这是第一个用Session Key加密的密文,内容是一段验证数据:

valid_data = PRF(master_secret, "client finished", MD5(handshake_messages) + SHA(handshake_messages))[0..11]

handshake_messages实际上是客户端在握手阶段发出的所有报文(不包含该Finished报文),服务端在收到该报文后,会以同样的方式计算出valid_data,并且做比较。以确认双方协商的密钥一致。确认完毕后,服务端以同样的方式发送(11)”Change Cipher Spec”和(12)”Finished”给客户端。最后完成握手。

完成握手后,双发就可以发送加密的Application Data数据包来进行安全通讯,并且报文中都包含一个sequence number来标识顺序。

到这里握手协议部分就介绍完了,如果大家想要深入研究算法,去看mbedTLS的代码不失为一个好途径。

结尾

记得很早以前,我是看过SSL/TLS的协议,握手也是了解过。没想到,最近看CoAP,很多细节现在都回想不起来。好记心不如烂笔头,写下来也是分享,今后碰到问题也可以做个参考。

参考文献

mbedtls基础及其应用 1. mbedtls基础及其应用 mbedtls基础及其应用 阅读详情

相关推荐

别再混淆TLS和DTLS了!用Python+mbedTLS库手撸一个DTLS 1.2服务端

本文详细介绍了如何使用Python和mbedTLS库构建DTLS 1.2服务端,重点解析了DTLS与TLS的关键差异,特别是握手过程的异常处理机制。通过实战代码示例,帮助开发者掌握在UDP协议上实现安全数据传输的技术,适用于实时音视频通信和物联网安全场景。

weixin_30570101的博客 379

mbedTLS简介

mbedTLS简介mbedTLS的背景介绍关于mbedTLS的简要概括mbedTLS常用结构体1. 公钥算法类型mbedtls_pk_type_t2. 摘要算法类型mbedtls_md_type_t3. 公钥上下文mbedtls_pk_context4. 解析证书得到的mbedtls_pk_info_tmbedTLS使用事例mbedTLS_API分析参考文章 mbedTLS的背景介绍 MbedTLS前身是开源加密算法库PolarSLL,现已被arm公司收购并由arm技术团队进行维护更新,是对TLS和SSL协

HORHEART的博客 1万+

别再混淆了!一文讲透DTLS与TLS在握手流程上的核心差异(附mbedTLS代码示例)

本文深入解析DTLS与TLS在握手流程上的核心差异,重点探讨DTLS独有的HelloVerifyRequest机制、消息序列与重传设计,以及记录层分片处理。通过mbedTLS代码示例,揭示DTLS在UDP环境下的特殊实现细节,帮助开发者解决物联网和实时音视频领域的安全通信问题。

weixin_30448603的博客 514

mbed TLS 介绍

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(Datag...

Golden_Chen的专栏 5058

mbedtls 库基础及其应用

SSL/TLS加密的介绍,重点是mbedtls的基础以及移植说明。

qq_41854911的博客 6189

安全通信协议:DTLS在CoAP中的应用与握手优化——证书与预共享密钥

优化技术效果适用场景DTLS 1.3升级2-RTT→1-RTT,延迟减少65%所有新部署项目PSK模式Flash节省62%,能耗降低98%电池供电传感器会话恢复握手时间降至50-100ms频繁连接/断开场景NAT穿越零中断移动/蜂窝网络设备0-RTT零延迟数据发送实时控制类应用硬件加速加密速度提升3-5倍高性能安全网关在物联网安全通信领域,DTLS 1.3配合PSK和Connection ID已成为嵌入式设备的最佳实践方案。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 1万+

mbedtls学习(12)DTLS

概述 DTLS(Datagram Transport Layer Security)是运行在UDP之上的安全通讯协议,大部分和TLS是一样的,只是针对UDP在不可靠传输问题增加了新特性,用来解决UDP传输的报文乱序和报文丢失等问题,DTLS主要通过下面方法来解决 禁止密码流,避免记录层报文前后关联 在记录层增加计数值和序列号字段,用于排序和数据确认 在握手子协议中加入重传机制,防止握手过程中报文...

jiang_2018的博客 3466

存内计算路线再获加持,清华存内芯片登Science

通过这种方法,可以比较有效的控制二氧化铪忆阻层中的微观变化,以及内部的温度和电场,使得器件具有非常优异的电学特性,而且可以在工厂里大规模生产,推动了高性能忆阻器阵列的诞生。团队搭建了全硬件构成的完整存算一体系统,如下图7所示,在系统里集成了多个忆阻器阵列,并在该系统上高效运行了卷积神经网络算法,成功验证了图像识别功能,证明了存算一体架构全硬件实现的可行性,并且成功实现了以更小的功耗和更低的硬件成本完成复杂的计算[6]。根据测试,在一般神经网络中权重更新的最后阶段,调整步长非常接近0,如图9(C)所示,

PXX12345678的博客 1554

DTLS 握手

DTLS(Datagram Transport Layer Security)是基于 UDP 场景下数据包可能丢失或重新排序的现实情况下,为 UDP 定制和改进的 TLS 协议。从上图可以看出:在 WebRTC 中,媒体包通过 SRTP/SRTCP 进行传输,而数据包通过 SCTP 进行传输,他们都是基于 UDP 协议的。其中,SRTP 与 SCTP 的加密握手,由 DTLS 协议来完成。

键盘敲的劈啪响 3109

泛微OAe9实战:如何从零搭建一个车辆预约系统(附完整代码)

本文详细介绍了如何利用泛微OA e9的建模引擎,从零开始构建一个企业级车辆预约管理系统。文章深入解析了核心数据模型设计、前后端双重预约冲突校验机制,并重点演示了如何配置自定义资源看板以实现车辆使用状态的可视化监控。该系统设计思路通用,可扩展至会议室、设备等各类共享资源的管理。

weixin_28363123的博客 142

C# CAD2016 多边形顶点按方向重新排序

这样,通过以上步骤,我们找到了一个多边形的一个候选起始顶点(可能位于西北方向),并且已经获取了该多边形的边界框信息,这些信息对于后续判断顶点排列顺序及处理其他相关问题具有重要意义。完整地处理八个方向(东北、东南、西南、西北、北、南、东、西),我们可以创建一个方法来获取多边形相对于给定点的最近顶点及其对应的方向。对象(或类似的多边形表示方式),其中包含了多边形的顶点。//附送AI 图片无版权 随意用 龙年大吉大利。

转眼之间 一路有你 1354

mbedtls终极指南:如何实现TLS与DTLS双协议并发运行

mbedtls是一款开源、可移植、易用且灵活的TLS库,同时也是PSA加密API的参考实现。本文将详细介绍如何利用mbedtls实现TLS与DTLS双协议的并发运行,帮助开发者轻松构建安全的网络通信应用。 ## 一、mbedtls双协议支持基础 mbedtls通过配置宏定义实现对多种TLS和DTLS版本的支持。在[include/mbedtls/mbedtls_config.h](https:

gitblog_01061的博客 819

低成本实现webhook接收端[python]

Webook本质上也是API,只不过是反向调用,即前端不主动发送请求,完全由后端推送。简单来说,Webhook是一个接受HTTP POST或是GET,PUT,DELETE的URL,一个实现了Webhook的API提供商就是在当事件发生的时候会向配置的URL发送信息,与请求-响应式不同,使用Webhook可以实时接收到变化。Ps:Webhook可能会发出大量的请求,确保接受的URL不被泄露或者应用能及时处理这些请求。

锡城小凯的博客 1万+

终极指南:mbedtls DTLS 1.3如何为物联网通信提供低延迟加密

mbedtls作为一款开源、便携、易读且灵活的TLS库,在最新版本中引入了DTLS 1.3协议支持,为物联网设备通信带来了革命性的低延迟加密解决方案。😊 ## 什么是DTLS 1.3协议? DTLS(Datagram Transport Layer Security)是基于UDP的TLS协议,专门为实时通信和物联网场景设计。DTLS 1.3继承了TLS 1.3的所有安全改进,同时针对数据报传

gitblog_00198的博客 814

手把手拆解固态电池成本:2030年真能比液态电池便宜30%吗?

本文深度解析固态电池成本结构,探讨2030年实现比液态电池便宜30%的可行性路径。通过拆解正极材料、负极材料和固态电解质的成本演变,分析关键技术对降本的影响,并预测产业链协同效应下的成本优化趋势。文章指出,在材料创新、设备国产化和政策支持等多重因素推动下,固态电池有望在2030年实现显著降本目标。

kite3的博客 400

YOLO26涨点改进 | 独家创新,注意力改进篇 | AAAI 2025 | YOLO26引入 DRM 防御优化模块,进行特征优化/特征增强,助力目标检测、图像分类、图像分割有效涨点

本文提出了一种基于DRM防御优化模块改进的YOLO26网络模型,显著提升了目标检测的鲁棒性和特征提取能力。DRM模块通过优化特征提取过程、增强抗噪声能力和补充细节信息,有效提高了模型在复杂场景下的检测精度和定位准确度。该模块可集成于UNet等主干网络,采用Transformer结构实现特征精炼,在对抗攻击环境下仍能保持稳定的融合效果。实验表明,改进后的模型在红外与可见光图像融合任务中表现出色,同时提升了下游任务性能。文章详细介绍了DRM模块的结构、作用机制及实现代码,并提供了两种YOLO26改进方案.

Ai缝合怪、助力小伙伴高效发论文 141

简单认识一下mbedTLS

认识mbedTLS是在code里面一个文件夹的名字,好奇这个是什么。mbedTLS(前身 PolarSSL)是一个由 ARM 公司开源和维护的 SSL/TLS 算法库。其使用 C 编程语言以最小的编码占用空间实现了 SSL/TLS 功能及各种加密算法,易于理解、使用、集成和扩展,方便开发人员轻松地在嵌入式产品中使用 SSL/TLS 功能。mbedTLS主要是面向小型嵌入式设备,代码紧凑,最小完整的TLS堆栈需要60KB的程序空间和64KB的RAM空间,而且执行效率高,可以说是行业内最小巧的SSL加密算法库。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 2108

Oracle EBS和华为MetaERP在会计科目(COA)设计上的观察非常精准。这两种设计确实代表了两种截然不同的系统架构思想,我们可以从设计哲学、优劣对比和演进关系三个方面进行深入分析。

OracleEBS与华为MetaERP的COA设计对比分析 OracleEBS采用弹性域架构,通过固定段数字符串实现多维度核算,强调稳定性和全球统一标准,但修改成本高、扩展性受限。华为MetaERP采用解耦架构,将核算单元、自然科目和核算维度分离,支持动态扩展和灵活调整,更适合业务快速变化的企业。 OracleEBS优势在于强一致性和成熟稳定,劣势是灵活性差;华为MetaERP优势是极致灵活性,劣势是对管理要求高。两者代表了不同时代的企业软件设计理念:OracleEBS适合标准化需求,MetaERP则面向快

金牌架构师 429

mbedtls 握手超时怎么查:从日志到根因的完整路径

握手失败时,日志给你的最后一行永远是一个负数返回值: ``` mbedtls_ssl_handshake() returned -0x6800 mbedtls_ssl_handshake() returned -0x2700 ``` 如果你见过这两行,却不知道它们分别指向网络、协议还是证书,就沿这条诊断动线走:三个最高频的 mbedtls 排障路径——握手超时、证书链验证失败、版本协商失败,每

gitblog_01146的博客 196

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

MbedTLS学习--SHA-1

概要Mbed TLS是一个开源、可移植、易于使用、代码可读性高的SSL库。可实现常用的加密/解密算法,X.509证书操作以及TLS/DTLS 协议。它的各个功能模块相对独立、耦合低,可以通...

Rice开发经验分享 2053

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

mbedTLS中的握手建立操作

握手函数调用 while( ( ret = mbedtls_ssl_handshake( &ssl ) ) != 0 ) { if( ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE ) { mbedtls_printf( " failed\n

明潮的BLOG 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Mbed OS mbedtls集成:TLS/DTLS安全通信的实战指南

在物联网设备快速发展的今天,**Mbed OS mbedtls集成**已成为构建安全物联网应用的关键技术。Mbed OS作为ARM专为物联网设计的操作系统平台,通过与mbedtls加密库的深度整合,为开发者提供了完整的**TLS/DTLS安全通信**解决方案。本指南将帮助您快速掌握在Mbed OS中实现安全网络通信的核心技巧。 ## 🔒 为什么需要TLS/DTLS安全通信? 物联网设备面临着

gitblog_00168的博客 803

LInux安装mbedtls

$ sudo apt-get update $ sudo apt-get install cmake // 下载cmake $ git clone https://github.com/ARMmbed/mbedtls.git $ cd mbedtls/ $ cmake -DUSE_SHARED_MBEDTLS_LIBRARY=On . // 启用生成动态链接库选项 $ make $ sudo make install $ sudo ldconfig $ echo "expo...

RToax 2730
上一篇: MQTT入门篇
下一篇: 公钥与私钥-数字签名是什么?
evilcode
博客等级 码龄20年 307粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值