Skip to main content

Se publica el Anexo 20 de la Resolución Miscelánea Fiscal 2014 en el Diario Oficial de la Federación el día de hoy 17 de febrero de 2014. Este famoso anexo contiene los requisitos oficiales de los Comprobantes Fiscales Digitales a Través de Internet CFDI. En este articulo se habla respecto a la generación del Sello Digital que va insertado en al momento de ser sellado el comprobante, aunque es demasiado técnica la publicación es necesario saber como se genera este sello para saber que se esta generando correctamente y así cumplir con dicho requisito:

Generación de sellos digitales para comprobantes fiscales digitales a través de Internet

Para toda cadena original a ser sellada digitalmente, la secuencia de algoritmos a aplicar es la siguiente:

I.- Aplicar el método de digestión SHA-1 a la cadena original a sellar incluyendo los nodos Complementarios. Este procedimiento genera una salida de 160 bits (20 bytes) para todo mensaje. La posibilidad de encontrar dos mensajes distintos que produzcan una misma salida es de 1 en 2160, y por lo tanto en esta posibilidad se basa la inalterabilidad del sello, así como su no reutilización. Es de hecho una medida de la integridad del mensaje sellado, pues toda alteración del mismo provocará una digestión totalmente diferente, por lo que no se podrá autentificar el mensaje.

SHA-1 no requiere semilla alguna. El algoritmo cambia su estado de bloque en bloque de acuerdo a la entrada previa.

II.- Con la clave privada correspondiente al certificado digital del emisor del mensaje y del sello digital,encriptar la digestión del mensaje obtenida en el paso I utilizando para ello el algoritmo de encripción RSA.

Nota: La mayor parte del software comercial podría generar los pasos I y II invocando una sola función y especificando una constante simbólica. En el SAT este procedimiento se hace en pasos separados, lo cual es totalmente equivalente. Es importante resaltar que prácticamente todo el software criptográfico comercial incluye APIs o expone métodos en sus productos que permiten implementar la secuencia de algoritmos aquí descrita. La clave privada solo debe mantenerse en memoria durante la llamada a la función de encripción; inmediatamente después de su uso debe ser eliminada de su registro de memoria mediante la sobre escritura de secuencias binarias alternadas de “unos” y “ceros”.

III.- El resultado será una cadena binaria que no necesariamente consta de caracteres imprimibles, por lo que deberá traducirse a una cadena que sí conste solamente de tales caracteres. Para ello se utilizará el modo de expresión de secuencias de bytes denominado “Base 64”, que consiste en la asociación de cada 6 bits de la secuencia a un elemento de un “alfabeto” que consta de 64 caracteres imprimibles. Puesto que con 6 bits se pueden expresar los números del 0 al 63, si a cada uno de estos valores se le asocia un elemento del alfabeto se garantiza que todo byte de la secuencia original puede ser mapeado a un elemento del alfabeto Base 64, y los dos bits restantes formarán parte del siguiente elemento a mapear. Este mecanismo de expresión de cadenas binarias produce un incremento de 25% en el tamaño de las cadenas imprimibles respecto de la original.

La codificación en base 64, así como su decodificación, se hará tomando los bloques a procesar en el sentido de su lectura, es decir, de izquierda a derecha.

El alfabeto a utilizar se expresa en el siguiente catálogo:

Elemento
del
Alfabeto
Valor B64
Valor
ASCII
 
Elemento
del
Alfabeto
Valor B64
Valor
ASCII
 
Elemento
del
Alfabeto
Valor B64
Valor ASCII
0
A
65
 
23
X
88
 
46
u
117
1
B
66
 
24
Y
89
 
47
v
118
2
C
67
 
25
Z
90
 
48
w
119
3
D
68
 
26
a
97
 
49
x
120
4
E
69
 
27
b
98
 
50
y
121
5
F
70
 
28
c
99
 
51
z
122
6
G
71
 
29
d
100
 
52
0
48
7
H
72
 
30
e
101
 
53
1
49
8
I
73
 
31
f
102
 
54
2
50
9
J
74
 
32
g
103
 
55
3
51
10
K
75
 
33
h
104
 
56
4
52
11
L
76
 
34
i
105
 
57
5
53
12
M
77
 
35
j
106
 
58
6
54
13
N
78
 
36
k
107
 
59
7
55
14
O
79
 
37
l
108
 
60
8
56
15
P
80
 
38
m
109
 
61
9
57
16
Q
81
 
39
n
110
 
62
+
43
17
R
82
 
40
o
111
 
63
/
47
18
S
83
 
41
p
112
 
 
 
 
19
T
84
 
42
q
113
 
 
 
 
20
U
85
 
43
r
114
 
 
 
 
21
V
86
 
44
s
115
 
 
 
 
22
W
87
 
45
t
116

Por tanto, los caracteres utilizados en el alfabeto de Base 64 son:

A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, /

Y en el orden descrito les corresponden los índices del 0 al 63 en un arreglo de 64 elementos. Para traducir de binario a Base 64, se examina la secuencia binaria evaluando 6 bits a la vez; si el valor de los primeros 6 bits es 0, entonces se imprime la letra A; si es 1, entonces se imprime la letra B y así sucesivamente hasta completar la evaluación de todos los bits de la secuencia binaria evaluados de 6 en 6.

La función inversa consiste en reconstruir la secuencia binaria original a partir de la cadena imprimible que consta de los elementos del alfabeto de Base 64. Para ello se toman 4 caracteres a la vez de la cadena imprimible y sus valores son convertidos en los de los tres caracteres binarios correspondientes (4 caracteres B64 x 6 bits = 3 caracteres binarios x 8 bits), y esta operación se repite hasta concluir la traducción de la cadena imprimible.

Ejemplo de Sello digital: GqDiRrea6+E2wQhqOCVzwME4866yVEME/8PD1S1g6AV48D8VrLhKUDq0Sjqnp9IwfMAbX0ggwUCLRKa+Hg5q8aYhya63If2H

Fuente: DOF 17-02-2014

Dejanos tu comentario

Accede gratis a la aplicación web para la Descarga Masiva de XML del SAT

No te enviaremos SPAM, a nosotros tampoco nos gusta.

Descarga gratis la calculadora 2025 de ISR, IMSS e Infonavit en Excel.

No te enviaremos SPAM, a nosotros tampoco nos gusta.

Descarga la Tablas de ISR para 2025 en Excel de regalo de la RMF (Anexo 8).

No te enviaremos SPAM, a nosotros tampoco nos gusta.

Escanea el código