4. Security Considerations (Sicherheitsüberlegungen)
4. Security Considerations (Sicherheitsüberlegungen)
Die ordnungsgemäße Implementierung und Verwendung eines kryptografischen Signaturalgorithmus erfordert die Berücksichtigung vieler Parameter. Insbesondere sind die Erzeugung, Speicherung, Zugriffskontrolle und Entsorgung privater Schlüssel sensible Operationen, die dieses Dokument in keiner Weise behandelt. Deterministisches (EC)DSA zeigt, wie die Sicherheitsmerkmale eines standardmäßigen DSA- oder ECDSA-Signaturverfahrens erreicht werden können, während die Notwendigkeit einer Quelle starker Zufälligkeit oder sogar jeglicher Zufälligkeit während der Signaturerzeugung beseitigt wird.
Die Erzeugung privater Schlüssel erfordert jedoch absolut eine solch stark zufällige Quelle. In Situationen, in denen deterministisches (EC)DSA aufgrund des Fehlens einer geeigneten Zufallsquelle verwendet werden soll, muss angenommen werden, dass der private Schlüssel extern erzeugt und in das Signaturerzeugungssystem importiert wurde oder in einem Kontext erzeugt wurde, in dem Zufälligkeit verfügbar war. Man kann sich beispielsweise eine Smartcard vorstellen, die ihren privaten Schlüssel noch in der Fabrik unter kontrollierten Umgebungsbedingungen erzeugt, für die jedoch keine Zufallsdatenerzeugung garantiert werden kann, sobald sie im Feld eingesetzt ist, wenn sie sich physisch in den Händen potenzieller Angreifer befindet.
Sowohl die Beseitigung der Anforderung an eine Zufallsquelle als auch die Fähigkeit, eine Implementierung gegen Testvektoren zu testen, verbessern die Sicherheit von DSA- und ECDSA-Signer-Implementierungen, indem sie helfen, schwer zu testende Fehlerbedingungen zu vermeiden. Deterministische Signaturverfahren können auch in anderen Situationen helfen, z.B. um falsche Duplikate zu vermeiden, wenn dasselbe Datenelement mehrmals mit demselben Schlüssel signiert wird: Mit einem deterministischen Signaturverfahren wird jedes Mal dieselbe Signatur erzeugt, was die Duplikaterkennung wesentlich einfacher macht.
Umgekehrt kann das Fehlen von Randomisierung in einigen fortgeschrittenen Protokollen nachteilige Auswirkungen haben, z.B. in Bezug auf Anonymität in einigen Wahlsystemen. Als Faustregel gilt, dass deterministisches DSA oder ECDSA anstelle des echten DSA oder ECDSA verwendet werden kann, ohne zusätzliche Sicherheitsprobleme, wenn das Gesamtprotokoll ein anderes deterministisches Signaturverfahren tolerieren würde, insbesondere RSA, wie in PKCS #1 [RFC3447] spezifiziert (mit "type 1" Padding, nicht PSS) oder ISO 9796-2 [ISO-9796-2]. Die Liste der Protokolle, in denen deterministisches DSA oder ECDSA angemessen ist, umfasst Transport Layer Security (TLS) [RFC5246], das Secure SHell (SSH) Protocol [RFC4251], Cryptographic Message Syntax (CMS) [RFC5652] und Derivate, X.509-Public-Key-Infrastrukturen [RFC5280] und viele andere.
Die in diesem Dokument beschriebene Konstruktion ist als "Derandomisierung" bekannt. Dies wurde für verschiedene Signaturverfahren vorgeschlagen. Die Sicherheit hängt davon ab, ob die Erzeugung von k von der Ausgabe eines Random Oracle nicht unterscheidbar ist. Grob gesagt ist HMAC_DRBG in dieser Rolle sicher, solange HMAC sich wie eine PRF (Pseudorandom Function) verhält. Für Details zur Sicherheit von HMAC und HMAC_DRBG siehe bitte [H2008] und [B2006]. Für eine formellere Behandlung der Derandomisierung siehe [LN2009].
Ein verbleibendes Problem mit deterministischem (EC)DSA, wie in diesem Dokument dargestellt, ist die "Doppelverwendung" des privaten Schlüssels x, sowohl als privater Schlüssel im Signaturerzeugungsalgorithmus selbst als auch als Eingabe für das auf HMAC_DRBG basierende Pseudozufalls-Oracle zur Erzeugung des k-Werts. Dies erfordert, dass HMAC_DRBG weiterhin ein Random Oracle bleibt, selbst wenn der öffentliche Schlüssel (der aus x berechnet wird) ebenfalls bekannt ist. Angesichts des Mangels an gemeinsamer Struktur zwischen HMAC und diskreten Logarithmen scheint dies eine vernünftige Annahme zu sein.
Seitenkanalangriffe sind eine wichtige Überlegung, wann immer ein Angreifer Aspekte einer Implementierung genau messen kann, wie z.B. die Zeitdauer, die für die Durchführung einer Signierungsoperation benötigt wird, oder die zu jedem Zeitpunkt einer Signierungsoperation verbrauchte Leistung. Der Determinismus der in diesem Dokument beschriebenen Algorithmen kann für einen Angreifer bei einigen Formen von Seitenkanalangriffen nützlich sein, daher SOLLTEN Implementierungen defensive Maßnahmen verwenden, um zu vermeiden, dass der private Schlüssel durch einen Seitenkanal durchsickert.