杰理 SDK 文档中心
首页
首页
  • SDK 概述与快速开始

    • SDK 概览与 AC791N 芯片平台
    • 环境搭建与编译指南
    • 烧录与固件升级
    • 工程结构导览
  • 产品方案应用

    • WiFi 摄像头方案
    • WiFi IPC 可视对讲方案
    • WiFi 故事机方案
    • 扫码枪 HID 方案
    • 开发板示例工程
  • 公共应用组件

    • 语音识别 ASR 引擎
    • LLM 与 AI 语音助手接入
    • 摄像头传感器驱动
    • UI 显示框架与驱动
    • USB 主机与设备栈
    • 文件系统与存储管理
    • 系统服务与外设管理
    • 生产测试与射频工具
  • 蓝牙协议栈

    • 经典蓝牙 BR/EDR
    • BLE 低功耗蓝牙
    • 蓝牙 Mesh 网络
    • 蓝牙扩展协议(RCSP/广播/无线麦克风)
  • WiFi 与网络协议栈

    • WiFi 驱动与网络模式
    • lwIP TCP/IP 协议栈
    • 网络安全与加密库
    • 应用层网络协议
    • 流媒体与音视频传输
    • 云平台接入 SDK
    • P2P 远程访问与设备互联
  • 芯片平台与驱动

    • wl82 平台与硬件加速
    • 外设驱动框架
    • 平台配置与固件打包工具
  • 媒体与音频引擎

    • 音频编解码与音源
    • 音效处理引擎
    • 视频与图像处理
  • 操作系统与运行时

    • 实时操作系统与 POSIX 层
    • C/C++ 运行时库
  • 开发资源与文档

    • 文档与规格书
    • 公共示例工程
    • UI 资源工程与打包
    • SDK 辅助工具与脚本

网络安全与加密库

AC79NN SDK 的网络安全与加密能力由 mbedTLS 3.4.0 提供核心加密原语、X.509 证书处理与 SSL/TLS/DTLS 协议实现,配合 tinydtls、云端 HMAC-SHA256 签名、AES 加解密封装,支撑 HTTPS、MQTT、CoAP、WebSocket 等安全通信及各类云平台接入认证。

Purpose and Scope

本页面覆盖 AC79NN SDK 中与网络安全与加密相关的完整能力,包括:

  • mbedTLS 3.4.0 库的集成方式与裁剪配置(位于 lib/net/mbedtls_3_4_0/)
  • 基于 mbedTLS 的 TLS 客户端/服务端实现(证书加载、握手、验证)
  • tinydtls DTLS 协议支持(lib/net/tinydtls/)
  • 基于 mbedtls 消息摘要接口的 HMAC-SHA256 云端签名(lib/net/EchoCloud/)
  • AES 对称加解密封装(lib/net/telecom/ctei_aes.c)
  • mbedTLS 算法自测(self-test)与固件验证方式

以下相关主题由兄弟页面单独覆盖,不在本页详述:lwIP 协议栈与 socket 编程(网络基础层)、HTTP/HTTPS 与 MQTT 等应用协议本身的使用、各 AI 云平台(图灵、涂鸦、阿里云等)的接入协议细节。本页聚焦"加密与安全传输"这一横切能力。

Overview

安全能力在 SDK 中的定位

AC79NN 是面向 AIoT 场景的 Wi-Fi SoC,其联网应用(语音故事机、智能家居、云平台接入等)几乎全部涉及网络通信安全:

  • 设备上云:涂鸦、阿里云、腾讯云、电信智能家居等平台均要求 TLS/HTTPS 或签名认证
  • 本地通信:CoAP 使用 DTLS 加密,WebSocket 支持 WSS
  • 数据保护:部分平台协议(如电信云)使用 AES 对业务数据进行加解密
  • 身份认证:EchoCloud 等云平台使用 HMAC-SHA256 生成动态签名/密码

SDK 选择 mbedTLS 3.4.0 作为统一加密底座,而不是自研算法,其设计意图是:

  1. 可靠性:mbedTLS 是业界广泛使用、经过审计的嵌入式 TLS 实现,支持 AES、SHA-1/SHA-256、RSA、ECDSA、HMAC 等算法
  2. 代码足迹小:README 明确指出 "Its small code footprint makes it suitable for embedded systems",适合受限的 MCU 资源
  3. 协议覆盖全:同时实现 SSL/TLS 与 DTLS,兼顾 TCP 与 UDP 安全传输
  4. 可裁剪:通过 MBEDTLS_CONFIG 宏按需开启算法与协议特性,控制固件体积

关键概念

概念说明
mbedtls_sslTLS 会话上下文,包含握手状态、传输回调、密码套件配置
mbedtls_x509_crtX.509 证书(CA 根证书、服务器证书、客户端证书)解析与验证
mbedtls_pk公私钥对抽象(RSA/EC),用于证书私钥与签名
mbedtls_ctr_drbg基于 AES-CTR 的确定性随机数生成器,为 TLS 握手提供熵源
mbedtls_md / mbedtls_sha256消息摘要抽象层 / SHA-256 具体实现,HMAC 签名基于此
DTLSDatagram TLS,为 UDP(如 CoAP)提供类似 TLS 的安全保护
self-testmbedTLS 内置算法自测,用于固件启动时验证加密功能正确性

Architecture

flowchart TD
    subgraph sg_App["应用层 (apps/)"]
        App["应用/云平台接入<br/>(故事机、涂鸦、阿里云等)"]
        SelfTest["wl80_test.c<br/>mbedtls 算法自测"]
    end

    subgraph sg_NetLib["网络库层 (lib/net/)"]
        subgraph sg_TLS["TLS/DTLS 传输安全"]
            TLSClient["awtk mbedtls_client.c<br/>TLS 客户端"]
            TLSServer["awtk mbedtls_server.c<br/>TLS 服务端"]
            DTLS["tinydtls dtls.c<br/>DTLS 协议"]
        end
        subgraph sg_Crypto["加密/签名能力"]
            EchoCloud["EchoCloud<br/>HMAC-SHA256 签名"]
            TelecomAES["电信云 ctei_aes.c<br/>AES 加解密"]
        end
    end

    subgraph sg_MbedTLS["mbedTLS 3.4.0 加密底座 (lib/net/mbedtls_3_4_0/)"]
        SSL["mbedtls_ssl<br/>SSL/TLS 协议"]
        X509["mbedtls_x509_crt<br/>证书解析与验证"]
        PK["mbedtls_pk<br/>RSA/EC 密钥对"]
        MD["mbedtls_md / sha256<br/>消息摘要与 HMAC"]
        AES["mbedtls_aes<br/>对称加密"]
        DRBG["mbedtls_ctr_drbg<br/>随机数生成器"]
    end

    subgraph sg_Net["网络基础层 (lwIP)"]
        TCP["TCP/UDP socket"]
    end

    App --> TLSClient
    App --> TLSServer
    App --> SelfTest
    App --> DTLS
    App --> EchoCloud
    App --> TelecomAES

    TLSClient --> SSL
    TLSServer --> SSL
    DTLS --> SSL
    EchoCloud --> MD
    TelecomAES --> AES
    SelfTest --> AES
    SelfTest --> MD

    SSL --> X509
    SSL --> PK
    SSL --> DRBG
    SSL --> TCP
    DTLS --> TCP

架构解读:整个安全体系呈"底座 + 封装 + 应用"三层结构。mbedTLS 3.4.0 是唯一的加密底座,向上提供 SSL/TLS 协议、X.509 证书、密钥对、摘要、AES 与随机数六大类能力;lib/net 下的 EchoCloud、电信云、tinydtls 是基于底座的具体封装;应用层既可直接使用 mbedTLS API(如 awtk 的 TLS 客户端/服务端示例),也可通过平台封装间接获得安全能力。随机数生成器(CTR_DRBG)为 TLS 握手提供熵源,这是 TLS 安全性的根基——没有足够的熵,所有密钥交换都不安全。

mbedTLS 3.4.0 集成与裁剪

库结构与设计意图

mbedTLS 3.4.0 以完整开源库形式存放于 lib/net/mbedtls_3_4_0/,其 README 明确了该库的定位:

Mbed TLS is a C library that implements cryptographic primitives, X.509 certificate manipulation and the SSL/TLS and DTLS protocols. Its small code footprint makes it suitable for embedded systems.

SDK 采用"随源码发布 + 预编译库链接"的方式:仓库内提供 mbedTLS 源码与头文件,最终链接时配合平台库文件(*.a)编译(见 README.md)。这意味着算法裁剪在编译期通过配置宏完成,而非运行时开关,从而把未使用算法的代码从固件中剔除。

能力清单

能力模块提供组件典型用途
SSL/TLS 协议mbedtls_ssl_*HTTPS、WSS、MQTT over TLS
DTLS 协议mbedtls_ssl(datagram 模式)与 tinydtlsCoAP 安全传输
X.509 证书mbedtls_x509_crt_*服务器证书校验、客户端证书
公钥算法mbedtls_pk_*(RSA/EC)证书私钥、握手密钥交换
对称加密mbedtls_aes_*业务数据 AES 加解密(电信云等)
消息摘要mbedtls_sha1/sha256/md5、mbedtls_md_*签名、校验和
HMACmbedtls_md_hmac云平台动态签名(EchoCloud)
随机数mbedtls_ctr_drbg_* + mbedtls_entropyTLS 握手熵源
自测mbedtls_*_self_test固件加密功能验证

TLS 客户端实现(mbedtls_client.c)

awtk 网络流中的 mbedtls_client.c 是 SDK 内最完整的 TLS 客户端参考实现,演示了标准的 mbedTLS 使用范式:初始化 → 配置 → 握手 → 通信 → 释放。

上下文初始化

TLS 客户端持有四类核心上下文,在建立连接前必须逐一初始化:

mbedtls_ssl_config_init(&(client->conf));
mbedtls_x509_crt_init(&(client->cacert));
mbedtls_ctr_drbg_init(&(client->ctr_drbg));

Source: mbedtls_client.c

conf 保存 TLS 版本、密码套件、验证模式等握手参数;cacert 用于加载并保存 CA 根证书链;ctr_drbg 提供握手所需的随机数。三者生命周期贯穿整个 TLS 连接,在连接结束时通过 mbedtls_x509_crt_free、mbedtls_ssl_free、mbedtls_net_free 逆序释放,避免资源泄漏。

CA 证书加载

客户端以"服务器证书必须由可信 CA 签发"为安全前提,先解析 PEM 格式的 CA 根证书:

ret = mbedtls_x509_crt_parse(&(client->cacert), (const unsigned char *)cas_pem, cas_pem_len);
if (ret < 0) {
    log_debug(" failed\n  !  mbedtls_x509_crt_parse returned -0x%x\n\n", (unsigned int) - ret);
    goto error;
}

Source: mbedtls_client.c

设计要点:mbedtls_x509_crt_parse 返回负值表示解析失败,错误码取反后以十六进制打印便于对照 mbedTLS 错误码表;证书解析失败直接 goto error 终止连接——这是"证书不可信即拒绝通信"的安全策略,防止中间人攻击。

证书验证失败诊断

握手后若证书链验证不通过,mbedTLS 会将验证标志位保存在 ssl.verify_result,示例通过 mbedtls_x509_crt_verify_info 生成人类可读的诊断信息:

mbedtls_x509_crt_verify_info(vrfy_buf, sizeof(vrfy_buf), "  ! ", flags);
log_debug("%s\n", vrfy_buf);

Source: mbedtls_client.c

flags 是按位组合的验证结果(如证书过期、主机名不匹配、签名不可信),mbedtls_x509_crt_verify_info 将其翻译为逐条文本,对嵌入式联调极为重要——证书过期与域名不匹配是 IoT 设备上云最常见的两类失败。

TLS 服务端实现(mbedtls_server.c)

mbedtls_server.c 展示设备作为 TLS 服务端(如本地配网、设备间通信)的完整流程。与客户端不同,服务端必须持有服务器证书 + 私钥:

mbedtls_x509_crt_init(&(server->srvcert));
mbedtls_pk_init(&(server->pkey));

Source: mbedtls_server.c

随后加载服务器证书与私钥。源码注释特别指出,演示程序使用嵌入式测试证书,生产环境应改用文件解析接口:

This demonstration program uses embedded test certificates. Instead, you may want to use mbedtls_x509_crt_parse_file() to read the server and CA certificates, as well as mbedtls_pk_parse_keyfile().

Source: mbedtls_server.c

证书加载分两步:先解析服务器证书本身,再解析签发它的 CA 证书(用于构造信任链):

ret = mbedtls_x509_crt_parse(&(server->srvcert), (const unsigned char *)srv_crt, srv_crt_len);
...
ret = mbedtls_x509_crt_parse(&(server->srvcert), (const unsigned char *)cas_pem, cas_pem_len);

Source: mbedtls_server.c

设计意图:srvcert 链同时包含服务器证书与 CA 证书,这样 TLS 握手时服务端能把完整证书链发给客户端,客户端只需持有根 CA 即可验证。释放时同样逆序:mbedtls_net_free → mbedtls_x509_crt_free → mbedtls_pk_free。

Core Flow — TLS 握手时序

sequenceDiagram
    participant C as TLS 客户端 (mbedtls_client.c)
    participant S as TLS 服务端 (mbedtls_server.c)
    participant R as mbedTLS 底座 (mbedtls_3_4_0)

    C->>R: mbedtls_ssl_config_init / x509_crt_init / ctr_drbg_init
    C->>R: mbedtls_x509_crt_parse(CA 根证书)
    C->>C: 建立 TCP 连接 (mbedtls_net_connect)
    C->>R: mbedtls_ssl_setup + set_hostname + set_authmode

    S->>R: mbedtls_x509_crt_parse(服务器证书 + CA)
    S->>R: mbedtls_pk_parse_key(私钥)
    S->>S: TCP 监听 (mbedtls_net_bind/accept)

    C->>S: ClientHello (含随机数、密码套件列表)
    S->>C: ServerHello + 服务器证书链 + ServerKeyExchange
    C->>R: mbedtls_x509_crt_verify(证书链 + 主机名校验)
    C->>S: ClientKeyExchange + ChangeCipherSpec + Finished
    S->>C: ChangeCipherSpec + Finished
    Note over C,S: 握手完成,会话密钥就绪
    C->>S: 应用数据加密传输 (mbedtls_ssl_write/read)
    C->>R: mbedtls_ssl_free / x509_crt_free / net_free

流程要点:

  1. 双向初始化:客户端与服务端各自初始化上下文;客户端加载 CA 根证书,服务端加载证书链与私钥
  2. 握手密钥协商:ClientHello/ServerHello 交换随机数与密码套件,ServerKeyExchange 携带密钥交换参数
  3. 证书验证:客户端用 CA 证书验证服务端证书链(有效期、签名、主机名),失败则终止——这是防中间人攻击的关键闸门
  4. 会话建立:双方交换密钥材料并完成 Finished 校验,之后所有应用数据经会话密钥加密
  5. 资源释放:连接结束逆序释放全部上下文,防止内存泄漏(嵌入式环境尤为敏感)

云端签名与对称加密封装

HMAC-SHA256 动态签名(EchoCloud)

EchoCloud 平台通过 HMAC-SHA256 生成设备认证签名。核心实现位于 echo_cloud_nonce.c,它直接复用 mbedTLS 的消息摘要抽象层:

int echo_cloud_get_hmac_sha256(const char *device_id, const char *channel_uuid, const char *nonce, char *signature, const char *hash_key)
{
    ...
    if (0 != mbedtls_md_hmac(&mbedtls_sha256_info, (unsigned char *)hash_key, strlen(hash_key),
                             (unsigned char *)input, strlen(input), output)) {
        return -1;
    }
}

Source: echo_cloud_nonce.c

设计意图:mbedtls_md_hmac 是 mbedTLS 的消息摘要抽象接口,&mbedtls_sha256_info 指明使用 SHA-256 作为底层哈希。平台约定以 device_id + channel_uuid + nonce 作为输入、以 hash_key 作为密钥计算 HMAC,生成 64 字符十六进制签名。由于 nonce(随机数)每次不同,签名是动态的,防止重放攻击。

该签名被同时用于 HTTP 与 MQTT 两种接入通道(见 echo_cloud_http.c 与 echo_cloud_mqtt.c):

echo_cloud_get_hmac_sha256(hdl->auth->device_id, hdl->auth->channel_uuid, nonce, signature_str, hdl->auth->hash);

MQTT 场景下签名直接充当连接密码(mqtt->password),实现"无明文密码、动态口令"的设备认证。

AES 对称加解密(电信云)

电信云接入使用 AES 对业务数据加解密,实现在 ctei_aes.c,通过条件编译开关控制加解密代码是否编入固件:

#if (AES_ENCRYPT == 1)
/* AES 加密实现 */
#endif

#if (AES_DECRYPT == 1)
/* AES 解密实现 */
#endif

Source: ctei_aes.c 与 ctei_aes.c

设计意图:AES_ENCRYPT / AES_DECRYPT 两个宏允许按产品需求裁剪——只上云不发固件的设备可关闭解密分支,减少代码与内存占用;这也体现了 SDK"配置宏裁剪"的统一安全设计哲学。

DTLS 支持(tinydtls)

针对 CoAP 等 UDP 应用,SDK 集成了 tinydtls。其核心 dtls.c 通过编译宏选择哈希实现:

#ifdef WITH_SHA256
#  include "sha2/sha2.h"
#endif

Source: dtls.c

设计意图:DTLS 为无连接的 UDP 增加与 TLS 等价的机密性、完整性与防重放保护。WITH_SHA256 宏控制 DTLS 握手使用的哈希算法(SHA-256 较 SHA-1 更安全),与 mbedTLS 底座形成互补——mbedTLS 本身也支持 DTLS 模式,tinydtls 则提供了更轻量的 UDP 安全选项。

算法自测(self-test)

固件可通过 wl80_test.c 对加密库做启动自检,验证 AES、SHA-1、SHA-256 算法在目标硬件上正确运行:

int mbedtls_sha1_self_test(int verbose);
int mbedtls_sha256_self_test(int verbose);
ASSERT(mbedtls_aes_self_test(0) == 0);
ASSERT(mbedtls_sha1_self_test(0) == 0);
ASSERT(mbedtls_sha256_self_test(0) == 0);

Source: wl80_test.c

设计意图:mbedTLS 内置自测向量(known-answer tests),verbose=0 静默执行、返回 0 表示通过。在量产固件启动阶段执行自测,能及早发现硬件随机数异常、Flash 中算法表损坏等问题,是嵌入式安全产品的常见健壮性手段。

Configuration Options

网络安全与加密能力主要通过编译期宏配置(裁剪)与运行时 API 参数(行为)两类方式控制:

配置项类型默认值说明
AES_ENCRYPT编译宏视平台定义电信云 AES 加密分支是否编译(ctei_aes.c)
AES_DECRYPT编译宏视平台定义电信云 AES 解密分支是否编译(ctei_aes.c)
WITH_SHA256编译宏平台相关tinydtls 是否使用 SHA-256 作为握手哈希(dtls.c)
mbedTLS 配置宏编译宏由 mbedtls_config 决定启用/禁用 AES、SHA、RSA、EC、TLS 1.2/1.3、DTLS 等特性
auth 模式API 参数由应用设置mbedtls_ssl_conf_authmode:MBEDTLS_SSL_VERIFY_REQUIRED 强制校验证书
验证标志位API 输出—ssl.verify_result:握手后证书链验证结果(mbedtls_x509_crt_verify_info 可解读)
self-test verboseAPI 参数0mbedtls_*_self_test(verbose),1 输出详细测试向量日志

注意:mbedTLS 的裁剪宏在 SDK 中位于 lib/net/mbedtls_3_4_0/ 的配置头文件内,修改后需重新编译链接平台库(*.a)才能生效。未启用算法的相关调用会在编译期失败,属于预期行为。

API Reference

以下为 SDK 实际使用并验证的关键 mbedTLS API(完整签名以 mbedTLS 3.4.0 头文件为准):

mbedtls_x509_crt_parse(crt, buf, buflen)

解析 PEM/DER 格式的 X.509 证书并追加到证书链。

  • 参数:crt(mbedtls_x509_crt *)目标证书链;buf(const unsigned char *)证书数据;buflen(size_t)数据长度
  • 返回:0 成功;负值失败,绝对值即 mbedTLS 错误码(示例中以 -0x%x 打印)
  • 用途:客户端加载 CA 根证书、服务端加载服务器证书与 CA 链
  • 参考:mbedtls_client.c L66

mbedtls_x509_crt_verify_info(buf, size, prefix, flags)

将证书链验证标志位转换为可读诊断文本。

  • 参数:buf/size 输出缓冲区;prefix 每行前缀(示例用 " ! ");flags 验证结果位掩码
  • 返回:写入字节数
  • 用途:握手失败后输出证书过期、主机名不匹配等具体原因
  • 参考:mbedtls_client.c L143

mbedtls_md_hmac(md_info, key, keylen, input, ilen, output)

基于指定摘要算法计算 HMAC 签名。

  • 参数:md_info 摘要算法信息(如 &mbedtls_sha256_info);key/keylen HMAC 密钥;input/ilen 待签名数据;output 摘要输出
  • 返回:0 成功;负值失败
  • 用途:EchoCloud 设备动态签名生成(HTTP 与 MQTT 通道共用)
  • 参考:echo_cloud_nonce.c L143

echo_cloud_get_hmac_sha256(device_id, channel_uuid, nonce, signature, hash_key)

EchoCloud 平台签名封装函数(SDK 自研,非 mbedTLS 原生)。

  • 参数:device_id/channel_uuid 设备标识;nonce 随机数;signature 输出 64 字符十六进制签名;hash_key HMAC 密钥
  • 返回:0 成功;-1 HMAC 计算失败
  • 用途:生成 HTTP 签名头与 MQTT 连接密码
  • 参考:echo_cloud_nonce.c L136

mbedtls_aes_self_test(verbose) / mbedtls_sha1_self_test(verbose) / mbedtls_sha256_self_test(verbose)

算法自测入口,验证加密实现正确性。

  • 参数:verbose 是否输出详细日志
  • 返回:0 通过;非 0 失败
  • 用途:固件启动自检(ASSERT(... == 0))
  • 参考:wl80_test.c L86-L91

失败模式、边界情况与并发

证书解析/验证失败

  • mbedtls_x509_crt_parse 返回负值:PEM 损坏、证书过期或格式不匹配。示例中直接 goto error 终止连接,绝不降级为不校验继续通信
  • 握手后 verify_result 非 0:证书链不可信、主机名不匹配。需用 mbedtls_x509_crt_verify_info 定位具体原因;生产环境应设置 MBEDTLS_SSL_VERIFY_REQUIRED,避免自签证书风险

熵源与随机数

  • TLS 握手依赖 CTR_DRBG 随机数;嵌入式平台若熵源(硬件 RNG/时钟抖动)不足,握手可能失败或密钥可预测。生产固件应确保熵源已正确接入 mbedtls_entropy 模块,并可通过自测提前暴露问题

资源生命周期与内存

  • 每个 TLS 连接必须成对调用 init/free(ssl、x509_crt、net、pk),顺序错误或遗漏会导致内存泄漏与句柄耗尽——嵌入式 RAM 有限,反复重连后泄漏会最终导致 OOM
  • 服务端每 accept 一个连接即分配一套上下文,高并发下需关注 RAM 峰值

并发与重入

  • mbedTLS 的 mbedtls_ssl 上下文不支持多线程并发读写同一连接;多连接场景须为每连接分配独立上下文,并通过互斥锁保护共享的熵源与 DRBG
  • 签名函数 echo_cloud_get_hmac_sha256 无全局状态,可安全并发调用;ctei_aes.c 的加解密分支由宏静态裁剪,无运行时竞争

平台安全边界

  • mbedTLS 与平台库(*.a)配套编译(见 README.md),升级 mbedTLS 版本或更换平台库时必须整套重编,避免 ABI 不匹配导致的内存布局错误

性能与运维注意事项

  • 裁剪是首要优化手段:TLS 握手是 CPU 密集型操作(RSA/EC 运算)。按产品实际需求关闭不用的算法(如只用 TLS 客户端则裁掉服务端代码、只上云则关掉本地 TLS),可同时减少固件体积与 RAM 占用。AES_ENCRYPT/AES_DECRYPT、WITH_SHA256 即此类裁剪的示例
  • 会话复用:频繁重连的 MQTT/HTTPS 场景应启用 mbedTLS 会话缓存(session resumption),将握手开销从毫秒级 RSA 运算降为一次缓存查找,显著改善重连延迟
  • 证书存储:CA 根证书通常以 PEM 数组内嵌在固件中(示例中的 cas_pem/cas_pem_len),也可改用文件接口(mbedtls_x509_crt_parse_file)从文件系统加载,便于远程更新证书而不重刷固件
  • 日志与联调:握手失败时优先检查 verify_result 的 mbedtls_x509_crt_verify_info 输出;self_test(verbose=1) 可输出算法测试向量用于硬件排查
  • 固件发布:apps/common/example/readme.md 将 mbedtls 列为独立章节,提示"用作服务器方法、客户端方法、证书配置"三块内容;发布前建议在目标硬件上跑一遍 wl80_test 中的自测用例

扩展点

  1. 新增云平台安全接入:仿照 EchoCloud 模式,在 lib/net/ 下新增平台目录,复用 mbedtls_md_hmac 生成签名、mbedtls_ssl 建立安全通道,保持与现有 auth->hash/nonce 结构一致
  2. 证书管理策略:基于 mbedtls_x509_crt_parse 扩展远程证书更新流程(如 OTA 下载新 CA 后替换内嵌证书数组)
  3. DTLS 应用:为 CoAP 应用叠加 tinydtls(WITH_SHA256)或 mbedTLS datagram 模式,实现 UDP 安全传输
  4. 算法自检集成:将 mbedtls_*_self_test 接入产品自检流程,作为量产测试项

Related Links

  • mbedTLS 3.4.0 库说明:官方定位、特性与 PSA Crypto API
  • mbedtls_client.c:TLS 客户端完整参考实现
  • mbedtls_server.c:TLS 服务端完整参考实现
  • echo_cloud_nonce.c:HMAC-SHA256 动态签名实现
  • ctei_aes.c:AES 加解密封装(宏裁剪示例)
  • dtls.c:DTLS 协议实现
  • wl80_test.c:mbedTLS 算法自测用例
  • SDK 总览:基础协议与云平台清单
  • 相关页面:网络基础协议(lwIP/socket)、HTTPS/MQTT 应用协议、云平台接入(涂鸦/阿里云/腾讯云等)

文档说明:本页基于 SDK 源码(lib/net/mbedtls_3_4_0/、lib/net/EchoCloud/、lib/net/telecom/、lib/net/tinydtls/、apps/common/example/third_party/awtk/src/streams/inet/、apps/wifi_story_machine/test/)编写;mbedTLS 内部各算法模块的具体实现(如 library/aes.c、library/ssl_tls.c)位于开源库内,本文未逐行展开,如需深入了解请直接查阅 mbedTLS 3.4.0 源码。

Prev
lwIP TCP/IP 协议栈
Next
应用层网络协议