Estoy mirando para asegurar el procedimiento de actualización de software para un dispositivo pequeño y yo soy el mantenimiento que se ejecuta en Linux. Quiero generar una suma md5 del paquete de actualización de los contenidos y, a continuación, cifrar que el hash con la clave privada antes de enviarlo al cliente. Cuando se carga la actualización, el dispositivo, debe descifrar el hash, verificar, y proceder con la instalación del paquete.

Estoy tratando de hacer esto con OpenSSL y RSA. He encontrado este hilo, y se desanime. Luego encontré este hilo y se preguntó cómo Perl se presenta en torno a la supuesta imposibilidad de todo. Estoy haciendo esto en C, así que tal vez hay una función paralela en la biblioteca SSL en algún lugar?

Así que mi pregunta es: puedo forzar la línea de comandos de Linux para tomar una clave pública como el descifrado de entrada, o tal vez use C para sortear la limitación?

Gracias por adelantado a todos.

  • Nota al margen: cifrados con claves públicas y descifrar las claves privadas. También puedes iniciar sesión con una clave privada (que, por RSA, es idéntica a la de descifrado) y verificar con una clave pública (que, por RSA, es idéntica a la de cifrado).
  • Gracias. Tu comentario ayudó a aclarar la respuesta. También, cuando me encontré con los comandos en la respuesta (firma y verificación) de la salida de la firma miró cifrado y el resultado de la verificación es el texto sin formato. No entiendo cómo lo que usted dijo funciona, entonces, por desgracia. ¿Cómo puede el descifrado (firma) parece incomprensible el texto cifrado (verificar) se ve limpio?
  • RSA cifrado y descifrado son inversos el uno del otro. Que se pueden ejecutar en cualquier orden. Así, por un mensaje, M, Encrypt(Decrypt(M)) == M y Decrypt(Encrypt(M)) == M.
  • Oh, por supuesto. Así que me tome la selección del vocabulario en RSA es realmente más indicativos que teclas se usan para lo que es para indicar lo que el resultado será parecido. Gracias de nuevo.
InformationsquelleAutor musasabi | 2013-01-14

1 Comentario

  1. 10

    Vamos a suponer que usted ha generado una pública y la clave privada RSA utilizando openssl genrsa:

    $ openssl genrsa -out mykey
    Generating RSA private key, 512 bit long modulus
    ...++++++++++++
    ..........++++++++++++
    e is 65537 (0x10001)
    $ openssl rsa -in mykey -pubout -out mykey.pub
    writing RSA key
    

    Puede firmar algo con la clave privada como este:

    $ md5sum myfile | openssl rsautl -inkey mykey -sign > checksum.signed
    

    Puede comprobar estos datos utilizando la clave pública:

    $ openssl rsautl -inkey mykey.pub -pubin -in checksum.signed
    df713741d8e92b15977ccd6e019730a5  myfile
    

    Es esto lo que estás buscando?

    • Esto era exactamente lo que estaba buscando, gracias. A pesar de que, como mi comentario en el post anterior indica, no estoy seguro de cómo funciona esto/¿por qué el vocabulario es diferente, etc. Se hace lo que yo quiero, aunque, así que gracias.
    • Usted ahora está la firma de la producción textual de la suma de control md5 en lugar de directamente de firmar/verificar «miarchivo». WARNING el Uso de MD5 o una de 512 bits RSA clave es, por supuesto, totalmente insegura aquí.

Dejar respuesta

Please enter your comment!
Please enter your name here