Protocolo de comunicação
Tecnologia

Protocolo de Mensagens

Formato de frames, tipos de mensagem, priorização e mecanismos de segurança. Otimizado para as limitações do LoRa.

O protocolo SIREN define o formato das mensagens trocadas na rede mesh. Foi desenhado para ser compacto devido às limitações de payload do LoRa, seguro através de assinaturas em todas as mensagens, e extensível para futuras necessidades.

Formato

Estrutura do Frame

Cada mensagem segue um formato binário compacto otimizado para LoRa.


┌─────────────────────────────────────────────────────────────┐
│                    SIREN Message Frame                       │
├──────┬──────┬──────┬──────┬──────────┬──────────┬───────────┤
│ Ver  │ Type │ Flags│ TTL  │  Source  │  Dest    │ Timestamp │
│ 1B   │ 1B   │ 1B   │ 1B   │   8B     │   8B     │    4B     │
├──────┴──────┴──────┴──────┴──────────┴──────────┴───────────┤
│                         Nonce (8B)                           │
├──────────────────────────────────────────────────────────────┤
│                     Payload (0-180B)                         │
├──────────────────────────────────────────────────────────────┤
│                    Signature (64B)                           │
└──────────────────────────────────────────────────────────────┘

Total: 96B header + payload + 64B signature = 160-340B
              
CampoTamanhoDescrição
Version1BVersão do protocolo
Type1BTipo de mensagem
Flags1BOpções da mensagem
TTL1BTime-To-Live (max 7 saltos)
Source8BID do nó origem
Destination8BID do nó destino
Timestamp4BUnix timestamp
Nonce8BValor único anti-replay
Payload0-180BDados da mensagem
Signature64BAssinatura Ed25519
Tipos

Tipos de Mensagem

O protocolo suporta diferentes tipos de mensagens para diversos casos de uso.

0x01

EMERGENCY

Alerta de emergência (broadcast)

0x02

SOS

Pedido de socorro com localização

0x03

STATUS

Relatório de estado

0x04

MESSAGE

Mensagem ponto-a-ponto

0x05

BEACON

Anúncio de presença

0x06

ACK

Confirmação de receção

0x10

TRUST_VERIFY

Verificação de confiança

0x11

TRUST_VOUCH

Atestação de outro nó

Opções

Flags de Mensagem

O byte de flags controla o comportamento da mensagem.

7

Requires ACK

Solicita confirmação

6

Encrypted

Payload cifrado

5

Compressed

Payload comprimido

4

Fragmented

Mensagem fragmentada

3

Priority

Alta prioridade

0-2

Reserved

Reservado para futuro

Priorização

Níveis de Prioridade

As mensagens são processadas por ordem de prioridade.

1

Máxima

EMERGENCY, SOS

2

Alta

ACK, TRUST_*

3

Normal

STATUS, QUERY, RESPONSE

4

Baixa

MESSAGE

5

Mínima

BEACON

Fragmentação

Mensagens Grandes

Para payloads superiores a 180 bytes, a mensagem é fragmentada.


┌──────────┬──────────┬──────────┬─────────────────┐
│ Frag ID  │ Frag Num │ Total    │   Fragment      │
│   2B     │    1B    │   1B     │    0-176B       │
└──────────┴──────────┴──────────┴─────────────────┘
              

Timeout de reassembly

30 segundos

Cifragem

Cifragem End-to-End

Para mensagens privadas, o payload pode ser cifrado opcionalmente.

1

Key Exchange

X25519 ECDH

2

Key Derivation

HKDF-SHA256

3

Encryption

ChaCha20-Poly1305

Segurança

Proteção Anti-Replay

Cada nó mantém mecanismos de proteção contra replay attacks.

Janela Temporal

±5 minutos

Mensagens fora desta janela são rejeitadas automaticamente.

Cache de Nonces

1000 mensagens

Bloom filter para deteção eficiente de nonces duplicados.

Mensagens são rejeitadas se:

  • O timestamp estiver fora da janela temporal
  • O nonce já tiver sido visto anteriormente
  • A assinatura Ed25519 for inválida