2010-04-17 7 views
5

Trabajo en la aplicación que permite que los complementos accedan a un conjunto diferente de funcionalidades, cada complemento proporciona una "cadena de inicialización" que establece el nivel de acceso a diferentes funciones. Los desarrolladores me envían estas cadenas y las cifro usando mi clave privada RSA de 1024 bits y vuelvo a enviar datos codificados. Cuando se inicia, mi aplicación decodifica los datos codificados (cadena de inicialización codificada) usando la clave pública incorporada y si "datos decodificados! = Cadena de inicialización" no puede iniciarse.¿Es posible obtener la clave pública RSA sabiendo la clave pública y el conjunto de entradas "datos originales => datos cifrados"?

Entonces, ¿es posible usar una base de datos de "cadena de inicialización" => "cadena de inicialización codificada" (extraída de otros complementos) para descifrar mi clave privada, o hacerla funcionar brutalmente en un tiempo razonable?

Respuesta

5

Cuando dices que "encriptas con una clave privada RSA", entonces en realidad no estás encriptando cosas. Esto es un poco histórico de confusión. Lo que está haciendo es una firma digital que el complemento verifica con la clave pública correspondiente. La confusión proviene del hecho de que, bajo una luz adecuada, las firmas RSA se pueden ver como una especie de "encriptación inversa" con la clave privada actuando primero. Sin embargo, difiere en algunos detalles (por ejemplo, el relleno y la participación de una función hash) que lo hacen bastante diferente cuando se trata de la implementación.

Si está utilizando un RSA esquema de firma digital adecuada (por ejemplo uno de los descritos en PKCS#1, sección 8 "esquemas de firma con apéndice"), con una llave adecuadamente grande RSA (1024 bits o más) generados mediante un algoritmo de generación de claves correctamente implementado, y luego, no existe una forma conocida, computacionalmente factible para que un atacante aproveche las firmas que ha producido para forjar nuevas firmas (y, a fortiori, descifre la clave privada RSA). De ninguna manera se ha demostrado que sus firmas no ayuden al atacante, pero 30 años de investigación pública sobre el tema no han dado lugar a tal incumplimiento.

Tenga en cuenta, sin embargo, que los detalles de uso, en particular el relleno (la parte inicial, que transforma los datos a firmar en un gran número que el núcleo matemático de RSA puede procesar) se han mostrado delicados; muchas formas propuestas para hacer el relleno han sido atacadas con éxito. Los rellenos PKCS # 1 han estado bajo escrutinio durante bastante tiempo (dos décadas para el relleno "v1.5") y se han resistido a todos estos intentos hasta el momento. A la familia de almohadillas "ISO 9796" no le fue tan bien, ya que se habían roto muchas variantes.

Si usted es no computando sus firmas de acuerdo con un estándar bien establecido (es decir, PKCS # 1), entonces está buscando problemas. No hagas eso. Afortunadamente, la mayoría de las implementaciones de RSA (en bibliotecas criptográficas y lenguajes/lenguajes de programación) siguen a PKCS # 1.

+0

Thaks para una respuesta increíble – Riz

2

El objetivo de la tecnología de clave pública/privada de RSA es que es muy difícil de revertir.

Existen grietas conocidas que aprovechan algunas deficiencias de implementación particulares, pero se cree que el algoritmo básico tarda décadas en ceder ante un ataque de fuerza bruta. Ver this.

+0

¿Por qué fue esto downvoted? Sheesh, multitud difícil. – egrunin

+0

¡Sí! ¿Por qué fue downvoted? – wallyk

5

Este tipo de ataque criptoanalítico se llama known plaintext attack y debería ser realmente difícil de aplicar en RSA1024.

O al menos, tratar de romper la clave RSA con textos planos conocidos será tan difícil como tratar de hacerlo sin ellos, el único tipo conocido de ataque relacionado con su problema es el ataque de tiempo, pero necesita saber bien la implementación específica de su RSA ya que funciona midiendo el tiempo necesario para el descifrado.

El hecho es que la seguridad de RSA está dada por dos problemas matemáticos complejos, y conocer el texto plano y el texto de cifrado asociado no le da mucha ayuda al respecto.

En cualquier caso, los conocidos en texto plano ataques por lo general necesita una gran cantidad de muestras que deben llevarse a cabo (como millones o mil millones de DES) por lo que no es tan fácil también para los algoritmos más débiles.

Cuestiones relacionadas