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 !!!
- RSA ** Grand Mac daddy utilizado para todos los fines asimétricos del enc.
- 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.
¿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
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
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