ventajas tipos simetrica informatica hibrida encriptacion ejemplos desventajas criptografia cifrado basica asimetrico asimetrica encryption rsa signing license-key

encryption - simetrica - tipos de criptografia



¿Cuál es la diferencia entre cifrar y iniciar sesión en cifrado asimétrico? (11)

¿Cuál es la diferencia entre el cifrado de algunos datos frente a la firma de algunos datos (mediante RSA)?

¿Simplemente se invierte el rol de las claves público-privadas?

Por ejemplo, quiero usar mi clave privada para generar mensajes para que solo pueda ser el remitente. Quiero que mi clave pública se use para leer los mensajes y no me importa quién los lea. Quiero poder cifrar cierta información y utilizarla como clave de producto para mi software. Solo me importa que soy el único que puede generarlos. Me gustaría incluir mi clave pública en mi software para descifrar / leer la firma de la clave. No me importa quién puede leer los datos en la clave, solo me importa que yo sea el único verificable que pueda generarlos.

¿Es útil la firma en este escenario?


Al cifrar, usted usa su clave pública para escribir un mensaje y ellos usan su clave privada para leerlo.

Al firmar, usa su clave privada para escribir la firma del mensaje, y ellos usan su clave pública para verificar si es realmente suya.

Quiero usar mi clave privada para generar mensajes para que solo yo pueda ser el remitente.

Quiero que mi clave pública se use para leer los mensajes y no me importa quién los lea

Esto está firmando , se hace con su clave privada.

Quiero poder cifrar cierta información y utilizarla como clave de producto para mi software.

Solo me importa que soy el único que puede generarlos.

Si solo necesitas saberlo por ti mismo, no necesitas meterte con las teclas para hacer esto. Solo puedes generar datos aleatorios y mantenerlos en una base de datos.

Pero si quiere que la gente sepa que las claves son realmente suyas, necesita generar datos aleatorios, mantener en ella una base de datos Y firmarla con su clave.

Me gustaría incluir mi clave pública en mi software para descifrar / leer la firma de la clave

Probablemente deba comprar un certificado para su clave pública de un proveedor comercial como Verisign o Thawte, para que las personas puedan verificar que nadie haya falsificado su software y que haya reemplazado su clave pública con la suya.


Creo que hay mensajes mezclados arriba. Estaba tratando de lograr lo mismo que Simucal, es decir, quería generar una clave de licencia que contenga información importante sobre quién puede usar el software y entre qué rangos de fechas, etc. Pero no quiero que la gente pueda modificar eso. información para ampliar su período de licencia, etc. Mi primer enfoque fue utilizar el cifrado asimétrico, pero a pesar de algunos de los comentarios anteriores, parece que puede cifrar usando la clave pública O la privada, PERO SOLO descifre la clave privada. Por lo tanto, en este escenario, tendría que almacenar la clave privada en el sistema para que pueda decodificar y verificar la clave de licencia ... haciendo que el sistema sea bastante inseguro porque cualquiera podría generar su propia información de licencia modificada y cifrarla usando clave pública o privada (una de las cuales se almacenaría en los archivos binarios del sistema). El mismo riesgo de seguridad se adjunta al cifrado simétrico, por supuesto.

Como muchos de los comentarios anteriores apuntan, la firma parece ser el camino a seguir para este escenario, pero todavía tengo que encontrar un buen ejemplo. ¿Alguien sabe de un tutorial o demostración en línea que proporciona un análisis de tal método? Gracias chris


En RSA crypto, cuando genera un par de claves, es completamente arbitrario cuál elige como clave pública y cuál es la clave privada. Si encripta con una, puede desencriptar con la otra, funciona en ambas direcciones.

Entonces, es bastante simple ver cómo puede cifrar un mensaje con la clave pública del receptor , de modo que el receptor pueda descifrarlo con su clave privada .

Una firma es una prueba de que el firmante tiene la clave privada que coincide con alguna clave pública. Para hacer esto, sería suficiente cifrar el mensaje con la clave privada de ese remitente e incluir la versión cifrada junto con la versión de texto plano. Para verificar el remitente, descifre la versión cifrada y verifique que sea la misma que el texto sin formato.

Por supuesto, esto significa que tu mensaje no es secreto. Cualquiera puede descifrarlo, porque la clave pública es bien conocida. Pero cuando lo hacen, han demostrado que el creador del texto cifrado tiene la clave privada correspondiente.

Sin embargo, esto significa duplicar el tamaño de su transmisión: texto simple y texto cifrado juntos (suponiendo que desea que las personas que no están interesadas en verificar la firma lean el mensaje). Entonces, en cambio, normalmente se crea una firma creando un hash del texto plano. Es importante que no se puedan crear hash falsos, por lo que se utilizan algoritmos de hash criptográficos como SHA-2.

Asi que:

  • Para generar una firma, haga un hash a partir del texto plano, cifrelo con su clave privada, inclúyalo junto al texto plano.
  • Para verificar una firma, haga un hash a partir del texto plano, descifre la firma con la clave pública del remitente, verifique que ambos hashes sean iguales.

En su escenario, usted no encripta el significado de encriptación asimétrica; Prefiero llamarlo "codificar".

Así que codificas tus datos en una representación binaria, luego firmas con tu clave privada. Si no puede verificar la firma a través de su clave pública, sabe que los datos firmados no se generan con su clave privada. ("verificación" significa que los datos sin firmar no son significativos)


Funcionalmente, utiliza el cifrado de clave pública / privada para asegurarse de que solo el receptor pueda leer su mensaje. El mensaje se cifra y luego se cifra mediante la clave pública del receptor.

La firma que utiliza para informar al receptor que usted creó el mensaje y que no ha cambiado durante la transferencia. La firma de mensajes se realiza utilizando su propia clave privada.

En cuanto al algoritmo utilizado: este invoca números primos. Haría una búsqueda en google para una mejor explicación.


Hay dos problemas distintos pero estrechamente relacionados para establecer una comunicación segura.

  1. Cifre los datos para que solo las personas autorizadas puedan descifrarlos y leerlos
  2. Verificar la identidad / autenticación del remitente

Ambos de estos problemas se pueden resolver de forma elegante mediante la criptografía de clave pública.

I. Cifrado y descifrado de datos.

Alice quiere enviarle un mensaje a Bob que nadie debería poder leer.

  • Alice cifra el mensaje con Bob''s public key y lo envía
  • Bob recibe el mensaje y lo desencripta usando su Private Key

Tenga en cuenta que si A quiere enviar un mensaje a B, A necesita usar la clave pública de B (que está disponible públicamente para cualquier persona) y la clave pública y privada de A no se muestra aquí.

Por lo tanto, si desea enviarme un mensaje, debe conocer y utilizar mi clave pública que le proporcioné y solo podré descifrar el mensaje, ya que soy el único que tiene acceso a la clave privada correspondiente.

II. Verificar la identidad del remitente (Autenticación)

Alice quiere enviarle un mensaje a Bob de nuevo. El problema de cifrar los datos se resuelve utilizando el método anterior.

Pero qué pasa si estoy sentada entre Alice y Bob, presentándome como ''Alice'' a Bob y enviando mi propio mensaje a Bob en lugar de reenviar el enviado por Alice. Aunque no puedo descifrar y leer el mensaje original enviado por Alice (que requiere acceso a la clave privada de Bob), estoy secuestrando toda la conversación entre ellos.

¿Hay alguna manera en que Bob pueda confirmar que los mensajes que está recibiendo realmente los envía Alice?

  • Alice firma el mensaje con her private key (la clave privada de Alice) y lo envía
  • Bob lo recibe y lo desencripta usando Alice''s public key . Dado que la clave pública de Alice desencriptó exitosamente el mensaje, Bob puede concluir que el mensaje ha sido firmado usando Alice

En la práctica, los dos métodos anteriores se utilizan junto con algún tipo de hash (SHA, MD5) para lograr el cifrado y la autenticidad.


La firma está produciendo un "hash" con su clave privada que puede verificarse con su clave pública. El texto se envía en claro.

El cifrado utiliza la clave pública del receptor para cifrar los datos; La decodificación se realiza con su clave privada.

Por lo tanto, el uso de claves no se revierte (de lo contrario, su clave privada ya no sería privada).


La firma indica que usted realmente es la fuente o la garantía del objeto firmado. Sin embargo, todos pueden leer el objeto.

Cifrado significa que solo aquellos con la clave privada correspondiente pueden leerlo, pero sin firmar no hay garantía de que esté detrás del objeto cifrado.


Respondiendo a esta pregunta en el contenido que la intención de los interrogadores fue utilizar la solución para la licencia de software, los requisitos son:

  1. Ningún tercero puede producir una clave de licencia para descompilar la aplicación
  2. El contenido de la clave de software no necesita ser seguro
  3. La clave del software no es legible por humanos

Una firma digital resolverá este problema, ya que los datos en bruto que hacen que la clave se pueda firmar con una clave privada que hace que no sea legible para los humanos, pero se podrían descodificar si se crearan ingeniería inversa. Pero la clave privada es segura, lo que significa que nadie podrá hacer licencias para su software (que es el punto).

Recuerde que no puede evitar que una persona experta elimine los bloqueos de software de su producto. Así que si tienen que hackear cada versión que se libere. Pero realmente no desea que puedan generar nuevas claves para su producto que puedan compartirse para todas las versiones.

Python La documentación de PyNaCl tiene un ejemplo de ''Firma digital'' que se ajustará al propósito. http://pynacl.readthedocs.org/en/latest/signing/

y de causa NaCl proyectar a C ejemplos


Sí, piensa en firmar datos como si estuvieras dando tu propio sello de cera que nadie más tiene. Se hace para lograr la integridad y el no repudio . El cifrado es para que nadie más pueda ver los datos. Esto se hace para lograr la confidencialidad . Ver wikipedia http://en.wikipedia.org/wiki/Information_security#Key_concepts

Una firma es un hash de su mensaje firmado con su clave privada.


Usted está describiendo exactamente cómo y por qué se utiliza la firma en la criptografía de clave pública. Tenga en cuenta que es muy peligroso firmar (o cifrar) mensajes arbitrarios suministrados por otros, esto permite ataques a los algoritmos que podrían comprometer sus claves.