Foros del Web » Programación para mayores de 30 ;) » .NET »

Orientacion con Firmas Digitales

Estas en el tema de Orientacion con Firmas Digitales en el foro de .NET en Foros del Web. Buenas tardes de nuevo Foreros !!! Vereis, me estoy iniciando con el tema de la firma electrónica, y agradecería a quien tenga un conocimiento en ...
  #1 (permalink)  
Antiguo 13/10/2008, 10:23
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Orientacion con Firmas Digitales

Buenas tardes de nuevo Foreros !!!

Vereis, me estoy iniciando con el tema de la firma electrónica, y agradecería a quien tenga un conocimiento en este tema me resuelva ciertas dudas que me han surgido según estoy estudiando este tema.

En primer lugar, comentar que soy capaz de realizar la firma digital de un documento y despues de realizar la comprobación del mismo y me va todo perfecto. Sin embargo, no sé si realmente los pasos que estoy realizando son correctos y además, tengo un par de dudas más, que les expongo a continuación.


1-. Para realizar la firma digital de un documento .pdf, hago lo siguiente:
1.1 -. Genero un MD5 del documento .pdf
1.2-. Creo un XML con el siguiente formato:
Código:
          <documento>
            <contenido>CONTENIDO MD5</contenido>
          </documento>
1.2-. Firmo ese XML y me queda de la siguiente manera
Código:
- <documento>
  <contenido>CYeA9CssQXV1EctwZcvlFw==</contenido> 
- <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
- <SignedInfo>
  <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> 
  <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> 
- <Reference URI="">
- <Transforms>
  <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> 
  </Transforms>
  <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> 
  <DigestValue>kTKLpLCZ1Kw54dL9FuMvPMpdOEM=</DigestValue> 
  </Reference>
  </SignedInfo>
  <SignatureValue>qiJlDTYMA25vMApq4PV+9sxFS509J+eF/rM3YxJbgiixc+0H9iakdZ3+5HOUvkns5N+UKJQBcd+L8tMAeg6rvsJMslm4iVmncGf9iqaz/EcuvyedLm4YywMocuOQL/qwnfUVuY9yc6gcu1aUup15wZqdEFVMdWMusG9oIlYrivo=</SignatureValue> 
- <KeyInfo>
- <KeyValue>
- <RSAKeyValue>
  <Modulus>wiOJ0l9Qmivb9lsLx46zn0rqSu+e6P5YLT1XbP0umcjffCy1dVsmCvoQH2PJ2sDOs923ZLOW7QK5sPlYcU7rOLUVK5laCyjyTBF1UI0ktoWcwMCOcjRnpH52GDDGIOGpLfxYXnwssRmkHYKv95diHznLmm6I27EDbEOoIzyHUIU=</Modulus> 
  <Exponent>AQAB</Exponent> 
  </RSAKeyValue>
  </KeyValue>
  </KeyInfo>
  </Signature>
  </documento>
¿Podrían decirme si está correcto?



2-. En el MSDN de Microsoft, he visto como realizar la firma digital de un documento, apartir de ahí hice mis ejemplos. Ok, pero... solo he visto para realizar la firma una vez. ¿Donde puedo ver un ejemplo donde se firme un documento por varias personas? ¿Y donde puedo ver un ejemplo de comprobación de la firma correcta de cada firmante para ese documento?



3-. Por último, veo que se pueden añadir referencias al XML a firmar. ¿Estas referencias, simplemente sirven para agregar información adicional al documento? Es decir, si mando en BASE64 el documento .pdf, ¿Estaría bien? ¿O eso de las Referencias es para otra cosa?

Me refiero a lo siguiente:
FIRMA DEL XML SIN REFERENCIA:
Código:
MIRAR LA FIRMA DE ARRIBA
FIRMA DEL XML CON REFERENCIA:
Código:
- <documento>
  <contenido>CYeA9CssQXV1EctwZcvlFw==</contenido> 
- <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
- <SignedInfo>
  <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> 
  <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> 
- <Reference URI="#MyDocOriginal">
  <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> 
  <DigestValue>iusbSvdEpsWqhXsX4vu9ql6ohdM=</DigestValue> 
  </Reference>
  </SignedInfo>
  <SignatureValue>KzTHZHcEsdTHV0PJavKRr8kqwaF8uOaRtMn4/jnEd6L8li7eHwRGGUHi4+cwPNXQrzBN9J31z4akNun2qvghSSy1omITjHz6BXeItjkO7V0qVfardRlcIp//i8HakkS64EA46XcRMfZE2CO3aGOF5AS+9eIIqrKtZ3O625f0g5w=</SignatureValue> 
- <KeyInfo>
- <KeyValue>
- <RSAKeyValue>
  <Modulus>wiOJ0l9Qmivb9lsLx46zn0rqSu+e6P5YLT1XbP0umcjffCy1dVsmCvoQH2PJ2sDOs923ZLOW7QK5sPlYcU7rOLUVK5laCyjyTBF1UI0ktoWcwMCOcjRnpH52GDDGIOGpLfxYXnwssRmkHYKv95diHznLmm6I27EDbEOoIzyHUIU=</Modulus> 
  <Exponent>AQAB</Exponent> 
  </RSAKeyValue>
  </KeyValue>
  </KeyInfo>
- <Object Id="MyDocOriginal">
- <documento xmlns="">
  <contenido>AQUI MANDARIA EL BASE64</contenido> 
  </documento>
  </Object>
  </Signature>
  </documento>


Bueno, como vereis, estoy algo perdido en este tema y como me gusta bastante pues he intentado hacer las preguntas lo más técnicas y claras posibles. La verdad, no sé si es el lugar idóneo para preguntar, pero como estoy trabajando con C#... he preguntado donde más creo oportuno.

En fin, si alguien puede darme unas "lecciones" sobre todo este tema, se lo agradeceré eternamente.
__________________
Charlie.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:56.