staging.inyokaproject.org

Hashfunktionen

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion des Artikels Hashfunktionen.

noisefloor Team-Icon

Ehemaliger
Avatar von noisefloor

Anmeldungsdatum:
6. Juni 2006

Beiträge: 28316

Hallo,

unter 10.04. auch. Hat noch jemand Hardy drauf? Die Server-Version hat ja noch 3/4 Jahr Support...

Gruß, noisefloor

jupiterX

Anmeldungsdatum:
15. März 2014

Beiträge: Zähle...

Hallo zusammen,

im Abschnitt Salted-Hashs (siehe http://wiki.ubuntuusers.de/Hashfunktionen#Salted-Hashs) wird erwähnt, dass der Hash als auch der Salt in Base64-Kodierung vorliegt bzw. abgespeichert wird. Das ist nicht ganz korrekt. Der Standard von Base64 (sie http://tools.ietf.org/html/rfc4648) ist hier abweichend.

Textauszug aus http://www.linuxmanpages.com/man5/shadow.5.php

The password field must be filled. The encryped password consists of 13 to 24 characters from the 64 character alphabet a thru z, A thru Z, 0 thru 9, . and /. Refer to crypt(3) for details on how this string is interpreted.

Verweisend auf crypt(3), Textauszug aus http://www.linuxmanpages.com/man3/crypt.3.php

salt is a two-character string chosen from the set [a-zA-Z0-9./]. This string is used to perturb the algorithm in one of 4096 different ways.

So ist es hier der Punkt als Zeichen erlaubt. Das ist in Base64 nicht zulässig. Das Plugszeichen ist in Base64 legal, hier allerdings nicht.

Ich finde es irreführend hier Base64 zu erwähnen. Im Internet findet man sehr viele Ressourcen, in denen behauptet wird, dass die Zeichenfolge in Base64-Kodierung abgespeichert wird. Sehe nur ich das so?

Bevor ich ich mich ans editieren setzte - wie seht ihr das? Wäre es hier sinnvoll in einem Abschnitt (Fußnote o.ä.) den "Fehler" zu erwähnen oder lieber einfach Base64 gegen [a-zA-Z0-9./] ersetzten?

noisefloor Team-Icon

Ehemaliger
Avatar von noisefloor

Anmeldungsdatum:
6. Juni 2006

Beiträge: 28316

Hallo,

lieber den gültigen Zeichenbereich erwähnen - das ist eindeutiger.

Gruß, noisefloor

rolands11

Anmeldungsdatum:
17. September 2016

Beiträge: 70

Ich würde - falls nichts dagegen spricht - md5sum löschen, SHA-1 mit SHA-2 austauschen, und sha256sum anstelle von md5sum als Beispiel einfügen.

Grüße, Roland

noisefloor Team-Icon

Ehemaliger
Avatar von noisefloor

Anmeldungsdatum:
6. Juni 2006

Beiträge: 28316

Hallo,

Beispiele: ok, kannste machen

Löschen: wo denn? Der Abschnitt "Angriffe gegen MD5 und SHA-1" ist wichtig und solle auf jeden Fall drin bleiben. Die Einleitung könnte man so umformulieren, dass daraus schon hervorgeht, dass MD5 und SHA1 veraltet / nicht mehr Stand der Technik sind.

Brauchst du eine Baustelle für die Überarbeitung?

Gruß, noisefloor

rolands11

Anmeldungsdatum:
17. September 2016

Beiträge: 70

Ich habe die Änderungen durchgeführt (Fokus liegt jetzt auf SHA-2). Außerdem folgenden Absatz gelöscht.

"Angriffe, in denen man Kollisionen zu bereits vorgegebenen Daten findet ("Pre-Image-Angriff") sind dagegen (noch) nicht bekannt, so dass die Sicherheit dieser Algorithmen für Passwortdateien oder zur Verifikation von Software-Paketen z.Zt. nicht zur Disposition steht. Es spricht natürlich trotzdem nichts dagegen – wenn man die Wahl hat – auch für diese Zwecke die stärkeren SHA-Algorithmen zu nutzen."

Meiner Meinung nach ist diese Aussage mittlerweile überholt (s. Heise-Link ganz unten).

Grüße, Roland

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 12527

Moin! Ich bin mit der Formulierung "MD5 und SHA-1 sind für alle Einsatzzwecke überholt und gelten als nicht mehr sicher." nicht einverstanden. Aus dem zweiten Teil des Satzes folgt der erste nicht! Es gibt reichlich Anwendungen, die nicht sicherheitsrelevant sind oder wo die Eingaben kontrolliert sind, in denen es sinnvoll ist MD5 zu verwenden. Ein Grund ist z.B. die geringere Komplexität der Berechnung und damit größere Geschwindigkeit:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
$ du -h x
501M	x
$ for i in x x x; do for cmd in md5sum sha256sum; do echo "cmd $cmd"; time $cmd x; done; done
cmd md5sum
de1421cbbc7cceeed2be9fdf6b7e026c  x

real	0m1.219s
user	0m1.048s
sys	0m0.152s
cmd sha256sum
a27bb7fe02c149eb8eb6d2746623f776658bed86691495d17695e04a45caf3de  x

real	0m4.775s
user	0m4.636s
sys	0m0.128s
cmd md5sum
de1421cbbc7cceeed2be9fdf6b7e026c  x

real	0m1.175s
user	0m1.068s
sys	0m0.100s
cmd sha256sum
a27bb7fe02c149eb8eb6d2746623f776658bed86691495d17695e04a45caf3de  x

real	0m4.801s
user	0m4.608s
sys	0m0.188s
cmd md5sum
de1421cbbc7cceeed2be9fdf6b7e026c  x

real	0m1.208s
user	0m1.108s
sys	0m0.096s
cmd sha256sum
a27bb7fe02c149eb8eb6d2746623f776658bed86691495d17695e04a45caf3de  x

real	0m4.079s
user	0m3.932s
sys	0m0.136s

Auch ist z.B. bei PostgreSQL MD5 die einzige Option. Vorschlag: "MD5 und SHA-1 gelten als nicht mehr sicher und sollten bei sicherheitsrelevanten Anwendungen nicht mehr verwendet werden."

rolands11

Anmeldungsdatum:
17. September 2016

Beiträge: 70

Stimme ich zu. Wenn keine anderen Vorschläge kommen, würde ich Deine Formulierung übernehmen.

Grüße, Roland

rolands11

Anmeldungsdatum:
17. September 2016

Beiträge: 70

Um die Aussage von rklm weiter zu bestätigen, hier eine andere Methode um die Performance verschiedener Hashfunktionen zu vergleichen:

1
2
3
4
5
6
7
$ openssl speed md5 sha1 sha256
...
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md5              61586.67k   178606.59k   393615.02k   558741.16k   643178.50k
sha1             71437.51k   201873.66k   435037.35k   618494.29k   694954.67k
sha256           59472.48k   131219.46k   229767.85k   283979.43k   299234.65k

Interessant finde ich, dass SHA-1 in vielen Situationen ein wenig performanter als MD5 ist. Das wird auch von anderen Tests bestätigt (s. z.B. https://automationrhapsody.com/md5-sha-1-sha-256-sha-512-speed-performance/ ).

Ich fürchte allerdings, dass die Performance stark vom verwendeten Linux-Kernel ("cat /proc/crypto") und der Hardware-Unterstützung für Crypto-Algorithmen abhängt (für Intel XEON s. z.B. hier: https://software.intel.com/en-us/articles/intel-xeon-scalable-processor-cryptographic-performance ). Generell gilt:

  • MD5 und SHA-1 liegen nah beieinander, SHA-1 ist teilweise performanter

  • SHA-256 ist deutlich langsamer

Grüße, Roland

Antworten |