indices de eficacia de la técnica del borrado en la
TRANSCRIPT
Proyecto de Investigación
Roberto Carlos Ramirez Caicedo
CIP 67732
Indices de eficacia de la
Técnica del Borrado en la
codificación
Copyright 2018
Proyecto de Investigación Indices de eficacia de la Técnica del Borrado en
la codificación Reed - Solomon
Los derechos de distribución y comercialización de este proyecto de
investigación son exclusividad de la Universidad Marítima del Perú.
Proyecto de Investigación
Indices de eficacia de la
Técnica del Borrado en
la
codificación
Esquema del Proyecto de Investigación
Indices de eficacia de la Técnica del Borrado en la codificación Reed-
Solomon
Autor: Ing. Ramirez Caicedo, Roberto Carlos
Indice
Introducción
Capítulo I: Planteamiento del problema En las comunicaciones digitales
de hoy en día se requiere reconocer que el receptor es capaz de reconocer y
corregir los errores del emisor.
1.1 Determinación del problema Las comunicaciones entre un emisor y un
receptor requieren de un medio que hoy en día es de naturaleza digital y
debe ser capaz de corregir los errores de comunicación entre ellos.
1.2 Delimitación de la investigación
1.2.1 Delimitación espacial Está referida en los Estados Unidos
1.2.2 Delimitación temporal Desde el año 1960
1.2.3 Delimitación social Un país usuario de tecnología debe entender que sea
capaz de reconocer la brecha que separa de un país desarrollador de
tecnología
Capítulo II: Objetivos y alcances de la investigación
2.1 Objetivo general Destacar el uso de los conceptos de la corrección de
errores en las comunicaciones
2.2 Objetivo específico. Vincular el uso de la codificación Reed-Solomon en la
actualidad
Capitulo III: Justificación de la investigación
3.1 Justificación teórica La tecnología muy avanzada que domina nuestras
actividades merece analizar los fundamentos matemáticos que realmente se
aplican en la realidad
3.2 Justificación social Los países usuarios de tecnología mayormente
conocidos como subdesarrollados tienen el deber de incorporar una línea
delgada que una el esfuerzo por mejorar las aplicaciones de la ingeniería
3.3 Justificación metodológica Debe exponerse la aplicación directa de la
teoría a la realidad
3.4 Justificación legal La Constitución y la ley permiten la autonomía en la
formación de sus estudiantes
3.5 Línea de investigación Se fundamenta en la rama de las matemáticas
discretas que siendo exclusivo de la ingeniería de sistemas e informática, en
las aplicaciones, constituye una traza en todas las disciplinas vinculadas a la
ingeniería
Capitulo IV: Marco teórico
4.1 Antecedentes de la investigación
4.1.1 Investigaciones nacionales Ninguna
4.1.2 Investigaciones extranjeras. Investigaciones del MIT. Documentación
vía la internet.
4.2 Marco histórico referencial
4.2.1 Reseña. Toda disciplina de la ingeniería debe incorporar como una traza
el conocimiento de la codificación digital en las comunicaciones actuales.
4.3 Definiciones de términos básicos. Los términos asociados y vinculados a
la codificación digital están en idioma inglés, su traducción e interpretación
es un compendio estándar que he comprimido para su uso cotidiano.
Capítulo V: Marco metodológico
5.1 Hipótesis
5.1.1 Hipótesis general. Las comunicaciones digitales de hoy en día concurren
desde un teléfono celular, hasta la televisión reúnen fundamentos básicos,
estándar y complejos en la disciplina de la ingeniería que deben ser conocido
y entendido.
5.1.2 Hipótesis específica. Los sistemas digitales no son propiedad absoluta
de una rama de la ingeniería en particular; por el contrario es una traza.
5.2 Sistema de variables e indicadores
5.2.1 Variable independiente. Fundamentos de comunicaciones
5.2.2 Variable dependiente. Fundamentos de matemática discreta y sistemas
digitales
5.3 Operacionalización de variables. Basado en la hipótesis general
5.4 Tipo y diseño de investigación
5.4.1 Tipo de investigación: explicativa y bibliográfica
5.4.2 Diseño de investigación: cuasi experimental
5.5 Población y muestra de la investigación.
5.5.1 Población
5.5.2 Muestra
5.6 Técnicas de recolección de datos
Capítulo VI: Análisis y viabilidad de la investigación
6.1 Análisis e interpretación de resultados
6.2 Viabilidad y factibilidad de la investigación
Capítulo VII: Aspecto administrativo
7.1 Cronograma de actividades frecuencia semanal durante 2 meses.
7.2 Presupuesto cero
7.3 Fuente de financiamiento horas de estudio
Referencias bibliográficas Anexos
Matriz de consistencia
Problemas Objetivos Hipótesis Metodología
1. Problema
Principal
¿De qué manera
los índices de
eficacia propicia
un mejoramiento
en la
decodificación
digital?
1. Objetivo
General
Conocer si la
técnica del
borrado
constituye una
mejora en la
decodificación
digital
1. Hipótesis
General
Si la codificación
digital Reed
Solomon bajo GF
utilizando la
técnica del borrado
se utiliza
correctamente
influye de manera
óptima en las
comunicaciones
1. Tipo de
Investigación
De acuerdo al
propósito de la
investigación, la
naturaleza del
problema y
objetivos
formulados reúne
las condiciones
para ser
considerado como
una investigación
aplicada en razón
de que para su
desarrollo en la
parte teórica se
apoyará en los
conocimientos
sobre la
codificación Reed
Solomon
2. Problemas
Secundarios
2. Objetivos
Específicos
2. Hipótesis
Secundarias
2. Nivel de
Investigación
a) ¿En qué medida
la técnica del
borrado mejora la
decodificación
digital?
b) ¿Para qué otros
tipos de aplicación
se adapta la
técnica del
borrado?
c) ¿Cuáles serían
los límites de las
aplicaciones de la
técnica del
borrado’
d) ¿Es posible que
otra técnica pueda
sustituir la
eficacia de la
técnica del
borrado?
a) Identificar los
aspectos
específicos por las
cuales la técnica
del borrado es
aplicable
b) Verificar si
existen casos en
las cuales los
cálculos generan
situaciones no
realizables
c) Determinar si la
técnica del
borrado genera al
nivel hardware
inestabilidad
d) Analizar los
límites en las
aplicaciones de la
técnica del
borrado
a) En las
comunicaciones
actuales la técnica
del borrado es
confiable
b) La eficiencia de
la técnica del
borrado genera
confianza en su
uso.
c) La inestabilidad
de la aplicación es
mínima
d) En el futuro la
mejora de la
técnica brindará
nuevas propuestas
de diseño
Descriptiva en un
principio, luego
explicativa y
correlacionada
3. Metodología de
la investigación
Se aplicará el
método descriptivo
4. Diseño de la
investigación
Es una
investigación por
objetivos
5. Población
Será utilizada en las
clases de sistemas
digitales por el
alumnado
6. Muestra
El 100% de los
estudiantes que
cursen Electrónica I
7. Técnicas
El análisis circuital
y la lógica booleana
8. Instrumentos
La teoría de
campos y los
sistemas digitales
Indice
Prólogo 1 1. Principios de la transmisión de datos 2 1.1 Esquema general de la transmisión de datos 2 1.2 Etapa de la codificación 3 1.3 Los códigos Reed Solomon 5 1.4 Los Códigos Gray 13 2. Codificación de redundancia cíclica 22 2.1 Esquema CRC 22 2.2 Codificación CRC 23 2.3 Decodificación CRC 25 3. Campo de Galois 27 3.1 Fundamentos de matemáticas discretas 27 3.2 Campos finitos 29 4. Codificación Reed Solomon en GF(8) 55 4.1 Arquitecturas digitales 56 4.2 Secuencias pseudoaleatorias 70 5. Decodificación Reed Solomon en GF(8) 73 5.1 Técnica convencional 73 5.2 Técnica del borrado 75 5.3 Arquitecturas con flip flops 78 Referencias bibliográficas 83 Glosario 84 Indice alfabético 86
1
Prólogo
El presente proyecto tiene como finalidad introducir las herramientas
académicas para analizar el estudio de la corrección de errores en la
transmisión de datos.
Hoy en día las comunicaciones digitales se desarrollan de manera habitual en
cada instante de nuestras vidas, desde el uso de la telefonía celular hasta las
comunicaciones satelitales inclusive.
El uso de las herramientas digitales permite la simplificación de los
procedimientos habituales para reemplazarlos de manera eficaz y veloz, en
tiempo real.
Es muy común entonces, que los errores se cometen con cierta frecuencia y, la
capacidad de determinar el error y corregirlo permite reconocer si el emisor o
el receptor son capaces de efectuar tal proceso.
Es en ese sentido que la codificación Reed – Solomon dada su simplicidad, su
capacidad de eficacia y su fortaleza en el uso de las herramientas matemáticas
hagan posible que su implementación sea posible, hasta cierto nivel que pueda
ser utilizado en los estudios de ingeniería a todo nivel, y es precisamente este
proyecto el que permite un enfoque para tal propósito.
2
1. Principios de la transmisión de datos
Toda comunicación de naturaleza digital requiere de un emisor y de un
receptor. Necesariamente una estación base es aquella que es capaz de
amplificar la señal de ambos tanto en el envío como en la recepción.
Es típico que en conversaciones ya sean de voz o texto, videollamadas,
reproducción de música, transferencias de dinero, compras en línea e
inclusive la señal de televisión que recibimos en nuestros hogares tiene una
complejidad al nivel de ingeniería cuyas propiedades intrínsecas residen en el
hecho de entender a aquellos procesos que sean capaces de determinar el error
en la información recibida y que al mismo tiempo sea capaz de corregirlo.
1.1 Esquema general de la transmisión de datos
El esquema
general de la
trasmisión de
datos obedece
al siguiente
esquema. [1]
La presencia
del error suele
ocurrir en el
medio o canal.
3
Es en este punto que la necesidad de entender aspectos de matemáticas
aplicadas para el desarrollo de este proyecto recae en principio en entender la
teoría de campos (matemáticas discretas)
1.2 Etapa de la codificación
La codificación para control de errores corresponde a una rama de las
matemáticas aplicadas llamada teoría de la información (Shannon, 1948).
Una aplicación específica corresponde a los códigos Reed-Solomon.
Los algoritmos que maneja esta aplicación pueden ser implementados tanto en
software como en hardware. En vista de la creciente tendencia hacia el uso de
dispositivos de lógica reconfigurable a alta escala de integración (Reed, 1960) y
de los beneficios que esta tecnología ofrece a los diseñadores de sistemas
digitales mediante el empleo de un lenguaje de descripción de hardware como
VHDL, que permite configurar sistemas digitales según las especificaciones
demandadas por los usuarios, ajustar cambios en la programación y optimizar
los diseños tratándolos en forma modular, se plantea el diseño de estos
módulos de codificación bajo esta tecnología. [2]
Una importante característica de VHDL es su estandarización bajo la norma
1076 .
Es por ello que se ha seleccionado como lenguaje para la descripción del
codificador de canal digital.
4
Debido a la gran importancia que tiene el campo de las comunicaciones
digitales, por la ventaja que ofrece sobre las comunicaciones analógicas, resulta
interesante diseñar un sistema compacto que incorpore las etapas de
procesamiento y comunicación de datos, ya que debido a la gran flexibilidad de
los FPGA (Field Programmable Gates Array) es factible para cualquier diseño,
siempre y cuando se cuente con capacidad suficiente de memoria para
almacenar la totalidad del hardware a implementar.
Los circuitos FPGA son una solución reconfigurable y eficiente para
implementar aplicaciones DSP.
Se planteó entonces la necesidad de emplear la tecnología de programación en
VHDL como soporte para el diseño del codificador Reed Solomon, donde se
presenta la posibilidad de subdividir el codificador, atendiendo a cada módulo
según su función específica para lograr los objetivos planteados a través de la
descripción de hardware y realizar los ajustes que permitan optimizar el diseño
en la etapa de programación. [7]
En el estudio de los codificadores de canal se presenta el código Reed Solomon,
el cual resulta ser el más ventajoso porque su probabilidad de error en relación
con la señal a ruido está cercana al límite de Shannon (1948) y presenta mayor
eficiencia sobre otros códigos correctores de error en cuanto a ganancia del
código. La clave para hacer del código Reed-Solomon una aplicación tecnológica
fue la implementación de un algoritmo eficiente de decodificación desarrollado
por Berlekamp.
5
El código Reed-Solomon es un código corrector de errores basado en bloques
en donde el codificador procesa un bloque de símbolos de datos, a los que
agrega redundancia para producir un bloque de símbolos codificados.
En la actualidad, los códigos Reed-Solomon se utilizan para corregir errores en
varios sistemas incluyendo los dispositivos de almacenamiento –cintas, discos
compactos, DVD, códigos de barras, etc.–, comunicaciones inalámbricas o
móviles –telefonía celular, enlaces de microondas, etc.–, comunicaciones
satelitales, televisión Digital/DVB, módem de alta velocidad como ADSL, x DSL.
1.3 Los códigos Reed - Solomon
El código Reed-Solomon es un subconjunto de los códigos BCH (Bose
Chaudhuri Hocquenqhem), códigos cíclicos que presentan entre sus
parámetros (n, k, t) una relación entre los símbolos de datos (k), del código
total (n) y del número máximo de errores por ser corregidos (t), y son de
bloques lineales. Un código Reed-Solomon se especifica como RS(n, k) con
símbolos de s bits. Lo anterior significa que el codificador toma k símbolos de
los s bits y añade símbolos de paridad para hacer una palabra de código de n
símbolos. Existen n-k símbolos de paridad de s bits cada uno. Un decodificador
puede corregir hasta t símbolos que contienen errores en una palabra de
código, donde 2t = (n-k). [4]
Al respecto un hecho real
6
El día Jueves 23.04.2009 el Gobierno Peruano aceptó la propuesta de adoptar el
formato de televisión digital ISDB-T del Japón. Meses antes, el día jueves
29.01.2009 en la sala de sesiones de la sede de Rectorado de la Universidad
Tecnológica del Perú cerca de las 06:30 p.m., se llevó a cabo una presentación
por parte de la delegación japonesa integrada por Hideo Fuseda Director de la
División de Tecnología Digital del MIC (Ministry of Internal Affaire and
Communications), Yasushi Furukawa Director de Relaciones Internacionales
del MIC y con la asistencia de los miembros invitados del Directorio del Consejo
Superior de Dirección Académica, donde mi participación tuvo una
intervención referente a la detección y corrección de errores del formato de
televisión digital terrestre japonés; esencialmente me referí a la corrección de
imágenes frente a las interferencias de tipo EMI u otras que enfrenta el medio.
El día Martes 10.02.2009 en el Hotel Marriott la exposición de las delegaciones
japonesa - brasilera integrada particularmente por ingenieros especialistas en
el diseño del estándar japonés – brasileño, se hizo una explicación detallada de
su software particular que interactúa con el ISDB-T y además al tema del
sistema de codificación digital empleado y las ventajas del time interleaving de
ISDB-T 1. En los brochure y textos que se nos presentaron, la ficha técnica
refiere el código externo. [ 3 ]
En esta oportunidad añadiré que respecto de los códigos Reed - Solomon, en
general se denotan de la forma RS(n, k) con especificación de símbolos de “s”
bits.
Es decir que para efectos de codificación, se toman “k” símbolos de los
múltiplos de “s” bits, y luego se añaden símbolos de paridad para obtener una
7
palabra de código de “n” bits.
Por otro lado para efectos del decodificador, se pueden corregir hasta “e”
símbolos con errores, donde 2t = n – k.
El código más común de utilizar en transmisión es RS(255, 223) con símbolos
de 8 bits, cada palabra de código contiene 255 bytes de palabra de código, de
los cuales 223 bytes son datos y 32 bytes son de paridad, y puede corregir un
máximo de 16 símbolos, es decir de 16 bytes.
Los códigos Reed - Solomon pueden a su vez corregir errores, ya sea con la
técnica convencional o con la técnica del borrado.
En este caso en particular es estrictamente para la detección de errores.
Particular es el caso del código RS(204, 188), con símbolos de 8 bits y es una
codificación muy especial pues se obtiene de añadir 51 bytes nulos delante de
188 bytes de información; de esta manera se obtienen 239 bytes.
La adición de 16 bytes de paridad hace el total de 204 bytes. [ 3 ]
Este tipo de codificación puede corregir hasta un total de 8 bytes erróneos.
x8 x4 x3 x2 1 es el polinomio generador. [ 2 ]
En realidad el código RS (204, 188) es el código abreviado y es derivado del
código RS (255, 239). Al campo de sincronización de paquete se le aplica la
codificación Reed - Solomon y puede ser invertido (0x 47) o no invertido (0x
b8).
8
El código abreviado se implementa añadiendo 51 octetos todos puestos a cero
antes de los octetos de información de la fase de entrada de un codificador RS
(255, 239).
Después de la codificación se descartan dichos octetos nulos. Esta
especificación se detalla en la figura que se muestra.
Al respecto es necesario comentar que existen esquemas estandarizados para
la codificación digital utilizando Reed - Solomon, como es el caso: CCDS
(Consultative Committee for Space Data Systems) compuesta por un Reed -
Solomon (255, 223, 32), un entrelazado bloque y un código convolucional (2, 1,
7); el otro esquema es el propuesto por el estándar IEEE 802.16 compuesta por
un Reed - Solomon (204, 188, 16), un intercalador convolucional y un código
convolucional con diversas tasas (desde 1/2 a 7/8 ). [ 3 ]
La figura detalla lo especificado por ambos esquemas.
9
Al esquema anterior se le conoce también sistemas de corrección de errores
concatenados, es decir se componen de una cadena de codificación
convolucional / decodificación Viterbi y una cadena de codificación /
decodificación Reed - Solomon.
Una poderosa razón por la cual se implantó este esquema es porque los
sistemas de codificación de errores trabajan bien frente a los errores aleatorios
como el ruido térmico; sin embargo no trabajan bien frente a los errores de
Bursa o el denominado error concatenado.
La aleatorización del error es la base fundamental por el cual se implanta la
tecnología Interleave.
ISDB-T tiene 4 tipos de Interleave: [ 3 ]
1. Byte Interleave. Aleatoriza el error de burst a la salida del decodificador
Viterbi.
2. Bit Interleave. Aleatoriza el error del símbolo antes del decodificador Viterbi.
3. Time Interleave. Aleatoriza el burst de error en el dominio del tiempo el cual
es causado por ruido de impulso, degradando la recepción portátil.
4. Frequency Interleave. Aleatoriza el burst de error en el dominio de la
frecuencia el cual es causado por el efecto multi-path, interferencia de
portadoras y otros efectos.
La figura describe la funcionalidad de los diversos tipos de Interleave
10
El ruido de impulso es causado por motor de auto, arranques de equipo
eléctrico entre otros y en realidad son efectos causados por el ser humano.
Es conocido el esquema de codificación CIRC 4 (Cross Interleaving Reed
Solomon Code), el cual está compuesto de tres niveles de intercalado y dos
etapas de codificadores Reed - Solomon, siendo éste un código corrector de
errores. [ 3 ]
En la figura, se tiene un codificador externo RS(28, 24, 4) y un codificador
interno RS(32, 28, 4).
También es
conocida la
estructura del
codificador RS
(255, 239, 16)
que se muestra
en la figura. [ 2
].
Una palabra de
11
código Reed – Solomon es generada utilizando un polinomio especial. Todas las
palabras de código validas son divisibles exactamente por el polinomio
generador representado según g(x) = ( x – α i )( x – α 1+1 )( x – α i+2t)
La palabra de código se genera del producto c(x) = g(x)*i(x), donde g(x) es el
polinomio generador, i(x) es el bloque de información, c(x) es una palabra de
código valida y el valor de α es conocido como el elemento primitivo del campo.
Utilizando la teoría de la definición del campo de Galois para la codificación, el
cual estará definido en función de la longitud del símbolo (cada símbolo tiene
“m” bits), permitiendo así conocer el polinomio irreducible del campo GF(2m) y
es conocido que para m=3, el polinomio p(x) = x3 x 1.
Las operaciones se van reduciendo conforme se alcanza el valor α3 α 1 y,
de esta manera, los valores siempre pertenecerán al campo.
La fórmula general del codificador tiene la forma
∏
De esta manera, al expandir el polinomio se obtiene la ecuación
Donde
n = longitud de la palabra codificada en símbolos
12
k = longitud del mensaje codificado en símbolos
m = longitud del símbolo en bits
Luego de ello se define al polinomio generador que se obtiene según
En ese sentido, la multiplicación en el campo GF(8) con el polinomio generador
Esta tabla y sus resultados se utilizan para generar el campo de Galois para el
código. Ingresa como un número decimal donde los bits del archivo binario
equivalente corresponden a los coeficientes del polinomio.
Analizando la siguiente muestra
es equivalente a 285 [5]
Un valor de cero causa al polinomio por defecto el ancho del símbolo dado para
ser seleccionado. Si el campo polinomial no es primitivo, la siguiente tabla
muestra el campo polinomial por defecto
13
1.4 Los códigos Gray
En las aplicaciones electromecánicas de los sistemas digitales tales como
herramientas mecánicas, sistemas de frenado para automóviles y
fotocopiadoras a veces es necesario que un sensor de entrada produzca un
valor digital que indique una posición mecánica.
Estos sistemas utilizan el código Gray, que pertenece a una clase de códigos en
los cuales solo cambia un bit del grupo de código en la transición de una etapa a
la otra. Las posiciones de los bits en los grupos de código no tienen un valor
determinado.
Se utiliza en situaciones para las cuales el código binario, puede producir
14
resultados incoherentes durante esas transiciones en las cuales cambia más de
un bit de código. Por ejemplo si aplicamos el código binario y pasamos de 011 a
100, los tres bits tienen que cambiar simultáneamente. Dependiendo del
dispositivo que genere los bits, existe una diferencia relevante en los tiempos
de transición de los bits. De esta manera se pueden producir estados
intermedios no deseados a la hora de interpretar y ejecutar funciones.
Para convertir el código binario a código Gray podemos seguir el siguiente
procedimiento:
1. El bit más significativo en el código Gray es el mismo que el que corresponde
al más significativo del número binario.
2. Comenzando de izquierda a derecha, se debe sumar cada par adyacente de
los bits en código binario para obtener el siguiente bit en código Gray. No
tenemos en cuenta los acarreos. [6]
Para convertir de código Gray a binario, se utiliza un método similar al descrito
anteriormente. Igual podemos seguir el siguiente procedimiento:
1. El bit más significativo en el código binario es el mismo que el que
corresponde al bit del código Gray.
2. A cada bit del código binario generado se le suma el bit en código
Gray de la siguiente posición adyacente. No tenemos en cuenta los
acarreos.
15
En la codificación Gray se considera en principio el código de 1 bit, como se
aprecia en la distribución, opera como un espejo el ultimo bit
En la codificación de 2 bits,
basados en el de 1 bit y del bit
espejo, se rellenan con 0 antes del
espejo y con 1 después del espejo.
En la codificación de 3 bits,
basados en el de 2 bits y
con el bit espejo, se
determina:
En la codificación de 4 bits
se toman los antecedentes y
la generación se obtiene de
la siguiente manera, tal y
como se muestra a
continuación.
En la conversión de código
binario a código gray de 5
bits, se aplican las mismas reglas de
conversión, en consecuencia.
16
Aplicando las reglas de conversión y los conceptos de simetría en la
distribución de los bits y, particularmente en el código Gray, la simetría
respecto del MSB, se obtiene la distribución:
b0 b1 b2 b3 b4 g0 g1 g2 g3 g4
0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 1
0 0 0 1 0 0 0 0 1 1
0 0 0 1 1 0 0 0 1 0
0 0 1 0 0 0 0 1 1 0
0 0 1 0 1 0 0 1 1 1
0 0 1 1 0 0 0 1 0 1
0 0 1 1 1 0 0 1 0 0
0 1 0 0 0 0 1 1 0 0
0 1 0 0 1 0 1 1 0 1
0 1 0 1 0 0 1 1 1 1
0 1 0 1 1 0 1 1 1 0
0 1 1 0 0 0 1 0 1 0
0 1 1 0 1 0 1 0 1 1
17
0 1 1 1 0 0 1 0 0 1
0 1 1 1 1 0 1 0 0 0
1 0 0 0 0 1 1 0 0 0
1 0 0 0 1 1 1 0 0 1
1 0 0 1 0 1 1 0 1 1
1 0 0 1 1 1 1 1 1 0
1 0 1 0 0 1 1 1 1 1
1 0 1 0 1 1 1 1 0 1
1 0 1 1 0 1 1 1 0 0
1 0 1 1 1 1 0 1 0 0
1 1 0 0 0 1 0 1 0 1
1 1 0 0 1 1 0 1 1 1
1 1 0 1 0 1 0 1 1 0
1 1 0 1 1 1 0 0 1 0
1 1 1 0 0 1 0 0 1 0
1 1 1 0 1 1 0 0 1 1
1 1 1 1 0 1 0 0 0 1
1 1 1 1 1 1 0 0 0 0
18
De la distribución, sin utilizar mapas de Karnaugh,
se aprecia que:
g0 = b0
g1 =
Utilizando mapas de Karnaugh, se observa
simetría en la distribución para b0 por cada bit; en
consecuencia:
g2 =
g3 =
g4 =
La conversión de código gray a código
binario de 5 bits, se aplican las mismas
reglas de conversión, en consecuencia.
Aplicando las reglas de conversión y los
conceptos de simetría en la distribución
de los bits y, particularmente en el código Gray, la simetría respecto del MSB,
se obtiene:
b1
1 1 b2
b4
1 1
1 1
1 1
b3
LSB
MSB b0
b1
g0
g1
b2 g2
b3 g3
b4 g4
19
g0 g1 g2 g3 g4 b0 b1 b2 b3 b4
0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 1
0 0 0 1 0 0 0 0 1 1
0 0 0 1 1 0 0 0 1 0
0 0 1 0 0 0 0 1 1 1
0 0 1 0 1 0 0 1 1 0
0 0 1 1 0 0 0 1 0 0
0 0 1 1 1 0 0 1 0 1
0 1 0 0 0 0 1 1 1 1
0 1 0 0 1 0 1 1 1 0
0 1 0 1 0 0 1 1 0 0
0 1 0 1 1 0 1 1 0 1
0 1 1 0 0 0 1 0 0 0
0 1 1 0 1 0 1 0 0 1
0 1 1 1 0 0 1 0 1 1
0 1 1 1 1 0 1 0 1 0
1 0 0 0 0 1 1 1 1 1
20
1 0 0 0 1 1 1 1 1 0
1 0 0 1 0 1 1 1 0 0
1 0 0 1 1 1 1 1 0 1
1 0 1 0 0 1 1 0 0 0
1 0 1 0 1 1 1 0 0 1
1 0 1 1 0 1 1 0 1 1
1 0 1 1 1 1 1 0 1 0
1 1 0 0 0 1 0 0 0 0
1 1 0 0 1 1 0 0 0 1
1 1 0 1 0 1 0 0 1 1
1 1 0 1 1 1 0 0 1 0
1 1 1 0 0 1 0 1 1 1
1 1 1 0 1 1 0 1 1 0
1 1 1 1 0 1 0 1 0 0
1 1 1 1 1 1 0 1 0 1
De la distribución, sin utilizar mapas de Karnaugh, se aprecia que:
21
b0 = g0
b1 =
Utilizando mapas de Karnaugh, se
observa simetría complementaria en
la distribución para g0 por cada bit;
en consecuencia:
b2 =
b3 =
b4 =
g1
1 1 g2
g4
1 1
1 1
1 1
g3
g1
1 1 g2
g4
1 1
1 1
1 1
g3
LSB
MSB g0
g1
b0
b1
g2 b2
g3 b3
g4 b4
22
2. Codificación de redundancia cíclica
Comprobación de redundancia cíclica o control de redundancia cíclica (en
informática, CRC). Hace referencia a cyclic redundancy check, también llamado
polynomial code checksum. El CRC es una función diseñada para detectar
cambios accidentales en datos de computadora y es comúnmente usada en
redes digitales y dispositivos de almacenamiento (como discos duros).
El CRC fue creado por W. Wesley Peterson en 1961; el polinomio de 32 bits
usado en funciones CRC de Ethernet (y otros estándares) fue publicado en
1975. Es muy popular por su simpleza de implementación, fácil de analizar
matemáticamente y es muy bueno detectando errores causados por ruidos en
los canales de transmisión. [1]
A cada bloque de datos le corresponde una secuencia fija de números binarios
conocida como código CRC (esto se calcula con una misma función para cada
bloque). Ambos se envían o almacenan juntos. Cuando un bloque de datos es
leído o recibido, dicha función es aplicada nuevamente al bloque, si el código
CRC generado no coincide con el código CRC original, entonces significa que el
bloque contiene un error. Eso hará que el dispositivo intente solucionar el error
releyendo el bloque o requiriendo que sea enviado nuevamente.
Si coinciden ambos códigos CRC, entonces se asume que el bloque no contiene
errores (existe una remota posibilidad de que haya un error sin detectar). El
nombre "control/comprobación de redundancia cíclica" se debe a que se
23
"controla" (verificación de datos) un código redundante (no agrega nueva
información, el código CRC representa el mismo bloque de datos) y el algoritmo
está basado en códigos cíclicos. Es importante destacar que el número de
caracteres de entrada a la función CRC puede tener cualquier longitud, pero
siempre producirá un código CRC de igual longitud.
2.1 Esquema CRC
Los polinomios generadores más comunes son:
CRC-12: x12 x11 x3 x2 x 1
CRC-16: x16 x15 x2 1
CRC CCITT V41: x16 x12 x5 1 (este código se utiliza en el procedimiento
HDLC)
CRC-32 (Ethernet): x32 x26 x23 x22 x16 x12 x11 x10 x8 x7 x5
x4 x2 x 1
CRC ARPA: x24 x23 x17 x16 x15 x13 x11 x10 x9 x8 x5 x3 1
2.2 Codificación CRC
Las operaciones de codificación CRC se pueden conseguir mediante la
arquitectura [4]
24
La respuesta en cada Flip Flop tipo D se da conforme la siguiente distribución
la representación polinomial que esta arquitectura CRC desarrolla es
A B C D E F G
LSB x x x x
x x x x
MSB x x x x
25
2.3 Decodificación CRC
Veamos las siguientes operaciones
1. Si ABCD = 1111, la división por equivale a dividirlo por 1011
genera un resto de 111 y la operación genera una palabra de código 1111111
Si en esta palabra de código en el canal, se deteriora el bit C, entonces la
operación CRC se obtendría en la posterior división, que origina como resto de
acuerdo a la arquitectura anterior, al bit C:
2. Si ABCD = 1010, la división por equivale a dividirlo por 1011
genera un resto de 011 y la operación genera una palabra de código 1010011
26
Si en esta palabra de código en el canal, no se deteriora ningún bit, entonces la
operación CRC se obtendría en la posterior división, que origina como resto de
acuerdo a la arquitectura anterior, a ningún bit y por lo tanto no existe error:
[4]
Arquitectura que representa el polinomio
27
3. Campo de Galois
3.1 Principios de las matemáticas discretas aplicadas
Un campo (en inglés: field), es una estructura algebraica en la cual las
operaciones llamadas adición y multiplicación se pueden realizar y cumplen las
propiedades: asociativa, conmutativa y distributiva de la multiplicación
respecto de la adición, además de la existencia de inverso aditivo, de inverso
multiplicativo y de un elemento neutro para la adición y otro para la
multiplicación, los cuales permiten efectuar las operaciones de sustracción y
división (excepto la división por cero); estas propiedades ya son familiares de la
aritmética de números ordinarios. [1]
Los campos son estructuras algebraicas importantes de estudio en diversas
ramas de la matemática: álgebra, análisis matemático, teoría de los números,
puesto que proporcionan la generalización apropiada de dominios de números
tales como los conjuntos de números racionales, de los números reales, o de los
números complejos.
28
Los campos eran llamados dominios racionales.
El concepto de un campo se usa, por ejemplo, al definir el concepto de espacio
vectorial y las transformaciones en estos objetos, dadas por matrices, dos
objetos en el álgebra lineal cuyos componentes pueden ser elementos de un
campo arbitrario.
La teoría de Galois estudia las relaciones de simetría en las ecuaciones
algebraicas, desde la observación del comportamiento de sus raíces y las
extensiones de campos correspondientes y su relación con los automorfismos
de campos correspondientes. [4]
En este punto el término Campo de Galois (en inglés, Galois Field), en adelante
GF, se utilizará para el desarrollo de su aplicabilidad.
Evariste Galois resolviendo congruencias modulo un primo p, quizá sin
percibirlo de esa manera, introdujo lo que actualmente se conoce como enteros
modulares modulo p, uno de los campos finitos con p elementos más
importantes, ya que a partir de este se construyen otros campos con pn
elementos para cualquier entero n > 1. Las ideas y trabajos desarrollados por
Evariste Galois, se le conoce hoy en día como la Teoría de Galois.
Utilidades y aplicaciones en el caso de p = 2, el campo de los números binarios
son aquellas que sirven de desarrollo para lo que aplicaremos más adelante.
29
El estudio de los Campos de Galois no tuvo grandes avances por mucho tiempo;
pero en las ultimas décadas debido a las aplicaciones que tienen en diversas
áreas de la matemática así como en otras de gran relevancia en nuestros días
como son las Comunicaciones digitales y Seguridad Informática, ha habido un
gran desarrollo y estudio sobre diversos aspectos de los Campos de Galois.
Es el estudio de la criptografía aplicada en donde se desarrolla muchas
aplicaciones de Galois; sin embargo se dará alcance de manera muy específica
algunas aplicaciones.
El propósito de este capítulo es destacar de manera muy singular algunas áreas
donde los campos de Galois se utilizan.[5]
3.2 Campos finitos
Campo de Galois o Campo Finito es lo que se conoce comúnmente y algunas de
las propiedades se mencionarán en esta parte [1]
Recordemos que el campo de los números binarios es (GF(2),+; *) donde
GF(2) = {0, 1} es el anillo de enteros módulo 2, con las operaciones de suma
“+” y producto “*” usuales en esos anillos.
Una de las propiedades que debe satisfacer un anillo para que sea campo es
que cualquier elemento distinto de cero tiene un inverso, cosa que sucede
(trivialmente) en este caso ya que el único elemento distinto de cero de GF(2)
es el 1, además de que este anillo es un domino entero.
Al campo de los números binarios también se acostumbra denotarlo por F2.
30
Sea GF(2)[x] el anillo de polinomios en una indeterminada con coeficientes
en GF(2). Es determinante que el polinomio f(x) = x2 + x + 1 GF(2)[x] es
irreducible sobre GF(2). Considérese ahora el anillo cociente, es decir, las
clases de equivalencia de GF(2)[x] modulo el ideal < f(x) > generado por el
polinomio f(x): GF(2)[x] /< f(x) > = { a(x) + < f(x) > : a(x) GF(2)[x]}
Usando el algoritmo de la división en el anillo GF(2)[x] (recordemos que este
anillo es euclidiano y de ideales principales), se tiene que para cualquier
elemento a(x) GF(2)[x]: a(x) = f(x)q(x) + r(x); 0 gr(r(x)) 1
Por lo tanto, un representante de la clase [a(x)] = a(x) + < f(x) > de a(x) es de
la forma a0 + a1x con a0, a1 GF(2). Por consiguiente los elementos del anillo
GF(2)[x] /< f(x) > se pueden identificar con el conjunto GF(22) = {a0 + a1x : a0;
a1 GF(2)} = { 0, 1, α, 1 + α} donde α = [x] = x + < f(x),>.
Obsérvese que:
1. GF(22) tiene cardinalidad 2gr(f(x)) = 4.
2. Dado que en GF(2)
1 = -1, α GF(22) es una raiz de f(x), es decir, α2 = α + 1
3. El conjunto GF(22) es un campo. Para esto basta describir la tabla de la
suma “+” y el producto “*”.
La tabla de la suma es:
31
La relación α2 = α + 1 permite realizar la
aritmética multiplicativa sobre GF(22),
como se aprecia en la siguiente tabla
De las tablas anteriores se puede observar lo siguiente:
a) La pareja (GF(22), +) es un grupo conmutativo.
b) Si GF(22)* = GF(22) \ {0}, la pareja (GF(22)*; *) es un grupo multiplicativo.
En particular todo elemento distinto de cero tiene un inverso.
c) Más aun, GF(22)* es un grupo cíclico: GF(22)* = < α > = {0; 1; α; α2 = 1 + α}
d) GF(22) es un espacio vectorial de dimensión 2 sobre GF(2).
Una base está dada por {1, α }.
De las observaciones anteriores se sigue que (GF(22),+; *) es un campo con 4
elementos, llamado de Galois o finito. [4]
Veamos ahora como se construye, en general, un campo finito. Sea p un
numero primo y Zp = GF(p) el campo de los enteros modulo p, al cual se le
llama campo primo. Sea GF(p)[x] el anillo de polinomios en la indeterminada
x con coeficientes en GF(p) y f(x) GF(p)[x] un polinomio irreducible de
grado n. Sea GF(p)[x] /< f(x) > = {a(x) + < f(x) > : a(x) GF(p)[x]} el anillo de
clases residuales de GF(p)[x] modulo el ideal < f(x) > generado por f(x).
32
Dado que GF(p)[x] es un anillo euclidiano (y de ideales principales), si a(x)
GF(p)[x], por el algoritmo de la división, a(x) = q(x)f(x) + r(x); 0 gr(r(x)) n
– 1, y un representante de la clase a(x)+<f(x)>, de a(x) GF(p)[x], es de la
forma a0 + a1x + … + an-1xn-1; ai GF(p):
Por lo tanto, los elementos de GF(p)[x] /<f(x)> se pueden identificar con el
conjunto F = {a0 + a1x + … + an-1xn-1; ai GF(p)}
A continuación se mencionaran algunas de las propiedades de F
1. (F,+; *) es un campo con pn elementos, donde “+” y “*” son las operaciones
usuales del anillo cociente. A este campo se acostumbra denotarlo por GF(pn)
o bien Fpn y se le llama el campo de Galois o el campo finito con pn elementos.
2. La clase residual α GF(pn) del polinomio x es tal que f(α) = 0, es decir, α
es una raíz de f(x).
3. GF(pn)* = GF(pn) \{0} es un grupo cíclico de orden pn - 1. A un generador de
este grupo se le llama primitivo.
4. El campo GF(pn) es un GF(p)-espacio vectorial de dimensión n y una base
(natural) es: {1, α, α2 , α3 , … αn-1 }
Por consiguiente, GF(pn) es una extensión de grado n de GF(p).
5. El campo de Galois con pn elementos es único modulo isomorfismos.
El lector podrá observar que para construir un campo de Galois con pn
elementos es necesario un polinomio irreducible con coeficientes en GF(p) de
grado n 2. Es interesante preguntarse cómo obtener tales polinomios. [1]
33
Algunas aplicaciones de los campos de Galois
Las matemáticas discretas abordan muchos temas y, en particular la teoría de
campos es bastante desarrollada para exponerla en este proyecto por lo que
las precisiones anteriores son algunas de las propiedades referidas a Galois.
En consecuencia algunas de las aplicaciones que se desarrollan a manera
practican no exigen conocer detalladamente las matemáticas discretas
necesariamente.
Códigos lineales detectores-correctores de errores
La codificación ha sido utilizada desde hace muchos años con la finalidad de
distinguir objetos y señalizaciones de uso diario o común. Citar el caso de
muchos de los productos que se adquieren en el mercado tienen el llamado
código de barras, cuando se viaja se asigna un código al boleto del pasajero,
actualmente todos los libros tienen asignado un código conocido como el
ISBN, en varios servicios de correspondencia también se asignan códigos a
los artículos que se desea enviar, la contraseña que se usa en una cuenta de
correo electrónico, el número de cuenta en un banco, la contraseña asignada
(“pin") y el número de tarjeta de crédito son algunos ejemplos de códigos que
se encuentran en varios y diversos contextos.
Actualmente los códigos que se usan en el manejo de la información digital,
particularmente los llamados códigos detectores-correctores de errores.
34
Como su nombre lo indica, estos códigos se usan para detectar y corregir
errores que se adquieren en la transmisión de la información (digital), no
importando el medio que se use para tal propósito. Para fijar un poco las
ideas consideremos el siguiente ejemplo que estoy seguro el lector ha vivido:
en algunas ocasiones cuando se hace una llamada telefónica, ya sea por el
teléfono convencional (fijo) o el móvil (celular), se ha tenido la experiencia de
que “hay mucho ruido" y se ha pedido a la contraparte o ella nos ha solicitado
terminar la llamada y volver a comunicarnos. En general este problema se
resuelve volviendo a hacer la llamada telefónica. Otro ejemplo es cuando se
está escuchando la radio, y se tiene ruido en la señal y no es claro lo que se
escucha; o bien en el caso de la televisión.
Una situación similar, pero más complicada por sus alcances, se tiene con los
satélites, las naves espaciales, o bien, en tomografía médica.
Estos son algunos ejemplos de la siguiente situación:
Se tiene una estación emisora y una estación receptora y se envía
información de una a otra (por diversos medios). Es muy factible que en el
“camino", por diversos motivos, dicha información adquiera errores de tal
manera que la información recibida no sea la misma que la enviada
originalmente. Así, la pregunta es: ¿cómo detectar y corregir los errores
adquiridos en la transmisión de la información?
Se han estudiado diversos aspectos de este problema y uno de ellos es por
medio de los llamados códigos lineales detectores-correctores de errores.
35
Una área de la matemática muy usada en esta problemática es el Algebra
Lineal pero sobre campos de Galios, GF(pn), y de particular importancia para
las aplicaciones es el caso p = 2, extensiones (finitas) del campo de los
números binarios con 2n elementos, por ejemplo n =4, 5, 6, 7.
Un código lineal detector-corrector de errores de longitud n sobre el campo
de Galois GF(q), q una potencia de un primo p, se puede definir como la
imagen de una función lineal entre los GF(q)-espacios lineales GF(q)m y
GF(q)n. La dimensión k del código es la dimensión de la imagen. Los
parámetros de un código lineal son su longitud n, dimensión k, y su distancia
mínima d (de Hamming): [n; k, d]. Desde el punto de vista de las aplicaciones
los códigos binarios (p = 2) son los más usados, pero desde un punto de vista
matemático, los códigos lineales se pueden estudiar sobre cualquier campo
de Galois GF(q). Una forma adecuada de describir estos códigos es por medio
de una matriz generadora o bien por medio de una matriz de chequeo de
paridad cuyas entradas están en el campo en cuestión (binario por ejemplo).
Son varios los códigos lineales que se han estudiado y aplicado en diversos
contextos, entre los cuales se pueden mencionar los de: Hamming, Simplex,
BCH, Reed-Solomon, Reed-Muller, Goppa, etc. Cabe recordar que los códigos
de Reed-Solomon se han usado en diversas aplicaciones siendo una de las
más cotidianas" en los aparatos reproductores de CD's y DVD's. Los códigos
de Reed-Muller se han usado en la transmisión de imágenes de cuerpos
celestes.
Otra forma como los campos de Galois se usan en los códigos lineales es la
36
siguiente: el espacio lineal GF(q)n es isomorfo, como espacio vectorial, a Rn =
GF(q)[x] / < xn - 1 >, la representación polinomial de GF(q)n.
Un [n, k, d] código lineal C se dice cíclico si para cada elemento (palabra de
código) c = (c0, c1, …; cn-1) el vector (cn-1, c0, …, cn-2) es también un elemento
de C. [4]
Por medio de la representación polinomial se puede ver que un [n; k; d]
código lineal C es cíclico si y solo si su imagen bajo este isomorfismo es un
ideal del anillo Rn. Como este anillo es de ideales principales, el ideal asociado
a un código lineal cíclico esta generado por un polinomio, conocido como el
polinomio generador del código.
El código de Reed-Solomon es cíclico y gracias a esta propiedad su
implementación es muy fácil pues solo se hacen corrimientos de las
coordenadas y no consumen muchos recursos computacionales.
Un detalle interesante en los campos de Galois es realizar aritmética rápida
para ser usada en los códigos lineales, tanto en la codificación como en la
dedicación, además en otras aplicaciones como en cifrado de datos,
generación de sucesiones, etc. [5]
Es necesario mencionar que actualmente los códigos detectores-correctores
de errores no solo se estudian sobre campos de Galois, sino también sobre
otras estructuras algebraicas como son los anillos de Galois, anillos de cadena
finita, anillos de Frobenius, etc.
37
El código de Reed-Solomon
Como un ejemplo de códigos lineales a continuación se presenta el código de
Reed-Solomon. La siguiente descripción de este código es básicamente la
forma original propuesta por estos autores.
Sea Fq un campo finito con q elementos donde q es una potencia de un
número primo. Sean n = q - 1, = F*q= Fq \{0} y α un elemento
primitivo, es decir, un generador del grupo multiplicativo F* q
Por consiguiente,
Fq = {0, 1, α, α2 , α3 , … αn-2 }
Sea k un entero positivo y Pk = { f(x) Fq [x]: gr(f(x)) k – 1} U {0}
Es fácil ver que Pk es un espacio vectorial sobre Fq de dimensión k y una base
natural es {1, x, x2 , x3 , … , xk-1 }
Considérese la siguiente función evaluación:
ev : Pk Fn q, ev(f(x)) = (f(1), f(α), … f(αn-1)}
Es fácil ver que esta función es Fq-lineal e inyectiva, por consiguiente su
imagen es un subespacio lineal de Fnq el cual es el código de Reed-Solomon
sobre Fq y se denota por RS(q; k). Este código es de longitud n y dimensión k
(la función ev es inyectiva). Más aun, su distancia mínima es d = n - k + 1, es
decir, RS(q; k) es un [n; k; n - k + 1] código lineal sobre Fq.
38
El código de Reed-Solomon tiene varias propiedades interesantes, entre otras
es un MDS-codigo (Maximum Distance Separable) y es cíclico.
Dado que {1, x, x2 , x3 , … xk-1 } es una base (natural) de Rk, si ev (xi) =
ri = (1, αi, … , αi(q-2)) para i = 0, 1, …, k - 1, una matriz generadora de este
código es aquella cuyos renglones son r0, r1, …;rk-1. [5]
En algunos casos es importante considerar el código extendido de Reed-
Solomon:
RS(q, k) = { (f(1), f(α) … f(αn-1), f(0)) : f Rk } el cual tiene parámetros [n + 1;
k; d + 1] y es también un MDS-código sobre Fq.
Cifrado de datos
En criptógrafa, también conocida como cifrado de datos, los campos de Galois
juegan un papel muy importante. Actualmente la criptografía tiene una gran
aplicación en diversas problemáticas que incluyen el comercio y banca
electrónica, firma y factura digital, tarjetas inteligentes, votación electrónica,
entre otros. En las siguientes líneas se mencionaran algunos sistemas de
cifrado dando énfasis a los campos de Galois.
Actualmente los sistemas de cifrado de datos se dividen en tres grupos: de
clave privada, de clave pública, y de flujo o cascada. Los primeros tienen la
característica que la clave que se usa para cifrar es la misma que se usa para
descifrar; por esta razón se les llama simétricos.
39
Los cifrados de clave pública tienen la característica que la clave K se
compone de dos partes, una de las cuales se hace pública, C (para cifrar,
encriptar), y la otra, D (para desencriptar), la conserva la entidad poseedora
de la clave. Una propiedad que tienen las partes C y D es que no se puede
obtener una de la otra, en particular, C D.
Por este motivo a dichos sistemas se las llama asimétricos. Estos dos tipos de
cifrado caen en la clase de cifrados de bloques. Los cifrados de flujo tienen la
característica de que la clave se va mezclando con el texto a cifrar, y no se
separan en bloques como en los otros dos sistemas.
Entre los sistemas de cifrado de llave privada más representativos
actualmente se encuentran el Data Encryption Standard (DES), Advanced
Encryption Standar (AES), SAFER, y Twofish.
En las siguientes líneas se mencionaran algunas estructuras algebraicas
relacionadas con los campos de Galois sobre las cuales se basan estos
sistemas.
El sistema de cifrado DES
Desarrollado por IBM (el reemplazo es 3DES). Este sistema maneja bloques
para cifrar y llaves de 26 = 64 bits, es decir, elementos del espacio vectorial
GF(2)6. Una forma alternativa de ver esos bloques es usando el anillo
GF(2)[x; y]=(x8 – 1, y8 – 1)
40
En la construcción de este sistema intervienen varias permutaciones las
cuales se pueden ver como permutaciones en el campo de Galois
GF(2)[z]=<f(z)> donde f(z) = z8 + z4 + z3 + z2 + 1 GF(2)[z] es irreducible.
Otras estructuras algebraicas usadas en el sistema DES, basadas en el campo
de Galois GF(2), incluyen las siguientes:
GF(2)[x; y] / < x7 – 1, y4 – 1>
GF(2)[u] / < u4 + u + 1>
GF(2)[v] / (v7 + v + 1)
Una de las partes medulares de los sistemas de cifrado simétricos son las
llamadas cajas de sustitución (S-boxes). Estas cajas son básicamente
funciones sobre espacios lineales de dimensión finita sobre campos de Galois.
[5]
Por ejemplo, en el sistema DES, una caja de sustitución es una función S :
GF(2)2 x GF(2)4 GF(2)4; donde GF(2) es el campo de los números binarios
y GF(2)n es el GF(2)-espacio vectorial de dimensión n.
El sistema de cifrado AES
Desarrollado por Vincent Rijnmen y Joan Daenmen. Su nombre original fue
Rijndael. Son varias las estructuras algebraicas usadas en el diseño del
sistema de cifrado AES, en las cuales los campos de Galois juegan un papel
muy importante. A continuación se mencionaran algunas de ellas.
41
La principal y básica estructura algebraica usada en el sistema AES es el
campo binario de Galois GF(2) (llamados bits). Este sistema maneja los bytes
(un byte son ocho bits) y por lo tanto estos se pueden representar como
elementos del GF(2)-espacio vectorial GF(2)8.
Si GF(2)[x] es el anillo de polinomios en una indeterminada con coeficientes
en GF(2) y < x8 - 1 > es el ideal de este anillo generado por el polinomio x8 - 1,
el anillo cociente R8 = GF(2)[x] /< x8 – 1 > es también un GF(2) espacio
vectorial de dimensión 8. Existe un isomorfismo (natural) de GF(2)-espacios
vectoriales entre GF(2)8 y R8, llamado la representación polinomial del
primero. Por consiguiente, a los bytes se les puede representar como
polinomios en una indeterminada de grado a los más 7 con coeficientes
binarios (con la aritmética dada por la relación x8 = 1).
Existe otra forma de representar a los bytes usando campos de Galois y que
es muy importante en el cifrado AES ya que sobre esta se define la caja de
sustitución. Esta estructura algebraica es la del campo finito GF(28) =
GF(2)[x] / < f(x)>; donde f(x) = x8 + x4 + x3 + x + 1 GF(2)[x] es irreducible.
[5]
Como GF(28) es un GF(2)-espacio vectorial de dimensión 8, existe un
isomorfismo (natural) entre GF(2)8 y este campo. Así, los bytes se pueden
representar como polinomios en una indeterminada con coeficientes
binarios de grado a lo mas 7, excepto que ahora su aritmética está regida por
la relación x8 = x4 + x3 + x + 1.
42
Otra propiedad importante de este campo de Galois que se usa en el sistema
AES es que el grupo GF(28)* = GF(28) \{0}> es cíclico de orden 28 - 1 = 255.
Por consiguiente un byte distinto de cero se puede identificar con un
polinomio de grado a lo mas 7 o bien con una potencia de un generador de
este grupo cíclico.
El modo de operación del sistema AES es por medio de estados.
Un estado se representa como un arreglo rectangular 4 x N donde cada
entrada es un byte y N depende de la longitud del bloque a cifrar, por ejemplo
si N = 4 se tiene un arreglo de 16 bytes. Así, un estado se puede representar
como un elemento del espacio vectorial [GF(2)8]4N. Una forma algebraica de
representar un estado es por medio de la identificación del espacio vectorial
[GF(2)8]4N con el anillo de polinomios GF(28)[x; y /< x4 – 1, yN – 1 >]. Por
ejemplo, si N = 4 los estados, es decir, el espacio vectorial [GF(28)]16, se
identifican con el anillo GF(28)[x, y] / < x4 – 1, y4 – 1 >
El campo de Galois GF(28) también se usa para definir la caja de sustitución
del sistema AES de la siguiente manera: como GF(28) es un campo, todo
elemento distinto de cero tiene inverso (multiplicativo) y se tiene
naturalmente la siguiente función: : GF(28) GF(28), ( ) = - 1, (0 ) = 0
la cual es una permutación.
Dado que el grupo multiplicativo de este campo tiene orden 255, esta
permutación se puede expresar como (x) = x254, es decir, es un polinomio
de permutación.
43
Otras funciones que se usan en la definición de la caja de sustitución del AES
son las siguientes:
L, : GF(28) GF(28), L(α)= αc0, (β) = d0 + β
donde c0 y d0 son elementos fijos del campo GF(28), La caja de sustitución es
la función:
S : GF(28) GF(28); S = L
El sistema de cifrado Twofish
Desarrollado por Bruce Schneier. Este es otro sistema de cifrado de llave
privada donde los campos de Galois se ponen de manifiesto. Este sistema
maneja bloques de texto y llaves formados por bytes, es decir, elementos del
espacio vectorial GF(2)8, los cuales se concatenan para formar palabras,
vistas como elementos de GF(2)32. Las cajas de sustitución de este sistema se
pueden ver como funciones S : GF(2)8 GF(2)8. Otra componente de
Twofish es una matriz de tipo MDS (Maximum Distance Separable) cuyas
entradas son bytes. Para realizar operaciones es necesario identificar a los
bytes con elementos de un campo. Este campo es GF(28) = GF(2)[x] /<v(x)>,
donde v(x) = x8 + x6 + x5 + x3 + 1 GF(2)[x] es irreducible sobre GF(2). Este
sistema además usa una matriz de tipo Reed-Solomon cuyas entradas son
también bytes. Para efectuar las operaciones se identifica el espacio GF(2)8
con el campo de Galois con 28 elementos, pero ahora descrito de la siguiente
manera:
GF(28) = GF(2)[x] /< w(x) > donde w(x) = x8 + x6 + x3 + x2 + 1. Dado que el
campo de Galois con 28 elementos es único modulo isomorfismos, estos dos
44
campos son isomorfos.
El sistema de cifrado SAFER
En sistema de cifrado SAFER (Secure And Fast Encryption Routine) también
usa fuertemente los campos de Galois, particularmente el campo GF(257). El
elemento 45 GF(257) es un generador del grupo cíclico GF(257)* y este
grupo se puede identificar con Z256, con lo cual se define la permutación
exp : Z256 Z256; exp(x) = 45x
que juega un papel importante en este sistema de cifrado. La permutación
inversa de exp se denota por log. [5]
El sistema de cifrado basado en curvas elípticas
Actualmente el RSA y el basado en curvas elípticas son los sistemas de
cifrado de datos más representativos de clase de cifrados de clave pública. El
sistema RSA (por las iniciales de sus creadores: Rivest-Shamir-Adleman) está
basado en la estructura del anillo de enteros modulares donde el modulo es
un entero grande (del orden de ciento cincuenta dígitos) el cual es el
producto de dos números primos, donde se usan varios resultados de Teoría
de Números como el Teorema (pequeño) de Fermat y de Euler, entre otros.
Las curvas elípticas definidas sobre un campo algebraicamente cerrado han
sido objeto de estudio desde hace mucho tiempo por diversos motivos.
Recientemente N. Koblitz y V. Miller, en forma independiente, presentaron un
sistema de cifrado de clave pública basado en el grupo de puntos (racionales)
45
de una curva elíptica definida sobre un campo de Galois, el cual, para
aplicaciones, se toma el campo de la forma GF(2n) para diversos valores de n,
por ejemplo n = 160.
En este sistema de cifrado los campos de Galois se manifiestan de varias
maneras. Para definir una curva elíptica se necesita un campo, el cual para
propósitos de cifrado debe ser de Galois, GF(q), con q = pn elementos, p un
numero primo y n > 0 un entero.
La relación que define una curva elíptica en general es un polinomio cubico
en dos indeterminadas con coeficientes en un campo, el cual bajo ciertas
condiciones se lleva a la forma normal de Weierstrass. Si el campo sobre el
cual se está trabajando es de Galois, GF(q), el polinomio que define a la curva
elíptica se puede reducir a una relación de la siguiente forma (dependiendo
de la característica del campo):
f(x, y) = y3 – ax3 –bx – c GF(q)[x, y]
y la curva elíptica, E, sobre GF(q) se define como:
E = { P = (x, y) GF(q) x GF(q) : f(x, y) = 0 }
En el conjunto E (o mejor dicho, de los GF(q)-puntos racionales de E) se
puede definir una operación que le da una estructura de grupo abeliano a
este conjunto. Si P, Q E cuyas coordenadas son elementos de GF(q), las
coordenadas de P y Q son en general funciones racionales en las coordenadas
de P y Q, las cuales a su vez son elementos del campo de Galois GF(q). En este
contexto una de las cuestiones importantes de los campos de Galois es
46
realizar aritmética rápida para obtener las coordenadas explicitas del
elemento P + Q, en particular nP, donde n > 0 es un entero. En un campo de
Galois uno de los principales problemas es determinar el inverso de un
elemento (distinto de cero).
En los últimos años se han llevado a cabo investigaciones para realizar
aritmética rápida sobre campos de Galois y que no ocupe muchos recursos
computacionales, con aplicaciones a cifrados de datos, códigos detectores-
correctores de errores, generación de sucesiones, etc.
Recientemente la llamada criptografía basada en identidad ha llamado la
atención de varios grupos de trabajo, donde las formas bilineales de J. Tate y
A. Weil, asi como los campos de Galois juegan un papel importante.
Geometría algebraica sobre campos de Galois
Otra de las areas donde los campos de Galois son de gran utilidad es en la
geometría algebraica, particularmente las curvas algebraicas. A fines de la
década de los 80, V.D. Goppa, introdujo los códigos lineales geométrico-
algebraicos también conocidos como códigos de Goppa, sobre una curva
algebraica definida sobre un campo de Galois. Dada una curva algebraica no-
singular, irreducible de genero g 0 definida sobre un campo de Galois
GF(q), con divisores D y G con soporte ajeno, si L(G) es el GF(q)-espacio
vectorial de funciones racionales asociado a G, la función evaluación
evD : L(G) GF (q)n , evD (f) =(f(P1), … f(Pn)) (donde sop(D) = (P1, … Pn),
determina un código lineal sobre el campo GF(q). [1]
47
El teorema de Riemann-Roch (y consecuencias) son una herramienta muy
útil en el estudio de estos códigos particularmente para determinar su
dimensión y cotas sobre la distancia mínima. Las diferenciales sobre la curva
también son de gran utilidad en el estudio del código dual de un código de
Goppa.
La geometría propia de la curva en cuestión así como los divisores que se
usen, proporcionan información más detallada sobre los códigos asociados.
Una forma alternativa del estudio de estos códigos es a través de los campos
de funciones.
Como ejemplo de códigos geométrico-algebraicos se tiene el código
extendido de Reed-Solomon
Fq (el género es g = 0), los divisores son G = P y D que es la suma de los
otros puntos de la recta proyectiva. Se puede ver que el Fq-espacio vectorial
L(G) es isomorfo a Rk y una matriz generadora de este código de Goppa es
básicamente la descrita anteriormente para el código de Reed-Solomon.
Otro problema interesante relacionado con geometría algebraica sobre
campos de Galois es determinar el número de puntos (racionales) de una
variedad algebraica de
48
finida sobre uno de estos campos. Un caso particular e interesante es el de las
curvas algebraicas, en especial las elípticas, hecho que se usa en los códigos
de Goppa y cifrado de datos, respectivamente.
No solo las curvas algebraicas sobre campos de Galois han sido estudiadas
por varios grupos de investigación sino que también variedades algebraicas
de dimensión mayor sobre campos de Galois son objeto de estudio,
particularmente en conexión con áreas como teoría de códigos y criptografía
(códigos definidos sobre la variedad de Veronese o intersección completa;
cifrado sobre jacobianos, por ejemplo de curvas hiperelipticas).
Sucesiones
El estudio de sucesiones ha sido muy importante en varias áreas de
matemáticas y estas se manifiestan de diversas maneras en diferentes
contextos en la naturaleza y actividad humana, de las cuales la sucesión de
Fibonacci es un representante. Debido al desarrollo de las comunicaciones
digitales, las sucesiones sobre estructuras algebraicas finitas,
particularmente campos de Galois es un tema de gran relevancia
actualmente. [4]
Una pregunta interesante en este tema es la generación de sucesiones con
propiedades particulares que permitan su aplicación en diversos contextos.
Algunas de estas propiedades incluyen pseudoaleatoriedad, correlación,
generación rápida y eficiente, entre otras. De particular importancia son las
sucesiones binarias (por sus aplicaciones) que se obtienen por medio de
49
recurrencias lineales, como es el caso de la sucesión de Fibonacci, y una
forma de generarlas es por medio de los llamados Registros de Cambio de
Retro-Alimentación Lineal (Linear Feed-back Shift Register, LFSR), los cuales
se pueden implementar en hardware para una mayor rapidez en la
generación de la sucesión y su aplicación en tiempo real. En el caso de
sucesiones binarias generadas por recurrencias lineales, estas se pueden
obtener por medio de la función traza definida sobre una extensión finita de
los números binarios, es decir, sobre un campo de Galois. [1]
De particular importancia son las sucesiones de máxima longitud, las
llamadas m-sucesiones. Aunque las sucesiones binarias son las mas
estudiadas por sus aplicaciones, desde el punto de vista matemático se
pueden usar campos de Galois mas generales y otras estructuras algebraicas
que incluyen los anillos de enteros modulares, Zm, o bien los anillos de Galois.
Cabe mencionar que el estudio de sucesiones, particularmente sobre
estructuras discretas, es de tal importancia que hay congresos
internacionales dedicados a este tema, una de ellas es la SETA (Sequences
and Their Applications).
Las sucesiones, en particular las m-sucesiones, tienen aplicación en una gran
variedad de contextos.
50
A continuación se mencionan algunos de ellos.
1. Los sistemas de posicionamiento global (Global Positioning Systems, GPS)
usan un LFSR para transmitir rápidamente una sucesión que indica la
posición de un objeto.
2. Los LFSR se usan para generar números pseudoaleatorios para su uso, por
ejemplo, en cifrados de cascada como es el A5/1 y A5/2, empleados en
teléfonos celulares con GMS, y el E0 usado en Bluetooth. Sin embargo, debido
a que la sucesión es generada a base de recurrencias lineales son susceptibles
del criptoanálisis, pero se modifican para que sean más robustas y se puedan
usar en otros contextos. [5]
3. Las sucesiones obtenidas por LSFR también se usan en transmisiones y
comunicaciones digitales, por ejemplo para tener una modulación y
demodulación robusta y eficiente.
Entre las empresas transmisoras que usan LFSR se cuentan, entre otras, las
siguientes:
ATSC Standards (digital TV transmission system North America), DAB
(Digital Audio Broadcasting system for radio), DVB-T (digital TV
transmission system Europe, Australia, parts of Asia), NICAM (digital audio
system for television).
Entre las empresas de comunicacion digital que usan LFSR se pueden
mencionar: IBS (INTELSAT business service), IDR (Intermediate Data Rate
service), SDI (Serial Digital Interface transmission), Data transfer over PSTN
51
(according to the ITU-T V-series recommendations), CDMA (Code Division
Multiple Access) cellular telephony, 100BASE-T2 \fast" Ethernet (scrambles
bits using an LFSR), 1000BASE-T Ethernet, the most common form of Gigabit
Ethernet, (scrambles bits using an LFSR), PCI Express 3.0, SATA, USB 3.0,
IEEE 802.11a (scrambles bits using an LFSR).
Otras aplicaciones
A continuación se mencionaran algunos otros ejemplos, sin entrar en detalle,
donde los campos de Galois juegan un papel importante.
1. Funciones especiales. El estudio de funciones sobre campos finitos ha
conducido a determinar aquellas con propiedades adecuadas para su uso en
criptografía, teoría de códigos, compartición de secretos, esquemas de
autenticación, etc., de entre las cuales se cuentan las funciones booleanas,
bent, casi-bent, perfectamente no-lineales, entre otras.
2. Esquemas de compartición de secretos. La idea de estos esquemas es que
se pueda compartir un secreto entre un numero n de entidades (personas)
asignando a cada una de ellas cierta información de tal manera que
reuniendo cualesquiera k n de esas porciones de información se pueda
recuperar el secreto, pero que con un número menor que k de personas no se
pueda recuperar dicho secreto. Uno de los primeros sistemas de esta
naturaleza fue introducido por A. Shamir usando interpolación de Lagrange,
el cual se puede realizar sobre cualquier campo, en particular sobre campos
de Galois.
52
En la literatura se encuentran otros esquemas de compartición de secretos
basados en conceptos como funciones booleanas con ciertas propiedades
donde los campos de Galois se hacen presentes.
3. Esquemas de autenticación. En la actualidad es muy importante que al
establecer una conexión para la transmisión de información, las partes
involucradas se autentiquen. Para tal fin se han introducido los esquemas de
autenticación. Conceptos como campos de Galois, funciones bent,
perfectamente no-lineales, etc. son usados para la descripción de este tipo de
esquemas, pero también otras estructuras algebraicas como los anillos de
Galois han sido usados para tal propósito.
4. Polinomios de permutación. Otro tema interesante en relación con los
campos de Galois son las permutaciones sobre estos campos,
particularmente aquellas inducidas por polinomios. Este tipo de
permutaciones tiene aplicación en diversas áreas incluyendo criptografía
como es el caso de sistemas de cifrado DES y AES.
Una componente importante en los turbo códigos son los intercambiadores
(interleavers) que bajo ciertas condiciones se pueden determinar cómo
polinomios de permutación.
5. Sumas exponenciales. Las sumas exponenciales sobre campos y anillos de
Galois es otro de los temas que han llamado la atención de varios grupos de
investigación por la gran variedad de aplicaciones en teoría de códigos (cotas
sobre la distancia mínima), estudio de funciones booleanas (funciones bent),
etc.
53
Otras áreas
Además de las áreas mencionadas donde los campos de Galois tienen una
gran aplicación, existen otros temas y áreas de estudio en los cuales la
influencia de las ideas de E. Galois ha prevalecido. Entre estas se cuentan, por
supuesto, la Teoria de Galois, Cohomologia de Galois, conjuntos (invariantes)
de Galois, geometrías de Galois, algunas áreas de combinatoria, sistemas
dinámicos sobre campos de Galois, matrices y grupos clásicos sobre campos
de Galois, información cuántica y su relación con campos de Galois, inclusive
biología y bioinformática, solo por nombrar algunas.
Mención especial debe darse a la demostración del Ultimo Teorema de
Fermat dada por A. Wiles, donde la teoría de Representaciones de Galois y su
conexión con curvas elípticas y formas modulares juega un papel importante.
En las últimas décadas, sobre todo con el desarrollo de las comunicaciones e
información digital, los campos de Galois han tenido, y se espera sigan
teniendo, un papel relevante en su desarrollo y aplicación a problemas en
diversas áreas del quehacer humano. Cabe señalar que desde hace varias
décadas se tienen eventos académicos y congresos dedicados al estudio de
los campos de Galois y aplicaciones, como es The International Conference on
Finite Felds and Applications, además se tienen varias revistas especializadas
donde se publica sobre diversos aspectos y aplicaciones de los campos de
Galois. Entre estas revistas se pueden mencionar por ejemplo: Finite Fields
and Their Applications; Designs, Codes and Cryptography; IEEE Transactions
54
on Information Theory; Applicable Algebra in Engineering, Communication
and Computing (AAECC); Journal of Combinatorial Theory, Discrete
Mathematics; Pure and Applied Algebra; Advances in Mathematics of
Communications (AMC), entre otras.
55
4. Codificación Reed – Solomon en GF(8)
El objetivo principal es estudiar los códigos Reed - Solomon.
Reed-Solomon es un código cíclico no binario y constituye una subclase de
los códigos BCH. Los códigos cíclicos son una subclase de los códigos de
bloque estándar de detección y corrección de errores que protege la
información contra errores en los datos transmitidos sobre un canal de
comunicaciones. Este tipo de código pertenece a la categoría FEC (Forward
Error Correction), es decir, corrige los datos alterados en el receptor y para
ello utiliza unos bits adicionales que permiten esta recuperación a posteriori.
[4]
El código fue inventado por Irving S. Reed y Gustave Solomon (de ahí su
nombre) en el año 1960. Este código se encuentra actualmente aplicado en
áreas como los CD, telefonía móvil y sondas espaciales (la sonda Galileo a
Júpiter en 1989, la sonda Magallanes a Venus ese mismo año o la sonda Ulises
al Sol en 1990, por citar algunos ejemplos).
También es de destacar el empleo del código Reed-Solomon en las
comunicaciones por satélite Digital Video Broadcasting (DVB), en la
transmisión digital de televisión ISDB-T, en la radio digital DAB+, así como en
los sistemas xDSL de comunicación por cable.
56
Un detalle particular en este proyecto radica en el hecho de que operamos en
el sistema de numeración binario y utilizando la propiedades del campo de
Galois, es por ello que GF(8) significa operaciones en campo de Galois en el
sistema binario (el número 2 implica binario) y de tres bits por símbolo.
Antes de introducir la teoría de los códigos Reed – Solomon es necesario
analizar el diseño de arquitecturas digitales utilizando compuertas XOR
4.1 Arquitecturas digitales
Es necesario utilizar los sistemas digitales para la implementación de la
teoría de los campos de Galois y específicamente en la codificación Reed -
Solomon
Es de notar que estas arquitecturas son realizables utilizando mapas de
Karnaugh de 3 variables.
Lo que debe tenerse en consideración al efectuar los mapas de Karnaugh es
ordenar del 1 al 7; pero estimando siempre los valores respecto del elemento
“a” que equivale a 010; este elemento se le suele denominar elemento
primitivo.
De esta manera la multiplicación por a, a2, a3 e inclusive a4 deben estimarse
con su equivalente respecto del elemento primitivo. [5]
Desarrollando los mapas de Karnaugh por cada una de las multiplicaciones
57
Multiplicación por a
b2 b1 b0 g2 g1 g0
0 0 0 0 0 0
0 0 1 0 1 0
0 1 0 1 0 0
0 1 1 1 1 0
1 0 0 0 1 1
1 0 1 0 0 1
1 1 0 1 1 1
1 1 1 1 0 1
b1
1
1 b0
b2
1
1
58
g2 = b1
g1 =
g0 = b2
b1
1 1 b0
b2
1 1
b1
b0
b2
1 1
1 1
LSB
MSB b2
b1
g2
g1
b0 g0
59
Multiplicación por a2
b2 b1 b0 g2 g1 g0
0 0 0 0 0 0
0 0 1 1 0 0
0 1 0 0 1 1
0 1 1 1 1 1
1 0 0 1 1 0
1 0 1 0 0 1
1 1 0 1 0 1
1 1 1 0 0 0
b1
1
1 b0
b2
1
1
60
g2 =
g1 =
g0 = b1
b1
1
1 b0
b2
1
1
b1
1 1 b0
b2
1 1
LSB
MSB b2
b1
g2
g1
b0 g0
61
Multiplicación por a3
b2 b1 b0 g2 g1 g0
0 0 0 0 0 0
0 0 1 0 1 1
0 1 0 1 1 0
0 1 1 1 0 1
1 0 0 1 1 1
1 0 1 1 0 0
1 1 0 0 0 1
1 1 1 0 1 0
b1
1 1 b0
b2
1 1
62
g2 =
g1 =
g0 =
b1
1
1 b0
b2
1
1
b1
1
1 b0
b2
1
1
LSB
MSB b2
b1
g2
g1
b0 g0
63
Multiplicación por a4
b2 b1 b0 g2 g1 g0
0 0 0 0 0 0
0 0 1 1 1 0
0 1 0 1 1 1
0 1 1 0 0 1
1 0 0 1 0 1
1 0 1 0 1 1
1 1 0 0 1 0
1 1 1 1 0 0
b1
1
1 b0
b2
1
1
64
g2 =
g1 =
g0 =
b1
1
1 b0
b2
1
1
b1
1
1 b0
b2
1
1
LSB
MSB
b2
b1
g2
g1 b0
g0
65
Multiplicación por a5
b2 b1 b0 g2 g1 g0
0 0 0 0 0 0
0 0 1 1 1 1
0 1 0 1 0 1
0 1 1 0 1 1
1 0 0 0 0 1
1 0 1 1 1 0
1 1 0 1 0 0
1 1 1 0 1 1
b1
1
1 b0
b2
1
1
66
g2 =
g1 = b0
g0 =
b1
1 1 b0
b2
1 1
b1
1
1 b0
b2
1
1
LSB
MSB b2
b1
g2
g1
b0
g0
67
Multiplicación por a6
b2 b1 b0 g2 g1 g0
0 0 0 0 0 0
0 0 1 1 1 1
0 1 0 1 0 1
0 1 1 0 1 1
1 0 0 0 0 1
1 0 1 1 1 0
1 1 0 1 0 0
1 1 1 0 1 1
b1
1
1 b0
b2
1
1
68
g2 = b0
g1 = b2
g0 =
b1
1 1 b0
b2
1 1
b1
b0
b2
1 1
1 1
LSB
MSB b2
b1
g2
g1
b0
g0
69
Un esquema para GF(16) y con multiplicación por a2 es el que se muestra a
continuación, a modo de observación:
Lo anterior puede interpretarse de la siguiente manera:
Las ecuaciones Reed-Solomon están basadas en los conceptos del campo de
Galois.
El polinomio x3 x 1 = 0 es denominado generador y el elemento primitivo
se denomina al parámetro a = 010.
70
4.2 Secuencias pseudoaleatorias.
Habitualmente, toda secuencia de números posee una razón aritmética,
geométrica, de carácter analítico, es decir utilizando una serie de elementos
operacionales para determinar una posición en particular de la secuencia
dada. [4]
Sin embargo existen secuencias como la siguiente: … 1, 2, 4, 3, 6, 7, 5, 1, 2, 4,
…
Si bien es cierto, es definitivo determinar el número que está antes del
número 7, y el número que le sigue, estimando la siguiente equivalencia en
formato de numeración binario, de la siguiente manera [3]
Denominamos al elemento a = 010, y la operación
1 001
2 010
4 100
3 011
6 110
7 111
5 101
1 001
71
Lo cual implica que , y de esta manera:
1 001 1
2 010 a
4 100 a2
3 011 a3
6 110 a4
7 111 a5
5 101 a6
1 001 a7
De esta manera las operaciones de adición, diferencia, multiplicación,
división, potenciación son ejecutables, y en este caso a7 = 1, esto implica que
citando el caso de a29 = (a7)4.a = a
1 a0
2 a1
4 a2
3 a3 = a 1
6 a4 = a.a3 = a(a 1) = a2 a
7 a5 = a.a4 = a(a2 a) = a3 a2
5 a6 = a.a5 = a(a3 a2 ) = a4 a3
1 a7 = a.a6 = a(a4 a3 ) = a5 a4
72
La implementación de los circuitos que sucesivamente generan las
multiplicaciones por el elemento primitivo “a”, en todas sus potencias ya ha
sido diseñado en la sección arquitecturas digitales.
Las ecuaciones Reed – Solomon están basadas en el hecho de que bajo GF(8)
A B C D E P Q = 0
a7 A a6 B a5 C a4 D a3 E a2 P a Q = 0
Para establecer el detalle de las expresiones algebraicas, lo que se trata es
que un emisor va a transmitir una información a un receptor vía una estación
base.
Las características de la información son tales que tiene la forma
A B C D E
Pero para que la información viaje en el medio o canal hasta el receptor a
través de la estación base, la información es codificada es decir la
información se convierte de la forma
A B C D E P Q
73
Reed – Solomon especifica que si la información codificada llega al receptor
sin error deben cumplirse las condiciones de sus ecuaciones.
5. Decodificación Reed Solomon en GF(8)
Es posible obtener los valores de P y Q algebraicamente
P = a6 A a B a2 C a5 D a3 E
Q = a2 A a3 B a6 C a4 D aE
Finalmente la información contiene 15 bits pues existen 5 símbolos de 3 bits
cada uno.
Ahora bien, la información codificada posee 21 bits pues son 7 símbolos de 3
bits cada uno.
5.1 Técnica convencional
Veamos:
Es necesario introducir el término de síndrome
En principio si las ecuaciones Reed-Solomon no son iguales a cero, entonces
sucede que existe un error.
74
Entonces el síndrome actúa por partida doble, es decir un valor de síndrome
actúa en la primera ecuación y otro valor en la segunda ecuación
A B C D E P Q = S0
a7 A a6 B a5 C a4 D a3 E a2 P a Q = S1
El cociente
Donde el valor de k posiciona el símbolo erróneo.
Es decir lo que se debe operar cada símbolo de 3 bits equivalente al valor de
a, a2, a3 hasta a7.
Las posiciones serán desde el símbolo A hasta el símbolo Q en el orden de 7 a
1.
De esta manera a los síndromes se conocen como localizador y corrector S1 y
S0 respectivamente.
El símbolo correcto se determina según corresponda es decir, símbolo
erróneo símbolo correcto = S0
75
De esta manera el receptor es capaz de detectar y corregir el error.
La desventaja es corrige 1 símbolo.
5.2 Técnica del borrado
Entonces se precisa tener la capacidad de corregir más de un símbolo y, en
este caso, la solución Reed-Solomon por la técnica del borrado puede
corregir 2 símbolos con error siempre y cuando el emisor le indique al
receptor que existen errores singulares en tales símbolos. [7]
Si consideramos la información recibida por el receptor
101100001010111100100
Y se sabe que los símbolos erróneos se ubican en los índices 4 y 5.
La técnica se procederá de la siguiente manera: primero de manera formal
sin técnica del borrado con la siguiente distribución:
7 A 101 a7 x A 101
6 B 100 a6 x B 010
5 C 001 a5 x C 111
76
4 D 010 a4 x D 111
3 E 111 a3 x E 010
2 P 100 a2 x P 110
1 Q 100 a x Q 011
S0 101 S1 000
La técnica del borrado específica que los símbolos erróneos deben “borrarse”
es decir hacer equivalente a cero.
Entonces la nueva tabla de distribución quedará de esta manera:
7 A 101 a7 x A 101
6 B 100 a6 x B 010
5 C 000 a5 x C 000
4 D 000 a4 x D 000
3 E 111 a3 x E 010
2 P 100 a2 x P 110
1 Q 100 a x Q 011
S0 100 S1 000
De esta manera aplicando teoría básica de operaciones binarias con
operaciones XOR:
S0 = C D
77
S1 = a5C a4D
Se obtienen los valores de C y D
C = 010
D = 100
Un conjunto de aplicaciones en las comunicaciones resulta de la siguiente
manera:
La comunicación establecida entre un emisor y tres receptores para
triangular la posición de una nave no autorizada en un área restringida,
utiliza un equipo de codificación y decodificación de señales digitales R-S,
bajo GF(8).
La turbulencia propia de la zona hace posible pronosticar que puedan
existir errores en la recepción. Cada receptor posee en su nave equipos de
decodificación de la misma naturaleza del emisor. La trama enviada por la
nave emisora desde su estación base tiene la información:
10110001010111110010010110011010011110010011110001010
0111100100
Determine la trama b1b2b3 siendo bk el bit corregido de cada trama R-S
recepcionada por cada nave receptora (k=1, 2, 3)
Una comunicación de carácter restringido debe enviar información
78
utilizando codificación Reed-Solomon operado bajo GF(8).
La operación necesita de tres entidades: un emisor, una estación base y
un receptor. La característica primordial de la comunicación es que el
receptor puede corregir dos símbolos de la trama codificada. Es
justamente la estación base quien señala los símbolos que contienen
error al receptor.
Determine la trama correcta que se necesita para ser retransmitida a
otras estaciones base siendo la trama recibida
101100001010111100100
y se ha notificado que los símbolos erróneos se ubican en las posiciones 2 y 4.
5.3 Arquitecturas con flip flops
La sucesión … 1, 2, 4, 3, 6, 7, 5, 1, …
se diseñará utilizando Flip Flops
tipo D, cuya respuesta de estados
se muestra.
Q2 Q1 Q0 D2 D1 D0
0 0 1 0 1 0
0 1 0 1 0 0
1 0 0 0 1 1
0 1 1 1 1 0
1 1 0 1 1 1
1 1 1 1 0 1
1 0 1 0 0 1
Qn Qn+1 D
0 0 0
0 1 1
1 0 0
1 1 1
79
D2 = Q1
D1 =
D0 = Q2
Q1
1
1 Q0
Q2
1
1
Q1
Q0
Q2
1 1
1 1
Q1
1 1 Q0
Q2
1 1
80
El circuito mostrado
también opera la sucesión
R-S bajo GF(8); pero
actuando un reloj en el
strobe de cada Flip Flop.
[4]
La arquitectura mostrada permite calcular el valor del síndrome S0 para una
palabra de código R-S bajo GF(8) desde el receptor.
El circuito es un simple verificador de paridad que acumula la suma en
módulo 2 de todos los símbolos que les son introducidos.
La arquitectura que permite calcular el valor del síndrome S1 contiene un
multiplicador de Campo de Galois en un bucle de realimentación de modo
que los primeros símbolos introducidos son elevados a potencias mayores
que los símbolos introducidos posteriormente ya que han circulado por el
multiplicador GF más veces.
81
82
Conclusiones
La implementación de circuitos multiplicadores para generar un
codificador Reed-Solomon bajo GF(8) es válido en los laboratorios
físicos de pregrado
La codificación Reed-Solomon se viene aplicando en la actualidad en
los sistemas de comunicaciones para corrección de errores en más de
50 años, y su popularidad se hizo evidente cuando Sony y Philips
inventaron el CD en el año 1982. La técnica del borrado es la más
eficiente.
Nuevamente la importancia del uso de los códigos Reed-Solomon se
ha hecho evidente con las ediciones de video en HD tanto en televisión
como en dispositivos móviles
En la actualidad con la difusión de la televisión digital terrestre ISDB-
T en nuestro país, antes de su implantación se difundieron por parte
de la delegación japonesa así como la de sus adversarios los
norteamericanos y europeos la fortaleza de la codificación Reed-
Solomon en el denominado canal externo.
83
Referencias bibliográficas
[1] Kenneth H. Rosen. Handbook of Discrete and Combinatorial Mathematics
CRC Press. 2000. [ Pages 259-289, 896-935 ]
[2] Roberto Ramirez Caicedo. Interpolación Digital y Modelado de Ruido en
Procesadores de señal D / A para audio digital. Tesis de obtención de Título
Profesional. Año 2000. [ Páginas 29, 30-37, 40, 192-221 ]
[3] DiBEG. Beneficios sin límites en una sola tecnología: ISDB-T. Manual de
exposición. Hotel Marriott, Lima Perú. 10.02.2009
[4] John Watkinson. The Art of Digital Audio. Butterworth-Heinemann. 2001.
[ Pages 313-318, 330, 337-341, -506-514 ]
[5] Niels Ferguson and Bruce Schneier. Practical Cryptography. Editorial
Wiley Publishing, Inc. 2003. [ Pages 69-69, 74, 77, 86,. 100, 236 ]
[6] Roberto Ramirez Caicedo. Seguridad en la Transmisión de Datos. Editorial
Instituto de Investigación UTP. 2003. [ Páginas 216, 219-221, 224, 230-231 ]
[7] Roberto Ramirez Caicedo. Seguridad en la Transmisión de Datos. Editorial
Instituto de Investigación UTP. 2003. [ Páginas 200-211 ]
84
Glosario
Anillo Estructura algebraica en matemáticas discretas. Un anillo es un conjunto en el que podemos sumar, restar y multiplicar.
Bits Binary Digits (Dígitos Binarios en inglés) Campo En álgebra abstracta, un campo es una estructura algebraica en la cual
las operaciones llamadas adición y multiplicación se pueden realizar y cumplen las propiedades: asociativa, conmutativa y distributiva de la multiplicación respecto de la adición
CRC Cyclic Redundance Coding (Código de Redundancia Cíclica, en inglés DSP Digital Signal Processing (Procesamiento Digital de Señales en inglés) Flip Flop Un biestable (flip-flop en inglés), es un multivibrador capaz de
permanecer en uno de dos estados posibles durante un tiempo indefinido en ausencia de perturbaciones.1 Esta característica es ampliamente utilizada en electrónica digital para memorizar información.
GF Galois Field (campo de Galois en inglés). Estructura matemática vinculada a las matemáticas discretas
ISDB-T ISDB (Integrated Services Digital Broadcasting) o Radiodifusión Digital de Servicios Integrados es un conjunto de normas creado por Japón para las transmisiones de radio digital y televisión digital.
Karnaugh Un mapa de Karnaugh (también conocido como tabla de Karnaugh o diagrama de Veitch, abreviado como Mapa-K o Mapa-KV) es un diagrama utilizado para la simplificación de funciones algebraicas Booleanas. El mapa de Karnaugh fue inventado en 1950 por Maurice Karnaugh, un físico y matemático de los laboratorios Bell. Las variables de la expresión son ordenadas en función de su peso y siguiendo el código Gray,
LSB Least Significant Bit (Bit menos significativo, en inglés) MSB Most Significant Bit (Bit más significativo, en inglés) Paridad Los códigos de paridad se usan en telecomunicaciones para detectar, y
en algunos casos corregir, errores en la transmisión. Para ellos se añade en origen un bit extra llamado bit de paridad a los n bits que forman el carácter original. Este valor del bit de paridad se determina de forma que el número total de bits 1 a transmitir sea par (código de paridad par) o impar (código de paridad impar). Así, para el código de paridad par el número de unos contando el
85
carácter original y el bit de paridad tiene que ser par. Por lo tanto, el bit de paridad será un 0 si el número total de unos a transmitir es par y un 1 para un número impar de unos. Por el contrario, para el código de paridad impar el número de unos contando el carácter original y el bit de paridad ha de ser impar. De esta forma, el bit de paridad será un 0 si el número total de unos es impar y un 1 para un número par de unos.
RS Reed Solomon (abreviatura) Síndrome Es un código que utiliza para detectar errores. El síndrome depende
solo del vector error y no de la palabra de código transmitida. Twofish En criptografía, Twofish es un método de criptografía simétrica con
cifrado por bloques desarrollado por Counterpane Labs y presentado al concurso del NIST que buscaba un sustituto para DES (el concurso AES). El tamaño de bloque en Twofish es de 128 bits y el tamaño de clave puede llegar hasta 256 bits. Twofish llegó a la ronda final del concurso del NIST, pero no fue elegido para la estandarización. TwoFish quedó tercero, tras Rijndael y Serpent. Twofish fue diseñado por Bruce Schneier, John Kelsey, Doug Withing, David Wagner, Chris Hall y Niels Ferguson. El Extended Twofish team, que realizó más profundos criptoanálisis de Twofish y otros participantes a AES incluyen a Stefan Lucks, Tadayoshi Kohno, y Mike Stay.
VHDL VHDL es un lenguaje de especificación definido por el IEEE (Institute of Electrical and Electronics Engineers) (ANSI/IEEE 1076-1993) utilizado para describir circuitos digitales y para la automatización de diseño electrónico . VHDL es acrónimo proveniente de la combinación de dos acrónimos: VHSIC (Very High Speed Integrated Circuit) y HDL (Hardware Description Language). Aunque puede ser usado de forma general para describir cualquier circuito digital se usa principalmente para programar PLD (Programable Logic Device - Dispositivo Lógico Programable), FPGA (Field Programmable Gate Array), ASIC y similares.
XOR Operación booleana y que es representada por su compuerta respectiva. Se le denomina también suma exclusiva y se representa mediante el símbolo
86
Indice alfabético
A ADSL 5 Anillo 29, 41, 52
B
Bits 6, 73, 74
C
Campos 28, 33, 52 Codificación 4, 8, 10, 82 CRC
D
Decodificación 4, 8, 10, 82 DSP 4
E
Esquema 8, 22, 52, 69
F
Flip Flop 78, 79, 80
G
Galois 27, 28, 49, 52
H
Hamming 35
I
ISDB-T 6, 7, 8, 9, 10
P
87
Paridad 5, 7, 35
R
Reed – Solomon 3, 7, 5, 55
S
Síndrome 73, 74, 75, 80
T
Twofish 39, 43
V
VHDL 3
Hoy en día las comunicaciones digitales se desarrollan de manera habitual en
cada instante de nuestras vidas, desde el uso de la telefonía celular hasta las
comunicaciones satelitales inclusive.
El uso de las herramientas digitales permite la simplificación de los
procedimientos habituales para reemplazarlos de manera eficaz y veloz, en
tiempo real.
Es muy común entonces, que los errores se cometen con cierta frecuencia y, la
capacidad de determinar el error y corregirlo permite reconocer si el emisor o
el receptor son capaces de efectuar tal proceso.
Es en ese sentido que la codificación Reed – Solomon dada su simplicidad, su
capacidad de eficacia y su fortaleza en el uso de las herramientas matemáticas
hagan posible que su implementación sea posible, hasta cierto nivel que pueda
ser utilizado en los estudios de ingeniería a todo nivel, y es precisamente este
proyecto el que permite un enfoque para tal propósito.