Estoy usando las funciones sodium_crypto_secretbox
y sodium_crypto_secretbox_open
en PHP (actualmente PHP 5.6, usando paragonie/sodium_compat
).
Si un usuario tiene texto cifrado, no cifrado y descifrado, ¿puede determinar la clave que se utilizó para cifrar la información?
El contexto: estoy cifrando el token de inicio de sesión del usuario (una cookie, almacenada en la máquina) y lo uso como un token CSRF. El token CSRF necesariamente incluye el nonce para descifrado cuando se envía. El token CSRF se descifra y se verifica al enviar los formularios POST para protegerlos contra los ataques CSRF.
Mi preocupación no es tanto por los atacantes CSRF que no tendrán acceso a las cookies, sino por la propia clave. Por simplicidad, sería útil usar la misma clave para otras funciones de cifrado en el software, pero no puedo si se puede exponer fácilmente a través de esta información. Un usuario legítimo puede ver el token y la cookie CSRF: ¿podrían descubrir la clave?