Estoy trabajando en una aplicación que descargará archivos de servidores externos a través de https y los almacenará en el disco de forma relativamente segura. Específicamente, utilizando un IV criptográficamente único, un bloque de cifrado AES256, el modo de bloque CTR y un hash HMAC de los datos cifrados y IV.
Uno de los requisitos de este proyecto es que no se deben almacenar archivos duplicados. Dada la necesidad de un IV único para almacenar de forma segura los archivos, no puedo simplemente usar un hash del archivo cifrado para ver si la descarga es un duplicado. Un sha256 o sha512 del contenido de texto sin formato tampoco es suficiente porque el cliente puede descargar y almacenar archivos de un solo carácter, lo que hace que su contenido sea fácil de adivinar, lo que potencialmente abre el sistema a vectores de ataque de texto sin formato conocidos.
¿Entonces me preguntaba si se consideraría razonablemente seguro almacenar los hashes HMAC del texto sin formato, usando una clave derivada de Argon2ID como la clave de firma de HMAC?
Estos hashes se almacenarán en una base de datos de clave / valor, y se utilizarán como clave de búsqueda para ver si un archivo descargado es uno que ya tenemos. La clave Argon2ID nunca se almacenará.