Cifrado de disco:
XTS-AES 256
Intercambio y cifrado seguro de texto y mensajes:
Utilizamos el protocolo Double Ratchet para intercambiar mensajes cifrados. X3DH se utiliza para acuerdos de claves entre las partes.
Los algoritmos utilizados por estos protocolos son:
- EdDsa on Ed25519
- ECHD con Curve25519 (X25519)
- Esquema de cifrado AEAD utilizando HKDF con AES256-CBC / HMAC-SHA256
Intercambio y cifrado de voz:
El secreto compartido se intercambia a través del canal de mensajería segura entre dispositivos:
La voz se cifra utilizando AEAD AES256-GCM después de derivar un AES256-CM_PRF mediante HKDF a partir del secreto compartido.
Además, para el tráfico de red, aplicamos:
- TLS 1.3 utilizando Ed25519/X25519 y autenticación mutua.
- XEdDsa y VXEdDsa: Se utilizan para crear y verificar firmas compatibles con EdDsa utilizando formatos de clave pública y privada inicialmente definidos para las funciones X25519 y Diffie-Hellman de curva elíptica.
Además, se utiliza VXEdDsa, que extiende XEdDsa para convertirlo en una función aleatoria verificable o VRF.
- X3DH: El protocolo Extended Triple Diffie-Hellman es un protocolo de acuerdo de claves. X3DH establece una clave secreta compartida entre dos partes que se autentican mutuamente en función de las claves públicas. X3DH proporciona secreto hacia adelante y negación criptográfica.
- Double Ratchet: El algoritmo Double Ratchet, que se utiliza para que dos partes intercambien mensajes cifrados basados en una clave secreta compartida. Las partes derivan nuevas claves para cada mensaje Double Ratchet para que las claves anteriores no puedan calcularse a partir de las posteriores.
Las partes también envían valores públicos Diffie-Hellman adjuntos a sus mensajes. El resultado de los cálculos Diffie-Hellman se mezcla en la clave derivada para que las claves posteriores no puedan calcularse a partir de las anteriores. Estas propiedades brindan cierta protección a los mensajes cifrados anteriores o posteriores en caso de compromiso de las claves de una de las partes.
- Sesame: El algoritmo Sesame se utiliza para gestionar sesiones de cifrado de mensajes en un entorno asincrónico y multi-dispositivo.