Esto es para la aplicación de extremo a extremo, donde el servidor es un almacenamiento temporal 'tonto'. Estoy considerando usar HTTP simple (sin TLS) para transmitir ciphertexts debido a las siguientes razones:
- la seguridad de un solo algoritmo de cifrado está bien estudiada,
se desconoce el apilamiento de varios (por ejemplo,
NaCl()
vs.AES(NaCl()
) - Simplicidad (en reposo == en tránsito)
- Aumento de la carga del servidor (copia cero
sendfile(2)
vs. copiando a la memoria RAM para cifrar TLS).
¿Qué riesgos tengo al utilizar una configuración como esta:
- Dos canales:
- HTTPS para autenticación / metadatos / recibir un token de una sola vez,
- HTTP para transmitir textos cifrados.
- El cliente utiliza GET / POST enlace .
Cuerpo: texto cifrado (fragmentado en modo AEAD), tamaño flexible (puede ser grande) - El servidor valida el token (para evitar su reutilización) y luego transmite el texto cifrado a / desde el disco.
- El cliente recibe y descifra el texto cifrado (para detectar modificaciones, truncamientos, etc.)