Comoda guida multipiattaforma per il controllo di hash sicuri come SHA-256

22

Spesso è utile essere in grado di ottenere un buon checksum crittografico di un file, ad es. l'hash SHA-256 . Questo può essere usato per verificare l'integrità del file, a patto che tu abbia una fonte affidabile per l'hash.

Il supporto per SHA-256 e MD5 dalla riga di comando sono forniti di default in Ubuntu e probabilmente in altre versioni di Linux e BSD tramite i programmi sha256sum e md5sum.

Su un Mac (10.5) vedo il programma della riga di comando "md5", ma nulla per SHA-256. Dati i problemi di collisione dell'hash con MD5, è una scelta tutt'altro che ideale.

E non riesco a trovare alcun software installato di default su Windows per calcolare gli hash crittografici. Il più vicino allo "standard" che ho visto era un riferimento Microsoft a come scaricare un programma da riga di comando opzionale, Utilità Verification integrità file Checksum che può fare SHA-1 (che è ancora relativamente sicuro), ma non SHA-256.

Un download che ho eseguito per SHA-256 è hashcalc per il supporto della GUI multipiattaforma, ma io non l'hai controllato o provato.

  • Mi manca qualche software di hash sicuro predefinito (migliore di MD5) per Windows o Mac?

  • Esiste una pagina da qualche parte che fornisce consigli sugli strumenti di hashing per una varietà di sistemi operativi? Idealmente porterebbe a soluzioni GUI sicure e convenienti.

Chiarimento : Sto cercando un consiglio che posso condividere con gli altri, che li aiuterà a lavorare in sicurezza con gli hash. Per "sicuro" intendo qualcosa che, ad esempio, un dipendente del governo potrebbe determinare con relativa facilità di non essere troppo rischioso. Ad esempio, il software installato per impostazione predefinita, documentato e supportato dal fornitore, è molto meno rischioso rispetto all'installazione di alcuni file eseguibili di terze parti da Internet. Se deve essere un software di terze parti, è preferibile qualcosa che è controllato e raccomandato dagli esperti.

(Cfr. firme cross-platform )

    
posta nealmcb 06.11.2011 - 18:15
fonte

7 risposte

12

L'unico strumento che viene in mente, in particolare per Unix (o comunque si suppone che lo pluralizzi) è openssl:

openssl dgst -sha256 path/to/file

Il comando openssl dgst fornisce molte opzioni di hashing comuni e openssl è installato su molti Unix sistemi per impostazione predefinita ed è disponibile anche per Windows. Credo che venga fornito anche con OSX. Sono d'accordo, è una situazione tutt'altro che ideale per Windows spedire senza uno strumento del genere.

Per quanto riguarda gli strumenti della GUI, non conosco altro che HashCalc, che hai già menzionato.

    
risposta data 06.11.2011 - 18:39
fonte
15

Per Windows, è possibile utilizzare PowerShell, che viene installato per impostazione predefinita su Windows 7 / Server 2008 R2 e successivi. La funzione Get-FileHash è stata introdotta in PowerShell v4, fornito con Windows 8.1 e Windows Server 2012 R2. Per le versioni precedenti di PowerShell, questi script del blog di James Manning faranno il trucco.

Esempio di utilizzo di Get-FileHash:

C:\Windows> Get-FileHash -Algorithm md5 .\notepad.exe

Algorithm       Hash                                                                   Path
---------       ----                                                                   ----
MD5             24DA05ADE2A978E199875DA0D859E7EB                                       C:\Windows\notepad.exe

Gli algoritmi supportati sono SHA1, SHA256, SHA384, SHA512, MACTripleDES, MD5 e RIPEMD160.

    
risposta data 13.10.2013 - 19:50
fonte
9

In un ambiente misto Windows / Unix, quello che uso per gli algoritmi crittografici comuni è:

Purtroppo, nessuno dei due è fornito con Windows, richiedono un'installazione separata.

Ecco un semplice one-liner per calcolare l'HMAC di un file usando Python. Digita la chiave in esadecimale nel terminale (o passala sullo standard input con echo … | , ma fai attenzione che la chiave finirà nella cronologia della shell). Il file viene letto in memoria, cosa che non funzionerà per file di grandi dimensioni.

python -c "import binascii, hashlib, hmac, sys; print hmac.new(binascii.unhexlify(str.strip(sys.stdin.readline())), open(sys.argv[1]).read(), hashlib.sha256).hexdigest()" myfile.dat

Su Windows, un semplice verificatore di hash (che supporta SHA e altri ancora e HMAC) utilizzabile da una persona non tecnica è SashSoft HashCalc . Sfortunatamente, non è open-source, quindi potresti non avere la massima fiducia nelle sue operazioni.

    
risposta data 06.11.2011 - 18:48
fonte
3

Che ne pensi del NIST USA (National Institute of Standards and Technology) Eseguono un programma di convalida crittografico e elencano le implementazioni verificate degli algoritmi di hashing crittografici su: link

Contiene alcune librerie Java che potrebbero essere utilizzate su più piattaforme.

    
risposta data 07.11.2011 - 07:09
fonte
2

In realtà ho creato un piccolo wrapper python attorno all'ape di hashlib python per questo scopo esatto. Dovevo essere in grado di controllare e calcolare gli hash tra nix, mac e windows, in particolare sha256.

C'è anche un piccolo gui wxPython che è opzionale da usare.

Il codice è qui: link

Se l'installazione di python non è un'opzione, sarebbe facile produrre una build eseguibile per questo che non richiederebbe l'installazione di python.

    
risposta data 07.11.2011 - 14:46
fonte
1

sphlib è una libreria che implementa molte funzioni di hash, scritte in C. Include uno strumento da riga di comando (sphsum) che imita il comportamento di md5sum / sha1sum e il suo ilk e supporta MD5 e SHA-256 (e una serie di altre funzioni). Compilare su tutti i tipi di sistemi simili a Unix (incluso MacOS) e anche su Windows (sono incluse istruzioni di compilazione, ma è necessario Visual C , MinGW o lccwin32 ).

sphlib include anche l'implementazione Java di tutte queste funzioni di hash. A proposito, sia Java che .NET includono le implementazioni SHA-256 per impostazione predefinita, quindi è possibile creare un'applet Java e / o un assembly C # che eseguono l'hashing. Pertanto, si farebbe affidamento solo sui componenti forniti da Oracle o Microsoft; sarebbe difficile essere più "ufficiali" di quello.

Oltre a md5 , MacOS X (10.7, almeno) include un'utilità chiamata shasum che può calcolare gli hash con qualsiasi famiglia SHA- * (SHA-1, SHA-224, SHA-256, SHA- 384 e SHA-512). Usalo in questo modo:

shasum -a 256 thefilename

per ottenere l'hash SHA-256 del file thefilename .

    
risposta data 07.11.2011 - 06:41
fonte
1

Come sottolinea @ kjetil-limkjær, la versione 4 di PowerShell include il Get-FileHash cmdlet.

powershell get-filehash -algorithm sha1 <file_to_check>

Utilizza doskey per creare un alias persistente che sia più facile da ricordare.

doskey sha256sum=powershell get-filehash -algorithm sha256 "$1"
doskey sha1sum=powershell get-filehash -algorithm sha1 "$1"
doskey md5sum=powershell get-filehash -algorithm md5 "$1"
    
risposta data 22.05.2015 - 23:09
fonte

Leggi altre domande sui tag