Estoy creando un servicio de almacenamiento en la nube y necesito tener la capacidad de proporcionar seguridad confiable para los clientes. En mi pregunta anterior , Utilicé un esquema diferente y dije que publicaría una nueva pregunta.
Todavía estoy tratando de lograr la seguridad contra la NSA y la posibilidad de problemas legales. Me gustaría que mis usuarios cifraran sus archivos antes de enviarlos a mis servidores. Usaré AES-256 y la clave se creará con el hashing de la contraseña del usuario 1,048,576 (2 ^ 20) veces para evitar intentos de fuerza bruta.
El problema es que cualquiera puede cargar archivos, eliminar archivos o modificarlos de esta manera. Necesito poder verificar la contraseña, pero al mismo tiempo, no exponerla al servidor. Me preguntaba si la contraseña podría usarse para firmar la información enviada al servidor, no solo para verificar la identidad del usuario, sino también para evitar la manipulación de los contenidos durante el transporte. ¿Cuál es la mejor manera de hacerlo sin exponer la contraseña o su hash?