Beschreibung

Jacksum (JAva ChecKSUM) ist eine freie, quelloffene, plattformübergreifende und funktionsreiche Software, die 489 Hash-Funktionen und ein Rahmenwerk zur Verfügung stellt, das zur effizienten Lösung verschiedener Anwendungszwecke eingesetzt werden kann, bei denen Hash-Werte eine wichtige Rolle spielen. Als Benutzerschnittstellen dienen ein Kommandozeilenprogramm, ein API und eine grafische Benutzeroberfläche namens HashGarten, die sich optional in viele Dateibrowser integrieren lässt.




Zielgruppe(n)

Jacksum richtet sich an alle sicherheitsbewussten Menschen. Während die grafische Benutzerschnittstelle HashGarten über die Dateibrowserintegration für Einsteiger und fortgeschrittene Benutzer (Advanced Mode) entwickelt worden ist, wendet sich die Kommandozeilenschnittstelle an Profis (die aber auch gerne die GUI benutzen dürfen). Zu der Gruppe der Profis zähle ich Informatiker/innen, Systemadministratoren/innen, Script-Entwickler, DevSecOps-Ingenieure, Cybersicherheitsingenieure/innen, Forensiker/innen, Penetrationtester/innen, White Hat Hacker/innen, Reverse Engineers, CRC-Forscher/innen uvm. Die API richtet sich an Entwickler, die Jacksum als Programmbibliothek in ihr eigenes Softwareprodukt einbinden möchten.


Hunderte von Algorithmen

Jacksum unterstützt sowohl kryptografische als auch nicht-kryptografische Hash-Funktionen, einschließlich CRCs und klassische Prüfsummen. Insgesamt werden 489 Algorithmen unterstützt:

Adler-32, ascon-hash, ascon-hasha, ascon-xof, ascon-xofa, AST strsum PRNG hash, BLAKE-[224,256,348,512], BLAKE2b-[8..512], BLAKE2s-[8..256], BLAKE2bp, BLAKE2sp, BLAKE3, cksum (Minix), cksum (Unix), CRC-8 (FLAC), CRC-16 (LHA/ARC), CRC-16 (Minix), FCS-16, CRC-24 (OpenPGP), CRC-32 (FCS-32), CRC-32 (MPEG-2), CRC-32 (bzip2), CRC-32 (FDDI), CRC-32 (UBICRC32), CRC-32 (PHP's crc32), CRC-64 (ISO 3309), CRC-64 (ECMA-182), CRC-64 (prog lang GO, const ISO), CRC-64 (.xz and prog lang GO, const ECMA), CRC-82/DARC, DHA-256, ECHO-[224,256,348,512], ed2k, ELF (Unix), esch256, esch384, Fletcher's Checksum, FNV-0_[32,64,128,256,512,1024], FNV-1_[32,64,128,256,512,1024], FNV-1a_[32,64,128,256,512,1024], FORK-256, Fugue-[224,256,348,512], GOST Crypto-Pro (GOST R 34.11-94), GOST R 34.11-94, Groestl-[224,256,384,512], HAS-160 (KISA), HAVAL-128-[3,4,5], HAVAL-[160,192,224,256]-[3,4,5], JH[224,256,284,512], joaat, KangarooTwelve, Keccak[224,256,384,512], Kupyna[256,384,512] (DSTU 7564:2014), LSH-256-[224,256], LSH-512-[224,256,384,512] (KS X 3262), Luffa-[224,256,348,512], MD2, MD4, MD5, MDC2, MarsupilamiFourteen, PANAMA, PRNG hash, RIPEMD-128, RIPEMD[160,256,320], RadioGatun[32,64], SHA-0, SHA-1, SHA-[224,256,384,512], SHA-512/[224,256] (NIST FIPS 180-4), SHA3-[224,256,384,512], SHAKE[128,256] (NIST FIPS 202), SM3, Skein-1024-[8..1024], Skein-256-[8..256], Skein-512-[8..512], Streebog-[256,512] (GOST R 34.11-2012), sum (BSD Unix), sum (Minix), sum (System V Unix), sum [8,16,24,32,40,48,56,64], Tiger, Tiger/128, Tiger/160, Tiger2, photon-beetle, PHP Tiger variants (tiger192,4, tiger160,4, and tiger128,4), VSH-1024, Whirpool-0, Whirlpool-T, Whirlpool, Xoodyak, xor8 und XXH32.

Jacksum unterstützt diese große Anzahl von Algorithmen, u. a. um den Anwendungsfall "Den Algorithmus zu einem Hash-Wert finden" möglich zu machen.

Jacksum unterstützt verkette Hash-Funktionen (z. B. ascon-hash+sha256+crc32c), um einen kombinierten Hash-Wert zu erhalten.

Jacksum unterstützt HMAC, einen Mechanismus zur Nachrichtenauthentifizierung unter Verwendung einer beliebigen iterierten kryptographischen Hashfunktion in Kombination mit einem geheimen gemeinsamen Schlüssel. Truncated HMAC wird ebenfalls unterstützt.

Jacksum unterstützt das Modell "Rocksoft (tm) Model CRC Algorithm" zur textuellen Definition von CRCs, so dass zusätzlich 1,0399*10^267 angepasste CRCs verwendet werden können.


Free Software & Open Source

Jacksum hat seinen Quellcode geöffnet, er wird unter den Bedingungen der GNU GPL 3 oder neuer veröffentlicht. Jacksum ist OSI Certified Open Source Software. OSI Certified ist ein Zertifizierungszeichen der Open Source Initiative. Jacksum ist Free Software gemäß den Bedingungen der Free Software Foundation.


Breite Plattformunterstützung

Plattformübergreifend

Jacksum ist auf den Betriebssystemen Microsoft Windows, GNU/Linux und Unix zu Hause. Letzteres schliesst macOS, BSD-Derivate und Solaris ein. Es läuft sogar auf Android auf ihrem Smartphone. Es läuft tatsächlich auf jeder Plattform, die eine kompatible Java Laufzeitumgebung bereitstellt. Vom kleinen privaten Notebook bis zum gewerblichen oder staatlichen Hochleistungsserver. Maßgeblich werden die Architekturen x86, x64, ARM32, ARM64, PowerPC 64 bit, s390x und Apple Silicon unterstützt. Da Jacksum komplett in Java geschrieben ist, müssen Sie es auch nicht neu kompilieren. Es funktioniert von Haus aus plattformübergreifend. Siehe dazu auch die Systemanforderungen.

Mehrkern- und Mehrprozessorsysteme

Jacksum nutzt die Geschwindigkeitsvorteile moderner Mehrkern-Prozessoren und Mehrprozessorsystemen und spart so Zeit durch parallele Berechnung von Hashwerten, wenn mehr als eine Hash-Funktion gewählt wurde. Die Anzahl der Threads, die für die Berechnung verwendet werden dürfen, kann vom Benutzer konfiguriert werden.

Schnelle, moderne Solid-State-Drives (SSDs)

Falls mehrere zu hashende Dateien auf einem schnellen, parallelen Direktzugriffs-Datenträger wie einer modernen SATA-SSD oder einer NVME M.2-SSD gespeichert sind, kann Jacksum durch gleichzeitiges Lesen von Dateien den Hash-Vorgang ebenfalls signifikant beschleunigen. Die Anzahl der Threads, die für das parallele Lesen verwendet werden dürfen, kann ebenfalls vom Benutzer konfiguriert werden.


Mehrere Benutzerschnittstellen

Jacksum bietet eine Kommandozeilenschnittstelle (CLI) an, über die das gesamte Leistungsspektrum von Jacksum angesprochen werden kann. Sie ermöglicht sowohl einen schnellen und effizienten Zugang zu den Features von Jacksum als auch eine computergestützte Automatisierung wiederkehrender Aufgaben.

Jacksum bietet eine Anwendungsprogrammierschnittstelle (API) an. Sie ermöglicht es Entwicklern, Jacksum-Features in ihren eigenen Projekte zu nutzen. Auch über das Jacksum API stehen Entwicklern alle Features von Jacksum zur Verfügung.

Eine grafische Benutzeroberfläche (GUI) wird von HashGarten bereitgestellt. Es ist ein Unterprojekt des Jacksum-Projekts. Dabei werden die Bedürfnisse von Einsteigern (Standard Mode) als auch fortgeschrittenen Benutzern (Advanced Mode) berücksichtigt. Z. Zt. werden noch nicht alle Features von Jacksum von der GUI unterstützt.

Zusätztlich sind Integrationen in Dateibrowser (FBI) verfügbar. Sie schlagen die Brücke zwischen dem vom Benutzer bevorzugten Dateibrowser auf der einen und Jacksum und HashGarten auf der andern Seite. Unterstützt werden dabei z. B. der Finder unter macOS, der Windows Explorer und Kompatible unter Microsoft Windows und die Dateibrowser Caja, Dolphin, elementary Files, Konqueror, Krusader, Nemo, GNOME Files (Nautilus), ROX-Filer, SpaceFM, Thunar, Xfe, and zzzFM unter Unix- und Linux-Derivaten.


Anwendungszwecke

Jacksum deckt viele Anwendungsfälle ab, in denen Hash-Werte effizient zur Lösung eingesetzt werden können.

Hash-Werte berechnen und speichern

Die Berechnung von Hash-Werten mit Hash-Funktionen ist ein notwendiger Schritt, um die Datenintegrität später überprüfen zu können.

Jacksum kann Hash-Werte/Fingerprints von allen möglichen Eingabequellen berechnen. Dazu gehören einfache und kodierte Zeichenketten, normale Dateien, einzelne Partitionen, ganze Festplatten, Daten aus Windows NTFS Alternate Data Streams (ADS), Pipes und Sockets (Linux und Unix) und Doors (Solaris). Datenquellen können über Befehlszeilen-Argumente, die Console (mit Echo oder ohne Echo) und die Standardeingabe (stdin) übergeben werden.

Jacksum ist large file aware, d. h. es können einzelne Dateien mit einer Größe von bis zu 8 Exbibytes (= 8,3 Millionen Terabytes) verarbeitet werden.

Beim rekursiven Wandern durch einen Verzeichnisbaum kann die zu verarbeitende Tiefe des Baumes begrenzt werden. Es werden Dateisystemschleifen erkannt, um Endlosschleifen bei der Verarbeitung zu verhindern. Der Benutzer kann explizit bestimmen, wie symbolische Links auf Dateien und/oder Verzeichnissen behandelt werden sollen.

Die Speicherung der Hash-Werte kann in 10 vordefinierten quasi-Standardformaten erfolgen (Default, BSD, BSD reversed, GNU/Linux-, openssl, openssl reversed, Solaris' digest, Solaris' digest reversed, SFV, FCIV) oder in einem benutzerdefinierten Format, das in einem hohem Maße anpassbar ist. Dazu gehören u. a. 15 verschiedene Kodierungen für die Darstellung von Hash-Werten: binär, dezimal, oktal, hexadezimal (Klein- oder Großbuchstaben), Base16, Base32 mit und ohne Padding, Base32hex mit und ohne Padding, Base64 mit und ohne Padding, Base64url mit und ohne Padding, BubbleBabble, z-base-32 und z85.

Neben der Unterstützung von GNU file name escaping und Pfad-Anpassungen (kein Pfad, relativer oder absoluter Pfad) gibt es Byte-Order-Mark (BOM) Kontrolle und volle Unterstützung für die Unicode-Zeichensätze UTF-8, UTF-16, UTF-16BE, UTF-16LE, UTF-32, UTF-32BE, UTF-32LE und GB18030. Insgesamt werden über 170 verschiedene Zeichensätze unterstützt, um Hash-Dateien wie erforderlich so schreiben zu können, damit sie auch später von Jacksum oder anderen Anwendungen wieder korrekt gelesen werden können.

Sichere Passwörter generieren

Als besonderen Anwendungsfall aus der Rubrik "Hash-Werte berechnen" gilt sicherlich das Generieren von sicheren Passwörtern. Über die Console lassen sich Tastatureingaben hashen (mit oder ohne Echo) und so eindeutige und sichere Passwörter für z. B. Webseiten generieren.

Siehe dazu auch How to create unique and secure passwords for websites with a master password and Jacksum.

Daten-Integrität mit Hilfe von Hash-Werten überprüfen

Mit Jacksum können Sie z. B. überprüfen, ob ein Dateitransfer erfolgreich war. Wenn Sie Software oder andere große Datenmengen (z. B. iso-Dateien) aus dem Internet herunterladen, wird oft auch ein Hashwert mit angegeben. Mit Jacksum können Sie einen solchen Hashwert von Ihrer lokalen Kopie berechnen und vergleichen lassen. Wenn beide Werte übereinstimmen ist während des Dateidownloads alles gut gegangen.

Jacksum kann die Integrität auch von mehreren Dateien/Daten und Verzeichnisbäumen überprüfen, indem es neu berechnete Hashes einer Menge mit einer früher berechneten Menge von Hashes abgleicht. Dabei werden sämtliche Features, die auch beim Erstellen von Hash-Werte-Dateien unterstützt werden, auch beim Lesen und Parsen dieser Dateien unterstützt. Jacksum kann so intakte, geänderte, fehlende und neue Dateien entdecken. Da Jacksum jedes Byte einer Datei liest, können Sie auch überprüfen, welche Dateien auf Ihren Datenträgern noch komplett lesbar sind und welche nicht mehr.

Mit den von Jacksum gespeicherten Hash-Werte-Datein lassen sich auch zwei Verzeichnisbäume miteinander vergleichen. Dabei können die Verzeichnisbäume auch auf unerschiedlichen Datenträgern oder Computern gespeichert sein. Sie können damit überprüfen, ob Ihre Kopien und Backups mit der ursprünglichen Quelle übereinstimmen, sogar wenn kein gleichzeitiger Zugriff auf die Datenträger besteht. Vergleichen Sie beispielsweise den Inhalt von zwei gebrannten DVDs mit nur einem einzigen DVD-Laufwerk oder (etwas moderner) den Inhalt von Verzeichnissen auf mehreren voneinander entfernten Computern zwischen denen keine direkte Verbindung besteht. Mit all diesen Features ist sichergestellt, daß Sie die Integrität von Ihren wertvollen Daten auch nach Jahren noch überprüfen können.

Dateien per Datei-Fingerabdruck finden

Jacksum kann alle Dateien finden, die einem Satz bekannter Hashes entsprechen oder nicht entsprechen. Mit anderen Worten: Jacksum kann sowohl Dateien anhand digitaler Datei-Fingerabdrücke finden (positiver Abgleich) als auch Dateien, die nicht mit bestimmten Datei-Fingerabdrücken übereinstimmen (negativer Abgleich). Ensprechend lassen sich auch alle Duplikate bzw. Kopien einer Datei anhand des Fingerabdruckes/Hashwerts aufspüren.

Das kann z. B. sehr nützlich sein, wenn Sie auf Ihren Servern alle Programmbibliotheken identifizieren müssen, die eine bekannte Sicherheitslücke aufweisen. Siehe dazu auch CVE-2021-44832: Find vulnerable .jar files using Jacksum 3.4.0 or later

Die passende Hash-Funktion zu einem Hash-Wert finden

Finden Sie alle Hash-Funktionen, die anhand einer bestimmten bekannten Eingabe einen bestimmten bekannten Hash-Wert erzeugen. Damit dies überhaupt möglich ist, ist es erforderlich, daß so viele Algorithmen wie möglich unterstützt werden.

Siehe dazu auch Find algorithms to a hash value using Jacksum

Intrusion Detection (bei bösartiger Veränderung)

Sie können Jacksum als Intrusion Detection Software verwenden, weil Jacksum überprüfen kann, welche Dateien auf einem Computer geändert, gelöscht bzw. verschoben wurden und welche Dateien neu hinzugekommen sind. Siehe dazu auch den Abschnitt "Daten-Integrität mit Hilfe von Hash-Werten überprüfen". Jacksum kann übrigens nicht nur den Inhalt von Dateien auf Integrität überprüfen, sondern auch den Zeitstempel jeder Datei. In Verbindung mit dem Feature "Dateien per Datei-Fingerabdruck finden" kann es geänderte oder einem Computer neu hinzugefügte Dateien, entsprechende Listen vorausgesetzt, als schädlich oder nicht-schädlich identifizieren. Das Jacksum-Projekt stellt solche Listen nicht zur Verfügung.

Aktionen mit dem Wissen "Was hat sich geändert?" (bei beabsichtigter Veränderung)

Jacksum kann Sie bei der unidirektionalen Dateisynchronisation unterstützen, sogar wenn zwischen zwei Computern keine Verbindung besteht. Jacksum kann Ihnen dabei helfen, inkrementelle Backups zu erzeugen. Und wenn Sie Entwickler sind, unterstützt Sie Jacksum bei der Erstellung von Patches für Ihre Kunden.

Lernen des Informatik-Spezialgebietes "Hashing"

Mit über 9200 Zeilen Manpage mit Beschreibungen, Beispielen und Kompatibilitätslisten für alle von Jacksum unterstützten Algorithmen und den vielfältigen Benutzerschnittstellen lässt sich das Informatik-Spezialgebiet "Hashing" spielerisch erkunden.

Z. B. hilft Jacksum zu einem besseren Verständnis der Parameter von CRCs durch die Unterstützung mehrerer Repräsentationen der in CRCs verwendeten Polynome (normal, reversed, Koopman). Des weiteren lassen sich HMAC-Parameter (z. B. Schlüssellänge) auf empfohlene Mindestlängen gemäß RFC 2104 hin untersuchen.


Häufige Fragen und Antworten finden Sie in der Sektion FAQ.

I love Jacksum