Sobre o projeto

SolidSyslog é uma biblioteca cliente de syslog estruturado voltada a dispositivos embarcados e industriais. Ela implementa syslog estruturado RFC 5424, com transportes UDP (RFC 5426) e TCP (RFC 6587); o TLS conforme a RFC 5425 é fornecido pela plataforma, de modo que qualquer biblioteca TLS pode ser conectada por trás da mesma vtable Stream. O TLS não é uma dependência central, e o Core não contém nenhuma referência a uma biblioteca TLS. O propósito declarado é dar a produtos embarcados já em produção a trilha de auditoria de segurança esperada sob a Lei de Resiliência Cibernética da UE e a IEC 62443, como um componente que você adiciona em vez de um redesenho. Pegada de recursos, conforme publicado pelo projeto: cerca de +5 KB de flash e 1,9 KB de RAM para um registro RFC 5424 válido com carimbo de data/hora no fio; cerca de +16,4 KB de flash e 36,3 KB de RAM para o caminho completo, incluindo armazenamento e encaminhamento, identidade do dispositivo, TLS mútuo e criptografia AES-GCM em repouso, principalmente buffers TLS. Esses números são descritos como o que a biblioteca adiciona a um dispositivo que já executa FreeRTOS, lwIP, FatFs e Mbed TLS, medidos em um Cortex-M3 sob QEMU. Duas integrações completas são publicadas como repositórios separados, uma consumida com CMake e outra com Make, com cada estágio como um único commit. Características de design: - C99, sem alocação dinâmica de memória; as instâncias residem em um pool estático interno da biblioteca dimensionado em tempo de compilação - Agnóstico a transporte: UDP, TLS, transporte personalizado - Agnóstico a buffer: PassthroughBuffer (envio direto), um CircularBuffer (anel com mutex injetado), fila de mensagens POSIX, personalizado - Orientado por MISRA C:2012 Os recursos incluem formatação estruturada RFC 5424 sobre UDP, TCP e TLS/TLS mútuo; bufferização assíncrona; armazenamento e encaminhamento em blocos rotativos; e proteção de registros em repouso usando CRC-16 para corrupção acidental, ou HMAC-SHA256 com chave / AES-256-GCM quando um atacante local está no escopo. O projeto mapeia os controles de registro de auditoria da IEC 62443 em um guia dedicado. Toda dependência de plataforma - pilha TCP/IP, biblioteca TLS, sistema de arquivos, primitivas de SO, relógio - é injetada por meio de uma vtable, de modo que portar significa preencher papéis em vez de editar o Core. Pacotes de plataforma são fornecidos para alvos hospedados e embarcados; alvos hospedados são suportados como hosts de desenvolvimento, teste e edge/gateway. A revogação de TLS (CRL/OCSP) não é realizada pela biblioteca; a aplicação depende do backend TLS e da plataforma configurados. Arquitetura: OO em C. Dependências de plataforma e recursos opcionais são papéis de vtable injetados na configuração e compostos em tempo de link, de modo que recursos não conectados são descartados pelo linker em vez de excluídos pelo pré-processador; a implementação do Core não contém condicionais de recursos. Os cabeçalhos públicos são divididos por público: o código da aplicação inclui SolidSyslog.h, enquanto o código de configuração inclui SolidSyslogConfig.h mais um cabeçalho por componente conectado. Um objeto Null substitui qualquer papel não preenchido. Os testes usam binários orientados por BDD, um por configuração de alvo, no host e sob QEMU, cada um exercitando a biblioteca de ponta a ponta contra um servidor syslog real. A documentação está hospedada em docs.cososo.co.uk/solid-syslog, organizada nas seções Core, Integrate, Platforms, Compliance, referência de API e Maintaining, incluindo um caminho de hardening, guia de integração de build, guia de portabilidade, matriz de conformidade com RFC, modelo de ameaças e guias CRA/IEC 62443. O relato de vulnerabilidades é feito via SECURITY.md. O licenciamento é source-available sob três alternativas: PolyForm Internal Use 1.0.0 (gratuita para avaliação e desenvolvimento dentro de qualquer organização), PolyForm Noncommercial 1.0.0 (gratuita para uso hobby, beneficente, educacional, de pesquisa pública e governamental, incluindo redistribuição), e uma licença comercial exigida ao fornecer, vender ou distribuir um produto, dispositivo, firmware ou serviço comercial que contenha a biblioteca.