7.3.2 OneTLS 加密组件
2026/7/19大约 3 分钟常用组件组件加密TLSOneTLS
7.3.2 OneTLS 加密组件
📚 本节导读
学习时长:约 25 分钟
难度级别:⭐⭐⭐⭐☆
前置知识:第 7.3.1 节 MBED TLS、SSL/TLS 协议原理
🎯 学习目标
- 理解 OneTLS 与 MBED TLS 的关系和定位差异
- 掌握 OneTLS 的分层架构(crypto + tls)
- 了解 OneTLS 的 Kconfig 配置方法
- 知道何时选择 OneTLS vs MBED TLS
一、OneTLS 概述
OneTLS 是 OneOS 自研的轻量级 TLS/DTLS 安全通信库,位于 components/security/onetls/。与 MBED TLS 相比,OneTLS 更专注于资源受限的 IoT 场景,提供更精简的 TLS 协议实现。
1.1 与 MBED TLS 的对比
| 特性 | OneTLS | MBED TLS |
|---|---|---|
| 来源 | OneOS 自研 | ARM 开源(mbedTLS) |
| 定位 | 轻量级 IoT 场景 | 通用嵌入式 TLS 库 |
| 体积 | 更精简 | 功能完整 |
| 定制性 | 高(与 OneOS 深度集成) | 中等 |
| 协议支持 | TLS 1.2, DTLS 1.2 | TLS 1.0/1.1/1.2, DTLS 1.0/1.2 |
| 适用场景 | 资源严重受限的 IoT 设备 | 需要完整 TLS 功能的场景 |
1.2 目录结构
components/security/onetls/
├── crypto/ # 密码学模块
│ ├── include/ # 密码学接口头文件
│ └── source/ # 密码学实现
├── tls/ # TLS/DTLS 协议实现
│ ├── include/ # TLS 接口头文件
│ └── source/ # TLS 协议实现
├── tests/ # 测试代码
├── Kconfig # 配置选项
└── readme.md二、分层架构
┌─────────────────────────────────┐
│ 应用层 │
│ (MQTT over TLS, HTTPS 等) │
├─────────────────────────────────┤
│ OneTLS TLS 协议层 (tls/) │
│ ┌───────────┬───────────────┐ │
│ │ TLS 1.2 │ DTLS 1.2 │ │
│ │ 握手/记录 │ 握手/记录 │ │
│ └───────────┴───────────────┘ │
├─────────────────────────────────┤
│ OneTLS 密码学层 (crypto/) │
│ ┌──────┬──────┬──────┬──────┐ │
│ │ AES │ RSA │ ECC │ SHA │ │
│ └──────┴──────┴──────┴──────┘ │
├─────────────────────────────────┤
│ 硬件平台 │
└─────────────────────────────────┘三、Kconfig 配置
OneTLS 的配置定义在 components/security/onetls/Kconfig 中:
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
SECURITY_USING_ONETLS | bool | n | 启用 OneTLS 安全库 |
ONETLS_USING_TLS | bool | y | 启用 TLS 协议 |
ONETLS_USING_DTLS | bool | n | 启用 DTLS 协议 |
ONETLS_USING_CRYPTO | bool | y | 启用密码学模块 |
ONETLS_USING_AES | bool | y | 启用 AES 加密 |
ONETLS_USING_RSA | bool | n | 启用 RSA 非对称加密 |
ONETLS_USING_ECC | bool | y | 启用椭圆曲线加密 |
ONETLS_USING_SHA256 | bool | y | 启用 SHA-256 哈希 |
ONETLS_USING_HMAC | bool | y | 启用 HMAC 消息认证 |
ONETLS_USING_TEST | bool | n | 启用测试用例 |
配置菜单
(Top) → Components → Security → OneTLS
[*] Enable OneTLS
[*] Enable TLS protocol
[ ] Enable DTLS protocol
[*] Enable crypto module
[*] Enable AES
[ ] Enable RSA
[*] Enable ECC
[*] Enable SHA-256
[*] Enable HMAC
[ ] Enable OneTLS test四、使用建议
4.1 何时选择 OneTLS
- 资源严重受限的 MCU(如 Cortex-M0,Flash < 128KB)
- 只需要基本的 TLS 1.2 客户端功能
- 需要与 OneOS 深度集成和定制
- 对 TLS 服务端功能无需求
4.2 何时选择 MBED TLS
- 需要完整的 TLS 协议栈(包括服务端)
- 需要 DTLS 支持
- 需要 X.509 证书管理
- 需要使用多种密码学算法
- 需要与第三方库兼容
4.3 共存使用
OneTLS 和 MBED TLS 可以在同一个 OneOS 工程中共存,通过 Kconfig 分别控制启用。两者使用不同的 API 命名空间,不会冲突。
📝 本节小结
- OneTLS 是 OneOS 自研的轻量级 TLS 库,专注于资源受限的 IoT 设备
- 采用 crypto + tls 两层架构,按需裁剪
- 与 MBED TLS 互补:OneTLS 更轻量,MBED TLS 功能更完整
- 两者可在同一工程中共存,按场景选择