
Optimierungen für pairing-basierte Kryptografie
Dieses Repository enthält den funktionsfähigen Rust-Code, der zu einer laufenden Serie von Blogbeiträgen über Optimierungen in der pairing-basierten Kryptografie gehört, wobei BLS12-381 als Referenzkurve dient.
Bitte beachten: Dieser Code dient ausschließlich zu Bildungszwecken, wurde keiner Sicherheitsüberprüfung unterzogen und ist nicht für den Produktionseinsatz geeignet. Verwendung auf eigene Gefahr.
Dieser Beitrag behandelt die modulare Montgomery-Arithmetik von Anfang bis Ende, einschließlich Kontext, Alternativen, Theorie und praktisch funktionsfähigem Code in Rust, der 9X schneller läuft als eine generische Big-Integer- Implementierung. Der nächste Blogbeitrag wird die (relativ) rechenintensive Multiplikationsroutine weiter optimieren, und zwar in Bare-Metal-x86-64- Assemblysprache.
mont1: https://github.com/nccgroup/pairing/tree/main/mont1Dieser zweite Beitrag treibt den in Rust entwickelten Montgomery-Multiplikationsalgorithmus noch weiter voran, um die maximale Leistung zu erreichen, die eine moderne x86-64-Maschine aus einer von Hand in Assembly-Sprache geschriebenen Implementierung herausholen kann. Mehrere spezialisierte Befehle und erweiterte mikroarchitektonische Merkmale, die eine erhöhte Parallelität ermöglichen, führen dazu, dass die Montgomery-Multiplikationsroutine mehr als 15X schneller läuft als eine generische Big-Integer-Implementierung.
mont2: https://github.com/nccgroup/pairing/tree/main/mont2Copyright 2021 Eric Schorn; Lizenziert unter der 3-Clause-BSD-Lizenz.