kamil-kielbasa/libedhoc

GitHub: kamil-kielbasa/libedhoc

该项目是 RFC 9528 EDHOC 轻量级认证密钥交换协议的 C 语言实现,为资源受限的 IoT 设备提供安全上下文建立能力。

Stars: 16 | Forks: 6

# libedhoc [![CI / Linux](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/98301824c7125103.svg)](https://github.com/kamil-kielbasa/libedhoc/actions/workflows/ci-linux.yml) [![CI / Zephyr](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/b970d1ac27125109.svg)](https://github.com/kamil-kielbasa/libedhoc/actions/workflows/ci-zephyr.yml) [![CI / Sandbox](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/0af7c2d77a125114.svg)](https://github.com/kamil-kielbasa/libedhoc/actions/workflows/ci-sandbox.yml) [![codecov](https://codecov.io/gh/kamil-kielbasa/libedhoc/branch/main/graph/badge.svg)](https://codecov.io/gh/kamil-kielbasa/libedhoc) [![文档](https://img.shields.io/badge/docs-GitHub%20Pages-blue)](https://kamil-kielbasa.github.io/libedhoc/) [![发布](https://img.shields.io/endpoint?url=https://kamil-kielbasa.github.io/libedhoc/release.json)](https://github.com/kamil-kielbasa/libedhoc/releases) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![RFC](https://img.shields.io/badge/RFC-9528-informational)](https://datatracker.ietf.org/doc/html/rfc9528) [![RFC](https://img.shields.io/badge/RFC-9529-informational)](https://datatracker.ietf.org/doc/rfc9529/) Ephemeral Diffie-Hellman Over COSE (EDHOC) 协议的 C 语言实现——这是一种为资源受限设备设计的轻量级认证密钥交换协议。EDHOC 提供双向认证、前向保密和身份保护,旨在用于受限场景;其主要用例是建立受限 RESTful 环境(OSCORE)安全上下文。由 IETF 标准化为 [RFC 9528](https://datatracker.ietf.org/doc/html/rfc9528),并已通过 [RFC 9529](https://datatracker.ietf.org/doc/html/rfc9529) 测试向量进行验证。 ## 功能 - 基于上下文的 API,使用上下文句柄实现安全访问控制 - 对 CoAP 友好的消息组合与处理 - 导出 OSCORE 会话以建立安全通信通道 - 为加密密钥、操作、凭据和 EAD 提供独立接口 - 私钥只能通过标识符访问;从不暴露原始密钥材料 - 所有 CBOR 编码/解码均被封装并对用户隐藏 - 可插拔的内存后端:通过 VLA 使用栈(默认,无堆)、堆(calloc / k_calloc)或自定义分配器 - 原生支持 Zephyr RTOS 并集成了 west manifest - 已通过 cppcheck、clang-tidy、ASan、UBSan、Valgrind 和 LibFuzzer 验证 ### 加密套件 | Suite | AEAD | Hash | ECDH | Signature | |-------|--------------------|---------|---------|-----------| | 0 | AES-CCM-16-64-128 | SHA-256 | X25519 | EdDSA | | 2 | AES-CCM-16-64-128 | SHA-256 | P-256 | ES256 | | 24 | A256GCM | SHA-384 | P-384 | ES384 | ### 认证方法 支持所有四种 EDHOC 认证方法 (0–3),结合了发起者和响应者的签名密钥(Signature Keys)和静态 DH 密钥(Static DH Keys)。 ## 指标 | 指标 | 值 | |--------------------------|----------------------------------------------------------------| | 行覆盖率 | 92.8% | | 函数覆盖率 | 100% | | 测试数量 | 706+ (单元、集成、模糊测试) | | 库的闪存占用 | ~20 KiB (加密套件 2, P-256/ES256, native_sim) | | 静态 RAM (data + bss) | 0 字节 (默认栈后端;所有状态都在栈上) | 覆盖率详情请见 [Codecov 仪表板](https://codecov.io/gh/kamil-kielbasa/libedhoc)。内存和时间基准测试可作为 [CI artifacts](../../actions/workflows/ci-zephyr.yml) 获取。 ## 文档 完整文档托管在 GitHub Pages 上:。 | 文档 | 你将找到的内容 | |---------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------| | [简介](https://kamil-kielbasa.github.io/libedhoc/getting_started/introduction.html) | EDHOC 和 libedhoc 是什么,支持的方法和加密套件 | | [快速入门](https://kamil-kielbasa.github.io/libedhoc/getting_started/quick_start.html) | 最小可行构建与握手骨架 | | [概念一览](https://kamil-kielbasa.github.io/libedhoc/getting_started/concepts.html) | EDHOC 心智模型 —— 角色、方法、加密套件、导出器 | | [协议流程](https://kamil-kielbasa.github.io/libedhoc/guide/protocol_flow.html) | 完整的 CoAP + EDHOC 消息交换图 | | [配置](https://kamil-kielbasa.github.io/libedhoc/guide/configuration.html) | Kconfig / 编译时选项和日志 | | [API 参考](https://kamil-kielbasa.github.io/libedhoc/api/index.html) | 生命周期、错误模型以及各模块 API 页面 | | [错误代码](https://kamil-kielbasa.github.io/libedhoc/reference/error_codes.html) | `enum edhoc_error_code` 和运行时获取错误的 API | | [值](https://kamil-kielbasa.github.io/libedhoc/reference/values.html) | CBOR 快捷常量以及提取/扩展标签 | | [词汇表](https://kamil-kielbasa.github.io/libedhoc/reference/glossary.html) | 文档中使用的每个 EDHOC / libedhoc 术语的定义 | | [测试](https://kamil-kielbasa.github.io/libedhoc/project/testing.html) | 测试架构以及如何运行测试套件 | | [贡献](https://kamil-kielbasa.github.io/libedhoc/project/contributing.html) | 提交更改的工作流 | ## 安全 有关漏洞报告和支持版本的策略,请参阅 [SECURITY.md](SECURITY.md)。 ## 许可证 MIT 许可证。详情请参阅 [LICENSE](LICENSE) 文件。 ## 相关项目 - [node-edhoc](https://github.com/stoprocent/node-edhoc) — EDHOC 的 TypeScript/Node.js 实现。 ## 联系方式 email: kamkie1996@gmail.com
标签:Bash脚本, CoAP, OSCORE, 客户端加密, 密码学, 密钥交换, 嵌入式, 手动系统调用, 物联网