Digamos que tengo 55 archivos. 5 son archivos de datos, 1 de los cuales almacena los hashes, 50 son scripts.
Necesito crear un IDS para los archivos en sí mismo, que constantemente abre el archivo hash dedicado, lee los hashes y luego verifica los archivos desde los que se calcularon para establecer una coincidencia. Si falla. se ha producido una intrusión y se notifica a SysAdmin.
Aquí es donde empiezo a tener problemas.
Después de ejecutar un script local externo en los otros 54 archivos, almaceno sus hash en el 1 archivo hash dedicado. Ahora, necesito calcular el hash de este archivo hash dedicado, como si el hash de sí mismo ya estuviera en sí mismo.
No tengo idea de por dónde empezar que no sea un método de "bloqueo bruto", que no es viable ya que necesito tomar la menor cantidad de tiempo de reloj, ciclos de CPU y tiempo de disco posible.
Puntos de bonificación para la predicción y el almacenamiento de hashes cifrados.
También, disculpas por cualquier confusión, no puedo explicar muy bien.
Actualización: me pidieron que explicara el problema y por qué esta solución lo resolvería, así que, aquí va.
Problema: Supongamos que tengo varios terabytes de información personal de personas de todo el mundo que se almacenan de forma segura en un servidor y que se transmiten de manera más segura al software del cliente según sea necesario. Información de alto valor, en eso.
El cifrado está más que cubierto, hasta el punto de que cualquier persona que estuviera empeñada en obtener esta información intentaría modificar los scripts que aseguran, leen y escriben los datos en lugar de socavar el cifrado.
Esto plantea el problema de detectar cuándo estos archivos de script se modifican sobre la marcha, asumiendo que la persona maliciosa puede acceder físicamente al servidor.
La mayoría de los registros de eventos son inseguros y sin seguimiento, por lo que podrían borrarse fácilmente. Cualquier transferencia de red para detectar cambios fallaría, ya que incluso los datos más seguros no serían difíciles de descifrar cuando tenga la fuente frente a usted. No puedes confiar en los humanos, nunca, y las granjas de servidores no son de mi propiedad, por lo que la seguridad física está fuera de discusión.
Cómo lo solucionaría la solución: El IDS se ejecutaría una vez cada 10 ms, analizando los archivos para asegurarse de que los hash coincidan con los registrados. Suponiendo una actualización cada tres meses para los scripts y los datos, los hashes y las actualizaciones vienen preempaquetados, por lo que el programa no puede modificarlos fuera del entorno de desarrollo. Esto se verificará una vez que se inicie cada sistema, pero nuevamente, estos datos podrían modificarse con acceso físico, sin embargo, con controles de rutina que se ejecutan cada pocos minutos, no debería ser un problema importante.
TL; DR: el problema se reduce a convertir una fuente de datos y una red de datos inaccesibles e irrecuperables, eliminando todas las posibles variables problemáticas desde los volcados de RAM, la ejecución remota y la modificación física.
Disculpas por las divagaciones.