Ein Schlüsselpaar besteht aus einem Modul n = p·q mit 2048–4096 Bit, einem öffentlichen Exponenten e (fast immer 65537) und einem privaten Exponenten d = e⁻¹ mod lcm(p − 1, q − 1). Private Schlüssel enthalten meist auch p, q und die CRT-Werte dP, dQ und qInv, die das Signieren etwa viermal schneller machen (die Struktur RSAPrivateKey aus PKCS #1, RFC 8017, Anhang A.1.2). Beim Signieren wird eine kodierte Nachricht modulo n mit d potenziert; beim Prüfen wird die Signatur mit e potenziert und das Ergebnis mit der erwarteten Kodierung verglichen.
Rohes RSA ist formbar und fälschbar, deshalb gehört immer ein Padding-Verfahren zum Algorithmus: RSASSA-PKCS1-v1_5 (deterministisch, JOSE RS256) oder RSASSA-PSS (randomisiert, PS256) für Signaturen und RSAES-OAEP für die Verschlüsselung. Das ältere Verschlüsselungspadding von PKCS #1 v1.5 ermöglichte die Padding-Oracle-Angriffe von Bleichenbacher; TLS 1.3 hat den Schlüsseltransport per RSA ganz abgeschafft. FIPS 186-5 §5.4 verlangt genau zwei Primzahlen und einen ungeraden öffentlichen Exponenten zwischen 2¹⁶ und 2²⁵⁶.
Eine Signatur ist so lang wie der Modul: 256 Byte bei RSA-2048, 384 bei RSA-3072, 512 bei RSA-4096. SP 800-57 Teil 1 bewertet 2048 Bit mit 112-Bit-Sicherheit und 3072 Bit mit 128-Bit-Sicherheit. Die Prüfung ist günstig, das Signieren nicht: Auf einem Kern eines Apple M4 Max mit OpenSSL 3.6.5 signiert RSA-2048 etwa 3.000 und prüft etwa 114.000 Nachrichten pro Sekunde, und das Erzeugen eines 2048-Bit-Schlüssels dauert im Mittel etwa 26 ms, bei starker Streuung.
NIST IR 8547 (erster öffentlicher Entwurf) schlägt vor, RSA mit 112-Bit-Sicherheit (2048 Bit) nach 2030 als veraltet einzustufen und RSA nach 2035 überhaupt nicht mehr zuzulassen. Den Vergleich mit elliptischen Kurven findest du unter ECDSA vs. RSA.