Hacker News 中文摘要

RSS订阅

wolfSSL发布新产品wolfCOSE:零分配C语言嵌入式COSE堆栈 -- wolfSSL releases a new product; wolfCOSE a zero alloc C embbedded COSE stack

文章摘要

wolfCOSE是一个轻量级C库,基于wolfSSL加密后端实现CBOR和COSE标准。主要特点包括:支持40种算法和全COSE消息类型;具备后量子签名能力;零动态内存分配;极小内存占用(最小7.5KB);支持FIPS 140-3认证;适用于嵌入式系统。提供签名、加密和MAC算法,包括ES系列、EdDSA、ML-DSA和AES等。

文章总结

wolfCOSE 项目概述

wolfCOSE 是一个轻量级的 C 语言库,实现了 CBOR (RFC 8949) 和 COSE (RFC 9052/9053) 标准,使用 wolfSSL 作为加密后端。

主要特性

  • 完整的 RFC 9052 消息集:支持所有六种 COSE 消息类型,包括多签名者 COSE_Sign 和多接收者 COSE_Encrypt / COSE_Mac
  • 后量子签名:支持 ML-DSA (Dilithium) 的所有三个安全级别
  • 40 种算法:涵盖签名、加密、MAC 和密钥分发
  • 零动态分配:所有操作使用调用者提供的缓冲区
  • 极小体积:最小构建(Sign1+ECC)仅 7.5 KB .text,完整构建(40 种算法)25.6 KB,零 .data/.bss
  • 完整 COSE 生命周期仅需约 1KB RAM(不包括 wolfCrypt 内部使用)
  • FIPS 140-3 认证路径:通过 wolfCrypt FIPS 证书 #4718

支持的算法

  • 签名:ES256, ES384, ES512, EdDSA (Ed25519/Ed448), PS256/384/512, ML-DSA-44/65/87
  • 加密:AES-GCM (128/192/256), ChaCha20-Poly1305, AES-CCM 变体
  • MAC:HMAC-SHA256/384/512, AES-MAC
  • 密钥分发:Direct, AES Key Wrap, ECDH-ES+HKDF

COSE 消息类型

wolfCOSE 实现了 RFC 9052 中定义的所有消息类型,包括单参与者和多参与者变体:

| 消息类型 | API | 用途 | |---------|-----|------| | COSE_Sign1 | wc_CoseSign1_Sign / wc_CoseSign1_Verify | 单签名者签名 | | COSE_Sign | wc_CoseSign_Sign / wc_CoseSign_Verify | 多签名者(同一负载上的独立签名) | | COSE_Encrypt0 | wc_CoseEncrypt0_Encrypt / wc_CoseEncrypt0_Decrypt | 单接收者 AEAD | | COSE_Encrypt | wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_Decrypt | 多接收者(通过 Direct / AES-KW / ECDH-ES 分发) | | COSE_Mac0 | wc_CoseMac0_Create / wc_CoseMac0_Verify | 单接收者 MAC | | COSE_Mac | wc_CoseMac_Create / wc_CoseMac_Verify | 多接收者 MAC(共享 MAC 密钥) | | COSE_Key / COSE_KeySet | wc_CoseKey_Encode / wc_CoseKey_Decode | 所有密钥类型的序列化 |

构建选项

wolfCOSE 需要 wolfSSL 作为加密后端,最低支持版本为 v5.8.0-stable。提供多种构建配置: - 最小构建(ECC + AES-GCM):支持 COSE Sign1 (ES256/384/512) 和 Encrypt0 (AES-GCM) - 最小构建(后量子/仅 ML-DSA):纯后量子签名支持 - 完整构建(所有算法):支持全部 40 种算法

测试与合规性

  • 持续集成:每次推送和 PR 时运行
  • 全面测试:约 240 种算法组合测试
  • 静态分析:cppcheck, Clang 分析器, GCC -fanalyzer
  • MISRA C 合规:2012 和 2023 版本
  • 代码覆盖率:wolfcose.c 达 99.3%,wolfcose_cbor.c 达 100%

文档与支持

完整文档可在 Wiki 获取,包括: - 入门指南 - 消息类型详解 - 算法列表 - API 参考 - MISRA 合规性说明

wolfCOSE 目前采用 GPLv3 许可,虽然由 wolfSSL 开发者维护,但尚未列为官方支持产品。如需商业许可或专业支持,请联系 wolfSSL

评论总结

总结评论内容:

  1. 关于COSE的解释说明(无评分)
  • 主要观点:介绍COSE是CBOR对象签名加密标准,类似JSON的JOSE标准
  • 关键引用: "For those of us not in the loop, COSE is CBOR Object Signing and Encryption" "对于不了解的人来说,COSE是CBOR对象签名和加密" "It is patterned off JOSE, the JSON standards which includes favorites like JWK" "它模仿了JOSE标准,即包含JWK等常用功能的JSON标准"
  1. 对项目readme的批评(无评分)
  • 主要观点:指出项目文档中关于内存分配的表述不准确
  • 论据: a) 未说明架构/编译器参数的.text大小无意义 b) 栈分配不等于零分配,代码中存在大量栈分配
  • 关键引用: "Saying it takes 0 .bss and .data just means it allocates everything elsewhere" "说占用0.bss和.data只是表示它在其他地方分配" "Some of this code will allocate hundreds if not low thousands of bytes onto the stack" "这些代码会在栈上分配数百甚至数千字节"

不同观点保持平衡:第一条是技术解释,第二条是技术批评,都聚焦于技术细节本身。