¿Puedo usar el DSA de curva elíptica en un servicio de mensajes seguro?

2

Estoy buscando diseñar un sistema que permita a un usuario de una moneda criptográfica como Bitcoin tener una billetera en línea y poder enviar y recibir correos electrónicos cifrados en el mismo sistema.

La parte relevante con respecto a Bitcoin es que para la dirección de un usuario, tal 31uEbMgunupShBVTewXjtqbBv5MndwfXhb , es un hash de la clave pública del usuario. El par de claves es un par de claves público-privadas de ECDSA.

Si soy un usuario, ¿podría usar este par de claves tanto para las transacciones de Bitcoin como para enviar y recibir correos electrónicos cifrados? Además del hecho de que el uso de un par de claves para ambas cosas puede ser imprudente, ¿hay algún error adicional que deba tener en cuenta?

Editar: Estoy buscando usar un sistema como OpenPGP, no S / MIME. Para ser más específicos, estoy tratando de ver si es posible usar el par de claves generado por un derivado de Bitcoin o Litecoin, que es un par de claves ECDSA, en un sistema de correo electrónico para que los usuarios de este sistema de correo puedan usar e intercambiar. pares de claves con otros usuarios que no son del sistema, como los que utilizan GnuPG.

    
pregunta josh 24.03.2014 - 06:25
fuente

4 respuestas

2

ECDSA es un algoritmo de firma. La clave privada para ECDSA es un entero x entre 1 y n-1 , donde n es el tamaño de (el subgrupo de) la curva elíptica utilizada (normalmente un número primo). La clave pública es un punto de curva Q igual a xG , donde G es un punto fijo convencional en la curva.

Por supuesto, no puede usar un algoritmo de firma para nada más que para firmar, pero sucede que hay un algoritmo de intercambio de clave llamado ECDH que usa pares de clave pública / privada con exactamente el mismo formato. En ese sentido, es técnicamente viable utilizar la misma clave para ECDSA y ECDH. El intercambio de claves se puede utilizar para el cifrado asimétrico a través de cifrado híbrido (usted usa el secreto intercambiado como base para el cifrado simétrico); en el caso de ECDH, este proceso incluso se ha estandarizado bajo el nombre ECIES .

Sin embargo, usar el mismo par de claves para la firma y el cifrado es no es una muy buena idea . Esto está mal visto por muchos criptógrafos y estándares; Es un delito capital en el mundo del análisis de riesgos y certificaciones. Hay dos razones principales para eso:

  • Las claves de firma y cifrado tienen ciclos de vida distintos y requieren métodos de administración distintos e incompatibles. En particular, normalmente desea tener una copia de seguridad o custodia de su clave privada de cifrado, y ciertamente no desea dicha copia de seguridad o custodia para su clave privada de firma. Consulte esta respuesta para una discusión.

  • Las interacciones entre diferentes algoritmos criptográficos no se han analizado a fondo. Realmente no sabemos si el uso de la misma clave privada para ECDH y ECDSA puede poner en riesgo (por ejemplo, permitir que un atacante falsifique una firma falsa involucrándose en algún ECDH con usted, con mensajes DH hábilmente elaborados, o algo así) . Recuerde que cualquier algoritmo criptográfico dado puede considerarse seguro solo porque ha sido examinado por muchos criptógrafos durante varios años; Las interacciones entre ECDH y ECDSA no pueden presumir de una cantidad tan grande de revisión.

En caso de duda, abstenerse. Y, en este caso, deberías dudar. De verdad.

    
respondido por el Tom Leek 25.03.2014 - 19:08
fuente
2

ECDSA no se puede utilizar para fines de cifrado. ECDSA es la implementación de la curva elíptica del algoritmo de firma digital y, por lo tanto, solo se puede utilizar para fines de firma digital.

El correo electrónico cifrado utiliza S / MIME generalmente, lo que permite al remitente del correo electrónico generar una clave de cifrado simétrica y lo utiliza para cifrar el mensaje de correo electrónico. Usando la clave pública de cada destinatario, la clave simétrica se cifra. El correo cifrado y la clave cifrada para cada destinatario se empaquetan y envían como un correo electrónico. Cada destinatario podrá descifrar la clave simétrica con su clave privada y, por lo tanto, leer el mensaje de correo electrónico descifrado.

Con S / MIME también puede crear correos electrónicos firmados digitalmente. El mensaje de correo electrónico está hash y ese hash está cifrado. El remitente agrupa el mensaje, el hash cifrado y el certificado digital (si se están utilizando) en un mensaje S / MIME y lo envía en un correo electrónico. El destinatario puede leer el mensaje y recrear el hash del mensaje. También pueden descifrar el hash cifrado con la clave pública (en el certificado) y comparar los dos hashes.

Para implementar este tipo de mecanismo, deberá utilizar un algoritmo asimétrico que admita el cifrado. La opción más obvia es RSA .

No hay ninguna razón por la que no pueda utilizar RSA para una nueva implementación de cripto-moneda y correo electrónico seguro. RSA se puede utilizar para la firma digital y el cifrado. La mejor práctica de PKI sería utilizar dos pares de claves diferentes para los diferentes propósitos, pero no firmarás certificados .

Como bitcoin utiliza ECDSA como su sistema criptográfico de clave pública, está restringido a la firma digital solamente. Actualmente, la mayoría de las monedas criptográficas se basan en el método de bitcoin, por lo que si desea implementar una nueva utilizando RSA, ¡lo estará haciendo desde cero!

    
respondido por el NRCocker 24.03.2014 - 06:49
fuente
2

Si desea usar criptografía basada en ECC, entonces está buscando ECIES, aunque no estoy seguro si estoy usando la misma clave para el cifrado y la firma es una idea inteligente.

La información sobre ECIES se puede encontrar aquí , y hay ejemplos de cómo usar esto en el Castillo Bouncy código fuente.

No puedes usar "31uEbMgunupShBVTewXjtqbBv5MndwfXhb" con ningún esquema de encriptación, porque es solo el hash de una clave pública, y usar el hash de una clave no te permite cifrar los mensajes con esta.     

respondido por el random65537 25.03.2014 - 17:56
fuente
0

En Bitcoin, la clave privada es, de hecho, un número aleatorio de 256 bits. Puede usar esto como la clave privada y crear un secreto compartido utilizando ECDH . El compartido se puede usar para cifrar los datos del mensaje, por ejemplo, utilizando AES.

  

La curva elíptica Diffie-Hellman (ECDH) es un acuerdo de clave anónima   Protocolo que permite dos partes, cada una con una curva elíptica.   par de clave pública-privada, para establecer un secreto compartido sobre un inseguro   canal.

    
respondido por el Ian Purton 25.03.2014 - 17:48
fuente

Lea otras preguntas en las etiquetas