La funzione hash è una funzione RO o ci sarà la possibilità che la funzione hash modifichi il file (come parte della funzione o in caso di errore) che sta eseguendo l'hashing?
La funzione hash è una funzione RO o ci sarà la possibilità che la funzione hash modifichi il file (come parte della funzione o in caso di errore) che sta eseguendo l'hashing?
Una funzione di hash funziona su dati, cioè dati di input e output. Se i dati provengono da un file o rete o simili e se vengono scritti su un file o da qualche altra parte non ha nulla a che fare con la funzione hash stessa ma con un programma che utilizza questa funzione di hash per uno scopo particolare. Questo scopo può essere quello di stampare solo il valore hash risultante su stdout senza modificare il file di input. Ma una funzione di hash può anche essere utilizzata nel processo di aggiunta di una firma ad alcune sezioni di un file, nel qual caso il file viene modificato.
Nel caso generale, la creazione di un hash di un file non modifica il file originale.
Ad esempio in linux il comando md5sum
può essere usato per creare un hash di un file.
user@host:/etc$ md5sum /etc/hosts
d060f54470d55f7c02e639ed92bff5d3 /etc/hosts
l'hash viene stampato sullo schermo e non modifica il file originale.
Ci sono due parti in un file: il contenuto del file (inclusi gli stream primari e alternativi) ei metadati relativi al file. L'hashing di un file non cambierà il contenuto del file, ma potrebbe cambiare i metadati del file. Quindi se il tuo intento era quello di ottenere l'hash di un file e non sapere che qualcuno lo ha fatto, allora i metadati potrebbero darlo via. Come esempio su Windows, quando si accede a un file si finisce per cambiare l'ultima data di accesso del file.
Hai chiesto se poteva alterarlo in caso di incidente ... sì, ma dovrebbe essere un incidente molto grave (o un coder molto malizioso e molto stupido).
Un programma che hash un file ha bisogno di leggere quel file. Questo significa che deve aprirlo. I file devono essere aperti per la lettura o la scrittura o entrambi. Non è possibile scrivere su un file aperto per la lettura. Un file aperto per la scrittura non può essere letto. Quindi è estremamente improbabile che questo tipo di errore possa accadere, figuriamoci passare anche i test più basilari.
OTOH un programmatore malintenzionato potrebbe provare a modificare il tuo file. Questo è un attacco estremamente improbabile in quanto sarà chiaramente ovvio quanto è successo, e anche accecantemente ovvio nel codice. Quel codice non durerebbe a lungo.
È possibile proteggersi da questo con i permessi dei file, rendere il file di sola lettura e il programma non può scrivere su di esso (alcuni sistemi operativi e file system possono consentire al proprietario del file o al superutente di scrivere comunque). Tuttavia, se il programma è eseguito dal proprietario del file, il programma può modificare le autorizzazioni del file, modificare il file e modificarlo. Questo include tutti i suoi metadati. Come ho detto, questo tipo di codice malevolo è estremamente facile da individuare ed estremamente improbabile che esista in natura.
La vera risposta è usare un software crittografico affidabile, revisionato, ben collaudato e non qualcosa che hai copiato da Internet.
Leggi altre domande sui tag hash