Wenn openssl
verbraucht viel CPU, dann ist es nicht blockiert, auf "Entropie" zu warten. OpenSSL ist in dieser Hinsicht tatsächlich vernünftig und verwendet ein kryptografisch sicheres PRNG, um einen anfänglichen Seed in so viele Bits zu erweitern, wie es benötigt wird.
Wenn Sie dhparam
verwenden , OpenSSL generiert nicht nur DH-Parameter; es will auch seinen sozialen Status behaupten, indem es darauf achtet, für den Modulus einen sogenannten "strong prime" zu verwenden, der für die Sicherheit unbrauchbar ist, aber sehr viel mehr Rechenaufwand erfordert. Eine "starke Primzahl" ist eine Primzahl p so dass (p -1)/2 ist ebenfalls eine Primzahl. Der Algorithmus zur Primzahlenerzeugung sieht folgendermaßen aus:
- Generiere eine zufällige ungerade Ganzzahl p .
- Testen Sie, ob p ist prim. Wenn nicht, Schleife.
- Testen Sie, ob (p -1)/2 ist eine Primzahl. Wenn nicht, Schleife.
Zufällige ungerade 4096-Bit-Integer haben eine Wahrscheinlichkeit von etwa 1/2000, Primzahlen zu sein, und da beide p sind und (p -1)/2 muss eine Primzahl sein, dies erfordert im Durchschnitt das Generieren und Testen auf Primzahl von etwa 4 Millionen von ungeraden Primzahlen. Dies wird sicher einige Zeit in Anspruch nehmen.
Wenn Sie von 2048-Bit auf 4096-Bit wechseln, wird die Dichte starker Primzahlen durch 4 geteilt, und die Primzahltests werden auch etwa 4-mal langsamer sein, wenn also das Generieren eines 2048-Bit-DH-Moduls durchschnittlich 1 Stunde dauert, ist es dasselbe Maschine mit der gleichen Software benötigt durchschnittlich 16 Stunden für ein 4096-Bit-DH-Modul. Dies sind nur Durchschnittswerte; jede einzelne Generation kann je nach Glück schneller oder langsamer sein.
Die vernünftige Lösung wäre, die -dsaparam
hinzuzufügen Option.
openssl dhparam -dsaparam -out /etc/ssl/private/dhparam.pem 4096
Diese Option weist OpenSSL an, "DSA-ähnliche" DH-Parameter (p ist so, dass p -1 ist ein Vielfaches einer kleineren Primzahl q , und der Generator hat die multiplikative Ordnung q ). Dies ist erheblich schneller, da die Primzahltests nicht verschachtelt werden müssen und somit nur Tausende, nicht Millionen von Kandidaten generiert und getestet werden.
Soweit Wissenschaftler wissen, sind DSA-ähnliche Parameter für DH gleichermaßen sicher; Es gibt keinen wirklichen Vorteil, "starke Primzahlen" zu verwenden (die Terminologie ist traditionell und impliziert eigentlich keine zusätzliche Stärke).
Ebenso können Sie auch einen 2048-Bit-Modulus verwenden, der bereits sehr weit in der "Cannot-Break-It-Zone" liegt. Das 4096-Bit-Modul wird DH-Berechnungen langsamer machen (was kein wirkliches Problem für ein VPN ist; diese treten nur beim Start der Verbindung auf), aber die Sicherheit wird nicht wirklich verbessert.
Bis zu einem gewissen Grad mag ein 4096-Bit-Modul Prüfer umwerben, aber Prüfer werden von einem Raspberry-Pi, der sowieso viel zu billig ist, wahrscheinlich nicht sonderlich beeindruckt sein.