Die Password Hashing Competition (PHC) war das Auswahlverfahren für ein neues password hashing scheme, einem Schema zum Speichern von Passwörtern oder zur Ableitung von kryptographischen Schlüsseln aus Passwörtern. Es wurde Anfang 2013 maßgeblich von Jean-Philippe Aumasson initiiert[1] und endete 2015 mit der Empfehlung, zukünftig Argon2 als Passwort-Hashfunktion zu verwenden.

Hintergrund Bearbeiten

Passwort-Hashing wird beim Login in ein System mittels Passwort, beispielsweise nach dem Starten eines Rechners, und bei der Ableitung von kryptographischen Schlüsseln aus Passwörtern, wie bei der Verschlüsselung von Partitionen, benutzt. Es existieren nur drei Verfahren, die eine gewisse Verbreitung besitzen: bcrypt, PBKDF2 und scrypt. Von diesen ist nur PBKDF2 vom NIST standardisiert, allerdings gilt besonders dieses Verfahren als sehr verwundbar für Angriffe mit spezialisierter Hardware, wie GPUs, ASICs und FPGAs.[2][3] Weniger die Fortschritte in der Kryptoanalyse, sondern vielmehr die Entwicklungen der Hardware bewirken, dass viele Passwörter innerhalb kurzer Zeit mittels Wörterbuchangriff oder Brute-Force-Methode gebrochen werden können. Die neuere Funktion scrypt wurde zwar mit dem Ziel konzipiert, genau diese Angriffe zu verhindern, doch ist deren Einsatz insbesondere bei Webservern begrenzt. Die Password Hashing Competition hat sich zum Ziel gesetzt, die Forschung in diesem Bereich zu fördern und am Ende des Auswahlverfahrens ein oder mehrere Schemata zu empfehlen.

Organisation Bearbeiten

Die Password Hashing Competition orientiert sich an transparenten Auswahlverfahren wie dem zur Auswahl der Blockchiffre AES, dem eSTREAM-Verfahren zur Auswahl einer Stromchiffre und dem SHA-3-Verfahren zur Auswahl einer Hashfunktion. Im Unterschied zu all diesen Auswahlverfahren ist die PHC nicht an eine bestimmte Institution gebunden, wie dem NIST im Falle des AES und SHA-3 oder NESSIE im Falle des eSTREAM-Projekts. Die Glaubwürdigkeit wird nur durch die beteiligten Personen gewährleistet. Diese entstammen der Industrie, dem universitären Bereich und staatlichen Institutionen. Die PHC hat damit neue Wege beschritten, noch bevor Edward Snowden die Einflussnahme der NSA auf kryptographische Standards bekannt machte.[4]

Die PHC wurde nur drei Jahre nach einer offiziellen Empfehlung der NIST zum gleichen Thema ins Leben gerufen. Obwohl dieser Umstand eine Ablehnung der Empfehlung nahelegt, äußert die PHC öffentlich keine Kritik am NIST. Es sollen sogar Gespräche stattgefunden haben, bei denen NIST signalisiert habe, das Auswahlverfahren aufmerksam zu verfolgen.[3] Zudem ist mit Meltem Sonmez Turan ein NIST-Mitarbeiter an der PHC beteiligt.

Personen Bearbeiten

Neben bekannten Kryptologen wie Jean-Philippe Aumasson (Entwickler von BLAKE, einem der SHA-3-Finalisten) sind auch Entwickler von bestehenden Password Hashing Schemes beteiligt, wie Colin Percival (scrypt) und Stefan Lucks (Catena). Die PHC legt Wert darauf, Expertise nicht nur aus dem defensiven Bereich einzubeziehen, sondern auch aus dem „offensiven“ Bereich, also Personen, die zukünftige Angriffe simulieren sollen, sowie Sicherheitsbeauftragte und Personen aus der Software- und Hardware-Entwicklung, letztere insbesondere im Bereich ASICs, FPGAs und GPUs.[5]

Finalisten (Verfahren der zweiten Runde) Bearbeiten

Von den 22 Kandidaten der ersten Runde wurden neun Finalisten ausgewählt:

  • Argon von Alex Biryukov und Dmitry Khovratovich besteht aus einer 5-Runden-AES-128-Verschlüsselung mit fixem Schlüssel sowie XOR- und Block-Mutationen. Argon profitiert von der AES-Befehlssatzerweiterung moderner Prozessoren.[6] Argon2 wurde erst am 31. Januar 2015 eingereicht und verwendet die Hashfunktion Blake2b statt der AES-Befehlssatzerweiterung.
  • battcrypt von Steven Thomas hat sich zum Ziel gesetzt, die Verschlüsselungsfunktion Blowfish speicherintensiv (memory-hard) auszubauen. battcrypt orientiert sich an bcrypt und verwendet intern die Hashfunktion SHA-512.[7]
  • Catena von Christian Forler, Stefan Lucks und Jakob Wenzel wurde schon vor der PHC als Alternative zu scrypt vorgestellt. Im Gegensatz zu scrypt ist Catena immun gegen cache-timing attacks und auch resistenter gegen garbage-collector attacks. Version 2.0 erlaubt alternativ zwei speicherintensive Funktionen: die bit-reversal hashing operation (Catena-BRG) und die double butterfly hashing operation (Catena-DBG).[8]
  • Lyra2 von Marcos A. Simplicio Jr., Leonardo C. Almeida, Ewerton R. Andrade, Paulo C. F. dos Santos und Paulo S. L. M. Barreto ist ebenfalls angelehnt an das Verfahren scrypt und basiert wie auch die Hashfunktion Keccak (SHA-3) auf der Sponge-Konstruktion.[9][10] Die Kryptowährung Vertcoin hatte schon vor der Auswahl der Finalisten angekündigt, scrypt durch Lyra2 zu ersetzen.[11]
  • Makwa von Thomas Pornin erlaubt die Auslagerung eines großen Teils der Berechnung auf externe Server. Passwort und Salt werden als Seed in einen deterministischen Zufallszahlengenerator (HMAC-DRBG) gegeben und anschließend mehrfach modulo eines BLUM-Integers quadriert. Ähnlich wie das RSA-Kryptosystem beruht die Sicherheit von Makwa auf dem Faktorisierungsproblem.[12]
  • Parallel von Steve Thomas verarbeitet eine große Anzahl paralleler SHA-512-Hash-Operationen und basiert auf der Idee, GPUs und FPGAs defensiv einzusetzen.[13]
  • POMELO von Hongjun Wu besteht allein aus Additions-, XOR- und Rotationsoperationen und benutzt keine bestehende kryptographische Funktion. Pomelo ist hauptsächlich gegen einen Angriff mit GPUs ausgerichtet,[14] die modifizierte Fassung v2 ist aufgrund ihrer Arbeitsspeicher-Intensität auch zur Abwehr anderer spezialisierter Hardware geeignet.
  • Pufferfish von Jeremi M. Gosney ist an das Verfahren bcrypt angelehnt, verwendet jedoch 64-Bit-Wörter und beliebig große, Passwort-abhängige S-Boxen.[15]
  • Yescrypt von Alexander Peslyak baut auf dem Verfahren scrypt auf und besitzt auch einen Scrypt-Kompatibilitätsmodus mit dem Scrypt-Hashwerte berechnet werden können. Yescrypt enthält optional unter anderem einen ROM-basierten Zugriff, der auch Angriffe mittels Botnets abwehren soll.[16][17]

Sieger Bearbeiten

Am 20. Juli 2015 wurde bekannt gegeben, dass Argon2 als Basis des endgültigen Siegers der Password Hashing Competition dienen solle.[18] Es wurden außerdem die Finalisten Catena, Lyra2, Makwa und yescrypt für ihre spezifischen positiven Eigenschaften besonders hervorgehoben[18]. Später im Jahr 2015 wurde die Version 1.2.1 vom 1. Oktober 2015 von Argon2 als Gewinner gekürt.[19]

Argon2 Bearbeiten

Die PHC empfiehlt, den Sieger Argon2 zukünftig allen früheren Algorithmen vorzuziehen:

„We recommend that you use Argon2 rather than legacy algorithms.“

Es existierten zunächst zwei Varianten von Argon2: die Variante Argon2i zielt auf Sicherheit gegenüber Seitenkanalangriffen ab, während die Variante Argon2d vorwiegend vor GPU-Brute-Force-Angriffen schützen soll. Argon2d wurde für Kryptowährungen und Backend-Server-Authentifizierungen empfohlen, während Argon2i für Frontend-Server-Authentifizierungen und Festplatten-Verschlüsselungen empfohlen wurde. Im Zweifel empfahlen die Entwickler, Argon2i zu verwenden.[20] Beide Varianten verfügen über drei Parameter, mit denen sich die Ausführungsdauer, der Speicherverbrauch und die Parallelisierbarkeit einstellen lassen[21].

Im März 2017 wurde ein Dokument der IETF der Version 1.3 veröffentlicht[22], das die Variante Argon2id als primäre Variante vorstellt und Argon2i und Argon2d nur noch als zusätzliche Varianten aufführt. Argon2id ist eine hybride Funktion, deren erster Teil resistent gegen cache timing attacks ist, während der zweite Teil einen Time-Memory Tradeoff verhindern soll.

Eine Referenzimplementation in C89-Kompatiblem C, die auf x86-, x64- und den meisten Arm-Systemen unter Unix (wie Linux und macOS) und Windows läuft, wurde unter der Lizenz CC-0 als De-facto-Public-Domain freigegeben.[21]

Weblinks Bearbeiten

Einzelnachweise Bearbeiten

  1. Aufruf-E-Mail von Jean-Philippe Aumasson Banana Competition Call for Submissions
  2. Markus Dürmuth, Tim Güneysu, Markus Kasper, Christof Paar, Tolga Yalcin, Ralf Zimmermann: Evaluation of Standardized Password-Based Key Derivation against Parallel Processing Platforms. In: Computer Security – ESORICS 2012, Springer-Verlag, Berlin Heidelberg 2012, ISBN 978-3-642-33166-4, S. 716–733.
  3. a b Dennis Fisher: Cryptographers Aim to Find New Password Hashing Algorithm, 15. Februar 2013. Online-Artikel auf threadpost.com
  4. James Ball, Julian Borger and Glenn Greenwald: Revealed: how US and UK spy agencies defeat internet privacy and security. In: The Guardian, 6. September 2013.
  5. Jean-Philippe Aumasson: Crypto competitions 13/05/13, Invited talk at University of Passau (PDF; englisch).
  6. Alex Biryukov und Dmitry Khovratovich: Argon v1: Password Hashing Scheme (Version v1 auf GitHub)
  7. Steven Thomas: battcrypt (Blowfish All The Things) (PDF)
  8. Christian Forler, Stefan Lucks, Jakob Wenzel: The Catena Password-Scrambling Framework. (PDF, 669 KiB) Version 3.2. 29. September 2015, S. 45, abgerufen am 26. Oktober 2015 (englisch).
  9. Marcos A. Simplicio Jr., Leonardo C. Almeida, Ewerton R. Andrade, Paulo C. F. dos Santos, Paulo S. L. M. Barreto: The Lyra2 reference guide (PDF; 4,7 MB)
  10. Lyra Webseite: Lyra & Lyra2
  11. coinbrief.net: Vertcoin (VTC) plans algorithm change to Lyra2
  12. Thomas Pornin: The MAKWA Password Hashing Function (PDF; 355 kB)
  13. Steve Thomas: Parallel (PDF)
  14. Hongjun Wu: POMELO: A Password Hashing Algorithm (PDF)
  15. Jeremi M. Gosney: The Pufferfish Password Hashing Scheme (Memento des Originals vom 10. Januar 2016 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/password-hashing.net (PDF)
  16. Alexander Peslyak: yescrypt - a Password Hashing Competition submission (PDF; 135 kB)
  17. Präsentation auf Openwall.com: yescrypt - password hashing scalable beyond bcrypt and scrypt
  18. a b PHC candidates. (Memento vom 11. August 2015 im Internet Archive)
  19. Argon2-Spezifikationen, S. 1 u. 18, abgerufen am 8. Januar 2016
  20. Argon2 Spezifikationen, v1.2.1, abgerufen am 8. Januar 2016
  21. a b password-hashing.net, abgerufen am 8. Januar 2015
  22. The memory-hard Argon2 password hash and proof-of-work function, abgerufen am 23. Juli 2017