# ROCA-Verwundbarkeit

Die ROCA-Verwundbarkeit ist eine kryptografische Sicherheitslücke bei der Erzeugung von Schlüsselpaaren bei dem asymmetrischen RSA-Kryptosystem, die es ermöglicht, aus den Daten des öffentlichen Schlüssels die Daten des geheimen privaten Schlüssel erleichtert und mit reduziertem Aufwand zu generieren. Die Abkürzung ROCA steht dabei für englisch Return Of Coppersmith's Attack, und die Sicherheitslücke ist unter CVE-2017-15361 bei MITRE (englisch) verzeichnet.
Die Verwundbarkeit betrifft nicht das RSA-Kryptosystem grundsätzlich, sondern nur bestimmte Implementierungen und Geräte, welche auf der Softwarebibliothek RSALib von Infineon aufbauen, wie beispielsweise Chipkarten (Smartcards) und Trusted Platform Module (TPM) und darauf aufbauende Produkte wie der YubiKey 4. Auswirkungen liegen dann vor, wenn diese Geräte zur Erzeugung von RSA-Schlüsselpaaren im Rahmen von hybrider Verschlüsselungssoftware wie Pretty Good Privacy (PGP), S/MIME oder GNU Privacy Guard (GnuPG) verwendet werden.
Das Forschungsteam um Matus Nemec et al., welche die Schwachstelle im Februar 2017 entdeckt hatten, schätzen, dass mit Stand Anfang 2018 ungefähr 25 % aller aktuellen im Einsatz befindlichen TP-Module und einige Millionen Smartcards mit PGP-Funktion davon betroffen sind.

## Hintergrund

Bei der Erzeugung eines RSA-Schlüsselpaares für den geheimen privaten und den öffentlichen Schlüssel werden grundsätzlich zwei große und zufällig generierte Primzahlen ausgewählt. Dieser Vorgang ist insbesondere auf kleineren, mobilen Geräten wie Smartcards oder Sicherheitstoken sehr zeitaufwändig, weshalb in Implementierungen verschiedene Optimierungen angewendet werden. Bei der fehlerhaften Implementierung in der RSALib von Infineon erfolgen die Auswahl und der Test von Primzahlen anhand eines optimierten Verfahren nach:
    $k\cdot M+(65537^{a}{\bmod {M}})$
Dabei ist M das Produkt der ersten n aufeinander folgenden Primzahlen (2, 3, 5, 7, 11, 13, …). n ist eine Konstante, die von der gewünschten Schlüssellänge abhängt, und die primäre Sicherheit basiert auf den geheimen Konstanten k und a. Der ROCA-Angriff nutzt dieses speziell optimierte Auswahlverfahren für Primzahlen, indem eine Variation des namensgebenden Coppersmith-Angriffs verwendet wird. Dabei weisen bestimmte Schlüssellängen, welche in der Länge eine Zweierpotenz darstellen, wie 2048 Bit oder 4096 Bit lange RSA-Schlüssel, eine stärkere Schwächung auf als kürzere Schlüssellängen, die keine Zweierpotenz darstellen. Beispielsweise weist die Schlüssellänge mit 3072 Bit bei diesem Fehler eine höhere Sicherheit als ein 4096 Bit langer RSA-Schlüssel auf.
Die mit RSALib erzeugten RSA-Schlüsselpaare weisen durch die Art der fehlerhaften Erzeugung auch eine unverwechselbare Erkennung auf, die es einerseits erlaubt, für Angriffe gezielt betroffene öffentlich zugängliche RSA-Schlüssel zu finden, andererseits kann damit auch die ROCA-Verwundbarkeit von Schlüsselpaaren nachträglich getestet werden, und betroffene Nutzer können zur Neugenerierung ihrer Schlüsseldaten veranlasst werden.
Wurden RSA-Schlüsselpaare mit anderen Implementierungen, wie beispielsweise mit OpenSSL erzeugt, besteht keine ROCA-Verwundbarkeit.