Un par de claves es un módulo n = p·q de 2048 a 4096 bits, un exponente público e (casi siempre 65537) y un exponente privado d = e⁻¹ mod lcm(p − 1, q − 1). Las claves privadas suelen incluir también p, q y los valores CRT dP, dQ y qInv, que hacen la firma unas cuatro veces más rápida (la estructura RSAPrivateKey de PKCS #1, RFC 8017, apéndice A.1.2). Firmar eleva un mensaje codificado a la potencia d módulo n; verificar eleva la firma a e y compara el resultado con la codificación esperada.
El RSA en bruto es maleable y falsificable, así que un esquema de relleno siempre forma parte del algoritmo: RSASSA-PKCS1-v1_5 (determinista, RS256 en JOSE) o RSASSA-PSS (aleatorizado, PS256) para firmas, y RSAES-OAEP para cifrado. El antiguo relleno de cifrado de PKCS #1 v1.5 hizo posibles los ataques de oráculo de relleno de Bleichenbacher; TLS 1.3 eliminó por completo el transporte de claves con RSA. FIPS 186-5 §5.4 exige exactamente dos primos y un exponente público impar entre 2¹⁶ y 2²⁵⁶.
Una firma es tan larga como el módulo: 256 bytes para RSA-2048, 384 para RSA-3072 y 512 para RSA-4096. SP 800-57 Parte 1 asigna a 2048 bits una seguridad de 112 bits y a 3072 bits, una de 128 bits. Verificar es barato y firmar no: en un núcleo de un Apple M4 Max con OpenSSL 3.6.5, RSA-2048 firma unos 3000 mensajes por segundo y verifica unos 114.000, y generar una clave de 2048 bits tarda de media unos 26 ms, con mucha variación.
NIST IR 8547 (borrador público inicial) propone declarar obsoleto el RSA de 112 bits (2048 bits) después de 2030 y prohibir todo RSA después de 2035. Consulta ECDSA vs RSA para la comparación con las curvas elípticas.