这个项目能做什么
SolidSyslog 是一个面向嵌入式与工业设备的结构化 syslog 客户端库。它实现 RFC 5424 结构化 syslog,支持 UDP(RFC 5426)和 TCP(RFC 6587)传输;RFC 5425 规定的 TLS 由平台提供,因此任何 TLS 库都可以接入同一个 Stream 虚表之后。TLS 不是核心依赖,Core 中不包含对任何 TLS 库的引用。
其既定目标是为量产的嵌入式产品提供欧盟《网络弹性法案》(CRA)和 IEC 62443 所要求的安全审计追踪,作为可添加的组件,而非需要重新设计。
项目公布的资源占用:在网络上生成一条带有效时间戳的 RFC 5424 记录,约增加 5 KB flash 和 1.9 KB RAM;包含存储转发、设备身份、双向 TLS 和静态 AES-GCM 加密的完整路径,约增加 16.4 KB flash 和 36.3 KB RAM,主要是 TLS 缓冲区。这些数据被描述为库在已运行 FreeRTOS、lwIP、FatFs 和 Mbed TLS 的设备上新增的占用,在 QEMU 下的 Cortex-M3 上测得。项目以独立仓库形式发布了两套完整集成示例,一套使用 CMake 消费,一套使用 Make,每个阶段对应一个提交。
设计特点:
- C99,无动态内存分配;实例位于库内部、编译期确定大小的静态池中
- 传输无关:UDP、TCP、TLS 或自定义传输
- 缓冲区无关:PassthroughBuffer(直接发送)、可移植的 CircularBuffer(注入互斥锁的环形缓冲)、POSIX 消息队列或自定义实现
- 参考 MISRA C:2012
能力包括:通过 UDP、TCP 和 TLS/双向 TLS 进行 RFC 5424 结构化格式化;异步缓冲;轮转块存储转发;以及静态记录保护,使用 CRC-16 应对意外损坏,或在本地攻击者在威胁范围内时使用带密钥的 HMAC-SHA256 / AES-256-GCM。项目在专门指南中映射了 IEC 62443 审计日志控制项。
所有平台依赖——TCP/IP 协议栈、TLS 库、文件系统、操作系统原语、时钟——均通过虚表注入,因此移植意味着填充角色,而不是修改 Core。平台包面向托管和嵌入式目标发布;托管目标作为开发、测试和边缘/网关主机受到支持。TLS 吊销(CRL/OCSP)不由本库执行;是否强制执行取决于所配置的 TLS 后端和平台。
架构:C 语言中的面向对象。平台依赖和可选功能是在初始化时注入、在链接时组合的虚表角色,因此未接线的功能会被链接器丢弃,而不是由预处理器排除;Core 的实现中不包含任何功能条件编译。公共头文件按受众拆分:应用代码包含 SolidSyslog.h,而初始化代码包含 SolidSyslogConfig.h 以及每个已接线组件对应的一个头文件。Null 对象可替代任何未填充的角色。
测试使用 BDD 驱动的二进制程序,每个目标配置一个,在主机和 QEMU 下运行,每个都针对真实 syslog 服务器对库进行端到端测试。
文档托管于 docs.cososo.co.uk/solid-syslog,分为 Core、Integrate、Platforms、Compliance、API reference 和 Maintaining 等部分,包括加固路径、构建集成指南、移植指南、RFC 合规矩阵、威胁模型以及 CRA/IEC 62443 指南。漏洞报告通过 SECURITY.md 进行。
许可采用源码可得的三种方案:PolyForm Internal Use 1.0.0(任何组织内部用于评估和开发免费)、PolyForm Noncommercial 1.0.0(业余、慈善、教育、公共研究和政府用途免费,包括再分发),以及当供应、销售或分发包含本库的商业产品、设备、固件或服务时所需的商业许可。
评论
0 评分人数达到10人后显示
登录后参与讨论。