Estoy utilizando NServiceBus con MSMQ entre mi aplicación web y el servicio y necesito poder encriptar la carga útil del mensaje para que si un mensaje se pone en cola localmente en el servidor web (el host del servicio está inactivo) no se puedan visto.¿Dónde colocas una clave de cifrado en un servidor público?
Como el servidor web es público, no solo estoy obligado a cifrar datos que pueden ser serializados en el disco de todos modos, sino que tampoco puedo almacenar la clave de cifrado en el servidor web.
He considerado el uso de DPAPI para almacenar la clave, pero dado que la clave se almacenará en el host, no sé si eso entra en conflicto con el requisito o no. La otra opción que he considerado es que cuando se inicia la aplicación web, podría solicitar la clave de un servicio y mantenerla en la memoria durante la vida del grupo de aplicaciones.
No he tenido que trabajar antes con este nivel de requisitos de cifrado y me gustaría saber qué hacen los demás y obtener comentarios sobre las ideas mencionadas anteriormente.
Hagas lo que hagas, contrata a un consultor de seguridad para verificar la eficacia de tu diseño/implementación. Si no es un experto en este campo, es trivialmente fácil cometer un error y los costos de ese error podrían ser enormes en comparación con los costos de pagarle a alguien para ayudarlo a hacerlo bien. cf. Sistemas de pago Heartland. – jason
Esto no me parece un problema que resuelve la criptografía asimétrica. – rook
La clave asimétrica al menos reduciría la probabilidad de que un observador lea el estado existente del disco. Aunque con la llave asimétrica en la mano, un observador podría usar eso para comenzar un ataque de fuerza bruta. – stephbu