El Mejor Algoritmo de Keygen Público y Privado, y por qué
Gravitational patrocinó esta publicación.
¿Qué es peor que dejar las claves privadas sin supervisión? Tener claves públicas que pueden ser forzadas por fuerza bruta.
El “seguro “en” shell seguro ” proviene de la combinación de hash, cifrado simétrico y cifrado asimétrico. En conjunto, SSH utiliza primitivas criptográficas para conectar de forma segura clientes y servidores. En los 25 años transcurridos desde su fundación, la potencia de cálculo y las velocidades de acuerdo con la Ley de Moore han requerido algoritmos de bajo nivel cada vez más complicados.
A partir de 2020, los algoritmos criptográficos asimétricos más ampliamente adoptados en el mundo de la PKI son RSA, DSA, ECDSA y EdDSA. Entonces, ¿cuál es el mejor?
Entonces, ¿Cuál usar?
Elegir el algoritmo correcto depende de unos pocos criterios:
- Implementación: ¿Pueden manejarlo los expertos o es necesario enrollarlo?Compatibilidad con
- : ¿Hay clientes SSH que no admiten un método?
- Rendimiento: ¿Cuánto tiempo se tardará en generar una clave suficientemente segura?
- Seguridad: ¿Se puede derivar la clave pública de la clave privada? (El uso de la computación cuántica para romper el cifrado no se discute en este artículo.)
ASR
Implementación | Se pueden encontrar bibliotecas RSA para todos los idiomas principales, incluidas bibliotecas en profundidad
(JS, Python, Go, Rust, C). |
Compatibilidad | El uso de SHA-1 (OpenSSH) o claves públicas de menos de 2048 bits puede no ser compatible. |
Rendimiento | Las teclas más grandes requieren más tiempo para generarse. |
Seguridad | Existen algoritmos especializados como Tamiz Cuadrático y Tamiz de Campo Numérico General para factorizar enteros con cualidades específicas. |
El tiempo ha sido el mayor aliado y enemigo de la RSA. Publicado por primera vez en 1977, RSA tiene el soporte más amplio en todos los clientes e idiomas SSH y realmente ha resistido la prueba del tiempo como un método confiable de generación de claves. Posteriormente, también ha estado sujeto a la Ley de Moore durante décadas y la longitud de bits clave ha crecido en tamaño. De acuerdo con los estándares NIST, lograr la seguridad de 128 bits requiere una clave con una longitud de 3072 bits, mientras que otros algoritmos utilizan claves más pequeñas. La seguridad de Bit mide el número de pruebas necesarias para forzar una llave. la seguridad de 128 bits significa que se rompen 2128 pruebas.
DSA
Aplicación | DSA fue adoptado por FIPS-184 en 1994. Tiene una amplia representación en las principales bibliotecas de criptomonedas, similar a RSA. |
Compatibilidad | Aunque DSA es compatible con clientes basados en masilla, OpenSSH 7.0 desactiva DSA de forma predeterminada. |
Rendimiento | Mejora significativa en los tiempos de generación de claves para lograr fortalezas de seguridad comparables, aunque la longitud de bits recomendada es la misma que RSA. |
Seguridad | DSA requiere el uso de un valor secreto e impredecible generado aleatoriamente que, si se descubre, puede revelar la clave privada. |
Lo que hace que DSA sea diferente de RSA es que DSA utiliza un algoritmo diferente. Resuelve un problema completamente diferente, conocido como el problema del logaritmo discreto, utilizando un conjunto diferente de ecuaciones, elementos y pasos.
Este algoritmo implica el uso de un número generado aleatoriamente, m, que se usa para firmar un mensaje junto con una clave privada, k. Este número m debe mantenerse en privado. El valor mis pretende ser un nonce, que es un valor único incluido en muchos protocolos criptográficos. Sin embargo, las condiciones adicionales de imprevisibilidad y secreto hacen que el nonce sea más parecido a una clave y, por lo tanto, extremadamente importante.
No solo es difícil garantizar una verdadera aleatoriedad dentro de una máquina, sino que una implementación incorrecta puede romper el cifrado. Por ejemplo:
- Se sabía que la clase Java SecureRandom de Android creaba valores de R que chocaban. En otras palabras, la clase reutilizó algunos números generados aleatoriamente. Esto expuso a varias carteras Bitcoin basadas en Android a que se robaran sus claves privadas. Los requisitos de nonce m significan que dos instancias cualesquiera con el mismo valor de nonce podrían ser objeto de ingeniería inversa y revelar la clave privada utilizada para firmar transacciones.
- Llevando esto un paso más allá, fail0verflow descubrió la clave privada utilizada para firmar actualizaciones de firmware para Sony Playstation 3. En otras palabras, los programadores podrían escribir su propio código, firmarlo con la clave privada revelada y ejecutarlo en la PS3. Resulta que Sony estaba usando el mismo número aleatorio para firmar cada mensaje.
ECDSA y EdDSA
Los dos ejemplos anteriores no son del todo sinceros. Tanto Sony como el protocolo Bitcoin emplean ECDSA, no DSA propiamente dicho. ECDSA es una implementación de curva elíptica de DSA. Funcionalmente, donde RSA y DSA requieren longitudes de clave de 3072 bits para proporcionar 128 bits de seguridad, ECDSA puede lograr lo mismo con solo claves de 256 bits. Sin embargo, ECDSA depende del mismo nivel de aleatoriedad que DSA, por lo que la única ganancia es velocidad y longitud, no seguridad.
En respuesta a las velocidades deseadas de las curvas elípticas y los riesgos de seguridad no deseados, otra clase de curvas ha ganado cierta notoriedad. EdDSA resuelve el mismo problema de registro discreto que DSA / ECDSA, pero utiliza una familia diferente de curvas elípticas conocidas como Curva de Edwards (EdDSA utiliza una curva de Edwards Retorcida). Si bien ofrece ligeras ventajas en velocidad sobre ECDSA, su popularidad proviene de una mejora en la seguridad. En lugar de depender de un número aleatorio para el valor nonce, EdDSA genera un nonce de manera determinista como un hash que lo hace resistente a las colisiones.
Dando un paso atrás, el uso de curvas elípticas no garantiza automáticamente cierto nivel de seguridad. No todas las curvas son iguales. Solo unas pocas curvas han superado pruebas rigurosas. Afortunadamente, la industria de PKI ha ido adoptando poco a poco Curve25519, en particular para EdDSA. Un conjunto que hace que el algoritmo de firma de clave pública, Ed25519.
Implementación | EdDSA es bastante nueva. Crypto++ y cryptlib actualmente no son compatibles con EdDSA. |
Compatibilidad | Compatible con clientes más nuevos, Ed25519 ha visto la adopción más grande entre las curvas de Edward; aunque NIST también propuso Ed448 en su reciente borrador de SP 800-186. |
Rendimiento | Ed25519 es el algoritmo de rendimiento más rápido en todas las métricas. Al igual que con ECDSA, las claves públicas tienen el doble de la longitud de la seguridad de bits deseada. |
Seguridad | EdDSA proporciona el nivel de seguridad más alto en comparación con la longitud de la clave. También mejora las inseguridades que se encuentran en el ECDSA. |
Básicamente, RSA o EdDSA
Cuando se trata de ello, la elección es entre RSA 2048/4096 y Ed25519 y la compensación es entre rendimiento y compatibilidad. RSA es universalmente compatible con los clientes SSH, mientras que EdDSA funciona mucho más rápido y proporciona el mismo nivel de seguridad con claves significativamente más pequeñas. Peter Ruppel pone la respuesta sucintamente:
“La respuesta corta a esto es: mientras la fuerza clave sea lo suficientemente buena para el futuro previsible, en realidad no importa. Porque aquí estamos considerando una firma para autenticación dentro de una sesión SSH. La fuerza criptográfica de la firma solo necesita soportar los ataques actuales de última generación.”- Ed25519 para SSH
¡Simplemente no use ECDSA / DSA!
Característica de imagen a través de .
La Nueva pila es una subsidiaria de propiedad total de Insight Partners, un inversor en las siguientes empresas mencionadas en este artículo: Bit.
Leave a Reply