Firma electrónica en el SAT de México


logo-SATEstos días hemos estado desarrollando en Albalia una herramienta de gestión de firmas electrónicas adecuada al sistema de factura electrónica (comprobantes fiscales digitales) propuesto por el SAT, Servicio de Administración Tributaria de México.

En particular, el producto de Albalia para la verificación de facturas digitales del SAT se basa en dos procesos, uno de verificación de firma, y otro segundo de validación de certificados.

El primero, se encarga de comprobar que la firma que viene en el documento SAT está firmado por el certificado que le acompaña en dicho documento.

Para ello se han de recuperar los datos que se firmaron y que se encuentran en el propio documento y ponerlo en el formato el cual se firmó. Una vez se tiene el documento que se firmó se recupera la clave pública del certificado y se valida con el algoritmo “SHA1withRSA”. La función reportará un error siempre que los datos introducidos no sean los mismos que se firmaron, o si los datos fueron firmados por otra clave privada asociada a otro certificado distinto al que acompaña a la factura.

Una vez se ha verificado la firma, se procede a la validación del certificado, para ello se validan tres cosas:

  • Que el certificado no esté caducado
  • Que el certificado pertenezca a una de las CAs de confianza, para ello se valida que el issuer del certificado se encuentre entre las CAs en las que confiamos, y además que el certificado esté firmado por la CA con dicho issuer. Se valida también que toda la cadena de confianza se encuentre dentro de nuestros certificados de confianza.
  • Por último se valida que el certificado no esté revocado, para ello se valida el certificado contra este OCSP:        http://www.sat.gob.mx/ocsp

Banco_De_Mexico-logoEs curioso que uno de los temas que nos ha llevado cierto tiempo es identificar los certificados raiz de confianza (la Root CA) del servicio del SAT, ya que es una información que no aparece fácilmente buscando en Google, ni informan sobre ello en las abundantes páginas informativas del SAT.

Al final, tras deducir que el emisor de certificado root es Banxico, Banco de México, banco central del Estado Mexicano, pudimos identificar la información de los certificados, que se decarga como un fichero ZIP, y no como fichero CRT.

Este es el enlace por si hay más especialistas que se encuentren ante el mismo problema: http://www.banxico.org.mx/sistemafinanciero/servicios/MAE/Instcert.zip

Aunque debe reconocerse que el esfuerzo de generación de especificaciones por los especialistas del SAT ha sido muy importante, es una lástima que no hayan seguido más de cerca los estándares, especialmente los más actuales.

Se puede decir en relación con los formatos de factura electrónica y también en relación con los de firma electrónica. Respecto a esta última, su implementación requiere desarrollar software ad-hoc para generar y validar firmas electrónicas, ya que se aparta de los estándares.

Por otro lado el tipo de firma generado es lo que en el marco de los estándares TS 101 733 y TS 101 903 llamaríamos “firma simple” lo que nos lleva a pensar que esas firmas pueden tener problemas en el futuro al no contar con un TimeStamp.

Por ejemplo, si se realizara la firma con un certificado que caducara al día siguiente, la validación realizada con posterioridad reportaría un error en la verificación, lo que implicaría desechar la factura. En general,  en cuanto un certificado se revoque, cualquier validación de las firmas hechas por ese certificado una vez revocado va a reportar un error, independientemente de cuando se realizó la firma.

Nosotros seguimos recomendando las firmas XAdES-XL que permiten la libre elección de prestador de servicios de certificación sin penalizar la capacidad de validación del receptor, al incluir en la propia firma tanto las evidencias del momento de la firma como de la vigencia del certificado utilizado.

Aun así, cabe reconocer el esfuerzo de las empresas proveedoras de servicios de factura electrónica en México.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s