2010-03-02 8 views
5

Digamos que tenemos a Alice y Bob.¿Cómo funciona el cifrado asimétrico bidireccional?

Alice envía a Bob un mensaje cifrado con la clave pública de Bob. Bob es la única persona que puede descifrarlo, usando su clave privada. Pero, ¿cómo puede estar seguro de que el mensaje vino de Alice?

Supongamos que responde, encriptando su mensaje usando la clave pública de Alicia. Solo Alice puede descifrar el mensaje. ¿Pero cómo puede estar segura de que fue enviado por Bob?

¿Alicia tiene que agregar algún tipo de hash público a su mensaje para que bob pueda decir "Esto definitivamente vino de Alice?"

Respuesta

5

Bob también tiene la clave pública de Alice, y Alice firmó el mensaje con su clave privada. Bob usa la clave pública de Alice para verificar la firma.

Ir a la inversa para que Alice asegure que el mensaje era de Bob.

Todo lo que tienes que hacer ahora es asegurarte de que Bob tiene la clave pública real de Alicia y no una inyectada por un hombre en el medio.

+0

¿Necesita verificar TODOS los bytes de la clave pública? ¿Hay alguna parte específica de la clave que pueda ver para asegurarse de que sea real entre usted y usted? ¿Es suficiente la huella digital para que coincida? – tbarbe

+1

No, usted usa la clave pública para descifrar el hash del mensaje (la firma), luego selecciona el mensaje usted mismo como el receptor. Si los hash coinciden, entonces sabrá que fue enviado por Alice. http://en.wikipedia.org/wiki/Digital_signature – Nathan

+0

Ah sí ... el md5 o SHA-1 - ¿sí? Una vez que el certificado llega al destino, la forma de verificar que todo está bien es comparar md5 y SHA-1 ... los certificados que tengo, mostrar ambos ...y supongo que esto es lo que estoy leyendo acerca de "compararlos fuera de banda", es decir, ¿no lo hacen sobre una configuración insegura? – tbarbe

-1

Porque asume que una clave privada es realmente "privada", es decir, alice y bob no dejan sus llaves usb conectadas a su máquina cuando salen del trabajo.

+0

¿Dónde hice esa suposición? – Amy

+0

"Tu" no, me refería al "tú" proverbial; y sí, no utiliza este tipo de cifrado a menos que exista un canal de confianza entre Alice y Bob del que una autoridad de certificación es una instancia indirecta. Peh, no puedo eliminar mi voto positivo a tu pregunta. –

+0

No tengo idea de a qué te refieres. La pregunta era sobre verificar la fuente del mensaje. Vuelva a leer la última oración de la pregunta y observe que su respuesta no la trató. Esto no tiene nada que ver con mantener las claves seguras. Su respuesta a mi comentario tampoco abordó la pregunta. ¿Por qué respondiste? – Amy

9

El escenario que describe no proporciona autenticidad. Entonces, tanto Alice como Bob no pueden estar seguros de que están hablando entre ellos. El escenario solo proporciona confidencialidad y, por lo tanto, no es secreto.

Bob tendría que confirmar manualmente con Alice que la clave pública que cree que es la clave pública de Alice es de hecho suya (llamándola y leyéndola cargar y confirmando por su voz que es Alice).

Este problema normalmente se resuelve con un tercero de confianza (una Autoridad de certificación, por ejemplo, como VeriSign) que emite certificados que declaran, p. Alice es la propietaria de esta clave pública en particular. Esta es la forma en que se resuelve en los navegadores modernos y esta es la forma en que funcionan todas las sesiones SSL (con su banco de elección). Una autoridad de certificación firma el certificado de su banco (indicando que su banco es efectivamente el propietario de la clave pública que contiene el certificado) y su navegador tiene un certificado ya incorporado de la autoridad de certificación (construyendo una cadena de certificados que pueden ser verificados)

El escenario que describe es vulnerable a un ataque denominado MITM (Man-in-the-middle) y no se puede resolver simplemente con el cifrado de clave pública.

1

Lo que está diciendo parece muy muy muy poco como otra implementación de un algoritmo de cifrado asimétrico que se encuentra en el .NET Framework.

.Net emplea dos ramas para encriptación asimétrica !!!

  1. RSA ** Grand Mac daddy utilizado para todos los fines asimétricos del enc.
  2. DSA ** más relacionado con el uso y la creación de la firma digital para verificar un autor.

Ambos son Resumen

Ambos son muy similares entre sí en cuanto a cómo funcionan y cómo un desarrollador de las implementa pero en el fondo He leído que existen dos algoritmos muy diferentes.

Usted está hablando opción 2.

.NET proporciona una clase llamada DSACryptoServiceProvider que le permite etiquetar sus datos con un valor que comúnmente se conoce como firma.

De acuerdo con un libro de texto oficial del curso de MS aquí está más o menos cómo funciona.

datos >>> Hash Alg >>> Hash Valor >>>>>>>>> Asymm' Alg >>>> Firma PVT.KEY del remitente >>>

A continuación se muestra cómo Bob puede comprobar para ver si Alice es realmente el remitente.

Datos >>> Hash Alg >>> Valor hash || Firma descifrado < < < PUB.KEY Asymm' Alg < < < Firma < < < del remitente ? ==?

Como puede ver, Bob tiene que comparar la Hash generada y la Firma Descifrada para verificar que Alice es el remitente. La clase DSACrypto 'tiene 4 métodos que pueden usarse aquí pero solo dos son efectivos contextualmente hablando. En este punto en el tiempo, esto es todo lo que Bob puede hacer, si su clave pública no es la clave pública de alice, entonces, esencialmente, la aplicación de software debería detener a Bob en sus pistas para seguir adelante ya que bob está tratando de usar una clave pública falsa cuando tratando de comunicarse con Alice. Esta es la relación impuesta y la importancia destacada de la clave pública. La firma le permite verificar el propietario de las claves públicas.

Aquí ¿por qué? ::

Si Bob tiene la clave pública de Alice, entonces puede usar el mismo algoritmo nuevamente para descifrar los datos cifrados utilizando los métodos .VerifyHash o VerifyData. Debería ser directo lo que hacen dado este contexto. Todo esto se hace al usar la clave pública de Alice. Solo Alice puede usar los métodos SignHash y SignData ya que requieren la clave privada de Alice.

Como puede ver arriba, un cierto nivel de funcionalidad está encapsulado dentro de las clases DSA y RSA CryptoServiceProvider. Todo se reduce a lo bien que los implementas para verificar que Alice sea siempre el remitente, ya que el algoritmo DSA te permite certificar un remitente haciendo coincidir el resultado generado. Una cierta firma y hash deben coincidir, si lo hacen, en esencia, DSA le ha otorgado un cierto nivel de confidencialidad entre Bob y Alice.

+0

Espero que esto tenga sentido ya que proviene de un estudiante que está tratando de pasar el examen 70-536. Como lo anterior es la segunda de dos respuestas que he publicado aquí en el desbordamiento de la pila en relación con la criptografía. – IbrarMumtaz

Cuestiones relacionadas