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, 后量子密码学, 固件开发, 客户端加密, 嵌入式系统, 物联网, 设备身份认证