Jason A. Donenfeld, der Autor von VPN WireGuard, präsentierte Patches, die die Beschaffung von Zufallszahlen systematisch über die Funktion getrandom() verbessern. Diese Funktion wird über den entsprechenden Systemaufruf in Linux implementiert. Der Vorteil dieser Lösung im Vergleich zur Nutzung von /dev/random oder /dev/urandom ist die Resistenz gegen Datei-Descriptor-Angriffe, die zu nicht initialisierten und nicht zufälligen kryptografischen Schlüsseln führen können.
Die vorgeschlagene Optimierung basiert auf der Verwendung des vDSO-Mechanismus (virtual dynamic shared object), der es ermöglicht, den Systemaufruf-Handler aus dem Kernel in den Benutzerspeicher zu verlagern und Kontextwechsel zu vermeiden. Im Fall von getrandom() wurde die mit dieser Funktion verbundene Systemaufrufsimplementierung in Form von vDSO gestaltet, wobei der entsprechende Code direkt vom Kernel in den Adressraum des Prozesses geladen wird. Dieser Ansatz hat die Beschaffung von Zufallszahlen in bestimmten Situationen um das 15-Fache und mehr beschleunigt.
Quelle: opennet.ru
