Algortimo NMC Stream
Descripción y Formalización
Néstor Marroquín Carrera
Investigación y Desarrollo
NMC Research Cía. Ltda.
Quito – Ecuador
4 de febrero de 2004
Resumen
En este documento, se presenta una descripción
detallada de la versión final del algoritmo criptográfico
de cifrado de flujo simétrico NMC Stream©; desarrollo
por el equipo del Departamento de Investigación yDesarrollo de la empresa NMC Research Cía. Ltda.,
liderados por Néstor Marroquín Carrera. Se realiza una
descripción sistemática y detallada de cada uno de los
elementos que lo componen, incluyendo una breve
discusión sobre el nivel de seguridad alcanzado.
Tabla de Contenido
1.
El Algoritmo NMC Stream©. ..................................................................................3
1.1.
Formalización. .................................................................................................. 3
1.2.
Definición algorítmica de NMC Stream©........................................................ 5
1.2.1.
La función h.............................................................................................. 5
2. Aproximación al nivel de seguridadalcanzado........................................................ 7
3. Conclusiones........................................................................................................... 10
4. Notas y Bibliografía. .............................................................................................. 10
1. El Algoritmo NMC Stream©.
1.1. Formalización.
NMC Stream© es un algoritmo simétrico decifrado de flujo,
desarrollado por el equipo de Investigación y Desarrollo de la
empresa NMC Research Cía. Ltda., equipo liderado por Néstor
Marroquín Carrera, que implementa las definiciones hechas en
1917 por Mauborgne y Vernam[1] que inventaron un
algoritmo de cifrado, seguro según el criterio de Shannon[2].
El algoritmo implementa un generador pseudoaleatorio[3],
alimentado por unasemilla de longitud variable, y que
constituye básicamente una máquina de estado finito[4],
cuyo estado viene dado por el valor de la semilla de tamaño n,
y que en cada paso da como resultado un bloque de la
secuencia de tamaño n/3.
El generador pseudoaleatorio puede generar secuencias de
bytes extremadamente grandes antes de producir un ciclo, ciclo
que está en función de la longitud de lasemilla.
El algoritmo de cifrado se define como:
oi = h(ki-1,D)
ci = w(oi,mi)
(1)
El algoritmo de descifrado se define como:
oi = h(ki-1,D)
mi = w(oi,ci)
(2)
Donde ki-1 es la clave calculada anterior al estado i-ésimo de la
función h; mi y ci, son la i-ésima porción del texto claro y
cifrado respectivamente, y w es una función reversible,
usualmente or exclusivo, finalmentelos valores de k0 y D (tabla
de valores constantes), constituyen los valores iniciales que
alimentan al generador h.
La clave k (ki) será una secuencia de bytes de longitud múltiplo
de 30, protegida e intercambiada de manera segura utilizando
cualquier algoritmo de clave pública considerado seguro.
Al inicio del proceso de cifrado; dado el valor inicial k, este valor
será calculadoconforme los resultados de cada estado de la
función h, realimentando este valor, y por consiguiente
tendremos el conjunto de claves dados por el valor ki, para el
siguiente estado de h; D es una tabla constante cuyos valores
están especificados en la Tabla 1.
210
220
204
231
124
165
254
7
9
218
19
89
85
16
43
33
228
62
48
36
146
14897
213
17
109
188
18
202
240
191
0
208
213
180
108
163
61
225
178
131
114
76
180
238
63
11
122
181
50
119
189
160
26
39
78
60
159
169
22
224
177
132
141
210
93
253
185
189
70
149
50
41
67
104
94
195
69
229
176
254
3...
Regístrate para leer el documento completo.