NIkir0LL/lacert-crypto-esp32

GitHub: NIkir0LL/lacert-crypto-esp32

运行于 ESP32 的后量子 IoT 安全接入客户端固件,实现 ML-KEM-1024 握手、持续密钥轮换与远程固件校验,为企业级物联网设备提供无云端的安全通信通道。

Stars: 0 | Forks: 0

# lacert-crypto-esp32 [English](#english) · [Русский](#русский) ## English **适用于 ESP32 的 LACERT 协议客户端,使用 C 语言 (ESP-IDF) 编写。** 这是 LACERT 的设备端固件 —— LACERT 是一种后量子、无云端的方案, 用于将 IoT 设备连接到企业网络。它运行与 Go 网关 ([lacert-crypto-go](https://github.com/NIkir0LL/lacert-crypto-go)) 相同的 协议:后量子握手、持续密钥轮换和远程固件完整性 检查 —— 并在资源受限的 ESP32 硬件上运行。 已在 **ESP32-C6** (Seeed XIAO) 和 **ESP32-S3** (DevKitC-1) 上测试。 ### 本仓库包含什么 仅包含**原始的 LACERT 代码**: | 路径 | 说明 | |------|------| | `main/lacert_client.c/.h` | 协议客户端(连接、遥测、轮换) | | `main/lacert_crypto.c/.h` | crypto 胶水代码(ML-KEM, BLAKE3, ChaCha20) | | `main/lacert_wire.c/.h` | 消息序列化 | | `main/main.c` | Wi-Fi 启动与演示循环 | | `CMakeLists.txt`, `partitions.csv`, `sdkconfig.defaults*` | 构建配置 | ### 第三方组件**未**捆绑 加密原语本身来自已有的项目,**没有**被复制到本仓库中: - **ML-KEM-1024** — 来自 [PQClean](https://github.com/PQClean/PQClean)(公有领域) - **BLAKE3** — [官方 C 语言实现](https://github.com/BLAKE3-team/BLAKE3)(CC0 / Apache-2.0) 在构建之前,请将它们拉取到 `components/` 中: ``` ./scripts/fetch-components.sh ``` ### 构建与烧录 ``` # 1. 获取第三方 crypto 组件 ./scripts/fetch-components.sh # 2. 选择你的 target 并构建 (ESP-IDF v5.x) idf.py set-target esp32c6 # or esp32s3 idf.py build # 3. 烧录 (XIAO → /dev/ttyACM0, DevKitC → /dev/ttyUSB0) idf.py -p /dev/ttyACM0 flash monitor ``` ### License 原始代码采用 Apache License 2.0 —— 参见 [LICENSE](LICENSE)。拉取的 第三方组件保留其各自的许可证。 ## Русский **Клиент протокола LACERT для ESP32 на языке C (ESP-IDF).** Это прошивка для устройства в схеме LACERT — постквантовой, без облака, системе безопасного подключения IoT-устройств к корпоративным сетям. Прошивка выполняет тот же протокол, что и Go-шлюз ([lacert-crypto-go](https://github.com/NIkir0LL/lacert-crypto-go)): постквантовое рукопожатие, непрерывную ротацию ключей и удалённую проверку целостности прошивки — на устройстве с ограниченными ресурсами. Проверено на **ESP32-C6** (Seeed XIAO) и **ESP32-S3** (DevKitC-1). ### 仓库中包含的内容 Только **оригинальный код LACERT**: | Путь | Что это | |------|---------| | `main/lacert_client.c/.h` | клиент протокола (подключение, телеметрия, ротация) | | `main/lacert_crypto.c/.h` | связка с криптографией (ML-KEM, BLAKE3, ChaCha20) | | `main/lacert_wire.c/.h` | сериализация сообщений | | `main/main.c` | поднятие Wi-Fi и демонстрационный цикл | | `CMakeLists.txt`, `partitions.csv`, `sdkconfig.defaults*` | конфигурация сборки | ### 第三方组件 **不存储** 在仓库中 Сами криптографические примитивы взяты из известных проектов и **не** копируются сюда: - **ML-KEM-1024** — из [PQClean](https://github.com/PQClean/PQClean) (public domain) - **BLAKE3** — [референсная реализация на C](https://github.com/BLAKE3-team/BLAKE3) (CC0 / Apache-2.0) Перед сборкой их нужно подтянуть в `components/`: ``` ./scripts/fetch-components.sh ``` ### 构建和烧录 ``` # 1. 获取第三方 crypto 组件 ./scripts/fetch-components.sh # 2. 选择开发板并构建 (ESP-IDF v5.x) idf.py set-target esp32c6 # или esp32s3 idf.py build # 3. 烧录 (XIAO → /dev/ttyACM0, DevKitC → /dev/ttyUSB0) idf.py -p /dev/ttyACM0 flash monitor ``` ### License Apache License 2.0 для оригинального кода — см. [LICENSE](LICENSE). Подтянутые чужие компоненты сохраняют свои лицензии.
标签:Bash脚本, ESP32, 后量子密码学, 固件开发, 客户端加密, 嵌入式系统, 物联网, 设备身份认证