Jason Donenfeld, der Autor von VPN WireGuard, hat Patches vorgestellt, die die Beschleunigung der Zufallszahlenerzeugung durch das System über die Funktion getrandom() ermöglichen, die via des entsprechenden Systemaufrufs in Linux implementiert ist. Der Vorteil dieser Lösung im Vergleich zur Verwendung von /dev/random oder /dev/urandom liegt darin, dass sie nicht anfällig für Angriffe zur Erschöpfung von Dateideskriptoren ist, die zu nicht initialisierten und nicht zufälligen kryptographischen 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 Handler für den Systemaufruf vom Kernel in den Benutzerspeicher zu verlagern und Kontextwechsel zu vermeiden. Im Fall von getrandom() ist die Implementierung des damit verbundenen Systemaufrufs als vDSO ausgelegt, wobei der Code im Voraus vom Kernel in den Adressraum des Prozesses geladen wird. Dieser Ansatz hat es ermöglicht, die Zufallszahlenerzeugung in bestimmten Situationen um das 15-fache oder mehr zu beschleunigen.
Quelle: opennet.ru
