Supponiamo di avere 55 file. 5 sono file di dati, 1 dei quali memorizza gli hash, 50 sono script.
Ho bisogno di creare un IDS per i file stessi che apre costantemente il file hash dedicato, legge gli hash, quindi controlla i file da cui sono stati calcolati per asserire una corrispondenza. Se fallisce un'intrusione si è verificata e SysAdmin è stato notificato.
Questo è il punto in cui inizio ad avere problemi.
Dopo aver eseguito uno script locale esterno sugli altri 54 file, memorizzo i loro hash nel 1 file hash dedicato. Ora, ho bisogno di calcolare l'hash di questo file hash dedicato, come se l'hash di se stesso fosse già di per sé.
Non ho idea di dove iniziare, a parte un metodo di "blocco bruto", che non è fattibile dato che ho bisogno di impiegare il minor tempo di clock, i cicli della CPU e il tempo di disco possibile.
Punti bonus per la previsione e la memorizzazione degli hash crittografati.
Inoltre, mi scuso per qualsiasi confusione, non posso spiegare molto bene.
Aggiornamento: mi è stato chiesto di spiegare il problema e perché questa soluzione lo risolvesse, quindi, ecco qui.
Problema: Supponiamo che io abbia diversi terabyte di informazioni personali su persone provenienti da tutto il mondo che siano archiviate in modo sicuro su un server e ancora più trasmesse in sicurezza al software client secondo necessità. Informazioni di valore elevato, per questo.
La crittografia è più che contemplata - al punto che chiunque fosse deciso a ottenere queste informazioni avrebbe tentato di modificare gli script che proteggevano, leggevano e scrivevano i dati tentando di minare la crittografia.
Ciò solleva il problema di rilevare quando questi file di script vengono modificati al volo, supponendo che la persona malintenzionata possa accedere fisicamente al server.
La maggior parte dei log degli eventi non sono sicuri e non sono tracciabili, quindi potrebbero essere facilmente cancellati. Qualsiasi trasferimento di rete per rilevare le modifiche fallirebbe, in quanto anche i dati più sicuri non sarebbero difficili da decifrare quando hai la fonte di fronte a te. Non puoi fidarti degli umani, mai, e le server farm non sono di mia proprietà, quindi la sicurezza fisica è fuori questione.
In che modo la soluzione lo risolverebbe: L'ID dovrebbe essere eseguito una volta ogni 10ms, analizzando i file per assicurarsi che gli hash corrispondano a quelli registrati. Supponendo un aggiornamento ogni tre mesi agli script e ai dati, gli hash e gli aggiornamenti verrebbero preconfezionati, quindi non potrebbero essere modificati dal programma stesso al di fuori dell'ambiente di sviluppo. Questo verrebbe verificato dopo l'avvio di ogni sistema, ma ancora una volta, questi dati potrebbero essere modificati con l'accesso fisico, tuttavia, con controlli remoti di routine eseguiti ogni pochi minuti, non dovrebbe essere un grosso problema.
TL; DR: il problema si riduce alla creazione di una fonte di dati e una rete di dati inaccessibili, non censibili, che elimina tutte le potenziali variabili problematiche dai dump della RAM, all'esecuzione remota, alla modifica fisica.
Chiedo scusa per il vagabondaggio.