LogoTurboSFV - Hashtypen
Übersicht
TurboSFV unter­stützt verschie­dene Hash­funktionen, welche für die Be­rechnung von Prüf­summen von Da­teien eingesetzt werden, z.B. die aus den SHA-3 oder BLAKE3-Familien. Prüf­sum­men sind Finger­abdrucke oder digitale Signa­turen von Bit­strömen: Ihre Be­rech­nung sowie die Länge des Hashwerts hängt vom verwen­deten Algo­rithmus ab.

Prüf­summen kön­nen dazu ver­wendet werden, um program­ma­tisch eine Datei identi­fizieren zu können. Generell ändert sie sich, sobald sich eine Datei ändert. Da­her können Prüf­summen dazu ver­wendet werden, um die Inte­grität von Dateien zu über­prüfen und Ände­rungen an Daten fest­zustel­len. TurboSFV als Software zur Be­rech­nung und Vali­dierung von Prüf­summen kann Hash­werte für Da­teien in einem ganzen Verzeich­nis­baum generieren.

Die Sicherheit ei­ner Hash­funktion hängt im Wesent­li­chen vom verwen­de­ten Algo­rithmus und der Länge der Hashwerte ab. Zur Zeit der Ver­fas­sung dieses Arti­kels gelten CRC-32, MD5 und SHA-1 als un­si­cher: Eine andere Datei mit der glei­chen Prüf­summe kann ge­funden oder sogar erstellt werden. Daher kann diesen Algo­rithmen nicht ver­traut werden und sollten nur in Bereichen mit ge­ringeren Sicher­heits­anforde­rungen verwendet werden.

Krypto­gra­fische Algo­rithmen, wie die aus den SHA-3 oder BLAKE3-Fa­milien, müssen re­sistent gegen der­artige Angriffe sein. Zwei unter­schied­liche Dateien mit der gleichen Prüf­summe zu fin­den oder aus der Prüf­summe auf die Daten schließen zu können, sollte nicht möglich sein. Prüf­summen, die von diesen Hash­funktionen gene­riert werden, soll­ten in einzig­arti­ger Weise die jewei­li­gen Daten reprä­sentieren.

Die Ent­scheidung, welcher Algo­rith­mus verwendet wird, hängt von der Anwendung, der anfal­lenden Datenmenge und der verfüg­baren Rechen­leistung ab (einige Algo­rith­men sind sehr re­chen­inten­siv). So sollte zum Beispiel in Bereichen, wo bio­metrische Da­ten anfallen, eine krypto­gra­fische Hash­funktion zum Einsatz kommen.

In TurboSFV wur­den die Hash­funk­tionen sowohl in einer 64-Bit-Ver­sion (x64 CPU-Be­fehle) als auch in einer 32-Bit-Ver­sion (x86 CPU-Befehle) imple­men­tiert. Begin­nend mit SHA-1, können spezielle, SSE-ba­sie­rende Befehle (Stream­ing SIMD (Single In­struc­tion Mul­tiple Data) Ex­ten­sions) optional ein­gesetzt werden, falls die CPU diese unter­stützt. Bei SHA-1 handelt es sich um SHA1RNDS4, SHA1MSG1, SHA1MSG2 und SHA1NEXTE. Bei SHA-256 (wie auch bei SHA-224), bieten die Anwei­sungen SHA256RNDS2, SHA256MSG1 und SHA256MSG2 eine viel bessere Leistung bei der Berech­nung von Prüf­summen.

Darüber hinaus bietet TurboSFV x64 eine spezielle SSE-basie­rende und eine AVX2-basie­rende (Ad­vanced Vector Exten­sions) Im­plemen­tierung für Algo­rith­men aus der BLAKE3-Fami­lie (BLAKE3-256, BLAKE3-512, BLAKE3-1024, BLAKE3-2048) an, welche Prüf­sum­men in paral­leler Weise berechnet.

TurboSFV unter­stützt die Berech­nung von Hash­werten für die nach­folgen­den Hash­funktionen. Weitere Details geben Ihnen die aufge­führten Ver­weise zu einigen externen Web­seiten.
Oben
SHA-3 Familie
TurboSFV
LE: SignPE: SignCE: SignXE: Sign
Die SHA-3 Hash­funktionen sind in den FIPS 202, he­raus­gegeben vom NIST (US National Institute of Stan­dards and Tech­nology), als "SHA-3 Standard" beschrieben. Der Algo­rithmus ba­siert auf KECCAK, den Gewinner des SHA-3 Wett­be­werbs, verkündet vom NIST in 2012.

SHA-3 wurde vom NIST spezi­fiziert, um im Falle eines erfolg­reichen An­griffs gegen SHA-2 eine Alter­native zur Ver­fügung zu haben. SHA-2 ba­siert auf den glei­chen tech­ni­schen Prinzi­pien wie SHA-1, gegen den erfolg­reiche An­griffe seit 2005 bekannt sind. SHA-3 verwendet jedoch ein anderes Verfahren zur Ge­ne­rierung von Prüf­summen, die soge­nannte "Sponge-Konstruk­tion".

In den FIPS 202 weicht die Spezi­fi­kation von SHA-3 leicht vom ur­sprüng­lichen KECCAK Algo­rithmus, so wie er beim NIST SHA-3 Wett­be­werb einge­reicht wurde, ab. Die Än­de­rung hatte aber keine nega­tiven Auswir­kun­gen auf die Sicher­heit der Hash­funktion: Nur das Padding (Auf­füllen des letzten Nach­richten­blocks mit Bits) wurde im Hin­blick auf zu­künf­tige Erwei­terungen angepasst.

Der KECCAK Algo­rithmus basiert auf zahl­reichen Opera­tionen mit 64-Bit Zahlen. Daher wird em­pfohlen, für die Berech­nung von SHA-3 Hash­werten die Fähig­keiten ei­ner 64-Bit CPU zu nutzen, die je­doch nur auf 64-Bit Betriebs­sys­temen frei­geschal­tet sind. TurboSFV x64 wurde für eine 64-Bit Umgebung entworfen.

Unterstützte SHA-3 Hash­funk­tionen wie in den FIPS 202 spezi­fiziert und ihre Ausgabe­längen:
SHA3-224224 Bits
SHA3-256256 Bits
SHA3-384384 Bits
SHA3-512512 Bits
Oben
BLAKE3 Familie
TurboSFV
LE: SignPE: SignCE: SignXE: Sign
BLAKE3 ist der Nach­folger von BLAKE2 und ver­ei­nigt BLAKE2-Vari­anten in einer Hash-Funktion. Die Basis­struktur von BLAKE3 bildet ein binärer Baum, der parallele Verar­bei­tung auf mehre­ren Prozes­soren oder die Ver­wendung von SIMD (Single In­struc­tion Mul­tiple Data) Instruk­tio­nen ermög­licht. Darüber hinaus bietet BLAKE3 neben der Stan­dard-Aus­gabe­länge von 256 Bits erwei­terte Aus­ga­be­längen an. BLAKE3 ist wie BLAKE2 eine kryp­to­gra­fische Hash-Funk­tion und unter­stützt eine ver­schlüs­selte Berech­nung von Hash­werten.

Die Imple­mentie­rung von BLAKE3 in TurboSFV folgt der BLAKE3-Spezi­fikation in der Ver­sion 20200221.164500. TurboSFV produ­ziert Prüf­summen mit der Stan­dard-Ausgabe­länge von 256 Bits sowie den erwei­ter­ten Ausgabe­längen (XOF's) 512, 1024 und 2048 Bits. Ein XOF mit 1024 Bits bedeu­tet bei­spiels­weise, dass die ersten 512 Bits die selben sind wie bei einer Aus­gabe­länge von 512 Bits, plus zusätz­liche 512 Bits, die durch eine weitere Kom­pri­mierung des Wurzel­knotens im binären Baum er­zeugt werden. Mit TurboSFV v9.20 wird auch die paral­lele Be­rech­nung von BLAKE3-Prüf­summen unter­stützt.

TurboSFV v10.50 (x64) kommt mit einer spe­ziellen SSE (Stream­ing SIMD Exten­sions) basie­renden Im­plemen­tierung für die Berech­nung von BLAKE3 Prüf­summen, mit der eine paral­lele Berech­nung in "Lanes" möglich ist. Zusätz­lich können mehrere CPUs für eine noch bessere Leistung ver­wendet werden. Als Voraus­setzung muss die verwen­dete CPU SSE-Befehle bis ein­schließ­lich des Be­fehls­satzes SSE4.1 unter­stützen.

TurboSFV v10.60 (x64) führt eine AVX2 (Ad­vanced Vector Exten­sions) basie­rende Im­plemen­tierung ein. Der Haupt­unter­schied zu SSE ist, dass AVX2 YMM-Register verwen­det, die 256 Bits halten können, anstatt der 128 Bit breiten XMM-Register bei SSE. Da BLAKE3 mit 32-Bit-Zahlen arbeitet, können wir nun acht Zahlen auf einmal ver­arbeiten (SSE: vier Zahlen), was die Paral­leli­tät verdoppelt. Die CPU muss aber AVX2-fähig sein.

Unterstützte BLAKE3 Hash­funk­tionen und ihre Ausgabe­längen:
BLAKE3-256256 Bits
BLAKE3-512512 Bits
BLAKE3-10241024 Bits
BLAKE3-20482048 Bits
Oben
BLAKE2 Familie
TurboSFV
LE: SignPE: SignCE: SignXE: Sign
Die Hash­funk­tio­nen aus der BLAKE2 Familie basieren auf BLAKE, welcher einer der Teil­neh­mer in der End­runde des SHA-3 Wett­bewerbs von NIST war. BLAKE2 ist der Nach­folger von BLAKE, opti­miert bezüg­lich Ge­schwin­digkeit und Speicher­ver­brauch. BLAKE2 ist im RFC 7693 be­schrieben und gilt als sicher.

In TurboSFV sind die Algorithmen BLAKE2S, BLAKE2SP und BLAKE2B und BLAKE2BP imple­mentiert. BLAKE2S operiert mit 32-Bit Zahlen und ist op­timiert für 32-Bit Umgebungen. BLAKE2SP führt acht Instanzen von BLAKE2S im paral­lelen Modus aus. Beide erzeugen Hash­werte bis zu einer Länge von 256 Bits. BLAKE2B wiederum rechnet mit 64-Bit Zahlen und ist optimiert für 64-Bit Platt­for­men. BLAKE2BP wurde für den paral­lelen Modus entworfen und arbeitet mit 4 BLAKE2B-Instan­zen. BLAKE2B und BLAKE2BP liefern Hashwerte bis zu einer Länge von 512 Bits.

Die Algorithmen unter­stützen in standar­disierter Form sowohl die verschlüs­selte Be­rechnung von Hash­werten als auch Salt, welche interes­sante Eigen­schaften im Hin­blick auf zukünf­ti­ge Er­weite­rungen von TurboSFV sind.

TurboSFV bietet bei BLAKE2 Hash­werte von 256 bis 512 Bits an, im Einzelnen sind dies BLAKE2S-256, BLAKE2SP-256, BLAKE2B-256, BLAKE2B-384, BLAKE2B-512, BLAKE2BP-256, BLAKE2BP-384 und BLAKE2BP-512. Es ist zu beachten, dass die aufge­führ­ten Algo­rith­men jeweils unter­schied­liche Hash­werte erzeugen.

Unterstützte BLAKE2 Hash­funk­tionen und ihre Ausgabe­längen:
BLAKE2S-256256 bits
BLAKE2SP-256256 bits
BLAKE2B-256256 bits
BLAKE2B-384384 bits
BLAKE2B-512512 bits
BLAKE2BP-256256 bits
BLAKE2BP-384384 bits
BLAKE2BP-512512 bits
Oben
SHA-2 Familie
TurboSFV
LE: SignPE: SignCE: SignXE: Sign
Die SHA-2 Familie beinhaltet die "Secure hash algo­rithms" SHA-224, SHA-256, SHA-384, SHA-512 und die beiden T-Bit Hash­funk­tionen SHA-512/224 und SHA-512/256.

Die T-Bit Hash­funk­tionen SHA-512/224 und SHA-512/256 basieren auf SHA-512, starten aber mit anderen Ini­tial­vektoren und produ­zieren klei­nere Hash­werte.

SHA-512/256 wird beispiels­weise in den Fällen verwen­det, wo man eine Schlüssel­länge von 256 Bit benö­tigt, aber die höhere Sicher­heit von SHA-512 gegen­über SHA-256 in Anspruch nehmen möchte. Dazu kommt, dass auf x64-Plattformen - bei ent­sprechender Pro­gram­mierung - SHA-512 schneller und effi­zienter die Berech­nung durch­führt.

Bei den Algo­rith­men SHA-256 und SHA-224 kann die Berech­nung optional auf die Verwen­dung spe­zieller SSE (Stream­ing SIMD Exten­sions) basie­render Befehle (SHA256RNDS2, SHA256MSG1, SHA256MSG2) umge­schal­tet werden, anstatt die Stan­dard-CPU-Anwei­sungen in x86 (32-Bit) und x64 (64-Bit) zu ver­wenden - falls die CPU diese unter­stützt. TurboSFV prüft die CPU auf die benö­tigten Eigen­schaf­ten hin ab, bevor diese ver­wendet werden. Mit der Nutzung von SSE Befehlen kann die Berech­nung bis zu siebenmal schnel­ler ablaufen.

Unterstützte SHA-2 Hash­funk­tionen und ihre Ausgabe­längen:
SHA-224224 Bits
SHA-256256 Bits
SHA-384384 Bits
SHA-512512 Bits
SHA-512/224224 Bits
SHA-512/256256 Bits
Oben
xxHash
TurboSFV
LE: SignPE: SignCE: SignXE: Sign
xxHash ist ein Open-Source-Pro­jekt mit dem Ziel, einen schnel­len Hash-Algo­rithmus zu ent­wickeln. Der Algo­rithmus wur­de nicht für den krypto­grafi­schen Einsatz ent­worfen und ist auch nicht be­ständig gegen Kolli­sionen.

TurboSFV unter­stützt die Vari­an­ten XXH32 und XXH64: XXH32 rechnet mit 32-Bit-Zahlen und ist opti­miert für 32-Bit-Umge­bungen, wäh­rend XXH64 mit 64-Bit-Zahlen ope­riert und daher beson­ders für 64-Bit-CPUs geeig­net ist. XXH32 erzeugt Hash­werte mit einer Länge von 32 Bits, bei XXH64 beträgt die Länge 64 Bit. Optio­nal können beide Algo­rithmen einen "Seed"-Wert (ähn­lich Salt) als zusätz­liche Eingabe verar­beiten, was von TurboSFV jedoch nicht unter­stützt wird.

Beim gegen­wärti­gen Stand des Pro­jekts scheinen XXH32 und XXH64 nun stabil zu sein (und die damit er­zeug­ten Prüf­sum­men), eine Garan­tie gibt es hierfür aber nicht.

Die Implemen­tie­rung in TurboSFV ent­spricht der Do­ku­men­tation v0.1.1 (10/10/18). TurboSFV ver­wen­det keine Bib­lio­theken, die vom Open-Source-Pro­jekt ange­boten werden.

Unterstützte xxHash Hash­funk­tionen und ihre Ausgabe­längen:
XXH3232 Bits
XXH6464 Bits
Oben
SHA-1 - Secure hash algorithm
TurboSFV
LE: SignPE: SignCE: SignXE: Sign
SHA-1 wurde 1995 vom NIST ver­öf­fent­licht, um Behör­den eine krypto­lo­gische Hash­funk­tion für die Ver­wendung in An­wen­dungen, aber auch in Proto­kol­len an­bieten zu können, ebenso verfüg­bar für pri­vate und kom­mer­zielle Anwen­der. Seit 2005 sind er­folg­reiche Angriffe auf SHA-1 bekannt und SHA-2 wurde später zum Nach­folger ernannt.

Die Basis-Im­ple­men­tierung in TurboSFV arbei­tet mit x86 (32-Bit) und x64 (64-Bit) CPU-Befehlen. Op­tio­nal kann der Be­rech­nungs­pro­zess auf spe­zielle SHA-1 SSE (Stream­ing SIMD Exten­sions) Befehle um­ge­schal­tet wer­den, welche in Intel Prozes­soren seit 2016 und AMD Prozes­soren seit 2017 zur Verfü­gung stehen. Diese SSE-Befehle (SHA1RNDS4, SHA1MSG1, SHA1MSG2, SHA1NEXTE) erlau­ben eine paral­lele Ver­arbei­tung und daher kann die Be­rech­nung bis zu viermal schnel­ler erfolgen. TurboSFV prüft die CPU, ob die benö­tigten Ei­gen­schaf­ten vor­handen sind, bevor sie ver­wendet werden.

Oben
MD5 - Message-Digest 5 - Hashfunktion
TurboSFV
LE: SignPE: SignCE: SignXE: Sign
Oben
CRC-32 - Zyklische Redundanz­prüfung
TurboSFV
LE: SignPE: SignCE: SignXE: Sign
Oben
 
 Über­sichtNächste Seite
 
 
UKDE



Erklärung zum Datenschutz