Pregunta de criptografía de clave pública: ¿se utiliza la clave pública o privada para firmar? Confusión entre qué clave se usa para firmar y cuál se usa para cifrar

Soy relativamente nuevo en criptografía y blockchain y estoy aprendiendo cómo funciona la criptografía de clave pública y su aplicación en el entorno de Bitcoin.

Leí dos artículos diferentes, el primero que tenía sentido, pero el segundo me confundió.

Del primer artículo ( https://www.blockchain-council.org/blockchain/how-does-blockchain-use-public-key-cryptography/ ), entiendo que la clave privada del remitente se usa para firmar la transacción digital y el minero/receptor utiliza la clave pública del remitente para verificar la firma del remitente.

Sin embargo, un segundo artículo que leí ( https://www.ibm.com/support/knowledgecenter/en/SSB23S_1.1.0.14/gtps7/s7pkey.html ) sobre criptografía de clave pública dice lo contrario; usando la clave pública primero y luego la clave privada. Adjunto la imagen del segundo enlace:

¿Qué estoy entendiendo mal? ¿Por qué el uso de las claves es en orden inverso?

Gracias de antemano por tu aportación...

Respuestas (3)

¿Qué estoy entendiendo mal?

Está mezclando varios usos distintos de la criptografía, varios propósitos diferentes:

  • autenticación
  • no repudio
  • privacidad
  • prueba de integridad

Criptografía en General

Propósitos

Privacidad

Si desea enviar un mensaje privado a alguien, de manera que nadie que intercepte el mensaje pueda leerlo, normalmente cifra el mensaje utilizando un algoritmo simétrico (clave secreta) y una clave secreta recién creada. A continuación, cifra la clave secreta con la clave pública del destinatario previsto. Esto garantiza que solo el destinatario previsto pueda descifrar la clave secreta del mensaje utilizando su clave privada (que nadie más conoce). Después de descifrar la clave secreta, el destinatario previsto puede descifrar el mensaje utilizando el algoritmo simétrico.

Tenga en cuenta que solo usa un algoritmo simétrico para cifrar el mensaje porque dichos algoritmos son mucho más rápidos que los algoritmos asimétricos (clave pública). Es principalmente por eficiencia, no por ninguna otra razón.

Autenticación

Si desea enviar un mensaje a alguien y proporcionar una prueba de que envió el mensaje, use un procedimiento diferente. Crea un hash criptográfico del mensaje utilizando un algoritmo hash. Luego cifra ese hash con su clave privada (que solo usted conoce). El hash cifrado se envía con el mensaje. Este hash cifrado se conoce como firma digital. El destinatario del mensaje puede usar su clave pública para extraer el hash y compararlo con un hash recién calculado del mensaje, si los hash coinciden, es una prueba de que envió el mensaje.

Tipos de cifrado

asimétrico

Asymmertic significa que utiliza diferentes claves para cifrar y descifrar. Hay una clave privada y una clave pública. de ahí el nombre de "criptografía de clave pública".

Simétrico

Por el contrario, un ejemplo de un algoritmo simétrico (no asimétrico) es DES , que es un algoritmo de cifrado simétrico porque solo hay una clave, la misma clave se usa tanto para cifrar como para descifrar. La clave es una "clave secreta" compartida, de ahí los nombres "criptografía de clave secreta" o "criptografía de clave compartida".


Criptografía en Bitcoin

Por lo que he leído, Bitcoin usa

  • Algoritmos hash
  • Firmas digitales
    • ECDSA para firmas en transacciones

Tenga en cuenta que ECDSA es asimétrica

Tenga en cuenta también que Bitcoin se preocupa por el anonimato y no por la privacidad (la cadena de bloques es pública, no privada). Por lo tanto, Bitcoin no utiliza el cifrado con fines de privacidad. Su software Wallet puede usar cifrado para ocultar sus claves secretas detrás de una contraseña, pero eso no es parte de la especificación de BitCoin.


Referencias

entonces Bitcoin usa el método de 'Autenticación' que mencionaste, ¿correcto? y no el Método de 'Privacidad'. La otra respuesta a esta pregunta por parte de MCCCS afirma que Bitcoin no utiliza el "cifrado asimétrico"; pero su respuesta sugiere que 'creamos un hash criptográfico del mensaje'. ¡No estoy seguro si estoy pensando demasiado en esto!
@DCH: el algoritmo utilizado para un hash criptográfico es un algoritmo "unidireccional" o "trampilla", no un algoritmo de cifrado. El cifrado asimétrico se utiliza para crear firmas digitales. Ver en.bitcoin.it/wiki/How_bitcoin_works "criptografía de clave pública" es otro nombre para "cifrado asimétrico". Ver en.wikipedia.org/wiki/Public-key_cryptography

El primer artículo trata sobre cómo Bitcoin firma (el hash de) los datos para demostrar la propiedad (y el gasto) de las monedas. No hay nada encriptado, se usa como un esquema de autenticación .

El segundo artículo trata sobre el cifrado asimétrico . Es para cifrar datos, no para autenticación. No es lo que usa Bitcoin. (Ver también: ECIES)

Tienen diferentes propósitos. No dejes que te confundan.

Los dos artículos hablan de dos cosas muy diferentes.

El primer artículo trata sobre las firmas digitales, que se utilizan para demostrar que alguien ha escrito un mensaje y no ha sido suplantado. Estos se utilizan ampliamente en Bitcoin. El remitente del mensaje usa su propia clave privada para firmar, el receptor usa la clave pública del remitente para verificar que la firma sea auténtica.

El segundo artículo trata sobre el cifrado, que se utiliza para ocultar el contenido de un mensaje a todos excepto al destinatario. Esto no se usa en Bitcoin en absoluto. En los lugares donde se utiliza, el remitente utiliza la clave pública del receptor para cifrar y el receptor utiliza su propia clave privada para descifrar y acceder a la información.