Skip to main content

Module wirecrypt

Module wirecrypt 

Source
Expand description

Cifras de criptografia do wire negociadas após o SRP.

O Firebird chaveia a cifra simétrica com a chave de sessão SRP K. Cada direção usa uma instância de cifra independente inicializada com a mesma chave, então o cliente mantém uma cifra de leitura e outra de escrita separadas.

Estão implementados Arc4 (RC4) e ChaCha/ChaCha64 (ChaCha20), os três plugins padrão de WireCryptPlugin do FB5.

  • Arc4: chaveado direto com a chave de sessão SRP K; mesma chave nas duas direções.
  • ChaCha / ChaCha64: a chave é SHA-256(K) (32 bytes); o nonce é anunciado pelo servidor no buffer de troca de chaves do handshake, logo após o nome do plugin ("ChaCha\0" + 12 bytes, ou "ChaCha64\0" + 8 bytes). Contador inicial 0; mesma chave+nonce nas duas direções. ChaCha usa nonce de 96 bits + contador de 32 bits (estilo IETF/RFC 8439); ChaCha64 usa nonce de 64 bits + contador de 64 bits (estilo DJB original).

Structs§

ChaCha20
Cifra de fluxo ChaCha20 (RFC 8439 e a variante DJB de 64 bits).
Rc4
Cifra de fluxo RC4 clássica.

Enums§

WireCryptPlugin
O plugin de criptografia do wire a negociar.

Functions§

make_ciphers
Constrói o par de cifras de leitura/escrita para o plugin negociado.