Ayuda conveniente multiplataforma para verificar hashes seguros como SHA-256

22

A menudo es útil poder obtener una buena suma de comprobación criptográfica de un archivo, por ejemplo. el hash SHA-256 . Esto se puede usar para verificar la integridad del archivo, siempre que tenga una fuente confiable para el hash.

El soporte para SHA-256 y MD5 desde la línea de comandos se proporciona de manera predeterminada en Ubuntu y probablemente en otras versiones de Linux y BSD a través de los programas sha256sum y md5sum.

En una Mac (10.5) veo el programa de línea de comandos "md5", pero nada para SHA-256. Dados los problemas de colisión de hash con MD5, es una opción menos que ideal.

Y no puedo encontrar ningún software instalado de forma predeterminada en Windows para calcular los hashes criptográficos. Lo más cercano al "estándar" que he visto fue una referencia de Microsoft sobre cómo descargar un programa de línea de comandos opcional, utilidad Comprobador de integridad de archivos de suma de comprobación que puede hacer SHA-1 (que todavía es relativamente seguro), pero no SHA-256.

Una descarga que he encontrado para SHA-256 es hashcalc para compatibilidad con GUI multiplataforma, pero No lo he investigado o probado.

  • ¿Falta algún software hash seguro predeterminado (mejor que MD5) para Windows o Mac?

  • ¿Hay alguna página en algún lugar que ofrezca una buena herramienta de hashing para una variedad de sistemas operativos? Idealmente, llevaría a soluciones GUI seguras y convenientes.

Aclaración : Estoy buscando consejos que pueda compartir con otros, lo que les ayudará a trabajar de manera segura con hashes. Por "seguro" me refiero a algo que, por ejemplo, un empleado del gobierno podría determinar con relativa facilidad para no ser demasiado arriesgado. Por ejemplo, el software instalado por defecto, documentado y respaldado por el proveedor, es mucho menos riesgoso que la instalación de un ejecutable de terceros fuera de Internet. Si tiene que ser un software de terceros, se prefiere algo que sea examinado y recomendado por expertos.

(Cf. firmas multiplataforma )

    
pregunta nealmcb 06.11.2011 - 18:15
fuente

7 respuestas

12

La única herramienta que me viene a la mente, especialmente para Unixes (o como se supone que debes pluralizar eso) es openssl:

openssl dgst -sha256 path/to/file

El comando openssl dgst proporciona muchas opciones comunes de hashing, y openssl está instalado en la mayoría de Unix sistemas por defecto y también está disponible para Windows. Creo que se envía con OSX también. Estoy de acuerdo, es una situación menos que ideal para que Windows se envíe sin una herramienta de este tipo.

En cuanto a las herramientas de GUI, no conozco personalmente otro que no sea HashCalc, que ya haya mencionado.

    
respondido por el user2213 06.11.2011 - 18:39
fuente
15

Para Windows, puede usar PowerShell, que se instala de forma predeterminada en Windows 7 / Server 2008 R2 y en adelante. La función Get-FileHash se introdujo en PowerShell v4, que viene con Windows 8.1 y Windows Server 2012 R2. Para versiones anteriores de PowerShell, estos scripts del blog de James Manning harán el truco.

Ejemplo de uso de Get-FileHash:

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

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

Los algoritmos soportados son SHA1, SHA256, SHA384, SHA512, MACTripleDES, MD5 y RIPEMD160.

    
respondido por el Kjetil Limkjær 13.10.2013 - 19:50
fuente
9

En un entorno mixto de Windows / Unix, lo que uso para los algoritmos criptográficos comunes es:

  • OpenSSL para muchos cálculos, especialmente hashes (pero no HMAC) y manipulaciones de certificados X.509.
  • Python 's hashlib y hmac para SHA y HMAC.

Lamentablemente, ninguno de los dos se proporciona con Windows, requieren una instalación por separado.

Aquí hay un sencillo de una sola línea para calcular el HMAC de un archivo usando Python. Escriba la clave en hexadecimal en el terminal (o pásela a la entrada estándar con echo … | , pero tenga en cuenta que la clave terminará en el historial del shell). El archivo se lee en la memoria, lo que no sirve para archivos grandes.

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

En Windows, un verificador de hash simple (compatible con SHA y algunos más, y HMAC) que puede utilizar una persona no técnica es SlavaSoft HashCalc . Desafortunadamente, no es de código abierto, por lo que es posible que no tenga la máxima confianza en su funcionamiento.

    
respondido por el Gilles 06.11.2011 - 18:48
fuente
3

¿Qué tal el NIST de EE. UU. (Instituto Nacional de Estándares y Tecnología) Ejecutan un programa de validación criptográfica y enumeran las implementaciones verificadas de algoritmos de hash criptográficos en: enlace

Contiene algunas bibliotecas de Java que podrían utilizarse en varias plataformas.

    
respondido por el this.josh 07.11.2011 - 07:09
fuente
2

En realidad, creé una pequeña envoltura de python alrededor de la api de hashlib de python para este propósito exacto. Necesitaba poder verificar y calcular hashes entre nix, mac y windows, particularmente sha256.

También hay una pequeña gui wxPython que también es opcional de usar.

El código está aquí: enlace

Si instalar python no es una opción, sería fácil producir una versión ejecutable para esto que no requiera la instalación de python.

    
respondido por el Casey 07.11.2011 - 14:46
fuente
1

sphlib es una biblioteca que implementa muchas funciones hash, escritas en C. Incluye una herramienta de línea de comandos (sphsum) que imita el comportamiento de md5sum / sha1sum y su ilk, y soporta MD5 y SHA-256 (y un montón de otras funciones). Se compila en todo tipo de sistemas similares a Unix (incluido MacOS) y también en Windows (se incluyen instrucciones de compilación, pero necesitará Visual C , MinGW o lccwin32 ).

sphlib también incluye la implementación de Java de todas estas funciones hash. Hablando de eso, tanto Java como .NET incluyen implementaciones SHA-256 de manera predeterminada, por lo que podría hacer un applet de Java y / o un ensamblado de C # que haga el hashing. Por lo tanto, confiaría solo en los componentes proporcionados por Oracle o Microsoft; Sería difícil ser más "oficial" que eso.

Además de md5 , MacOS X (10.7, al menos) incluye una utilidad llamada shasum que puede calcular hashes con cualquiera de la familia SHA- * (SHA-1, SHA-224, SHA-256, SHA- 384 y SHA-512). Úsalo así:

shasum -a 256 thefilename

para obtener el hash SHA-256 del archivo thefilename .

    
respondido por el Thomas Pornin 07.11.2011 - 06:41
fuente
1

Como apunta @ kjetil-limkjær, Powershell versión 4 y superior incluye Get-FileHash cmdlet.

powershell get-filehash -algorithm sha1 <file_to_check>

Use doskey para hacer un alias persistente que sea más fácil de recordar.

doskey sha256sum=powershell get-filehash -algorithm sha256 "$1"
doskey sha1sum=powershell get-filehash -algorithm sha1 "$1"
doskey md5sum=powershell get-filehash -algorithm md5 "$1"
    
respondido por el Christian Long 22.05.2015 - 23:09
fuente

Lea otras preguntas en las etiquetas