Descubre Qué es el UUID en Facturas Electrónicas y por Qué es Vital en Sistemas Distribuidospost-template-default single single-post postid-46 single-format-standard et_pb_button_helper_class et_fixed_nav et_show_nav et_secondary_nav_enabled et_primary_nav_dropdown_animation_fade et_secondary_nav_dropdown_animation_fade et_header_style_left et_pb_footer_columns4 et_cover_background et_pb_gutter et_pb_gutters3 et_right_sidebar et_divi_theme et-db
771 715 4434

El UUID, acrónimo de Identificador Único Universal (Universally Unique Identifier), es un estándar de construcción de software y forma parte de la Open Software Foundation en el campo del Entorno de Computación Distribuida. Su propósito fundamental es asegurar que todos los elementos en un sistema distribuido posean información de identificación única, eliminando la necesidad de depender de un control central para asignar dicha información.

De esta manera, cualquier persona puede crear un UUID que no entre en conflicto con otros, lo que resuelve problemas de duplicación de nombres al crear bases de datos. Los UUID se utilizan para identificar tipos de atributos y se consideran identificadores únicos en todo el espacio y el tiempo. Generalmente hablando, se puede garantizar que este valor sea verdaderamente único; cualquier UUID generado en cualquier lugar no tendrá el mismo valor.

Un UUID se refiere a un número generado en una máquina que garantiza ser único para todas las máquinas en el mismo espacio-tiempo. Los UUID no tienen una autoridad central de gestión, ya que son identificadores únicos que no se replican. La única desventaja del UUID es que la cadena resultante generada es relativamente larga.

El UUID en el Contexto de las Facturas Electrónicas (CFDI)

Para el Sistema de Administración Tributaria (SAT), el UUID es el equivalente del Folio Fiscal que antes se entregaba a los contribuyentes. El UUID de una factura es el “Universally Unique Identifier” o Identificador Único Universal. No hay diferencia entre el UUID y el folio fiscal, se refieren al mismo identificador único asignado.

Este identificador se genera durante el proceso de timbrado y funciona como la “huella digital” de la factura. En otras palabras, el Folio Fiscal es una herramienta con la que se puede conocer la validez de una factura electrónica para saber si es reconocida por el SAT.

Lea también: CONTPAQi Contabilidad: Cierre Paso a Paso

Generación y Validez Fiscal

El UUID es generado por un Proveedor Autorizado de Certificación (PAC) durante el proceso de timbrado del CFDI. El PAC valida la información de la factura y, una vez aprobada, asigna el UUID y registra el comprobante ante el SAT. Este proceso garantiza que cada factura tenga un identificador único y válido.

Una factura sin UUID no tiene validez fiscal. En términos prácticos, es como si la factura no existiera oficialmente. Por eso, es sumamente importante verificar que cualquier CFDI incluya su UUID válido.

  • Validación: El UUID permite verificar ante el SAT si un CFDI es auténtico y está vigente.

  • Unicidad: Cada UUID es único e irrepetible.

  • Inmutabilidad: Una vez que el UUID es asignado durante el timbrado, permanece fijo durante toda la vida del CFDI.

    Lea también: Beneficios de CONTPAQi para la Gestión Empresarial

  • Consulta: El UUID permite consultar una factura directamente en los sistemas del SAT.

Verificar que cada factura tenga su UUID correcto te ayuda a prevenir problemas en deducciones, auditorías y revisiones fiscales. Utilizar herramientas especializadas como Siigo Fiscal facilita el seguimiento de las facturas, conociendo su estatus ante el SAT e identificando cuáles puedan generar inconsistencias para realizar los ajustes de forma oportuna. De esta manera, el sistema trasladará de forma automática el Folio Fiscal a la Póliza, pero si el folio del CDI no se logra identificar en cada póliza entonces se asociará con un reporte auxiliar.

Ubicación del UUID

El UUID aparece tanto en la representación impresa (PDF) como en el archivo XML del CFDI.

  • En el PDF lo encuentras en la sección de datos fiscales o junto al código QR.

  • En el XML, el UUID se encuentra dentro del nodo del timbre fiscal digital, generado durante el proceso de timbrado. Suele estar etiquetado como “UUID” o “Folio fiscal”.

    Lea también: Contabilidad Electrónica: Tu Guía con CONTPAQi

Conceptos y Estructura del UUID

Un UUID es un valor de 128 bits que puede calcularse mediante un algoritmo determinado. Para mejorar la eficiencia, los UUID de uso común se pueden acortar a 16 bits.

Generación y Componentes

Los UUID se generan calculando datos como la hora actual, un contador (counter) y un identificador de hardware (generalmente la Dirección MAC de un Adaptador de red inalámbrico). Los UUID pueden ser creados de forma independiente por cualquier persona y publicados según sea necesario. Generalmente, la plataforma proporciona una API para generarlo. Se calcula según el estándar establecido por la Open Software Foundation (OSF), utilizando la dirección de la tarjeta de red Ethernet, el tiempo en nanosegundos, el ID del chip y un número aleatorio.

Un UUID consta de la combinación de las siguientes partes:

  • La primera parte del UUID está relacionada con el tiempo. Si genera un UUID y luego genera otro unos segundos después, la primera parte será diferente, mientras que el resto será igual.

  • Secuencia del reloj.

  • Identificador de máquina IEEE globalmente único. Si hay una tarjeta de red, se obtiene de la dirección MAC de la tarjeta de red; si no hay tarjeta de red, se obtiene de otras maneras.

  • En Hibernate (framework de mapeo objeto-relacional (ORM) para Java), se utiliza una combinación de IP - tiempo de inicio de la JVM - tiempo actual desplazado 32 bits a la derecha - tiempo actual - contador interno (8-8-4-8-4) para formar un UUID.

Reglas de Codificación para un Formato Específico

El UUID (Universally Unique Identifier) o Identificador Único Universal se define como una clave principal de cadena, compuesta por 32 dígitos, codificada en hexadecimal, que define información del sistema completamente única tanto en el tiempo como en el espacio.

Las reglas de codificación del UUID son:

  1. Los dígitos 1 a 8 utilizan la hora del sistema, con precisión de milisegundos, para garantizar la unicidad en el tiempo;

  2. Los dígitos 9 a 16 utilizan la dirección IP subyacente, para la unicidad dentro de un clúster de servidores;

  3. Los dígitos 17 a 24 utilizan el valor HashCode del objeto actual, para la unicidad dentro de un objeto interno;

  4. Los dígitos 25 a 32 utilizan un número aleatorio generado al llamar al método, para la unicidad a nivel de milisegundos dentro de un objeto.

A través de estas cuatro estrategias se puede garantizar la unicidad.

Versiones y Tipos de UUID

El UUID tiene múltiples versiones, cada una con un algoritmo diferente y un ámbito de aplicación distinto. El formato estándar del UUID es: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12), y se puede descargar la UDF CreateGUID() de cflib para realizar la conversión. En ColdFusion, se puede generar un UUID de forma sencilla utilizando la función CreateUUID(), cuyo formato es: xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx (8-4-4-16), donde cada x es un dígito hexadecimal en el rango de 0-9 o a-f.

UUID Nulo

En primer lugar, hay un caso especial: el UUID Nulo, que normalmente no solemos utilizarlo. Está compuesto enteramente por ceros: 00000000-0000-0000-0000-000000000000.

UUID Basado en Tiempo

El UUID basado en tiempo se obtiene calculando la marca de tiempo actual, un número aleatorio y la dirección MAC de la máquina. Dado que en el algoritmo se utiliza la dirección MAC, esta versión del UUID puede garantizar su unicidad a nivel mundial. Sin embargo, al mismo tiempo, el uso de la dirección MAC plantea problemas de seguridad, que es la razón por la que esta versión del UUID ha sido criticada. Si la aplicación solo se utiliza en una red local, también se puede emplear un algoritmo degradado, sustituyendo la dirección MAC por la dirección IP. A menudo, las implementaciones de UUID en Java funcionan de esta manera (teniendo en cuenta, por supuesto, la dificultad de obtener la dirección MAC).

UUID Seguro para DCE

El UUID seguro para DCE (Entorno de Computación Distribuida) utiliza el mismo algoritmo que el UUID basado en tiempo, pero reemplaza los primeros 4 bits de la marca de tiempo con el UID o GID de POSIX. Esta versión del UUID se utiliza poco en la práctica.

UUID Basado en Nombres (MD5 y SHA1)

El UUID basado en nombres (MD5) se obtiene calculando el valor hash MD5 de un nombre y un espacio de nombres. Esta versión del UUID garantiza: la unicidad de los UUID generados a partir de nombres diferentes dentro del mismo espacio de nombres; la unicidad de los UUID en diferentes espacios de nombres; y que la regeneración del UUID para el mismo nombre dentro del mismo espacio de nombres sea idéntica.

El UUID basado en nombres (SHA1) es similar al algoritmo de UUID basado en nombres, con la diferencia de que el cálculo del valor hash utiliza el algoritmo SHA1 (Secure Hash Algorithm 1).

UUID Generado Aleatoriamente

Genera un UUID a partir de números aleatorios o pseudoaleatorios. La probabilidad de que se produzcan duplicados con este UUID es calculable, pero lo aleatorio es como jugar a la lotería: es imposible contar con ello para enriquecerse.

Aplicaciones Comunes del UUID

El UUID más ampliamente utilizado es el Identificador Único Global (GUID) de Microsoft. Otras aplicaciones importantes incluyen:

  • Sistemas de archivos como ext2/ext3 de Linux.

  • Particiones cifradas LUKS.

  • Entornos de escritorio como GNOME y KDE.

  • Sistemas operativos como Mac OS X.

  • La Biblioteca UUID del paquete e2fsprogs.

Probabilidad de Repetición (Colisión)

De los 128 bits de un UUID generado aleatoriamente (por ejemplo, uno generado por la clase java.util.UUID), 122 bits se generan de forma aleatoria, 4 bits se utilizan para la versión ('Randomly generated UUID') y 2 bits para la variante ('Leach-Salz'). Utilizando la Paradoja del cumpleaños, se puede calcular que la probabilidad de que dos UUID tengan el mismo valor es extremadamente baja.

Comparándolo con la probabilidad de ser golpeado por un meteorito, se estima que la probabilidad de que una persona sea golpeada por un meteorito en un año es de 1 en 17 mil millones, es decir, una probabilidad de aproximadamente 0.00000000006 (6 x 10^-11), lo que equivale a generar decenas de billones de GUID en un año y que ocurra una repetición. En otras palabras, si se generan mil millones de UUID por segundo, la probabilidad de que ocurra una sola repetición en 100 años es del 50%. Si cada persona en la Tierra tuviera 600 millones de GUID, la probabilidad de que ocurra una repetición sería del 50%.

La probabilidad de generar un GUID duplicado y que cause un error es extremadamente baja, por lo que generalmente no es necesario considerar este problema. La probabilidad también está relacionada con la calidad del generador de números aleatorios. Para evitar un aumento en la probabilidad de repetición, es necesario utilizar un generador de números pseudoaleatorios criptográficamente seguro para generar los valores.

tags: #que #es #el #contpaqi #uuid #universally