none
consejos sobre firma digital RRS feed

  • Pregunta

  • Buenas, quisiera que me den una mirada sobre una aplicación que quiero desarrollar. No se si es el lugar apropiado para consultarlo, pero 

    Quiero generar una aplicacion que se permita subir documentos firmados digitalmente, esta aplicacion debe poder leer desde el archivo si esta firmado. Una duda que tengo es sobre cómo se firma un documento. 

    He leído que existen unos pendrives que te permiten guardar ahí la firma digital de una persona. Ahora, supongamos que no tengo esos pen drives. Que otro tipo de implementacion existe? 

    Saludos

     

    miércoles, 10 de octubre de 2018 11:58

Respuestas

  • La firma digital, en general, se realiza utilizando un sistema de clave publica/clave privada. Esencialmente, se calcula un "hash" (resumen criptografico) del archivo, y se cifra el hash utilizando la clave privada.

    Para validar la firma, se usa la clave publica para descifrar el hash cifrado, se recalcula el hash del fichero, y se compara con el que acabamos de descifrar. Si coinciden se entiende que la firma es valida.

    Para disponer de las claves publica y provada, lo que se hace es guardarlas en un certificado, que tipicamente se obtiene de una autoridad de certificacion la cual garantiza que el nombre escrito en el certificado corresponde realmente a la persona a la que se le otorgo. Hay dos variantes del certificado: una que contiene las dos claves, y otra que solo contiene la publica.

    El certificado que solo contiene la clave publica normalmente se suele adjuntar al fichero firmado para que sea facil validar la firma.

    El certificado que contiene la clave publica es muy delicado y solo debe estar a disposicion de la persona que puede firmar con el. Por eso existe lo que mencionas del "pen drive" que tiene mecanismos de seguridad para protegerlo. Pero no es necesario, tambien es muy comun tener el certificado en el disco en Windows, protegido con una contraseña.

    Nos queda la cuestión de cómo se agrega al fichero firmado toda la información: el hash cifrado y el certificado con la clave pública. Esto se hace de forma distinta con cada tipo de archivo. Por ejemplo, si son XML existe un estándar para agregar uns sección al final del XML con todos los datos pertinentes, y en el Framework de .NET existen ya rutinas que saben firmar el fichero en ese formato. Pero si es, por ejemplo, un PDF, los datos de firma se guardan en un formato concreto definido por Adobe, y existen herramientas hechas por Adobe para grabar esos datos. Esto cambiará por cada tipo de archivo, no hay una norma general para "firmar cualquier clase de archivo".

    miércoles, 10 de octubre de 2018 13:36
  • Quizás esto que expresé en el ultimo párrafo es lo que tu mencionas cuando dices que se manda el certificado con el documento. No es esto un poco engorroso? 


    No, no es engorroso; es automático y transparente para ti, forma parte del estándar de cifrado, que ya define cuál es la forma en la que se embebe el certificado dentro de la firma. Desde fuera no se nota nada, simplemente se envía el documento firmado y dentro de la firma ya está incrustado el certificado. Ni el firmante ni el que valida la firma se dan cuenta de ello, porque ya lo gestiona internamente el software de firma. Al menos así funcionan casi todos los estándares de firma, no conozco de la Afip nada más que lo que mencionan en su web.

    Por cierto, no es exacto lo que mencionas al principio sobre " las firmas digitales que otorga la Afip". He examinado la documentación de la Afip en https://www.argentina.gob.ar/obtener-firma-digital-en-afip, y en realidad no "otorgan una firma digital", cosa que en general es imposible (aunque la página se titule así). Una vez que lees los detalles, encuentras que lo que hacen es "otorgar un certificado para firma digital", y luego es la persona que recibe el certificado la que debe usarlo para generar la firma.

    Igualmente, insisto en que no vale hablar de la firma de "un documento". No existe un procedimiento universal para firmar "cualquier clase de documento". Hay que especificar de qué clase de documento se trata, por ejemplo, "firma para documento en formato PDF" o "firma para documento en formato Word" o firma para documento en formato XML", etc. Todas son distintas e incompatibles entre sí, aunque el principio genérico de cómo funcionan sea el mismo en todos los casos. En la web de la Afip, al menos en lo que yo he visto, mencionan exclusivamente la configuración de Adobe para validar firmas en documentos PDF, pero no hablan de ninguna otra clase de documento.

    • Marcado como respuesta NioDeTark martes, 16 de octubre de 2018 11:27
    domingo, 14 de octubre de 2018 20:39

Todas las respuestas

  • La firma digital, en general, se realiza utilizando un sistema de clave publica/clave privada. Esencialmente, se calcula un "hash" (resumen criptografico) del archivo, y se cifra el hash utilizando la clave privada.

    Para validar la firma, se usa la clave publica para descifrar el hash cifrado, se recalcula el hash del fichero, y se compara con el que acabamos de descifrar. Si coinciden se entiende que la firma es valida.

    Para disponer de las claves publica y provada, lo que se hace es guardarlas en un certificado, que tipicamente se obtiene de una autoridad de certificacion la cual garantiza que el nombre escrito en el certificado corresponde realmente a la persona a la que se le otorgo. Hay dos variantes del certificado: una que contiene las dos claves, y otra que solo contiene la publica.

    El certificado que solo contiene la clave publica normalmente se suele adjuntar al fichero firmado para que sea facil validar la firma.

    El certificado que contiene la clave publica es muy delicado y solo debe estar a disposicion de la persona que puede firmar con el. Por eso existe lo que mencionas del "pen drive" que tiene mecanismos de seguridad para protegerlo. Pero no es necesario, tambien es muy comun tener el certificado en el disco en Windows, protegido con una contraseña.

    Nos queda la cuestión de cómo se agrega al fichero firmado toda la información: el hash cifrado y el certificado con la clave pública. Esto se hace de forma distinta con cada tipo de archivo. Por ejemplo, si son XML existe un estándar para agregar uns sección al final del XML con todos los datos pertinentes, y en el Framework de .NET existen ya rutinas que saben firmar el fichero en ese formato. Pero si es, por ejemplo, un PDF, los datos de firma se guardan en un formato concreto definido por Adobe, y existen herramientas hechas por Adobe para grabar esos datos. Esto cambiará por cada tipo de archivo, no hay una norma general para "firmar cualquier clase de archivo".

    miércoles, 10 de octubre de 2018 13:36
  • yo tengo en mente que las personas firmen sus documentos y lo suban a mi plataforma, mi plataforma, debe Chequear que esos documentos estén firmados. 

    1er Pregunta concreta: ¿Alguien sabe si puedo utilizar las firmas digitales que otorga la Afip (en Argentina) para validar estos documentos? (suponiendo que si, sigo desarrollando el hilo)

    2do: ¿Cómo valido un documento con una firma digital incrustada? contra que?? o sea, si no entendí mal lo que estuve leyendo, yo debo tener el certificado proveído por una entidad Certificante (afip quizás) instalado en mi maquina para que cuando venga el documento con una firma digital yo "pregunte" a ese certificado si esa firma es válida... si esto fuera asi, antes de poder verificar los documentos, necesito que una persona me envíe su certificado por lo que si trabajo con mil personas tendría eso se haría complejo. Segundo, me pregunto, si trabajo con la afip, ellos no tendrán un web service quizás, que permita chequear si un documento fue firmado por alguien perteneciente a su lista de firmantes.

    Quizás esto que expresé en el ultimo párrafo es lo que tu mencionas cuando dices que se manda el certificado con el documento. No es esto un poco engorroso? 

    domingo, 14 de octubre de 2018 15:32
  • Quizás esto que expresé en el ultimo párrafo es lo que tu mencionas cuando dices que se manda el certificado con el documento. No es esto un poco engorroso? 


    No, no es engorroso; es automático y transparente para ti, forma parte del estándar de cifrado, que ya define cuál es la forma en la que se embebe el certificado dentro de la firma. Desde fuera no se nota nada, simplemente se envía el documento firmado y dentro de la firma ya está incrustado el certificado. Ni el firmante ni el que valida la firma se dan cuenta de ello, porque ya lo gestiona internamente el software de firma. Al menos así funcionan casi todos los estándares de firma, no conozco de la Afip nada más que lo que mencionan en su web.

    Por cierto, no es exacto lo que mencionas al principio sobre " las firmas digitales que otorga la Afip". He examinado la documentación de la Afip en https://www.argentina.gob.ar/obtener-firma-digital-en-afip, y en realidad no "otorgan una firma digital", cosa que en general es imposible (aunque la página se titule así). Una vez que lees los detalles, encuentras que lo que hacen es "otorgar un certificado para firma digital", y luego es la persona que recibe el certificado la que debe usarlo para generar la firma.

    Igualmente, insisto en que no vale hablar de la firma de "un documento". No existe un procedimiento universal para firmar "cualquier clase de documento". Hay que especificar de qué clase de documento se trata, por ejemplo, "firma para documento en formato PDF" o "firma para documento en formato Word" o firma para documento en formato XML", etc. Todas son distintas e incompatibles entre sí, aunque el principio genérico de cómo funcionan sea el mismo en todos los casos. En la web de la Afip, al menos en lo que yo he visto, mencionan exclusivamente la configuración de Adobe para validar firmas en documentos PDF, pero no hablan de ninguna otra clase de documento.

    • Marcado como respuesta NioDeTark martes, 16 de octubre de 2018 11:27
    domingo, 14 de octubre de 2018 20:39
  • Ok. Gracias por tu aporte... estoy leyendo un poco mas e interiorizandome. Cuando me surja otra duda vuelvo por aqui
    miércoles, 17 de octubre de 2018 12:04