Cap 3

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 62

COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

3
Codificación de la fuente
y procesamiento de datos

3.1. INTRODUCCIÓN

Las grandes cantidades de información multimedial que se generan a diario y que requieren
transmitirse, superan con creces las capacidades de almacenamiento y transporte actuales, aún
con la aparición de nuevos dispositivos.

Los requisitos tecnológicos para estas aplicaciones suponen un avance en temas como:
Procesamiento de señales digitales (compresión, filtrado, etc.) y redes de comunicaciones (ancho
de banda cada vez más elevado o técnicas de transmisión adaptable a los distintos flujos de
información). Debido a estos avances, vemos como cada vez se hacen más necesarias las
técnicas de compresión de la información digital.

Por ejemplo, una imagen de dimensiones típicas ( 1024 × 1024 píxeles en true color) requieren
3MB para su almacenamiento. Incluso en RDSI con un ancho de banda de 64 K bits seg , esta
imagen requeriría cerca de 7 minutos para su transmisión. Una posible solución consiste en
aumentar el ancho de banda de la red (usando fibra óptica, por ejemplo); otra opción es utilizar
algún método de compresión, lo cual representa una forma mucho más económica e inmediata
en casi todos los casos. Si conseguimos una compresión 10 : 1 con respecto a la imagen
original, su almacenamiento tan sólo precisará de 300 KB y la demora en la transmisión se
reduce a menos de 38 seg . Esto se traduce en un mejor aprovechamiento de la red y además a
un costo realmente bajo.

3.2. COMPRESIÓN DE INFORMACIÓN

¿Qué es la compresión? Se puede entender la compresión de datos como una reasignación de


códigos, en la que se pasa de una descripción del elemento que se desea comprimir en un código
inicial, a una descripción del mismo elemento, pero utilizando un código distinto, incrementando
así la densidad efectiva de información. Un efecto colateral que observamos al aplicar los
distintos algoritmos de compresión es la pseudo-encriptación de los datos, ya que no podemos
devolverles su forma original a menos que se revele el proceso de compresión o que éste sea
descubierto mediante técnicas de ingeniería inversa.

Ventajas de la compresión

• Menor capacidad de almacenamiento.


• Reducción en el ancho de banda del canal de transmisión.
• Ahorro en el tiempo de procesamiento de la información.

47
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Componentes importantes de un algoritmo de compresión

• Modelo: Es capaz de determinar las probabilidades de los símbolos del alfabeto que
componen el mensaje que se debe codificar, y de aprovechar la estructura de los datos para
esta estimación.

• Codificador: encargado de asignar palabras del nuevo código a cada símbolo del mensaje
fuente, en función de las probabilidades que el modelo le entregue.

Clasificación de los algoritmos de compresión

Las técnicas de la compresión se pueden categorizar según lo demuestra la siguiente tabla, en


tres tipos de codificación: entropía, fuente, y codificación híbrida. La codificación de la entropía
es un proceso lossless, mientras que la codificación de fuente es a menudo lossy. La mayoría de
los sistemas de multimedia utilizan técnicas híbridas: combinaciones de la codificación de la
entropía y de fuente, sin nuevos algoritmos de proceso.

Tipo de código Bases Técnicas


Codificación Run-length
Codificación de Codificación de Huffman
la entropía
Codificación Aritmética
DPCM
Predicción
DM
FFT
Transformación
Codificación de DCT
la fuente Posición de Bit
Codificación por capas (de
acuerdo a su importancia) Codificación de sub-
banda adaptable
Vector de cuantización
JPEG
Codificación
MPEG
hibrida
H. 263
Tabla Nº 3.1. Clasificación de las técnicas de codificación y de compresión.

La codificación de la entropía
Los datos que se comprimirán se ven como secuencia de los valores digitales de estos datos, y no
se hace caso a su semántica. Es sin pérdida porque los datos antes de la codificación son
idénticos a los datos después de descodificar; no se pierde ninguna información. Así la
codificación de la Run-length, por ejemplo, se puede utilizar para la compresión de cualquier
tipo de datos en un sistema de ficheros: texto, imágenes inmóviles para el facsímil, o como parte
de la película o de la codificación de audio.

La codificación de la fuente
El grado de compresión alcanzable con esta técnica a menudo depende del medio. En el caso de
la compresión con pérdida, existe una relación entre los datos sin codificar y los datos
decodificados; las secuencias de datos son similares pero no idénticas. Las características del
medio pueden ser explotadas.

En el caso de imágenes inmóviles, se utilizan las redundancias espaciales para comprimir con
una técnica de predicción. Otras técnicas realizan una transformación del dominio espacial al
dominio de la frecuencia usando la transformada del coseno. Las frecuencias bajas, definen el
color promedio, y las frecuencias altas contiene los bordes agudos; por lo tanto, las frecuencias
bajas son mucho más importantes que las frecuencias altas, una característica que se puede
utilizar para la compresión.

Compresión hibrida
Es utilizada a menudo en los datos de audio y de video en sistemas de multimedia; se compone
de diversas técnicas.

48
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Compresión LOSSY y LOSSLESS

• Con pérdidas (LOSSY): Este grupo lo conforman todos aquellos métodos que durante el
proceso de compresión pierden información en forma involuntaria (como errores de
redondeo) o voluntaria (desestimación de ciertos valores). El proceso de compresión no es
totalmente reversible, es decir, si procedemos en forma inversa al algoritmo de compresión
(descompresión), no obtenemos los datos originales. En compresión de imágenes, el método
con pérdidas más utilizado en la actualidad son las versiones del estándar JPEG.

• Sin pérdidas (LOSSLESS): encontramos todos aquellos métodos que comprimen la entrada
tal cual y al aplicar el proceso inverso (descompresión) obtenemos una copia idéntica a la
entrada del compresor. Se caracterizan porque la tasa de compresión que proporcionan está
limitada por la entropía de la señal original.
Comparación
Los métodos sin pérdidas tienen muy limitado índice de compresión, pueden llegar a comprimir
un archivo, en valores típicos de 5 : 1 o menos; sin embargo los métodos de compresión con
pérdidas pueden obtenerse sin problemas índices de compresión superiores a 20 : 1 y tienen su
principal aplicación en la compresión de imágenes digitales, video y sonido, debido a que estos
métodos explotan las limitaciones de percepción de los sentidos humanos.
Por ejemplo, en imágenes, se aprovecha notablemente el hecho de que en el ojo humano las
pequeñas variaciones de color se perciben con menor precisión que los cambios en el brillo, de
forma que podemos reducir la cantidad de información destinada a los cambios de color, y
mantener la información destinada a los cambios de brillo sin que se aprecien cambios notorios.
Compresión sin pérdidas
La mayoría de información que usamos es altamente correlacionada. En otras palabras, ella
inherentemente contiene redundancia. Lo que indica que es posible usar compresión sin pérdida
de información o con pérdida de información. El mayor requerimiento de la compresión es poder
rápidamente intercambiar entre los datos comprimidos y los originales.
Algunas de las técnicas de compresión sin pérdidas, son: Run-length, Árbol de Huffman,
codificación de longitud variable, codificación aritmética, codificación basada en diccionarios,
etc.

• RLE (Run Length Encoding): Es una técnica eficiente sólo en aplicaciones que involucren
muchos caracteres repetidos; ejemplo, en una imagen sustituye la información gráfica de
píxeles que se repiten por el valor del color de uno de ellos y la posición de cada uno de los
puntos que lo utilizan. Esta técnica es eficiente cuando dentro del fichero gráfico que se va a
comprimir se repite un byte sucesivamente un número grande de veces. En estos casos,
todos los bytes iguales se sustituyen por dos, el primero es un byte de escape que indica el
número de veces que se repite el segundo.

Figura Nº 3.1. Algoritmo de compresión RLE sin pérdidas.

Existen diferentes formas de implementar RLE. Una de ellas, la más ineficiente, es utilizar
un carácter, llamado comúnmente DLE, que sirva para indicar que se ha producido una
repetición de un carácter. Otra es utilizando un carácter "centinela", con un bit que indica si
la siguiente información es acerca de una repetición o son datos sin repetición.
Este método permite obtener un alto nivel de compresión en imágenes que contengan
muchas áreas del mismo color como los dibujos, sin que se produzcan pérdidas de calidad.
El problema surge cuando los colores de la imagen son muy dispares, caso en el que se
pueden obtener archivos de mayor tamaño que los originales.
RLE es el algoritmo utilizado en los formatos gráficos BMP y PCX, aunque cada uno usa un
método distinto de implementación.
El siguiente ejemplo ilustra la codificación RLE para una secuencia de datos que tiene
valores frecuentes de ceros. Cada vez que un cero se encuentra en los datos de entrada de
información, dos valores se escriben en el fichero de salida: el primero de estos valores es

49
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

un cero, un indicador de que la compresión RLE está comenzando; el segundo valor es el


número de ceros. Si la RLE media es más larga que dos, la compresión ocurrirá. Por otra
parte, muchos ceros aislados en los datos pueden hacer que el archivo codificado sea más
grande que el original.
Trama de datos original: 17 8 54 0 0 0 97 5 16 0 45 23 0 0 0 0 0 3 67 0 0 8
Codificación run-length: 17 8 54 0 3 97 5 16 0 1 45 23 0 5 3 67 0 2 8
• Codificación de Huffman: es una técnica de compresión estadística que proporciona una
reducción en la longitud promedio del código usado para representar los símbolos de un
alfabeto. Un código de Huffman puede construirse de la siguiente manera:
¾ Calcúlese las veces que aparece cada carácter o elemento del archivo.
¾ Ordénelos de menor a mayor.
¾ Cada elemento se convierte en un árbol (de un solo elemento). Se crean varios árboles,
uno por cada uno de los símbolos del mensaje, consistiendo cada uno de los árboles en
un nodo sin hijos, y etiquetando cada uno con su símbolo asociado y su frecuencia de
aparición.
¾ Mientras la lista tenga más de un elemento, se saca los dos primeros árboles formando
un nuevo árbol con ellos, sumar sus frecuencias e insertar ordenadamente el árbol en la
lista. Se toman los dos árboles de menor frecuencia, y se unen creando un nuevo árbol.
La etiqueta de la raíz será la suma de las frecuencias de las raíces de los dos árboles que
se unen, y cada uno de estos árboles será un hijo del nuevo árbol. También se etiquetan
las dos ramas del nuevo árbol.
¾ Los códigos en binario de cada carácter se asignan en función del camino a recorrer en
el árbol. Si en el recorrido se toma la rama izquierda se pone un 1 y si se sigue la rama
derecha se pone un 0 , así hasta llegar al elemento. Se repite este paso hasta que sólo
quede un árbol.

EJEMPLO 3.1._______________________________________________________________________
La codificación Huffman convierte los valores de brillo de los píxeles de la imagen original
en nuevos códigos de longitud variable, basado en su frecuencia de ocurrencia en la imagen.
De esta manera, a los valores de brillo que ocurren más frecuentemente se les asignan los
códigos más cortos y a los valores de brillo que ocurren con menos frecuencia se les asignan
los códigos más largos. El resultado es que la imagen comprimida requerirá de menos bits
para describir la imagen original.
El esquema de compresión Huffman comienza mirando el histograma de brillo de una
imagen. Con el histograma, se tiene disponible la frecuencia de ocurrencia para cada brillo
en la imagen. Ordenando los valores de brillo por sus frecuencias de ocurrencia, se obtiene
una lista donde el primer valor se encuentra más a menudo en la imagen, y el último valor se
encuentra menos en dicha imagen. Con esta lista, el codificador Huffman asigna nuevos
códigos a cada valor de brillo. Los códigos asignados son de longitudes variables; los
códigos más cortos son asignados a los primeros (más frecuentes) valores m de la lista y,
eventualmente, los códigos más largos se asignan a los últimos (menos frecuentes) valores
de la lista. Finalmente, la imagen comprimida se crea sustituyendo los nuevos códigos de
valores de brillo de longitud variable por los códigos de valores de brillo originales de 1
byte. Por supuesto, la lista de códigos Huffman que acopla los valores de brillo originales a
sus nuevos códigos Huffman variables se debe añadir a la imagen para el uso de la operación
de descompresión Huffman.
La siguiente figura muestra una imagen de 640 píxeles por 480 líneas, donde cada píxel
es representado por un valor de brillo de tres bits. El histograma de la siguiente imagen
muestra el número real de píxeles en la imagen con cada uno de los ocho valores de brillo. El
brillo se ordena basado en sus frecuencias de ocurrencia y entonces se combina en un árbol
de Huffman. Aunque todos los píxeles en la imagen original fueron codificados como
valores de brillo de tres bits, los códigos Huffman son tan pequeños como un bit y pueden
ser tan grandes como 7 bits. El código Huffman más largo nunca puede ser mayor que el
número de valores de brillo diferentes en la imagen (en este caso 8 ) menos 1 . Aunque una
imagen codificada con Huffman puede tener un poco de brillo con códigos muy largos, sus
frecuencias de ocurrencia siempre son estadísticamente bajas.

50
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Figura Nº 3.2. Imagen de una casa: objeto de compresión

Figura Nº 3.3. Histograma de brillo de la casa: objeto de compresión

Figura Nº 3.4. Árbol de Huffman del ejemplo.

Los códigos Huffman son asignados creando un árbol de Huffman que hace combinaciones
con los valores de brillo basado en la suma de las frecuencias de ocurrencia. El árbol de
Huffman asegura que los códigos más largos se asignen a los brillos menos frecuentes y los
códigos más cortos se asignen a los brillos más frecuentes. Usando el brillo clasificado en
orden de sus frecuencias de ocurrencia, los dos del final de la lista (menos frecuentes) se
combinan y se etiquetan como 0 y 1 . Los brillos combinados son representados por la
suma de las frecuencias de ocurrencia. Entonces, se determinan y se combinan las próximas
dos frecuencias de ocurrencia más bajas. De nuevo, el siguiente par se etiqueta 0 y 1 , y es
representado por la suma de las frecuencias de ocurrencia. Esto continúa hasta que todo el
brillo se ha combinado. El resultado es un árbol que, cuando se sigue del final hasta el
principio, indica el nuevo código Huffman binario para cada brillo en la imagen.

La cantidad de datos de la imagen original puede calcularse como 640 × 480 × 3 bits. La
cantidad de datos de la imagen codificada por Huffman puede calcularse como la suma de
las ocho frecuencias de ocurrencia multiplicadas por el respectivo número de bits en su
código. La descompresión de imágenes Huffman invierte el proceso de compresión
sustituyendo los valores de brillo originales de longitud fija de un byte por valores
codificados de longitud variable. La imagen original se reconstruye exactamente. La
compresión de imágenes Huffman generalmente proporcionará razones de compresión de
alrededor de 1.5 : 1 a 2 : 1 .

51
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Es posible definir un árbol de Huffman canónico; este árbol canónico puede ser
representado en forma muy compacta, transmitiendo el bit de longitud de cada código. Esta
técnica es usada en la mayoría de los archivadores (pkzip, winzip, Arj, etc.).
Un código de Huffman es un código de longitud variable VLC, en el que la longitud de
cada código depende de la frecuencia relativa de cada símbolo en el texto: cuanto más
frecuente sea un símbolo, su código asociado será más corto. Además este código es libre de
prefijos; es decir, ningún código forma la primera parte de otro código; esto permite que los
mensajes codificados sean no ambiguos.
El algoritmo de Huffman 1 es capaz de producir un código óptimo en el sentido de mínima
redundancia para el código de entrada. Esta comprensión solo será óptima si las
probabilidades de todos los símbolos de entrada son potencias enteras de 12 . El peor de
todos los casos se presentará cuando algunos de los símbolos posea una probabilidad
cercana al 100% .
Se basa en las reglas de D. Huffman-1952, que señala los siguientes pasos: 1) Se ordenan
los puntos de acuerdo con la probabilidad de ocurrencia del evento. 2) Se toman los 2
eventos de menor probabilidad. 3) Se asigna un bit, 1 al de menor probabilidad de ambos y
0 al de mayor probabilidad. 4) Si tienen la misma probabilidad se asigna en forma
indistinta. 5) Se suma la probabilidad de los eventos codificados y se pasa a la lista de
eventos. 6) Se toman los eventos de menor probabilidad y se repite la asignación anterior.
Puede observarse que el código con menor probabilidad de ocurrencia tendrá asignada la
mayor cantidad de bits y el de mayor probabilidad la menor cantidad. Se puede comparar el
valor promedio de bits necesarios para una codificación: en una secuencia de 8 eventos el
valor promedio para una codificación de longitud constante es 3 bits código mientras que para
la longitud variable es 2,65 bits código (sumatoria del producto de la probabilidad de
ocurrencia por el número de bits involucrados). Por otro lado, no se requiere sincronización
ya que ninguna secuencia simula el inicio de otra secuencia distinta. La codificación VLC
requiere conocer la probabilidad de la fuente de señal. Para determinar un procedimiento
dinámico se han desarrollado algoritmos de cálculo para modificar en forma adaptativa la
tabla de codificación.
La codificación de longitud variable (Huffman) reduce la entropía de los datos; permite
reducir la velocidad promedio de un canal asignando a la secuencia más probable, la
longitud de código más corta. Es utilizado en facsímil con una relación de compresión de
15 : 1 . También se aplica en JPEG/MPEG y otros procesos.
Otra técnica de codificación es la codificación de Shannon-Fano; comparada esta técnica
con Huffman, ésta siempre genera códigos óptimos, mientras Shannon-Fano algunas veces
usa unos pocos bits de más. Aparentemente la codificación de Huffman o Shannon-Fano son
el medio perfecto para comprimir datos, sin embargo, no siempre es conveniente usarlos.

• Codificación aritmética: trata el mensaje como una sola unidad (una técnica para la cual, la
codificación de Huffman, requiere la enumeración de cada posible mensaje individual), y así
ataca el límite teórico de la entropía para la eficiencia en la compresión de cualquier fuente.

Las palabras de código, de la codificación aritmética, definen un intervalo de números reales


entre 0 y 1 . Conforme aumenta el número de símbolos del mensaje, el intervalo utilizado
para representarlo se va haciendo menor y se va incrementando el número de unidades de
información necesarias para representar dicho intervalo. Cada símbolo del mensaje reduce el
tamaño del intervalo según su probabilidad de aparición. Los símbolos más parecidos
reducen el rango por menos, y así se añaden menos bits al mensaje. La codificación
aritmética no es completamente eficiente para mensajes cortos; sí lo es, en un 100% , para
mensajes largos.

1 Fue desarrollado por David A. Huffman en 1952.

52
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

En la codificación aritmética no existe una correspondencia biunívoca entre los símbolos


fuente y las palabras código. En cambio, se asigna una sola palabra código aritmética a una
secuencia completa de símbolos fuente. Puesto que esta técnica no requiere, como sucedía
con la técnica de Huffman, que cada símbolo de la fuente se traduzca en un número entero
de símbolos del código (esto es, que los símbolos se codifiquen uno a uno), se alcanza (solo
en teoría) el limite establecido por el teorema de codificación sin ruido.

La siguiente figura ilustra el proceso básico de la codificación aritmética. En este caso, se


codifica una secuencia o mensaje de cinco símbolos a1 a 2 a 3 a 4 a5 , generados por una
fuente de cuatro símbolos. Al principio del proceso de codificación, se supone que el
[
mensaje ocupa todo el intervalo semiabierto 0, 0.1) . Como se muestra en el cuadro, este
intervalo se subdivide inicialmente en cuatro regiones en función de las probabilidades de
[
cada símbolo de la fuente. Por ejemplo, se asocia el subintervalo 0, 0.2 ) al símbolo a1 .
Puesto que se trata del primer símbolo del mensaje a codificar, el intervalo del mensaje se
[ [
reduce inicialmente a 0, 0.2 ) . Así, en la figura el intervalo 0, 0.2 ) abarca toda la altura
de la figura y se marcan los extremos con los valores del rango reducido. Posteriormente, se
divide este rango reducido de acuerdo con las probabilidades de los símbolos de la fuente
original, y el proceso continúa con el símbolo del mensaje. De esta forma, el símbolo a 2
reduce el subintervalo a [0.04, 0.08) , a3 lo reduce aún más, dejándolo en
[0.056, 0.072 ) , y así sucesivamente. El último símbolo del mensaje, que se debe reservar
como indicador especial de fin de mensaje, reduce el intervalo, que pasa a ser
[0.06752, 0.0688) . Por supuesto, se puede utilizar cualquier número que esté dentro del
subintervalo, como por ejemplo el 0.068 , para representar el mensaje.

Figura Nº 3.5. Proceso de codificación aritmética.

Símbolo fuente Probabilidad Subintervalo inicial


a1 0 .2 [0 , 0.2)
a2 0 .2 [0.2 , 0.4 )
a3 0 .4 [0.4 , 0.8)
a4 0 .2 [0.8 , 1)
Tabla Nº 3.2. Equivalencias: símbolos fuente, probabilidad y sub-intervalos iniciales.

En el mensaje codificado aritméticamente de la figura anterior, se utilizan tres dígitos


decimales para representar el mensaje de cinco símbolos. Esto se traduce en 53 , ó 0.6
dígitos decimales por símbolo fuente, lo que se aproxima bastante a la entropía de la fuente,
que resulta ser de 0.58 dígitos decimales por símbolo. Conforme aumenta la longitud de la
secuencia a codificar, el código aritmético resultante se aproxima a límite establecido por el
teorema de la codificación sin ruido. En la práctica, existen dos factores que hacen que el
rendimiento de la codificación se aleje de este límite: 1) La inclusión del indicador de fin de
mensaje, necesario para separar un mensaje de otro. 2) La utilización de aritmética de
precisión finita.

53
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

• Codificación basada en diccionarios: se fundamenta en ciertas secuencias que son más


comunes y se guardan en diccionarios que pueden ser estáticos o adaptativos.
El código Lempel- Ziv (LZ): es un formato especial que permite codificar las secuencias
repetitivas; fue desarrollado por los matemáticos Abraham Lempel y jacob Ziv en los años
1977 y 1978. La versión del algoritmo del año 1977 se denomina LZ-77 y utiliza el
siguiente criterio: 1) Considerar la secuencia ...abracadabrarrarrad...; 2) Resultado inicial:
...daabracadabrarrarradaab... (7,4); donde 7 indica la longitud hacia atrás y 4 la longitud de
la copia. 3) Es decir, indica la localización de la ocurrencia previa; y la longitud de la
secuencia respectivamente. 4) Resultado posterior: ...daabracadabrarrarradaab.... (3,5).
El algoritmo de 1978 se denomina LZ-78; una variante refinada de LZ-78 debida a Terry
Welch se llama LZW (Lempel-Ziv-Welch), y se usa en el comando de compresión de
UNIX, GIF y V.42bis. LZW es un compresor tipo diccionario, que utiliza para la
compresión una tabla de cadenas, remplazando las cadenas de caracteres iguales del fichero
por códigos numéricos únicos que las representan; con estos códigos se comprimen los
caracteres aunque no se encuentren en sucesión. En el fichero comprimido no aparece
explícitamente la tabla de cadenas, sino la tabla de caracteres individuales y el conjunto de
todos los códigos generados; de esta forma se consiguen niveles de compresión máxima de
2:1.
La norma ITU-T V.42 describe la compresión de datos mediante LZW para módems de
datos en la red telefónica. Utiliza un tamaño de diccionario mínimo de 512
(9 bits de la rgo ) y recomendado de 2048 palabras.
Descompresión
La descompresión es el proceso inverso de la compresión. Los codificadores y los
decodificadores específicos pueden ser puestos en ejecución de diferente forma. La codificación
simétrica se caracteriza por los costos comparables para codificar y descodificar, que es
especialmente deseable para las aplicaciones de diálogo; mientras que, la técnica asimétrica, el
proceso de descodificar es considerablemente menos costoso que el proceso de codificación.
Esto se presenta en las aplicaciones donde se realiza la compresión una vez y ocurre la
descompresión con frecuencia, o la descompresión ocurre rápidamente. Por ejemplo, un módulo
audio-visual del curso se produce una vez, pero es descodificado posteriormente por muchos
estudiantes que lo utilizan. El requisito principal es descompresión en tiempo real. Una técnica
asimétrica se puede utilizar para aumentar la calidad de las imágenes comprimidas.
3.2.1. Codificación de voz
Codificadores de fuente: codifican la voz mediante la extracción de un conjunto de parámetros,
los cuales se digitalizan y se transmiten al receptor; en éste, se utilizan dichos parámetros para
fijar los valores de los generadores y filtros, que sintetizan la voz a la salida.

Figura Nº 3.6. Diagrama de bloque de un codificador de voz.

Codificadores de forma de onda: utilizan algoritmos para codificar y descodificar de modo que
la salida del sistema es una aproximación de la forma de entrada. Ejemplos de codificadores de
forma de onda: ΔPCM, Δ-APCM, DPCM, ADPCM.

Figura Nº 3.7. Diagrama de bloques de un sistema de codificación/decodificación de forma de onda.

Las velocidades de transferencia de bits de estos codecs son bajas: 24 Kbps . Otras técnicas
avanzadas de codificación alcanzan tasas de transferencia de algunos Kbps . Algunas técnicas
que están disponibles para lograr codificación y decodificación de forma de onda a bajas

54
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

velocidades de transferencia de bits son: Predicción lineal, codificación de sub-banda adaptable,


cuantización vectorial, etc.
Calidad de transmisión en la codificación de voz: La calidad de una señal de voz decodificada
depende de la tasa de transmisión.
MOS > 4 : Calidad de transmisión de difusión musical, similar a FM (> 64 Kbs ) .
MOS > 3 : Calidad telefónica internacional (entre 16 y 64 Kbs ) .
MOS > 2 : Calidad de transmisión de comunicaciones móviles ( entre 7.2 y 12 Kbs ,
señales inteligibles con distorsiones perceptibles ) .
MOS > 1 : Calidad sintética (< 5.2 Kbs , uso en vocoders ) .
MOS < 1 : Calidad no aceptable.
Predicción lineal: el valor actual se puede estimar a partir de valores pasados por medio de un
filtro de predicción. Codificación de sub-banda adaptada: asigna bits según el espectro de voz
de entrada y las propiedades de la audición. Cuantización vectorial: bloques enteros de
muestras se codifican a la vez, en lugar de codificarse una por una. Ejemplo: VSELF, Filtro de
excitación lineal excitado por suma vectorial, usado en teléfonos celulares.
En la compresión de imágenes se utiliza la codificación predictiva sin pérdida que se basa en
la eliminación de las redundancias entre píxeles muy próximos, extrayendo y codificando la
nueva información que aporta cada píxel; esta nueva información es el resultado de la diferencia
entre el valor real y el valor estimado de ese píxel. Las siguientes figuras muestran los
componentes básicos de un sistema de codificación predictiva sin pérdidas. El sistema consta de
un codificador y de un decodificador, y ambos contienen un predictor idéntico. A medida que se
va introduciendo sucesivamente cada píxel de la imagen de entrada, representado por f n , en el
codificador, el predictor genera el valor anticipado de dicho píxel en función de algún número de
entradas anteriores. La salida del predictor se redondea después al entero más cercano,
representado por f ' n , y se utiliza para construir la diferencia, o error de predicción.

Figura Nº 3.8. Diagrama de bloques de un codificador predictivo sin pérdidas.

Figura Nº 3.9. Diagrama de bloques de un descodificador predictivo sin pérdidas.

En la codificación predictiva de dos dimensiones, la predicción es una función de los píxeles


anteriores de una exploración de izquierda a derecha y de arriba abajo de una imagen. La
estructura fundamental para la codificación predictiva de una imagen, es la modulación de pulsos
codificados diferenciales (DPCM). Esto implica, que la cantidad que se codifica es la diferencia
entre píxeles de brillo.
• Modulación delta PCM
En lugar de transmitir la representación codificada de una muestra en ocho bits, se transmite un
bit sencillo "0" ó "1" , para indicar si la muestra que se transmite es menor o mayor que la
muestra anterior.
Ma → Muestra actual M an → Muestra anterior
Algoritmo: Si M a < M an → se transmite "0" lógico
Si M a > M an → se transmite "1" lógico

55
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Objetivos de la modulación delta PCM: Reducir el ancho de banda en la transmisión, reducir el


costo por bit transmitido y obtener mayor eficiencia. En la transmisión de voz o imágenes la
información pasada contiene también parte de la información presente (alto grado de
redundancias); debido a esto, se puede sobre-muestrear y realizar algo de predicción de forma
que solo las señales nuevas requieran ser transmitidas.

Figura Nº 3.10. Sistema Δ PCM: (a) Transmisor Δ PCM, (b) Receptor Δ PCM.

Inicialmente el contador se pone en ceros y el DAC produce 0 voltios. La primera muestra se


convierte en señal PAM y se compara con 0 voltios. El resultado del comparador es una
condición + V : "1 lógico" , ó − V : "0 lógico" .

El ruido de cuantización a la salida del decodificador ΔPCM puede ser de 4 tipos:


¾ Ruido de sobrecarga: Sucede cuando V p de entrada analógica sobrepasa V . La salida
analógica del sistema PCM tendrá crestas planas cerca de valores picos. Se distorsiona la
señal recuperada por armónicas que generan las crestas planas.
¾ Ruido aleatorio: Producido por errores aleatorios de cuantización en el sistema PCM.
¾ Ruido granular: Tiene un sonido silbante blanco. Sucede cuando el tamaño escalón es
grande y la señal de entrada no cambia, es casi constante; los valores de muestras
generalmente oscilan entre dos niveles de cuantización adyacentes; este problema se
reduce disminuyendo el tamaño del escalón ó con técnicas de cuantización no uniforme.
¾ Ruido de oscilación: También se le llama ruido en canal en reposo.
• Modulación delta adaptativa PCM: Δ-APCM.
Es un sistema de modulación delta modificado. El tamaño del escalón del DAC varía
automáticamente dependiendo de la amplitud de la entrada analógica.

Figura Nº 3.11. Minimización de los ruidos granular y por sobrecarga mediante la técnica Δ-APCM.

Cuando el transmisor entrega cadenas de unos y ceros consecutivos, indica que el resultado de la
pendiente del DAC es menor que la pendiente de la señal analógica en dirección positiva o
negativa; el DAC ha perdido la noción de la posición de las muestras analógicas y la posibilidad
de sobrecarga de pendiente es alta.

56
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

El modulador delta adaptativo, después de un número consecutivo, predeterminado de unos o


ceros, aumenta automáticamente el tamaño del escalón. Ejemplo: cuando ocurren 3 unos
consecutivos → el escalón aumenta en 1.5 , cuando ocurren 3 ceros consecutivos → el
escalón disminuye en 1.5 . Si en la siguiente muestra la amplitud del DAC es menor que la
amplitud de la muestra, el siguiente escalón se incrementa aun más hasta alcanzar la señal
analógica. Cuando ocurre una secuencia alterna de unos y ceros, existe la posibilidad que ocurra
ruido granular; frente a esto, el DAC revierte un tamaño de escalón pequeño, reduciendo la
magnitud del ruido granular.
• Modulación diferencial PCM: DPCM.
En las formas de onda de voz codificada en PCM, ocurre que muestras tomadas sucesivamente
tienen muy poca diferencia en amplitud, unas respecto de las otras. Transmitir varios códigos
PCM idénticos es redundante; por lo tanto, en D-PCM se diseña un codificador para aprovechar
la redundancia entre muestras sucesivas. DPCM transmite la diferencia de amplitud entre dos
muestras sucesivas. La transmisión de la diferencia exige menos bits que PCM convencional.
Esta codificación es usada para comprimir la velocidad de 64 Kbps de los canales de telefonía
satelital y celular. La codificación DPCM también se aplica para señales de vídeo.
La codificación predictiva lineal LPC es más efectiva que DPCM desde el punto de vista de
reducción de velocidad a costa de calidad y retardo de procesamiento. DPCM se utiliza en
telefonía satelital y LPC en celular.
El esquema de compresión DPCM en una imagen opera píxel por píxel. El primer píxel, en la
esquina superior izquierda de la imagen, permanece inalterado; este es exactamente codificado
con su brillo original (Ver la siguiente figura). El proceso se mueve ahora al segundo píxel en la
línea, en el cual el siguiente valor de brillo del píxel se sustrae de los actuales píxeles de brillo.
El resultado de la sustracción es el nuevo valor codificado para el segundo píxel en la imagen.
Este proceso se repite por toda la línea. Al inicio de la próxima línea, el proceso comienza de
nuevo, y este continúa hasta que la imagen entera es codificada.

Figura 3.12. Operación de una codificación predictiva sin pérdidas.

El esquema de compresión DPCM trabaja con la suposición de que los píxeles vecinos son
similares o altamente correlacionados. Como resultado, sus diferencias normalmente serán
valores muy pequeños.
La operación de compresión en DPCM trabaja mejor en imágenes que no tienen un número
desmesuradamente grande de brillo que oscila entre píxeles adyacentes. Cuando se aplica a
imágenes normales, la codificación DPCM puede proporcionar factores de compresión alrededor
de 2:1; para las imágenes con series largas de valores de píxeles constantes, los factores de
compresión se pueden incrementar significativamente.
• ADPCM: (Adaptive Differencial Pulse Code Modulation).
Es un código reconocido por la ITU (International Telecommunications Union) para aumentar el
número de usuarios analógicos en la mayoría de los enlaces digitales. El ADPCM toma palabras
convencionales PCM de 8 bits y las compara con un valor que es la estimación de lo que
deberían ser esos 8 bits. Dicha diferencia es lo que se transmite. Como la estimación es bastante
buena, se necesitan menos de 8 bits para representar la señal de salida. En efecto, una palabra
de 4 bits es transmitida en lugar de una de 8 . La palabra estimada la calcula un circuito capaz
de examinar los 8 bits previos a los que va a comparar, y con base en un algoritmo cuyas reglas
han sido estandarizadas por la ITU, el circuito es capaz de predecir cuál debería ser el valor de la
próxima palabra de 8 bits. Por otro lado, antes que ADPCM sea aplicado, el circuito es

57
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

examinado para ver la naturaleza del tráfico: si es un circuito de voz, las palabras de 8 bits se
transforman en palabras de 3 , y si es VF data (Voice Frecuency data) se transforma en palabras
de 5 bits (recomendaciones ITU G.731 y G.723).

3.2.2. Codificación de audio

La codificación de audio y canales de sonido tiene como objetivo maximizar la calidad en lugar
de reducir la velocidad. Se utilizan algoritmos de codificación en el dominio de la frecuencia.

MP3: es un formato estándar que aplica el algoritmo perceptual noise shaping para compresión
de sonido. Este sistema de compresión con pérdida 2 fue desarrollado por la sociedad MPEG 3
(Moving Picture Experts Group) junto con el Instituto Fraunhofer 4 estandarizándose después
con el nombre de ISO-MPEG Audio Layer 3.

Aplicaciones: Se utiliza para el intercambio de archivos de sonido a través de Internet


(streaming), vía web, E-mail, FTP, ICQ, DCC, etc.

Características

• Aplica una relación de compresión de 1 : 12 ; lo que significa, que una canción de cinco
minutos en formato WAV ocupa 60 Mbytes , mientras que en el formato MP3 sólo ocupa
5 Mbytes .
• Un archivo en MP3 puede ser, a su vez, comprimido con alguna herramienta como Winzip.
• La compresión se basa en la eliminación de información perceptualmente irrelevante. Este
estándar divide la señal en bandas de frecuencia que se aproximan a las bandas críticas, y
luego cuantifica cada sub-banda en función del umbral de detección del ruido dentro de esa
banda.
• Las muestras cuantificadas del banco de filtros se empaquetan mediante un protocolo que
aplica CRC y bits de control y sincronización para transmitir los bits de audio codificado y
comprimido.
Método de compresión

El método de funcionamiento del MP3 se basa en un esquema de codificación de audio que


analiza la señal entrante, aplicándole un modelo psicoacústico en función de las capacidades
limitadas del oído humano para mantener al máximo posible la calidad del sonido. Las técnicas
empleadas para la codificación tienen como objetivo limitar el tamaño final del archivo MP3,
procurando mantener la máxima calidad de sonido dentro de los límites de percepción del oído
humano. Entre las técnicas empleadas para la codificación están:

• El efecto de enmascaramiento: se basa en simular las capacidades del oído humano, de


forma que oculta determinados sonidos cuando otros prevalecen, como ocurre en la realidad.
Si al escuchar una canción de pronto suena la batería, el sonido del piano quedará oculto por
éste, pues de la misma forma se comporta la codificación de MP3. Enmascara los sonidos
según el momento y la onda. Por tanto, no es necesario codificar todos los sonidos, sino
simplemente elegir cuál debe quedar en segundo plano en cada momento para obtener el
mejor resultado en calidad y el más reducido en cuanto a tamaño. Otro ejemplo de
enmascaramiento 5 simultáneo o en frecuencia, sucede cuando se percibe una señal de un
volumen alto en una frecuencia y otra de volumen más bajo en una frecuencia cercana; en
este caso, esta última frecuencia no será audible; y a cierta distancia de la frecuencia
enmascaradora, el efecto se reduce tanto que resulta despreciable. El rango de frecuencias en
las que se produce el fenómeno se denomina banda crítica. La amplitud de la banda crítica
varía según la frecuencia en la que nos situemos y viene dada por determinados datos que
demuestran que es mayor con la frecuencia.

2 Sin embargo, las pérdidas no son perceptibles al oído humano.


3 Esta institución sin fines de lucro fue creada en 1988. Hoy en día se encuentra en desarrollo el MPEG 4, versiones 3, 4 y 5; MPEG 7 y MPEG 21.
4 Fraunhofer es el laboratorio de investigación de la codificación de audio más importante del mundo, y desde sus comienzos en esta investigación, hace más
de 10 años, ha participado activamente en el desarrollo de algoritmos de comprensión en los que está basado el MP3
5 Existen enmascaramientos temporal y pretemporal.

58
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

• Buscar el umbral acústico más reducido de la capacidad auditiva para omitir todo aquello
que el oído humano no podría captar. Para lograr esto se utiliza un sistema denominado
codificación de sub-bandas; en este proceso la señal original es descompuesta en 32 sub-
bandas mediante una serie de filtros de convolución. Las sub-bandas son comparadas con el
original mediante un modelo psicoacústico 6 que determina que bandas son importantes y
decide cuales pueden ser eliminadas (Si la energía en una banda es menor al umbral de
ocultamiento, esta no se codificará). Luego se cuantifican y codifican las sub-bandas
restantes y el resultado es finalmente comprimido mediante un algoritmo estándar Huffman
o LZW.
• La reserva de bytes: es otro de los elementos destacados en lo relativo a la comprensión en
MP3. Habitualmente algunas partes de las canciones no pueden ser codificadas a una tasa
correcta sin alterar la calidad de la música, ahí es donde entra en escena la reserva de bytes.
El MP3 emplea una reducida reserva de bytes para codificar a una tasa inferior sin mermar
la calidad. La repartición de bits o ruido se hace en un ciclo de iteración que consiste en un
ciclo interno y otro externo. El ciclo interno realiza la cuantización no uniforme de acuerdo
con el sistema de punto flotante (cada valor espectral de un banco de filtros hibrido
conocido como polifase/MDCT se eleva a la potencia 43 ), el ciclo escoge un determinado
intervalo de cuantización y, a los datos cuantizados, se le aplica codificación de Huffman en
el siguiente bloque. El ciclo termina cuando los valores cuantizados que han sido
codificados con Huffman usan menor o igual número de bits que la máxima cantidad de bits
permitida. El ciclo externo se encarga de verificar si el factor de escala para cada sub-banda
tiene más distorsión de la permitida (ruido en la señal codificada). El ciclo externo termina
cuando una de las siguientes condiciones se cumplen: Ninguna de las bandas del factor de
escala tiene mucho ruido, si la siguiente iteración amplifica una de las bandas más de lo
permitido, todas las bandas han sido amplificadas al menos una vez.
• El Joint Stereo: consiste en que en una determinada frecuencia el oído humano llega un
momento en el que no es capaz de apreciar el lugar exacto del origen del sonido. El formato
MP3 puede, opcionalmente, emplear esta pequeña trampa técnica gracias al llamado Joint
Stereo.

Los datos digitales se dividen en marcos, cada marco contiene 384 muestras, que son el
producto de 32 sub-bandas por 12 muestras sub−banda .

La decodificación es más sencilla, puesto que no necesita la aplicación de ningún modelo


psicoacústico, simplemente se analizan los datos y se recomponen las bandas y sus muestras
correspondientes.
3.2.3. Codificación de video
El video es una secuencia de imágenes caracterizadas por su resolución, número de colores y
número de imágenes por unidad de tiempo.
Principios de la compresión de señales audiovisuales: 1) El objetivo fundamental es la reducción
de la velocidad de información y, por tanto, reducir los requisitos de ancho de banda; 2) Se basa
en dos estrategias: eliminar la redundancia y la irrelevancia.
Redundancia: tiene que ver con la eliminación de aquellas partes de la señal que se repiten
espacial o temporalmente. Un ejemplo típico es la imagen de video, la cual puede presentar
redundancia espacial (dentro de un mismo cuadro) o en una sucesión de imágenes (locutor).
Irrelevancia: el sistema visual humano, así como el sistema auditivo humano, no pueden
reproducir totalmente todos los detalles de la imagen o el sonido; por lo tanto, no se transmiten
aquellas porciones de la señal que no puede reproducirse por los sensores humanos ya
mencionados (compresión con pérdidas).
MPEG (Motion Picture Expert Group): trata de imágenes en movimiento para aplicaciones en
multimedia y video comercial; utiliza la compresión por correlación entre tramas ó
compensación de movimiento, en la cual se aplican combinadas la transformada de coseno

6 Se componen a partir de las percepciones de un grupo de personas entrenadas para rendir al máximo en este campo. Por experimentos se determina la
sensibilidad del oído humano a una serie de fenómenos.

59
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

discreta DCT con la transformada de compensación de movimiento MCT. Actualmente se


conocen y utilizan cinco estándares, a saber:
o MPEG-1: estándar para CD de video y MP3.
o MPEG-2: estándar de televisión digital y DVD.
o MPEG-4: estándar para video multimedia.
o MPEG-7: normalizado a partir de 1997; es un estándar para la descripción y búsqueda de
contenido de audio y video.
o MPEG-21: estándar para multimedia framework.
MPEG utiliza codificación de tipo perceptual, es decir, tiene en cuenta el umbral absoluto de
audición y el enmascaramiento, para discriminar las partes de la señal de audio que resultan
irrelevantes para el sistema auditivo, de las partes que son relevantes y que han de codificarse de
de la manera más eficientemente posible.
MPEG 1: nace en 1988 y su principal objetivo es alcanzar un flujo de transmisión de datos
constante de 1,5 Mbits seg (flujo de un CD-ROM de simple velocidad) del cual, 1,15 Mbits seg son
para el video y los 350 Kbits seg restantes son para el sonido (estéreo) y para datos auxiliares. La
compresión de video utiliza los mismos principios que JPEG con pérdidas, a la que se le añaden
nuevas técnicas que, juntas, forman el MPEG-1, que permiten reducir considerablemente la
cantidad de información necesaria para la transmisión de imágenes sucesivas muy
correlacionadas temporalmente.
Un codificador de MPEG-1 incluye módulos de estimación de movimiento, selección de modos
de compresión por macro-bloques, conjunto de valores para la matriz de cuantificación,
predicción de compensación de movimiento, cuantificador y decuantificador, transformada
discreta del coseno (DCT), transformada inversa discreta del coseno (IDCT), códigos de
longitud variable (VLC), un multiplexor, una memoria intermedia y un regulador de memoria.
La descuantificación y la transformada discreta del coseno inversa (IDCT) se necesitan en el
codificador, porque la predicción de imágenes está basada en la reconstrucción de datos. El
estándar MPEG-1 especifica que se debe utilizar mínimo una imagen I, cada 132 imágenes para
así evitar la propagación de errores en el módulo IDCT, creando de esta manera diferencias entre
el codificador y el decodificador.

Figura 3.13. Esquema simplificado del codificador MPEG-1.

Un codificador típico de MPEG-1 realiza los siguientes pasos: define los parámetros M y N que
determinan de qué forma se encadenan las imágenes I, P y B en una GOP, estima los vectores de
movimiento para cada macrobloque en las imágenes P y B, determina el modo de compresión
para cada macrobloque de la imagen seleccionada (compresión espacial o temporal) y selecciona
la matriz de cuantificación.
Un decodificador MPEG-1 revierte las operaciones del codificador: por un lado, la secuencia de
video codificada de entrada es demultiplexada en coeficientes DCT, y por el otro, se saca la
información en modo de compresión, vectores de movimiento y matriz de cuantificación.

60
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Figura 3.14. Esquema simplificado del decodificador MPEG-1.

MPEG-2: en 1994 se introdujo la norma MPEG-2 para aplicaciones de difusión de TV digital.


Para propósitos prácticos, el estándar MPEG-2 se ha dividido en perfiles y cada perfil se ha
subdividido en niveles. Un perfil es el grado de complejidad esperada en la codificación,
mientras que un nivel describe el tamaño de la imagen, la resolución de esta, o la velocidad de
transferencia de bits usada en ese perfil. En principio, hay 24 combinaciones posibles, pero no
todas están definidas. Un codificador MPEG cuando entrega un perfil y un nivel determinado,
debe además ser capaz de decodificarlo a perfiles y niveles inferiores.

Simple Principal 4:2:2 SNR Espacial Alto


4:2:0 4:2:0 ó 4:2:2
Alto 1920x1152 1920x1152
80 Mbps 100 Mbps
4:2:0 4:2:0 4:2:0 ó 4:2:2
Alto
1440x1152 1440x1152 1440x1152
NIVELES

1440
60 Mbps 60 Mbps 80 Mbps
4:2:0 4:2:0 4:2:2 4:2:0 4:2:0 ó 4:2:2
Principal 720x576 720x576 720x608 720x576 720x576
15 Mbps 15 Mbps 50 Mbps 15 Mbps 20 Mbps
4:2:0 4:2:0
Bajo 352x288 352x288
4 Mbps 4 Mbps
Tabla Nº 3.3. Niveles y perfiles de MPEG-2.

Un perfil simple no soporta una codificación bidireccional y de este modo solo genera imágenes
I y P. El perfil high (alto) soporta tanto el SNR y la escalabilidad espacial, como también la
opción de muestreado 4 : 2 : 2 . El perfil 4 : 2 : 2 se ha desarrollado para proveer
compatibilidad con los equipos de producción digital de televisión existentes. El nivel low (bajo)
corresponde a la resolución SIF utilizada en el MPEG-1. El nivel main (principal) corresponde a
la resolución 4 : 2 : 0 "normal" (de hasta 720 pixeles x 576 líneas). El nivel high-1440 (alto-
1440) está destinado a la HDTV (de hasta 1440 pixeles x 1152 líneas). El nivel high (alto)
está optimizado para la HDTV (de hasta 1920 pixeles x 1152 líneas).
Los perfiles escalables (código jerárquico) permitirán transmitir una imagen básica (base layer)
en términos de resolución espacial (spatially scalable profile) o de cuantificación (SNR scalable
profile), así como información suplementaria independiente (enhanced layer) que permite
mejorar sus características, por ejemplo para transmitir la misma emisión en definición estándar
y HD (High Definition), o permitir una recepción con calidad aceptable en caso de recepción
difícil y de calidad óptima en buenas condiciones (por ejemplo, para la televisión digital
terrestre).
MPEG 4 (ISO/IEC 44196): se inicia en 1994, tiene extensión oficial .mp4 y es un estándar
internacional para codificación y almacenamiento de video multimedia. Mientras MPEG-1 y
MPEG-2 codifican secuencias, MPEG-4 es capaz de crear representaciones codificadas de los
datos de audio y video que la forman. Utiliza codecs/decodecs de transformación para
compresión con bajas pérdidas
Principios de operación del estándar:

61
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

o Codificación diferencial mediante predicción: el contenido de la información de la imagen


en movimiento se predice a partir de imágenes reconstruidas pasadas; luego, se comparan la
predicción con la muestra real, y por último se codifica la diferencia.
o Las muestras tomadas de imagen y sonido son segmentadas; cada segmento es transformado
en espacio-frecuencia y después cuantificado.
o Los valores cuantificados son codificados entrópicamente mediante la codificación Huffman
de longitud variable VLC.
Actualmente las películas se comprimen empleando MPEG-4; así mismo, el video de los
teléfonos móviles (64Kbps). Este estándar alcanza niveles de compresión de 16:1, con esto,
facilita la transmisión de flujos combinados de video, audio y texto sobre Internet, y permite
menor tiempo de descarga.
AVI (Audio-Video Interleave: intercalado de audio y video): Definido por Microsoft en 1992.
AVI es un formato de propósito general, puede almacenar simultáneamente un flujo de datos de
video y varios flujos de audio. El formato concreto de estos flujos no es objeto del formato AVI,
por esto se le considera un formato contenedor de los formatos de flujos externos (mp3/divx,
Ogg/xvid, etc.) que son interpretados por un programa denominado códec; para que los flujos
puedan ser reproducidos simultáneamente es necesario que se almacenen de manera entrelazada.
Los archivos AVI se dividen en fragmentos diferenciados llamados chunks; cada fragmento
tiene asociado un identificador denominado etiqueta FourCC, que permite identificar el códec
necesario para interpretar el flujo de audio o video. El primer fragmento es la cabecera y su
papel es especificar las dimensiones de la imagen y la velocidad en fotogramas por segundo; el
segundo chunk contiene los flujos entrelazados de audio y video (almacena la información por
capas). Opcionalmente puede existir un tercer chunk que actúa a modo de índice para el resto de
chunks.
El formato AVI utiliza un tipo de compresión por intra-frame (imágenes completas) o
compresión espacial, la cual comprime cada fotograma por separado; esto hace que sea de mayor
calidad que el inter-frame, y por consiguiente ocupe más espacio.
El reproductor lee los fragmentos del archivo AVI; después separa cada uno de los flujos de
audio y video que se encuentran entrelazados en el archivo; cada uno de estos flujos, una vez
separados, se almacena en un buffer de memoria y se pasa al códec correspondiente; el códec de
video (Video compression manager) devuelve otro buffer con los fotogramas a reproducir, y el
códec de audio (Audio compression manager) retorna otro buffer con las muestras digitales del
sonido a reproducir; con esta información, el reproductor sincroniza los fotogramas y el sonido,
y reproduce a velocidad adecuada.
Hay dos tipos de archivos AVI: 1) Interpolado, intercala el almacenamiento de video y audio,
este es el uso estándar; 2) No interpolado, primero tiene el flujo de video completo y después el
de audio.
3.2.4. Codificación de imágenes
La compresión de imágenes se da por redundancia de la codificación, por redundancia entre
píxeles y por redundancia psicovisual.
o Redundancia de codificación: la eliminación del código redundante consiste en utilizar el
menor número de símbolos para representar la información; se manejan técnicas de
compresión que utilizan cálculos estadísticos para lograr eliminar este tipo de redundancia y
así reducir la ocupación original de los datos.
o Redundancia entre píxeles: la mayoría de las imágenes presentan semejanzas o correlaciones
entre sus píxeles; de esta manera, el valor de un píxel puede emplearse para predecir el de
sus vecinos; maneja técnicas de compresión que implementan algoritmos basados en
sustituciones para lograr la eliminación de esta redundancia.
o Redundancia psicovisual: consiste en descartar información visual que es menos sensible al
ojo humano sin afectar la percepción de la imagen; se suprime de esta manera lo que se
conoce como redundancia visual; su eliminación esta relacionada con la cuantificación de la
información, lo que conlleva una pérdida de información irreversible.
Los métodos de compresión, recurren a los procedimientos generales de compresión de datos,
aprovechando además la redundancia espacial de una imagen (áreas uniformes), la correlación

62
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

entre puntos cercanos y la menor sensibilidad del ojo a los detalles finos de las imágenes fijas
(JPEG) y, para imágenes animadas (MPEG), se saca provecho también de la redundancia
temporal entre imágenes sucesivas.
Durante la compresión, los datos duplicados o qué no tienen valor se eliminan o se guardan en
una forma más corta y se reduce el tamaño de un archivo en gran medida. Cuando la imagen se
edita o visualiza posteriormente, entonces el proceso de compresión se invierte.

Clasificación de los métodos de compresión de imágenes: hay dos formas de compresión, sin
pérdidas o con pérdidas, y la fotografía digital usa ambas formas.

La compresión sin pérdidas comprime una imagen para que su calidad sea semejante a la
fuente original. Aunque la compresión sin pérdidas parece ideal, no proporciona mucha
compresión. Un esquema de compresión reconocido es el LZW (Lempel-Ziv-Welch). Este se
usa en archivos GIF y logra proporciones de compresión de 50 a 90% .

Por otra parte, un sistema de codificación básico y apropiado para la mayoría de las aplicaciones
de compresión, es aquel con pérdidas, que se basa en la Transformada Discreta del Coseno; en
este sistema, denominado a veces sistema básico secuencial, la precisión de los datos de entrada
y de salida está limitada a 8 bits, mientras que los valores cuantificados de la DCT están
limitados a 11 bits, La propia compresión se realiza en tres etapas secuenciales: Calculo
DCT(transformada discreta del coseno), Cuantificación de los coeficientes de la DCT,
Asignación del Código de Longitud Variable (VCL).

Una disminución en la codificación se puede obtener, tomando como ventaja que la amplitud de
los componentes espaciales disminuye con la frecuencia. Si el espectro de frecuencia espacial es
dividido en sub-bandas de frecuencia, las bandas de alta frecuencia se pueden describir en pocos
bits, no solamente porque sus amplitudes son pequeñas sino porque puede ser tolerado más
ruido.

La codificación inter o temporal aprovecha la ventaja que existe cuando las imágenes sucesivas
son similares. En lugar de enviar la información de cada imagen por separado, el codificador
inter envía la diferencia existente entre la imagen previa y la actual en forma de codificación
diferencial. El codificador necesita de una imagen, la cual fue almacenada con anterioridad para
luego ser comparada entre imágenes sucesivas y de forma similar se requiere de una imagen
previamente almacenada para que el decodificador desarrolle las imágenes siguientes.

En el recorrido de una imagen original, llamada imagen I o intra, la cual es enviada entre
imágenes que han sido creadas usando una diferencia entre imágenes, llamada imágenes P o
previstas. La imagen I requiere grandes cantidades de información, mientras que las imágenes P
requieren una cantidad menor. Esto ocasiona que el flujo de transmisión de datos sea variable
hasta cuando llegan a la memoria intermedia.

Figura Nº 3.15. Flujo de transmisión de datos de una imagen.

Figura 3.16. Esquema general de compresión de imagen y video.

63
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Medida de compresión:

Figura 3.17. Medida de compresión de imágenes.

# de bits imagen original


factor de compresión =
# de bits imagen comprimida
# de bits imagen comprimida
bits =
píxel # de píxeles
El ejemplo siguiente describe la compresión de una imagen inmóvil; los mismos principios se
pueden también aplicar a los datos video y audio:
o Preparación: Se genera una representación digital apropiada de la información. El cuadro se
puede dividir en bloques de 8× 8 píxeles con un número fijo de bits por píxel.
o Proceso: este paso hace uso de varios algoritmos de compresión; por ejemplo, se puede
realizar una transformación del dominio de tiempo al dominio de la frecuencia, usando la
transformada discreta coseno (DCT). En el caso de la codificación interframe, los vectores
del movimiento se pueden determinar aquí para cada bloque de 8 × 8 Píxeles.
o Cuantización: los valores determinados en el paso anterior no pueden y no deben ser
procesados con total exactitud; en su lugar son cuantizados según una resolución específica
y una curva característica. Esto es equivalente a la ley μ y a la ley A, que se utilizan para
los datos voz ó audio. En el dominio transformado, los resultados se pueden tratar
diferentemente dependiendo de su importancia (ejemplo, cuantización con diversos números
de bits).
o Codificación de la entropía: con una secuencia de datos secuencial de bits y de bytes
individuales, se pueden utilizar diversas técnicas para realizar una compresión final, sin
pérdida. Por ejemplo, frecuentemente ocurren largas secuencias de ceros, éstas pueden ser
comprimidas especificando el número de las ocurrencias seguidas por el mismo cero.
El procesamiento y cuantización de la imagen se pueden repetir iterativamente, por ejemplo en el
caso de la modulación diferencial adaptativa PCM (ADPCM). Puede o haber "regeneración"
(como ocurre durante la modulación delta), o las técnicas múltiples se pueden aplicar a los datos
uno después del otro (como la codificación interframe de MPEG). Después de estos cuatro pasos
de la compresión, los datos digitales se colocan en una trama que contiene: campo de inicio de la
imagen, tipo de compresión, código para corrección de error, entre otros.
Otra forma de compresión de imágenes es aquella con pérdidas que involucra la eliminación
de datos de la imagen. Sin embargo, la imagen primero se transforma a otra, y entonces se
suprimen partes de ella. Los métodos de transformar y suprimir datos de la imagen son lo que
distingue los diferentes esquemas de compresión de imágenes con pérdidas. Se han desarrollado
muchos esquemas de compresión de imágenes con pérdidas; a continuación se analizarán los
métodos más usados.
Codificación por truncamiento: Funciona suprimiendo datos de la imagen que emplean
muestreo espacial y reducción en la resolución de brillo. La codificación por truncamiento puede
hacerse a cualquier resolución espacial o a una resolución de brillo de una imagen. Durante la
reducción espacial, se elimina un patrón habitual de píxeles de la imagen que usa técnicas de
muestreo. Por ejemplo, si se quita con regularidad un píxel y el siguiente no, y se hace lo mismo
con las líneas de la imagen entonces, el tamaño de sus datos será reducido por un factor de 4 . Se
puede descomprimir tal imagen por uno de los dos métodos. En el primero, simplemente se

64
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

reconstruye la imagen a un tamaño reducido. El otro método interpola los píxeles eliminados,
creando una aproximación de la imagen original a su tamaño. La codificación por truncamiento
en la resolución de brillo se hace truncando todos los valores de los píxeles de brillo de la
imagen, por una nueva representación de los datos que contengan menos bits. Los bits de bajo
orden son los truncados primero, naturalmente, ellos son los menos significativos en su valor de
brillo. Si, por ejemplo, se truncan 5 bits de cada uno de los píxeles de brillo, la imagen se reduce
por un factor de 83 bits = 2.667 . La codificación por truncamiento proporciona razones de
compresión exactamente predecibles, y estas se basan directamente en cuántos datos de la
imagen son eliminados.
Los esquemas de compresión y descompresión DPCM con pérdidas son idénticos a las formas
DPCM sin pérdidas. La DPCM con pérdidas casi siempre adiciona algunas degradaciones en la
imagen comprimida, pero puede proporcionar un incremento en los factores de compresión de
aproximadamente 3 : 1 o más que su homologo en la compresión sin pérdidas, con algunos
efectos menores de distorsión. Normalmente se puede minimizar el efecto visual de estas
distorsiones a través de una selección apropiada del código de longitud, produciendo resultados
aceptables para muchas aplicaciones. Un caso especial de DPCM con pérdidas, se llama la
Modulación Delta (DM), esta sólo usa un bit para codificar la diferencia de brillo entre píxeles
adyacentes. Cada píxel es codificado como si tuviera un brillo menor que el anterior píxel (0 ) o
mayor que el anterior píxel (1) . Las imágenes en DM pueden mostrar mayores efectos de error
de brillo siempre que se encuentren transiciones significativas de brillo. Generalmente, para una
imagen de 640 píxeles × 480 líneas, siempre que hay transiciones presentes de más de 32
niveles de gris, las manchas en la imagen serán significativas. Las ventajas de la técnica de
codificación DM son extremadamente simples para ser implementadas por un codificador y
decodificador, que asegure un factor de compresión fijo de 8 : 1 (para imágenes con 256
niveles de gris).
El método de compresión por vector de cuantización (VQ), como en el caso JPEG, la imagen se
divide en bloques (o los vectores) de n × n píxeles. Estos bloques se comparan con un sistema
de bloques representativos. Esta colección de vectores representativos se llama codebook. Se
analiza las diferencias entre los píxeles en el vector de la imagen fuente y el vector del codebook
y se computa para cada entrada del codebook. La entrada del codebook con la diferencia más
pequeña se elige como el vector representativo. El índice de ese vector se almacena en un
archivo o se transmite. Ejemplo: supongamos que la imagen original está dividida en vectores de
4 × 4 píxeles. La imagen original es 24 bits píxel . Si utilizamos un codebook que tenga 1024
vectores, necesitaremos 10 bits únicamente para ubicar el vector representativo del código.
Nuestro cociente de compresión para un vector (y también para la imagen entera) es:

Factor de compresión =
[ 24 bits
px × 16 px ] = 38.4
10 bits
El vector de cuantización viene en muchos formatos. Un método, VQ recurrente, repetitivamente
codifica la imagen y la diferencia entre la imagen y su aproximación (el valor del codebook).
Otro método quita la media de un vector antes de codificar. Todos los algoritmos de VQ son de
cómputo intensivo durante la etapa de codificación, pero descifran relativamente muy rápido. El
proceso de descodificación consiste en obtener los vectores del codebook y reemplazarlos en los
bloques correspondientes.
En la codificación por transformación, se utiliza una transformada lineal, reversible para hacer
corresponder una imagen con un conjunto de componentes fundamentales o coeficientes, en el
dominio de la frecuencia. La imagen en el dominio de la frecuencia se puede transformar
inversamente al dominio espacial, reproduciendo la imagen tal y como estaba originalmente.
En el dominio de la frecuencia, los coeficientes fundamentales representados por los píxeles de
brillo, tienden a agruparse en regiones, especialmente alrededor de las zonas de baja frecuencia.
Como resultado, hay áreas generalmente grandes de la imagen donde los coeficientes tienen un
valor muy pequeño o cero. Esto ocurre porque el proceso de la transformada elimina mucha
redundancia de la imagen. La versión en el dominio de la frecuencia de la imagen, es
generalmente una representación muy eficiente de la imagen original. Las técnicas de

65
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

compresión de imágenes por transformadas se aprovechan de esta característica de la imagen en


el dominio de la frecuencia, simplemente eliminando los coeficientes de la imagen que tienen
valores muy pequeños. Ya que el peso de los coeficientes de valor cercano a cero en la
transformada inversa es muy pequeño, cuando la imagen se transforma nuevamente hacia el
dominio espacial, la eliminación de estos coeficientes causa una pequeña distorsión.
Adicionalmente, otros coeficientes pueden ser reducidos en su resolución (redondeo) sin que se
causen efectos notorios en su transformada inversa. Los sistemas más prácticos de codificación
por transformación se basan en la Transformada Discreta del Coseno o Discrete Cosine
Transform (DCT), que ofrece un compromiso entre la capacidad para concentrar la información
y la complejidad de cálculo.
JPEG (Joint Photograpic Expert Group): emplea un algoritmo genérico para comprimir las
imágenes estáticas; lleva la información de coordenadas y color de cada punto a un formato
genérico7 y desde aquí las comprime empleando un esquema de compresión con perdidas
(codificación por transformación) basado en la Transformada Discreta del Coseno DTC.

Figura 3.18. Diagrama de bloques de un codificador JPEG.

La codificación JPEG se realiza en nueve pasos:


• Las imágenes a color RGB se convierten al espacio de color YCbCr, el cual esta compuesto
por tres componentes, uno de luminancia (escala de grises) y dos de crominancia (Cb: azul,
Cr: rojo).
• Submuestreo de las componentes CICR, el ojo humano es relativamente insensible al
contenido de altas frecuencias de los canales de crominancia Cb y Cr, ellos son
submuestreados por 2 en ambas direcciones.
• Se segmenta la imagen inicial en unidades de datos (bloques) de 8× 8 píxeles para el
procesamiento.
• Se aplica la DTC sobre cada matriz de 8× 8 valores de píxeles y nos devuelve una matriz
de 8× 8 con los coeficientes de la frecuencia.
• Se desempaquetan los coeficientes: se recorre la matriz de coeficientes en zig-zag debido al
orden creciente del espacio de frecuencias; los primeros valores corresponden a niveles de
detalles bajos (bajas frecuencias), mientras que los últimos valores corresponden a niveles
de detalles altos (frecuencias altas).
• Se pondera cada coeficiente por un factor de cuantización, en este paso se produce las
pérdidas de calidad típicas de la imagen original, y estas son aprovechadas para permitir
grandes tasas de compresión.
• Se eliminan los coeficientes cercanos a cero, la fase de cuantización redondea el elemento
de la DTC al entero más cercano, de este modo los coeficientes de alta frecuencia (próximos
a cero) se convierten a un valor 0 y son eliminados.
• Se codifica por medio del algoritmo de Huffman: el primer coeficiente de la matriz de
valores cuantizados se codifica utilizando DPCM; los restantes 63 componentes, conocidos
como componentes AC, se codifican en parejas mediante el algoritmo de Huffman.

Figura 3.19. Diagrama de bloques de un decodificador JPEG.

7 El diseño de este formato esta basado en las limitaciones del ojo humano, para el cual los pequeños cambios en el color son percibidos menos que pequeños
cambios en el brillo de una imagen.

66
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

JPEG permite una compresión dentro de un rango de 10:1 a 50:1 en proporción a la imagen
original. Uno de los problemas con esta codificación es que cada vez que abramos un archivo
que este en formato JPEG, no se debe volver a guardar con este mismo formato, ya que al
almacenar vuelve y aplica los algoritmos de compresión y la imagen se degrada cada vez mas.
GIF (Graphics Interchange Format): es un formato gráfico desarrollado por CompuServe en
1987 para resolver el problema de intercambio de imágenes a través de diferentes plataformas.
Se utiliza ampliamente en la WEB.
El formato .GIF realiza la compresión de la imagen sin pérdida de calidad por medio de dos
tipos de algoritmos que son RLE (Ineficiente) y LZW (El más usado en este tipo de formateo).
• RLE: esta codificación busca la repetición de valores idénticos en una secuencia de datos, y
la remplaza por un único valor precedido por el número de veces que se repite. Ejemplo: si
se tiene la secuencia 5 5 14 14 14 14 14 8 8 8 8 7 5 5 5 2 2 (18 bytes), al codificarlo se
obtiene: 2 5 5 14 4 8 1 7 3 5 1 3 2 2 (14 bytes).
• LWZ: es un método de compresión que analiza el texto para identificar cadenas repetidas y
así armar un diccionario de equivalencias, asignando códigos breves a estas cadenas. Este
proceso requiere de dos etapas, la primera de análisis y la segunda de conversión.
Ejemplo: Se tiene una secuencia: 4 12 10 2 8 4 12 10 9 8 4 12 10 9 8 4, al codificarlo se
obtiene: a28abab4, donde a=4 12 10 y b= 9 8.
Las principales características de esta codificación son: 1) 8 bits máximo ( 256 colores
simultáneos), 2) Uso de color indexado a través de una paleta de colores que puede tener
hasta 256 colores, dependiendo del Size of Local Color Table que tiene un tamaño de 3
bits, 3) Utiliza varias capas transparentes (máximo de 256 colores cada uno), simultáneas
entre ellas que permiten mostrar un color real, 4) Permite transparencia de un bit, de tal
forma que cada píxel de la imagen puede ser o no transparente, 5) Formato de mapa de bits,
6) Compresión LWZ sin pérdidas que alcanza tasa de 1 : 4 (Hasta un 25% del tamaño
original).
Existen dos versiones del formato .GIF: GIF87a, sus principales características son: compresión
LWZ sin pérdidas y soporte de entrelazado. GIF89a, sus principales características son:
transparencia y animación.

3.2.5. Otras técnicas de compresión


FRACTAL: Basada en algoritmos fractales (definición mediante ecuaciones matemáticas de
objetos complejos). Permiten obtener unos patrones repetitivos a partir de los cuales es posible
reconstruir la imagen original, mientras que el resto de información se descarta. Las tasas de
compresión alcanzados son de varias decenas de miles.

3.3. CODIFICACIÓN PARA DETECCIÓN Y CONTROL DE ERRORES

Introducción
Se recuerda una anécdota de Julio Cesar, en cierta ocasión, queriendo amnistiar a uno de sus
oficiales, dictó la siguiente orden: "Liberadlo, no ejecutadlo". Su mensaje se transmitió con un
pequeño error "Liberadlo no, ejecutadlo".
La naturaleza se protege contra errores que pueden causar, como en el caso anterior, la muerte.
El mensaje genético que permite construir un ser vivo está contenido en dos filamentos
entrelazados; cada filamento contiene una secuencia de nucleótidos (solo son posibles 4 ;
denominados Adenina, Citosina, Guanina, Timina). Entre filamentos existe una relación unívoca
del tipo A-T y C-G y constituyen el ADN. El mensaje es redundante, lo que muestra el cuidado y
el conservadurismo de la naturaleza. Sin embargo, la cantidad de información genética en el
ADN no tiene relación directa con la información; así, en 1983, se encontró que las células de la
azucena tiene 30 veces más ADN que las células humanas.
El error de una sola letra en la lectura de la información genética puede producir en el humano
enfermedades hereditarias letales como la anemia falciforme, la talasemia y varios cánceres.
Otras veces un error permite introducir cambios que llevan a la diferenciación entre especies. No
todos los errores son malignos ni beneficios, la mayoría no producen consecuencias.

67
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

La información genética (genoma) en un ser humano es de 3x109 nucleótidos; cada nucleótido


lleva 2 bits de información. El genoma se replica cerca de 1012 veces para construir un ser
humano desde el óvulo fecundado. La tasa de errores es de 10-10 para cada genoma que contiene
6x109 bits; por ello equivale a una tasa de errores de bit de 6x10-19.
Dicha tasa de error es considerada difícil de obtener en sistemas de comunicaciones. Las células
alcanzan tal fidelidad gracias a 3 mecanismos de control de errores: un complejo enzimático
separa ambos filamentos y genera un nuevo filamento complementario al otro; otro complejo
enzimático elimina los nucleótidos (letras) erradas en la cadena recién generada mientras un
tercero repara los errores detectados.

En PCM cada muestra de la señal se representa por una palabra de código de k bits. El receptor
debe reconocer cada palabra de código para reconstruir las muestras; debido al ruido y a otras
limitaciones del canal pueden ocurrir errores en la transmisión. Sin embargo, se puede aumentar
la confiabilidad de la comunicación en presencia de ruido, mediante las siguientes estrategias:
S
• Incrementando la relación señal a ruido .
N
• Agregando bits a expensas de un mayor ancho de banda; estos bits redundantes permiten la
detección y corrección de errores.
Error
Es la distorsión del valor correcto del dato, el cambio a algún otro valor.
Tipos de errores
• Error de bit: significa que un bit de una unidad de datos determinada cambia; es el tipo de
error menos probable en una transmisión de datos en serie.

Ejemplo: Un emisor envía datos a 1 Mbps , cada bit dura 1


1000000 seg = 1 μ seg . Para que
ocurra error en la transmisión de datos seriales, el ruido debe tener una duración de por lo
menos 1 μ seg ; sin embargo, el ruido dura más. El error de bit es muy común en
transmisión paralela ya que los bits que codifican la información se transmiten por distintos
alambres y el ruido presente en un alambre puede afectar el bit.

Figura 3.20. Error de bit en la reopción de información.

• Error de ráfaga: Significa que dos o más bits de la unidad de datos han cambiado debido al
ruido del canal. Los errores se producen generalmente en las transmisiones en serie y
afectan bits consecutivos (no siempre).
Eficiencia del código
Es la relación entre la razón de información y la razón de bits del código.
Cuanto mayor es la trama que se transmite, mayor es la probabilidad de que contenga algún
error. Para detectar errores, se añade un código en función de los bits de la trama de forma que
este código señale si se ha cambiado algún bit en el camino. Este código debe de ser conocido e
interpretado tanto por el emisor como por el receptor. Un codeword de n bits consiste en k bits
de datos y r bits de redundancia o chequeo. Aunque se usa a veces la corrección de errores,
normalmente se prefiere la detección de errores ya que es más eficiente.

68
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

k
η=
n
k → Número de dígitos del mensaje por palabra.
r → Número de dígitos del código de comprobación de error por palabra.
n = k + r → Número total de dígitos, longitud del bloque.
En comunicaciones electrónicas todas las señales digitales llevan asociados el proceso de
detección o corrección de errores. El primer paso es reconocer la existencia de los mismos; es
decir, se deben disponer de métodos que permitan la evaluación del número de errores.
Posteriormente el número de errores se expresa como una Tasa de Error de Bit BER (Bit Error
Rate). Luego de reconocida la existencia de errores puede ser posible la identificación del mismo
y la corrección. Para ello se han generado métodos correctores de errores.
Clasificación de los códigos para detección y control de errores
La detección y corrección de errores se implementa en el modelo OSI en el nivel de enlace o
nivel de transporte de datos.
• Códigos algebraicos ó códigos de bloque: Se agregan bits al final de cada palabra de código
para la detección y corrección de error. Ejemplo: Verificación de la paridad, Código de
Hamming, etc.
• Códigos convolucionales: la información de verificación de paridad está distribuida sobre
un espacio de símbolos de mensaje llamado espacio acotado del código; para códigos de
espacio acotado corto se emplea algoritmo de Viterbi.
• Códigos cíclicos: es una subclase de códigos de bloques lineales; para ser cíclico, el código
debe cumplir dos propiedades: 1) Linealidad: la suma de dos palabras de código
cualesquiera en el código es también una palabra de código, 2) Propiedad cíclica: cualquier
corrimiento cíclico de una palabra de código en el código también es una palabra de código.
Ejemplos: códigos CRC, BCH y Red Sólomon.

Otros códigos: códigos turbo. Ejemplo: código RSC de 8 estados y algoritmo BCJR.

3.3.1. Detección de errores


Consiste en monitorear la información recibida y determinar cuando un error de transmisión ha
ocurrido. Las técnicas de detección de errores no identifican cuál bit (o bits) es erróneo,
solamente indica que ha ocurrido un error. El propósito de la detección de errores no es impedir
que ocurran errores, pero previene que los errores no detectados se sigan transmitiendo.
La detección de errores tiene las siguientes características:
• Es ejecutada por el receptor y consiste en aplicar mecanismos para saber si lo que se ha
recibido está correcto o no; para ello se utilizan códigos detectores de errores.
• Si está correcto debe ser procesada y enviada al nivel inmediatamente superior.
• Si está errónea debe ignorarlo o tratarlo de corregir.
• Redundancia: implica la transmisión de un carácter dos veces.
• Ecoplex: Se usó en sistemas de comunicación de datos dúplex en los que operadores
humanos capturaban datos en forma manual con un teclado. El carácter se transmitía al
teclearse en el terminal del transmisor; una vez llegaba al terminal de recepción, se
regresaba de inmediato al terminal de origen, donde aparecía en pantalla. Cuando esto
sucedía, el operador verificaba la veracidad del carácter recibido, de lo contrario
retransmitía. Si el error se generaba en camino de regreso, se presentaba retransmisión
innecesaria.
• Codificación de cuenta exacta: Un ejemplo de esquema de codificación de cuenta exacta
es el código ARQ; en éste cada carácter tiene tres unos, y en consecuencia, si solo se cuenta
la cantidad de unos recibidos en cada caracter se puede determinar si ha ocurrido error.
• Comprobación de paridad
Es el esquema de codificación más sencillo. Se añade un bit de paridad al bloque de datos
(por ejemplo, si hay un número par de bits 1 , se le añade un bit 0 de paridad y si son

69
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

impares, se le añade un bit 1 de paridad). Pero puede ocurrir que el propio bit de paridad
sea cambiado por el ruido o incluso que más de un bit de datos sea cambiado, con lo que el
sistema de detección fallará. Los circuitos que generan paridad usan compuertas XOR.
Los bits de paridad tienen las siguientes variantes VCR-HCR, checksum y CRC. Se aplican
en toda señal digital conocida y solo permiten identificar la presencia de errores. La acción
siguiente puede ser: informar mediante reportes de alarmas; descartar la información o
corregir los errores.
• Comprobación de redundancia vertical y horizontal: la comprobación de redundancia
vertical (VRC: Vertical Redundancy Checking) es un esquema de detección de errores que
usa la paridad para determinar si ha sucedido un error de transmisión, dentro de un carácter.
En consecuencia, la VRC a veces se llama paridad de caracteres. En la VRC cada carácter
tiene agregado un bit de paridad de caracteres. Se puede usar paridad par o impar.
La comprobación de redundancia horizontal o longitudinal (HRC: Horizontal Redundancy
checking ó LRC: Longitudinal Redundancy Checking) es un esquema de detección de
errores que usa la paridad para determinar si se ha presentado un error de transmisión en un
mensaje y, en consecuencia, a veces se llama paridad de mensaje. En resumen, la LRC es el
resultado de comparación XOR de los caracteres que forman un mensaje, mientras que la
VRC es la comprobación XOR de los bits dentro de un solo carácter. Con la LRC sólo se
usa paridad par. La secuencia de bits LRC se calcula en el transmisor antes de mandar los
datos, a continuación se transmite como si fuera el último carácter del mensaje. En el
receptor se vuelve a calcular la LRC a partir de los datos, y el valor recalculado se compara
con la LRC transmitida.
La comprobación de redundancia vertical y horizontal, también es llamada control de
paridad por matriz de caracteres, en el cual se determina la paridad de filas y columnas, y se
envían los bits de control por filas. Permite tanto la detección como la corrección de errores.
• Suma de comprobación (checksum): no es más que el byte menos significativo de la suma
aritmética de los datos binarios que se transmiten. Mientras se transmitan los datos, cada
carácter se suma con la suma acumulada de los que se transmitieron antes. Cuando se llega
al final del mensaje, el sumador ha acumulado la suma de todos los caracteres que hay en el
mensaje que se acaba de mandar. El byte menos significativo de esta suma se agrega al final
del mensaje, y se transmite. La terminal receptora hace de nuevo la operación de suma y
determina su propia suma y su propio carácter de suma de comprobación. El byte menos
significativo de la suma del receptor se compara con la suma de comprobación del final del
mensaje. Si son iguales, es muy probable que no haya ocurrido error de transmisión.

EJEMPLO 3.2._______________________________________________________________________
Datos transmisión: d1 : 10101001
d 2 : 00111001
Σ aritmética complemento a 1: 11100010
Suma de comprobación: 00011101
Datos de recepción: d1 : 10101001
d 2 : 00111001
Suma de comprobación: 00011101
Suma = D1 + D 2 + Σ comprobacion = 11111111
Complemento a 1 = 00000000 → Error = 0

Comprobación de redundancia cíclica (CRC: Cyclic Redundancy Code)


Dado un bloque de n bits a transmitir, el emisor le agrega una secuencia de k bits redundantes, al
final de la unidad datos a transmitir de forma que los datos resultantes sean divisibles
exactamente (con un residuo de 0 ) por un CRC conocido tanto por el emisor como por el
receptor. Este proceso se puede hacer bien por software o bien por un circuito hardware (más
rápido).

70
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Ventajas: Es un método muy efectivo, puede detectar todos los errores de ráfaga que afectan un
número impar de bits, puede detectar todos los errores de ráfaga de longitud menor o igual que el
grado del polinomio, puede detectar con probabilidad muy alta errores de ráfaga con longitud
mayor que el grado del polinomio.
Pasos: Se agrega una secuencia de n ceros a la unidad de datos a transmitir, la nueva trama de
datos se divide por el polinomio CRC preestablecido por el transmisor y receptor, de longitud
n + 1 ; el residuo de la división binaria sustituye la secuencia de n ceros de la unidad de datos.
En el receptor se divide la secuencia de datos por el CRC; Si la secuencia llega sin error, el
receptor obtiene un residuo de 0 y la unidad de datos se acepta.
El generador del CRC (el divisor) no se suele representar como una secuencia de unos y ceros,
sino como un polinomio algebraico, ejemplo:

CRC-32: x 32 + x 26 + x 23 + x 22 + x16 + x12 + x11 + x 10 + x 8 + x 7 + x 5 + x 4 + x 2 + x + 1


El polinomio es un formato apropiado porque es corto, y porque puede usarse para demostrar
conceptos matemáticos. Los polinomios seleccionados como CRC deben cumplir las siguientes
propiedades: 1) No debe ser divisible por x , esto garantiza que se puedan detectar todos los
errores de la ráfaga de longitud igual al grado del polinomio; 2) Debe ser divisible por x + 1 ,
esto garantiza que se puedan detectar todos los errores de ráfaga que afectan a un número impar
de bits.
Ejemplos de polinomios
x : 10 es divisible por x
x 2 + x : 110 es divisible por x
x + 1 : 11 no es divisible por x
x 2 + 1 : 101 no es divisible por x
Polinomios estándares utilizados para detección de errores en redes de datos:
CRC − 12 x12 + x11 + x 3 + x + 1
CRC − 16 x16 + x15 + x 2 + 1
CRC − ITU − T x16 + x12 + x 5 + 1
Los números 12, 16 y 32 se refieren al tamaño del residuo del CRC. Los divisores CRC son de
longitud de 13, 17 y 33 bits.
Los polinomios CRC-16 y CRC-ITU-T detectan.
o Todos los errores de uno y dos bits.
o Los errores con un número impar de bits invertidos.
o Los grupos de errores con longitudes menores de o igual a
o Los grupos de errores con longitudes de 17, con una efectividad de 99,997% .
o Los grupos de errores con longitudes de 18, con una efectividad de 99,998% .
Codificación Cíclica

Pasos para la codificación Cíclica:

1. [
Se hallan el número de elementos de control m: m = E ' ' log 2 (k + 1) + E ' ' log 2 (k + 1) ]
2. E ' ' es la función techo redondear hacia arriba. La función techo redondear hacia arriba
consiste en aproximar el resultado obtenido al numero entero inmediatamente superior; es
decir si el resultado es de 2.01, debemos aproximarlo a 3.
3. Hallamos P ( x ) .
4. Hallamos la matriz con la que se obtiene P ( x ) , teniendo en cuenta que debe tener k filas y
m+k columnas.

71
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

EJEMPLO 3.3._______________________________________________________________________
[ ]
1. Dado k = 4, hallamos el valor de m: m = E ' ' log 2 (4 + 1) + E ' ' log 2 (4 + 1) = 3 , con esto
sabemos que el polinomio P ( x ) es de orden 3: P ( x ) = x + x + 1 = 1011(2 ) .
3

2. Se encuentra la matriz, teniendo en cuenta que lo que se encuentra en amarillo es la matriz


identidad de orden k=4, y los demás valores se hallan de la siguiente forma:
Tomamos un número binario que empiece con “1” seguido de la cantidad de “0” y
procedemos a realizar la división en modulo dos con el valor de P ( x ) en binario:

P(x ) = x 3 + x + 1 = 1011(2 )
1000000000000....
1011
1000000000 1011
-----------------

1011 1010
---------------
011
110
1100
1011
-------------------
111
1110
1011
---------------------
101

0001 011 → a1
0010 110 → a 2
0100 111 → a3
1000 101 → a 4
Con estos valores tenemos que
G ( x) = 0001 → F ( x) = a1 = 0001011
G ( x) = 1000 → F ( x) = a 4 = 1000101
G ( x) = 1001 → F ( x) = a1 + a 4 = 1001110
G ( x) = 1101 → F ( x) = a1 + a 4 + a3 = 1101001

Decodificación Cíclica
Pasos para la decodificación Cíclica:
1. Se debe hallar la cantidad de elementos de control m:
[ ]
m = E ' ' log 2 (k + 1) + E ' ' log 2 (k + 1) . E’’ es la función techo redondear hacia arriba.
2. Debemos hallar P ( x) teniendo en cuenta que el orden del polinomio es de e ; así mismo
e ≥ m y w ≥ r . Como d=3 entonces r=1, no debemos olvida que w es el peso, es decir la
cantidad de “1” que tenemos.
3. Hallamos G ( x) que es el polinomio a codificar.
G ( x) x m
4. Hacemos el corrimiento de bits G ( x) x
m
= F ( x) y efectuamos la operación ,
P( x)
F ( x)
para así hallar los posibles valores de R ( x) : → R( x) .
P( x)
5. Si R ( x) = 0 , no hay error.

72
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

6. R( x)
Si no w=? de
7. Si w ≤ r , F ( x) = F ( x) ⊕ R ( x)
F ' ( x)
8. Si no girar hacia la derecha F ' ( x) = F ( x) , (paso 1). → R' ( x) .
P( x)
9. W’=? de R( x) , si w' ≤ r : F ' ( x) = F ' ( x) ⊕ R' ( x) , des-girar hacia la izquierda
F ' ( x) = F ' ( x) , sino retornar al paso 1.

EJEMPLO 3.4._______________________________________________________________________
Si k=1101 y m=3, entonces P ( x) = x 3 + x + 1 =1011 y F ( x) = 1111001 en la recepción,
comprobar que en el dato enviado fue F ( x) = 1101001 . Entonces:

1111001 / 1011
1011 1101 → Q ( x)
--------------------
1000
1011
--------------------------
1101
1011
--------------------------

110 → R ( x)
En este caso R ( x) =110, w=2. Entonces hacemos F ' ( x) = 1110011 es decir tomamos el
primero bit de la palabra y lo colocamos en la última posición y volvemos a dividir:
1110011 / 1011
1011 1100
------------------
01010
1011
----------------------

000111 → R' ( x)
En este casoR ' ( x) =111 w=3
Entonces hacemos F ' ' ( x) = 1100111 es decir tomamos el primero bit de la palabra y lo
colocamos en la ultima posición y volvemos a dividir
1100111 / 1011
1011 1110
-------------------
1111
1011
-------------------
1001
1011
--------------------

101 → R ' ' ( x)


En este casoR ' ' ( x) =101 w=2
Entonces hacemos F ' ' ' ( x) = 1001111 es decir tomamos el primero bit de la palabra y lo
colocamos en la última posición y volvemos a dividir:
1001111 / 1011
1011
---------------------
1011
1011
---------------------

00001 → R' ' ' ( x)

73
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

En este caso R ' ' ( x) =1 w=1, Como w ≤ r , F ' ' ' ( x) = F ' ' '⊕ R ' ' ' ( x) = 1001110 .
Ahora desgiramos, es decir tomamos el último bit de la palabra y lo colocamos en la primera
posición, esto lo hacemos hasta que nuevamente encontremos F ( x) .

F ' ' ' ( x) = 1001110


F ' ' ( x) = 0100111
F ' ( x) = 1010011
F ( x) = 1101001

3.3.2. Control de errores

Se trata de códigos que detectan y corrigen errores que aparecen en las transmisiones. Puede
haber dos tipos de errores:

• Tramas pérdidas: cuando una trama enviada no llega a su destino.


• Tramas dañadas: cuando llega una trama con algunos bits erróneos.

Hay varias técnicas para corregir estos errores:


• Detección de errores: discutida antes.
• Confirmaciones positivas: el receptor devuelve una confirmación de cada trama recibida
correctamente.
• Retransmisión después de la expiración de un intervalo de tiempo: cuando ha pasado un
cierto tiempo, si el emisor no recibe confirmación del receptor, reenvía otra vez la trama.
• Confirmación negativa y retransmisión: el receptor sólo confirma las tramas recibidas
erróneamente, y el emisor las reenvía.
Todos estos métodos se llaman ARQ (solicitud de repetición automática) y son usadas en redes
de datos (no aplicable a señales en tiempo real). Entre los más utilizados destacan:

• ARQ con parada-y-espera


Se basa en la técnica de control de flujo de parada-y-espera. Consiste en que el emisor transmite
una trama y hasta que no recibe confirmación del receptor, no envía otra. Puede ocurrir que: La
trama no llegue al receptor, en cuyo caso, como el emisor guarda una copia de la trama y además
tiene un reloj (temporizador), cuando expira un cierto plazo de tiempo sin recibir confirmación
del receptor, reenvía otra vez la trama. La trama llegue deteriorada al receptor, en cuyo caso no
es confirmada como buena por el receptor. Pero puede ocurrir que el receptor confirme una
trama buena pero la confirmación llegue al emisor con error, entonces, el emisor enviaría otra
vez la trama. Para solucionar esto (evitar marcos duplicados), las tramas se etiquetan desde 0 en
adelante y las confirmaciones igual. Es una técnica sencilla y barata pero poco eficiente.
• ARQ con adelante-atrás-N
Se basa en la técnica de control de flujo con ventanas deslizantes. Cuando no hay errores, la
técnica es similar a las ventanas deslizantes, pero cuando la estación destino encuentra una trama
errónea, devuelve una confirmación negativa y rechaza todas las tramas que le lleguen hasta que
reciba otra vez la trama antes rechazada, pero en buenas condiciones. Al recibir la estación
fuente una confirmación negativa de una trama, sabe que tiene que volver a transmitir esa trama
y todas las siguientes. Si el receptor recibe la trama i y luego la i + 2 , sabe que se ha perdido la
i + 1 , por lo que envía al emisor una confirmación negativa de la i + 1 . La estación emisora
mantiene un temporizador para el caso de que no reciba confirmación en un largo periodo de
tiempo o la confirmación llegue errónea, y así poder retransmitir otra vez las tramas.
• ARQ con rechazo selectivo
Con este método, las únicas tramas que se retransmiten son las rechazadas por el receptor o
aquellas cuyo temporizador expira sin confirmación. Este método es más eficiente que los
anteriores. Para que esto se pueda realizar, el receptor debe tener un buffer para guardar las
tramas recibidas tras el rechazo de una dada, hasta recibir de nuevo la trama rechazada y debe de
ser capaz de colocarla en su lugar correcto (ya que deben de estar ordenadas). Además, el emisor

74
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

debe de ser capaz de reenviar tramas fuera de orden. Estos requerimientos adicionales hacen que
este método sea menos utilizado que el de adelante-atrás-N.

Seguimiento de corrección de error

El seguimiento de corrección de error (FEC), es el único esquema de corrección de error que


detecta y corrige los errores de transmisión, del lado del receptor sin pedir retransmisión. Se
disponen de dos tipos de FEC a bloques y convolucional. El FEC a bloques es del tipo
Hamming, BCH, RS. El FEC convolucional da lugar al algoritmo de Viterbi. Son aplicados en
los servicios satelitales IDR-IBS, telefonía celular, CDROM, etc.

Con el FEC, se agregan bits al mensaje, antes de la transmisión. Un código de corrección de


errores muy utilizado es el CÓDIGO DE HAMMING.

Hamming trabajó en los laboratorios Bell en los años 40 en una computadora del modelo V de
Bell, un monstruo electromecánico basado en relés con velocidad de proceso de hertzios. La
entrada se alimentaba con tarjetas perforadas en las que, con frecuencia, se cometían errores al
ser leídas. En cada jornada, los errores encontrados se indicaban mediante luces de destello para
que los operadores pudieran corregir el problema. Fuera de las horas laborales, y durante los
fines de semana, cuando no había operadores, la máquina se dejaba preparada para el trabajo de
la siguiente jornada. Hamming trabajando los fines de semana, se sentía frustrado cada vez que
tenía que recomenzar sus programas debido a la falta de fiabilidad del lector de tarjetas. Los
siguientes años trabajó en el problema de corrección de error, desarrollando un arsenal de
algoritmos cada vez más eficaces. En 1950 publicó lo qué ahora se conoce como código de
Hamming, que aún hoy sigue siendo utilizado.

El número de bits HAMMING que se deben agregar a una unidad de información se determina
con la siguiente expresión:

2n ≥ m + n + 1

Donde: n → es el número de bits del código de HAMMING.


m → es el número de bits de la información a codificar
El código de HAMMING sólo detectará errores de un solo bit. No se puede usar para identificar
errores de bits múltiples. El código de HAMMING como todos los códigos FEC, requieren de la
adición de bits a los datos alargando consecuentemente el mensaje transmitido. El propósito de
los códigos FEC es reducir o eliminar el tiempo gastado de retransmisión. Sin embargo la suma
de los bits FEC a cada mensaje implica un aumento en el ancho de banda ó retardo en la
transmisión.

Los bits de verificación HAMMING se van a insertar en las potencias de dos, así:
2 0 , 21 , 2 3 , ... 2 n .

EJEMPLO 3.5._______________________________________________________________________
Mensaje: 101100010010

2 4 ≥ 12 + 4 + 1 → 16 ≥ 17
Ya que 17 > 16 No cumple la condición.

2 5 ≥ 12 + 5 + 1 → 32 ≥ 18
18 < 32 Si cumple la condición.
17 bits va ha ser la longitud de la trama de datos.
17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
1 H 0 1 1 0 0 0 1 H 0 0 1 H 0 H H

75
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

17 = 10001
14 = 01110
13 = 01101
9 = 01001
5 = 00101
Modulo 2: 11110

Datos en el transmisor

17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
1 1 0 1 1 0 0 0 1 1 0 0 1 1 0 1 0

Datos en el receptor

17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
1 1 0 1 1 0 0 0 1 1 0 0 1 1 0 1 0

17 = 10001
16 = 10000
14 = 01110
13 = 01101
9 = 01001
8 = 01000
5 = 00101
4 = 00100
2 = 00010
Modulo 2: 00000 , no se presento error.

Para comprobar la validez del código se cambiará el bit de información de la posición 15

17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
1 1 1 1 1 0 0 0 1 1 0 0 1 1 0 1 0

17 = 10001
16 = 10000
15 = 01111
14 = 01110
13 = 01101
9 = 01001
8 = 01000
5 = 00101
4 = 00100
2 = 00010
Modulo 2: 01111 , se presentó error en el bit número 15 .

Sin embargo, no es posible detectar mediante este código, varios bits equivocados

17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
0 0 1 1 1 0 0 0 1 1 0 0 1 1 0 1 0

76
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

15 = 01111
14 = 01110
13 = 01101
9 = 01001
8 = 01000
5 = 00101
4 = 00100
2 = 00010
Modulo 2: 01111 , Existe error en el bit 13 : falso, ya que existen varios bits
erróneos.

Codificación Hamming bidimensional:


Para codificar en Hamming debemos tener en cuenta lo siguiente:
La distancia de Hamming, es decir la distancia entre dos palabras de código de igual longitud,
definida como el número de bits (posición a posición) en los que se diferencian las dos palabras,
debe ser igual a 3 .
d = r + s +1
r≥s
Sabiendo que
r → Errores a detectar
s → Errores a corregir
Ejemplo: A ⊕ B = d , con A = 1011 y B = 1100
1011

1100
0111 , al realizar la suma en módulo dos, el resultado debe ser igual a tres.
Los valores de n y k deben verificar una serie de condiciones:
- n=k+m
- n es la longitud del mensaje completo
- k es el número de bits de datos de la palabra original sin codificar
- m es la cantidad de elementos de control
Por lo tanto, a cada palabra original le añadimos unos bits de paridad para obtener la palabra de
código, de forma que estos bits de paridad sirvan posteriormente para encontrar y corregir
errores que se produzcan en la transmisión.

Se debe cumplir que 2 ≥ n + 1 , como se sabe que d = 3 , se deduce la cantidad de bits que
m

deben tener m y n.
k 1 2 3 4 5 6 7 8 9 10 11 12 13
m 2 3 3 3 4 4 4 4 4 4 4 5 5
n 3 5 6 7 9 10 11 12 13 14 15 17 18
Como hacerlo

1. Tomar el mensaje a transmitir.


2. Hallar el valor de k.
3. Hallar los valores de m y n.
4. Se construye una fila en k, en la cual todos los bits cuya posición es potencia de dos se
utilizan como bits de paridad (posiciones 1, 2, 4, 8, 16, 32, 64, etc.) y el resto de posiciones
son utilizados como bits de datos (posiciones 3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, etc.).

77
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

5. Se construye una matriz de tal forma que en la columna de “Nº de orden” simplemente se
pone en binario una numeración desde 001 hasta 111 (en código binario natural), en la
columna siguiente (a la derecha) se colocan de forma vertical la fila hallada en el paso 4.

my m y −1 … m1
n1
n2

nn −1
nn

6. Se plantean las ecuaciones con la matriz anterior, y se igualan a cero, de esta forma se hallan
los valores reales de m; con esto se obtiene el mensaje a transmitir.
7. Una vez obtenida la palabra de código correcta, basta con quitar los bits de paridad para
obtener la palabra original enviada por el emisor, por lo cual e necesario conocer los valores
de m.

EJEMPLO 3.6._______________________________________________________________________
Si el mensaje original es k = 1101 , se procede de la siguiente manera:
1. Se halla la longitud del valor de k, en este caso la longitud de k = 4bits .
2. En la tabla se hallan los valores de m y n, en este caso m = 3bits y n = 7bits .
3. Se ordenan los factores en las posiciones correspondientes:

k = 4bits , k 4 k 3 k 2 k1 ⇒ Siempre en orden descendente.


m = 3bits , m1 m 2 m3 ⇒ Siempre en orden ascendente.
n = 7bits
m1 m2 k 4 m3 k 3 k 2 k1
1 2 3 4 5 6 7 ⇒ número de las posiciones igual al valor de n .
4. Se construye la matriz y se plantean las ecuaciones

m3 m2 m1
0 0 1 m1
0 1 0 m2
0 1 1 k4
1 0 0 m3
1 0 1 k3
1 1 0 k2
1 1 1 k1
5. Se planten las ecuaciones, teniendo en cuenta que el número de ecuaciones es igual a
número de elementos de control (m ) , en este caso 3.

Para plantear las ecuaciones nos ubicamos en la columna marcada con m1 , ahora en orden
descendente empezamos a ver que variables tienen el valor de “1”, en este caso resaltados en
amarillo y los igualamos a cero. La ecuación nos queda de la siguiente forma

m1 ⊕ k 4 ⊕ k3 ⊕ k1 = 0

78
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Luego se plantea la ecuación de la columna marcada como m 2 , de la misma forma que la


anterior, en este caso marcada con azul.
m 2 ⊕ k 4 ⊕ k 2 ⊕ k1 = 0
La última ecuación se extrae de la columna m3 , de la misma forma que la anterior, en este caso
marcada con rojo.
m3 ⊕ k 3 ⊕ k 2 ⊕ k1 = 0
Se hallan los valores de m, teniendo en cuenta las ecuaciones planteadas con anterioridad. Como
ya se tienen los valores de k , lo único que se debe hacer es encontrar el valor que cumpla la
ecuación; para esto, se debe recordar cómo se suma en módulo dos:

⊕ 0 1
0 0 1
1 1 0
m1 ⊕ k 4 ⊕ k 3 ⊕ k1 = 0
m1 1 1 1
En este caso el valor de m1 es 1

m 2 ⊕ k 4 ⊕ k 2 ⊕ k1 = 0
m2 1 0 1
En este caso el valor de m 2 es 0

m3 ⊕ k 3 ⊕ k 2 ⊕ k1 = 0
m3 1 0 1
En este caso el valor de m3 es 0

Finalmente se obtiene el mensaje completo: n = 1010101

EJEMPLO 3.7._______________________________________________________________________
Con base en el ejemplo anterior, tenemos que: k = 1101 , m = 100 , n = 1010101
Si se desea averiguar qué bit está dañado si se transmite el siguiente mensaje: n = 1010001 (se
ha producido deliberadamente un error en el quinto bit).
Luego de construir las ecuaciones del paso 3, del mismo modo que en el ejemplo anterior, se
remplazan los valores correspondientes del nuevo n , y se halla el resultado de cada una de las
ecuaciones
m1 ⊕ k4 ⊕ k3 ⊕ k1 = 1
1 1 0 1
Según el mensaje, m1 es 1

m 2 ⊕ k 4 ⊕ k 2 ⊕ k1 = 0
0 1 0 1
Según el mensaje, m2 es 0.

m3 ⊕ k3 ⊕ k2 ⊕ k1 = 1
0 0 0 1
Según el mensaje, m3 es 0
Luego tomamos los resultados de cada ecuación en orden descendente y pasamos ese número a
binario: 101(2 ) = 5 (10 ) , con esto concluimos que el error se encuentra en el quinto bit.

79
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Control del flujo de datos


Es una técnica para que el emisor no sobrecargue al receptor al enviarle más datos de los que
pueda procesar. El receptor tiene un buffer de una cierta capacidad para ir guardando los datos
recibidos y tras procesarlos, enviarlos a capas superiores. Vamos a suponer que todas las tramas
recibidas llegan con un poco de retardo pero sin errores y sin adelantarse unas a otras.
• Control de flujo mediante parada y espera: Consiste en que el emisor envía una trama y
al ser recibida por el receptor, éste (el receptor) confirma al emisor (enviándole un mensaje
de confirmación) la recepción de la trama. Este mensaje recibido por el emisor es el que le
indica que puede enviar otra trama al receptor. De esta forma, cuando el receptor esté
colapsado (el buffer a punto de llenarse), no tiene más que dejar de confirmar una trama y
entonces el emisor esperará hasta que el receptor decida enviarle el mensaje de
confirmación (una vez que tenga espacio en el buffer). Este sistema es el más eficaz para
que no haya errores y es el más utilizado cuando se permiten tramas muy grandes, pero es
normal que el emisor parta las tramas en más pequeñas para evitar que al ser una trama de
larga duración, es más probable que se produzca algún error en la transmisión. También, en
LAN's, no se suele permitir que un emisor acapare la línea durante mucho tiempo (para
poder transmitir una trama grande). Otro problema adicional es que se infrautiliza la línea al
estar parada mientras los mensajes del receptor llegan al emisor.
• Control del flujo mediante ventana deslizante. El problema de que sólo hay una trama
cada vez en tránsito por la red se soluciona con este sistema de ventanas deslizantes. En este
sistema, el receptor y el emisor se ponen de acuerdo en el número de tramas que puede
guardar el receptor sin procesar (depende del tamaño del buffer). También se ponen de
acuerdo en el número de bits a utilizar para numerar cada trama (al menos hay que tener un
número de bits suficientes para distinguir cada una de las tramas que quepan en el buffer del
receptor), Por ejemplo, si en el buffer del receptor caben 7 tramas, habrá que utilizar una
( )
numeración con 3 bits 2 = 8 > 7 . El emisor transmite tramas por orden (cada trama va
3

# de bits
numerada módulo 2 ) hasta un máximo de el número máximo de tramas que quepan
en el buffer del receptor. El receptor irá procesando las tramas que le lleguen y confirmando
que admite tramas a partir de una dada (hasta un máximo de 7 en el ejemplo). Por ejemplo,
si ha procesado hasta la trama 5 , confirmará el número 6 (es decir, que puede procesar las
tramas 6, 7, 0, 1, 2, 3 y 4 ). Al recibir el emisor la confirmación de la trama 6 , emitirá
todas las que no haya transmitido desde la 6 hasta la 4 ( 6, 7, 0, 1, 2, 3 y 4 ). Por
ejemplo, si ya había enviado la 6, 7, 0 y 1 , sabe que puede enviar la 2, 3 y 4 . Existe la
posibilidad de indicarle al emisor la confirmación de tramas recibidas y prohibirle el envío
de más tramas (con el mensaje de Receptor No Preparado). Cuando las dos estaciones son
emisoras y receptoras, se pueden utilizar dos ventanas por estación, una para el envío y otra
para la recepción. Se puede utilizar la misma trama para enviar datos y confirmaciones,
mejorando así la utilización del canal. Este sistema de transmisión es mucho más eficiente
que el de parada y espera, ya que pueden haber más de una trama a la vez en las líneas de
transmisión (en el de parada y espera sólo puede haber una trama a la vez).

3.4. CIFRADO Y DESCIFRADO DE LA INFORMACIÓN


Introducción
Historia HAMLET: Hamlet era un hacker danés que vivía en el castillo del rey Claudius, rey de
Dinamarca; entre los dos existían antagonismos, había amenazas de muerte a varios residentes
del castillo y se escuchaban continuas quejas de las molestias que Hamlet ocasionaba en el
castillo. El rey decidió poner a salvo la familia real de la amenaza de Hamlet, y lo envío hacia
Inglaterra acompañado por agentes de su confianza, con ellos le enviaba una misiva al rey de
Inglaterra de ejecutar a Hamlet tan pronto llegaran. El rey Claudius no tomo precauciones en la
carta (seguridad), y fue así como Hamlet se apodero del mensaje, lo leyó y se enteró de que iba a
ser ejecutado, mientras dormían Rosenerantz y Gurldenstein; entonces, sustituyó la petición del
rey con la muerte de los dos infortunados agentes de confianza, pego al mensaje el sello de su
padre, rey anterior de Dinamarca y escapó en el complot. Los sirvientes fieles a Claudius nunca
miraron el mensaje y fueron ejecutados a la llegada a Inglaterra.

80
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Claudius había podido haberle incorporado seguridad al mensaje de forma que el rey de
Inglaterra verificara el contenido del mensaje. Moraleja: La seguridad es relevante para la
privacidad e integridad de la transmisión de información sensible.
Breve reseña histórica sobre el cifrado: Debido a la evolución de las computadoras, y a la
reducción de sus costos y tamaños, diversas empresas e instituciones comenzaron a utilizarlas.
Al mismo tiempo, fue necesario cifrar comunicaciones importantes como las transferencias de
dinero. Sin embargo, para que dos compañías intercambiaran información cifrada debían poseer
el mismo algoritmo. Esto era un problema entre 1960 y 1970 ya que no existía un único
algoritmo de cifrado, es decir no había un estándar. Por tal razón en mayo de 1973, la American
National Bureau of Standards, hoy la National Institute of Standards and Technology (NIST),
decidió resolver el problema y solicitó formalmente propuestas para establecer un sistema de
cifrado estándar. Una de esas propuestas fue un algoritmo propuesto por la IBM, resultado de un
proyecto de investigación a cargo de Walter Tuchman y Carl Meyer.
A finales de los años 60, IBM estableció un proyecto de investigación en criptografía conducido
por Horst Feistel, un inmigrante alemán que llegó a E.U.A. en 1934. El proyecto concluyó en
1971 con el desarrollo de un algoritmo denominado LUCIFER, el cual operaba con bloques de
64 bits y una clave de 128 bits y que fue vendido a la LLoyd's de Londres para ser usado en
un sistema de cajero automático, igualmente desarrollado por la IBM. Posteriormente, dado que
la IBM deseaba que LUCIFER se volviese un producto más comercial inició un nuevo proyecto
a cargo de Walter Tuchman y Carl Meyer (con ellos estuvieron involucrados consultores y
personal de apoyo técnico de la National Security Agency (NSA).
El resultado fue una versión refinada del LUCIFER que era más resistente al criptoanálisis pero
que usaba una clave de tamaño más pequeña, 56 bits. Este ultimo fue el algoritmo que la IBM
sometió a consideración del National Institute of Standards and Technology (NIST) en 1973, y
que de hecho se adoptó formalmente como el algoritmo de cifrado estándar en 1977. A partir de
ese momento se le denominó: Data Encryption Standard. DES.
Criptología
Del griego Kryptos y logos que significa tratado de lo oculto: este término describe la ciencia de
las comunicaciones secretas. Se divide en:
• Criptografía
• Criptoanálisis
Criptografía
La criptografía es el empleo de la escritura para inducir a un error intencional. Se aplicó en
Egipto a partir del 700 AC creando infinidad de jeroglíficos (monumental o cursiva) que pierden
conexión con la escritura cotidiana (hierática) y permitiendo la lectura solo por parte de la
minoría sacerdotal. Hace referencia a las transformaciones de un mensaje (aplicación de
algoritmos para proteger los mensajes) en forma codificada a través del encriptado y en la
recuperación del mensaje original a partir del desencriptado. En la segunda guerra mundial se
usó el lenguaje navajo (lenguaje que describe la naturaleza) para cifrar información secreta de
los aliados.
Esta forma de codificación permite encubrir la información enviada bajo un formato de difícil
identificación por un detector no autorizado. Se encuentra en aplicaciones como CATV, redes de
datos (Gran parte de asuntos comerciales, de negocios y personales se están realizando en la
actualidad por medio de computadores) y sistemas celulares. La seguridad es un aspecto
importante. Para asegurarla se dispone de algoritmos de encriptamiento y claves, en cuya
privacidad se basa todo el esquema.
Criptoanálisis
Aparece con los árabes y tiene que ver con los procedimientos para deshacer las comunicaciones
criptográficas, rompiendo el cifrado o falseando las señales codificadas que podrían ser
aceptadas como genuinas.

81
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Figura Nº 3.21. Seguridad básica en un sistema de comunicaciones.

Servicios de los sistemas Criptográficos


• Privacidad (confidencialidad): negar el acceso a la información a usuarios no autorizados;
que el texto claro “m” sea visto y conocido únicamente por los interesados.
• Autenticidad: Se refiere a la validación de una fuente de mensaje. Las funciones Hash,
MDS, SHA y SHA-1 son estrategias que complementan la criptografía, garantizando la
autenticidad e integridad del mensaje, mediante la validación e identificación de los usuarios
por medio de claves.
• Integridad: que el mensaje llegue tal y como se envió, no sea modificado por medios
accidentales o deliberados durante su transito.
• No repudiación: que no se niegue la llegada del mensaje.
Principios Criptográficos de Kerchoft
Kerchoft en el siglo XVI dio unas reglas para la criptografía militar.
• El criptograma no debe dar ningún indicio sobre la clave, ni el texto claro.
• El cifrador aplica una parte privada (clave) más una parte pública (el algoritmo).
• Las claves deben ser fáciles de generar y cambiar (decreto 001 de 1997).
• El proceso de cifrado debe ser tan complejo como el secreto que uno guarda.
Tipos de secretos (categorías)
1. Secreto perfecto o incondicional:
Es irrompible frente a criptoanalistas que tienen recursos y tiempo ilimitados. Ejemplo: el
algoritmo RSA y el cifrado de Verman, conocido también como bloc de un tiempo (tenía
una clave de longitud igual al texto).
2. Secreto computacional:
Es una clave segura frente a criptoanalistas que tienen recursos y tiempo limitados. Ejemplo:
algoritmos de clave pública.
3. Secreto probable:
Es un secreto que se basa en algoritmos de clave privada. Ejemplo: DES, IDEA.
4. Secreto condicional:
Es un secreto cuyo rompimiento esta condicionado o qué tan bueno es el criptoanalista.
Tipos de Criptografía
Según el número de claves y el conocimiento de las mismas:
• Criptografía de clave simple o criptografía de clave secreta: Usa una clave que la conoce
únicamente Alix y B0 ; probablemente resulte imposible desencriptar el mensaje sin el
conocimiento de la clave.
• Criptografía de clave publica o de dos claves: a Alix y Bo se le proporcionan material de
clave propia que se divide en 2 partes: una componente publica y una componente privada:
la publica genera una transformación publica y una componente privada genera una

82
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

transformación privada que se mantiene en secreto. Ejemplos: Distribución de clave publica


de Diffie-Hellman; Rivest – Shamir – Aldemar y el algoritmo RSA.
Criptografía de clave secreta

Figura 3.22. Diagrama de bloques de un sistema de comunicaciones con criptografía de clave secreta.

Y = F ( X , Z ) = ek ( x ) F denota la transformación invertible que produce el criptograma Y.


F −1 (Y , Z ) = d k (Y ) = d k (ek ( x )) = X
• Cifradores de bloque y de secuencia
¾ Los primeros operan de manera combinatoria sobre grandes bloques de texto común.
¾ Los de secuencia procesan el texto común en pedazos pequeños (caracteres o bytes).
• Cifrado de sustitución
Cada letra del texto común se remplaza por un sustituto fijo (usualmente una letra del
mismo alfabeto). La clave secreta determina la regla de sustitución. Ejemplo: Cifrado de
Hill, cifrado de Cesar, cifrado de Vigenere (polialfabético).
• Cifrado de transposición
El texto común se divide en un grupo de periodo fijo d y la misma perturbación se aplica a
cada grupo, la clave secreta determina la regla de permutación particular.

Encripcion Simétrica y Asimétrica

• Simétrica: Usa la misma clave secreta, normalmente de 64 bits, tanto para cifrar como
para descifrar. El poder del algoritmo esta en su complejidad y en la longitud de la clave (es
imprescindible el uso de un canal seguro para la retransmisión de la clave, inadecuada para
firmas digitales). Ejemplos: DES, SDES, RC4 y AES.
• Asimétrica: Usa dos claves, una de las cuales hacen pública. La codificación y
decodificación se controla por claves diferentes, evitándose así la necesidad de la
distribución de claves; para la distribución de las claves diferentes se utiliza la encripción
asimétrica, posteriormente se emplea el cifrador simétrico por ser más rápido. Ejemplos:
RSA, GAMAL.
• El modo: Define como el cifrador aplica un algoritmo de encriptación al texto plano.
• Padding: Define cómo es alargado mediante relleno un texto plano para que cumpla con el
tamaño del cifrador, tamaño con el cual opera.

Mediante el modo el texto plano es cifrado en un bloque y cada bloque es independiente de


otros. Usualmente el tamaño del bloque es igual al tamaño de la clave pública.
En RSA: 1024 bits → 128 bytes .

Estándares de cifrado de datos


DES: Es el algoritmo más utilizado, por su seguridad, ya que usa un número elevado de claves y
es muy difícil de descifrar. Este cifrador de bloques trabaja con textos de 64 bits que son
transformados mediante múltiples sustituciones en bloques de 64 bits, de texto cifrado; el texto
cifrado se suma al original y se vuelve a cifrar; utiliza una clave secreta de 56 bits.
Firmas digitales
El usuario del sistema debe tener la posibilidad de firmar un mensaje electrónico. El uso de una
firma digital es una prueba de que el mensaje lo origino el emisor. La firma debe tener las
siguientes propiedades:
• El receptor del mensaje es capaz de verificar la firma del emisor.

83
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

• La firma no es falsificadle.
• El mensaje electrónico firmado por el emisor no puede negar que lo es.
Ejemplo: algoritmo RSA (satisface las tres propiedades anteriores).
Acuerdo de claves
Para que dos personas (Alix, B0 ) puedan intercambiar información secreta primero deben
ponerse de acuerdo en las claves. Es un método para crear una clave secreta compartida,
intercambiando llaves públicas.
Procedimiento
• El mensaje es cifrado con una llave secreta a través de cifrado simétrico.
• La llave simétrica es cifrado de forma asimétrica por una llave pública que es tomada de un
depositario.
• La llave simétrica encriptada es ligada el mensaje cifrado.
• Los usuarios mantienen el par de llaves por mucho tiempo ( 1 año).
Ejemplo: Diffie- Hellman, RSA.
Aplicaciones de la criptología
Internet: La criptografía para Internet se inicia en 1976 por Diffie y Hellman cuando se
estableció el concepto de “criptografía de clave pública”. Para realizar este proceso se recurre a
un número público (g ) , dos números privados ( x, y ) y un módulo ( p ) . El extremo A envía la
clave (g ) y el extremo B la clave (g ) en ambos casos módulo-p. En recepción se realizan
x y

las operaciones (g ) y (g ) que son iguales y pasan a ser la clave de criptografía secreta y
x y y x

única. El problema de la criptografía de clave pública es la lentitud de cálculo y la posibilidad de


ser descifrada mediante el criptoanálisis.

El método standard utilizado en Internet se basa en segmentar la información en bloques fijos de


64 o 128 bits de longitud para realizar una criptografía por bloques. Para reducir la
probabilidad de detección se realiza un proceso de concatenación de forma que el resultado de
un bloque influye sobre el siguiente. Se denomina DES (Data Encryption Standard)
fundamentado en bloques de códigos conocidos ECB (Electronic Code Book).
Telefonía GSM: Un tipo de Criptografía se aplica en telefonía móvil celular en GSM. Se
procede a cifrar la información para protección de escuchas no autorizadas. El cifrado se realiza
sobre pares de grupos de 57 bits con una codificación de interleaver ya realizada. Se tienen
algoritmos distintos pero similares para el proceso de autentificación y cifrado de datos de
usuario. La red GSM (desde el centro de switching MSC) envía un número random RAND de
128 bits. El móvil utiliza a RAND para mezclarlos con un parámetro secreto K i disponible en
el centro de autentificación. La mezcla se realiza mediante un algoritmo denominado A8 y
permite obtener la señal K c de 64 bits. El número de trama ( 22 bits) y K c ( 64 bits)
generan, mediante el algoritmo de criptografía A5 , la señal S 2 de 114 bits. La numeración
secuencial de trama se recibe por el canal de control de sincronismo SCH. Esta señal S 2 se usa
para componer los datos ( 2 × 57 bits) a ser transmitidos mediante compuertas exclusive-Or.
3.4.1. Cifrado de CESAR
Proceso de cifrado

• Se parte del alfabeto español, 26 letras, no cuentan las siguientes letras: LL, RR y Ñ.

A B C D E F G H I J K L M
0 1 2 3 4 5 6 7 8 9 10 11 12
N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25
Tabla Nº 3.4. Alfabeto para el cifrado CESAR

84
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Z 26 → Cuando se encripta usando una letra.


Z 262 = Z 676 → Cuando se encripta usando dos letras.
• El proceso de la encriptación o seguridad de la información involucra tres personajes.
Alix, EVA y B0 (ver figura Nº 3.21)

• Función de ALIX: encriptar el mensaje claro: M.


Aplicará la función: ek ( x) = (ax + b) mod 676
El módulo del número 676 , se calcula así:
(528) mod 676 = 528 → El módulo de un número menor que el módulo es igual
al mismo número.
(676) mod 676 = 676 → El módulo de un número igual al módulo es igual al
mismo número.
(1464) mod 676 = 112 → El módulo de un número mayor que el módulo es igual
al residuo entre el número sobre el módulo
1464 = 676 + 676 + 112 .
(− 603) mod 676 = 528 → Resultado que arroja 676 − 603 = 73 .
• " a " y "b " son las claves privadas de la ecuación de encriptación, que cumplen las
siguientes condiciones:

¾ "b " es cualquier número ≤ 676 ; " a " es un residuo primo de 676 .
¾ (a,676) : 1 , " a " es residuo primo de 676 , si y solo si, el único común denominador
es 1 .
(175,676) : 1 , son primos relativos
175 5 676 2
35 5 338 2
7 7 169 13
1 13 13
1
(26,676) : 1 , no son primos relativos porque:
26 2 676 2
13 13 338 2
1 169 13
13 13
1
26 y 676 tienen divisores comunes 2 , 13 . Para que 26 y 676 sean primos
relativos, el divisor común a ambos debe ser 1 .

EJEMPLO 3.8._______________________________________________________________________
ALIX va a encriptar el mensaje claro M = Buenos días → BU EN OS DI AS
X 0 = 26(B ) + U = 26(1) + 20 = 46
X 1 = 26(E ) + N = 26(4 ) + 13 = 117
X 2 = 26(O ) + S = 26(14 ) + 18 = 382
Y así sucesivamente con el resto del mensaje.
Para este ejemplo, ALIX usará como claves: " a " = 175 y "b " = 673 . La función de
encriptación quedará así
ek ( X 0 ) = [175( X 0 ) + 673] mod 676

85
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

ek ( X 0 ) = [175(46) + 673] mod 676


ek ( X 0 ) = 8723 mod 676 = 611
611 26
13 23
Cociente → 23 , Residuo → 13 . 611 = 26(23) + 13
Se observan los pesos dados a las letras del alfabeto español, 23 corresponde a X
y 13 corresponde a N.

611 = 26( X ) + N . Eso quiere decir que BU se cifra como XN.


Para la segunda pareja
ek ( X 1 ) = [175( X 1 ) + 673] mod 676
ek ( X 1 ) = [175(117 ) + 673] mod 676
ek ( X 1 ) = 21148 mod 676 = 192
192 26
10 7
Cociente → 7 , Residuo → 10 . 192 = 26(7 ) + 10
Se observan los pesos dados a las letras del alfabeto español, 7 corresponde a H y
10 corresponde a K.
611 = 26(H ) + K . Eso quiere decir que EN se cifra como HK.

El procedimiento continúa de la misma forma para todo el texto.

Proceso de descifrado
• Función de B0 : descifrar el mensaje encriptado.
B0 conoce las claves " a " y "b " .
Aplicará la función: [ ]
d x ( y ) = ( y − b)a −1 mod 676

• En la fórmula anterior de usa a −1 : Cómo hallar el inverso de un número.

Se aplica la formula: γ 0 = q1γ 1 + γ 2


γ 1 = q 2γ 2 + γ 3
γ 2 = q3γ 3 + γ 4
M M M
γ n−1 = qnγ n + γ n+1

" a " = 175 , a −1 = ? 676 = 3(175) + 151


175 = 1(151) + 24
151 = 6(24 ) + 7
24 = 3(7 ) + 3
7 = 2(3) + 1 Cuando γ n +1 es igual a 1 , para el cálculo.
Después se aplica la fórmula: t J = t J −2 − (q J −1 )(t J −1 )
Con condiciones iniciales: t 0 = 0 , t1 = 1 , J ≥ 2 para todo J .

86
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

t 2 = t 0 − (q1 )(t1 )
t 2 = 0 − (q1 )(1) , porque t 0 = 0 y t1 = 1 , por condiciones iniciales.
t 2 = 0 − (3)(1) = −3 , porque q1 del paso anterior es 3 .
t 3 = t1 − (q2 )(t 2 )
t 3 = 1 − (1)(− 3) = 4 , porque q2 del paso anterior es 1 y t 2 = −3 .
t 4 = t 2 − (q3 )(t 3 )
t 4 = −3 − (6 )(4 ) = −27 , porque q3 del paso anterior es 6 y t 3 = 4 .
t 5 = t 3 − (q4 )(t 4 )
t 5 = 4 − (3)(− 27 ) = 85 , porque q4 del paso anterior es 3 y t 4 = −27 .
t 6 = t 4 − (q5 )(t 5 )
t 6 = −27 − (2)(85) = −197 , porque q5 del paso anterior es 2 y t 5 = 85 .
Suspendemos aquí porque se acabaron las q n .

• − 197 mod 676 = 479 , entonces el inverso de 175 es 479 . Se puede probar así:
(175 × 479) − 1 = 83824 , dividiendo entre 676 , el dividendo es exacto 124 .
EJEMPLO 3.9._______________________________________________________________________

B0 chequea el texto cifrado: XNHK… separa en parejas: XN HK K y halla Y .


Y0 = 26( X ) + N = 26(23) + 13 = 611
Para obtener texto claro " M " aplica la función de desencripción.
[ ]
d x ( y ) = ( y − b )a −1 mod 676
d x ( y ) = [(611 − 673)× 479] mod 676
d x ( y ) = −29698 mod 676 = 46

46 26
20 1
46 = 26(1) + 20 , se examinan los pesos del alfabeto, 1 corresponde a B y 20 corresponde a U.
46 = 26(B ) + U . La pareja de letras XN → se desencripta como BU.

Para HK se hace exactamente lo mismo.


Y1 = 26(H ) + K = 26(7 ) + 10 = 192
Para obtener texto claro " M " aplica la función de desencripción.
[ ]
d x ( y ) = ( y − b )a −1 mod 676
d x ( y ) = [(192 − 673)× 479] mod 676
d x ( y ) = −230399 mod 676 = 117
117 26
13 4

117 = 26(4 ) + 13 , se examinan los pesos del alfabeto, 4 corresponde a E y 13 corresponde a N.


117 = 26(E ) + N . La pareja de letras HK → se desencripta como EN.

87
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Proceso de criptoanálisis

La función de EVA: es hacer criptoanálisis; ella ignora las claves " a " y "b " , pero sabe que la
clave " a " es un residuo primo de 676 , y que la clave "b " es cualquier número menor o igual
a 676 . Para hacer criptoanálisis procede a generar un vector con todos los residuos primos de
676 y a esos números le saca el inverso porque el proceso de descifrado implica la siguiente
fórmula.
[
d x ( y ) = ( y − b)a −1 ] mod 676
Para la clave "b " también procede a generar un vector con todos los números menores o iguales
a 676 .
3.4.2. Cifrado RSA: Rivest, Shamir y Adleman.

Este algoritmo está constituido por las claves N ( p, q ), e, d que son respectivamente el módulo
de trabajo, el exponente de cifrado y el exponente de descifrado. Los valores de N y de uno de
los exponentes son públicos; mientras que, los valores del otro exponente, p y q son privados y
secretos.

En resumen: Claves públicas: N , e ; Claves privadas: p, q, d .

• El usuario del programa ingresa dos números primos grandes, aproximadamente de cien
dígitos cada uno. Los dos números primos son p y q . El programa debe examinar que los
dos números p y q sean primos. Un número primo es aquel que sólo es divisible por si
mismo y por la unidad.
• Calcular N = p ⋅ q , Calcular φ ( N ) = ( p − 1)(q − 1)
• Cifrado: Para realizar el cifrado C de un mensaje claro M se debe cumplir que
1 < M < N , si el texto claro M > N , se divide M en bloques S , tal que 1 < S < N .

EJEMPLO 3.10.______________________________________________________________________

p = 41 , q = 59 : N = p ⋅ q = 2419 , φ ( N ) = ( p − 1)(q − 1) = 2320 .


El mensaje a cifrar es “PUBLICO”.
¾ Se divide el mensaje en bloques de dos letras: 27 2 , a saber; PU BL IC OX , se puede
rellenar un espacio con otra letra.
27 2 < N < 27 3 , 729 < N < 19683
Se debe cumplir la desigualdad → 27 < N , es decir: 729 < 2419
2

¾ Se identifican los pesos de las letras. P = 16 , U = 21 (teniendo en cuenta la Ñ).


PU : 1621 .
¾ El usuario ingresa un número aleatorio e que debe cumplir la condición 1 < e < N .
Ejemplo: e = 151 ; Además (e,φ ( N )) : 1 el número aleatorio e debe ser primo relativo
de φ (N ) .
¾ Sacar el inverso de e . e −1 mod φ ( N ) = d
¾ Los bloques del mensaje M : M 1 , M 2 , M 3 ... se elevan a la potencia e y el resultado se
reduce al módulo N .

C ≡ M e mod N
C ≡ 1621151 mod 2419 ,
151
Como resolver módulos grandes 1621 mod 2419

88
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Se toma el valor de e y se pasa a su representación en binario e = 10010111

Luego: 1 Z = 12 mod 2419 = 1


Z = 1×1621 mod 2419 = 1621
0 Z = 16212 mod 2419 = 607
0 Z = 607 2 mod 2419 = 761
1 Z = 7612 mod 2419 = 980
Z = 980 ×1621mod 2419 = 1761
0 Z = 1716 2 mod 2419 = 733
1 Z = 7332 mod 2419 = 271
Z = 271×1621mod 2419 = 1452

1 Z = 1452 2 mod 2419 = 1355


Z = 1355 ×1621mod 2419 = 3
1 Z = 32 mod 2419 = 9
Z = 9 ×1621mod 2419 = 75
C ≡ 75 , según los pesos de las letras del alfabeto 7 = h y 5 = f , entonces PU se
encripta como hf .

• Descifrado: la recuperación del mensaje M se lleva a cabo elevando el mensaje cifrado C


a la potencia d (inverso de e ) y reduciendo el resultado al módulo N , de acuerdo con la
congruencia:

M ≡ C d mod N Si e ≡ 151
M ≡ 75 2151 mod 2419 e −1 mod φ ( N ) = 2151
M ≡ 1621 e −1 mod 2320 = 2151

• Entonces: 16 es el peso de p y 21 es el peso de u .

Nota: la recuperación del mensaje M también puede lograrse aplicando el teorema chino
de los residuos, así:

{ [ ] [
M ≡ Ap C p mod P + Aq C q mod q mod N
d d
]}
Donde C p ≡ C mod p y C q ≡ C mod q
[ ]
Ap ≡ q q −1 mod p = q p −1 mod N
Aq ≡ p[ p −1
mod q] = p q −1
mod N

La congruencia anterior es equivalente a

{ [
M ≡ Ap C p
dp
] [
mod p + Aq C q
dq
]}
mod q mod N
Donde dp = d mod ( p − 1) y dq = d mod (q − 1)
Observación: en éste cifrado se pueden obtener tres letras, no obstante se agrupó el texto
claro en dos. Para descifrar, se deben agotar todas las opciones posibles.

89
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

3.4.3. Cifrado DES.


Introducción: El algoritmo DES ha generado mucha controversia principalmente en dos temas:
el primero fue el tamaño de clave de 56 bits, puesto que inicialmente era de 128 bits; y el
segundo fue el diseño de las S-cajas, en las cuales se basa la seguridad del DES, ya que este era
material clasificado. Además corrió el rumor, de que la NSA había impuesto tales criterios
porque de esa manera podría leer cualquier mensaje cifrado sin conocer la clave, utilizando sus
propios recursos.

En general, DES utiliza una clave simétrica de 64 bits, de los cuales 56 son usados para la
encriptación, mientras que los 8 restantes son de paridad, y se usan para la detección de errores
en el proceso, como la clave efectiva es de 56 bits, son posibles un total de
2 56 = 72.057.594.037.927.936 claves posibles.
Aunque el DES, actualmente ya no es un estándar, se considera un objeto de estudio interesante
en la criptografía y por ello se aborda a continuación una versión simplificada: DES simplificado
(S-DES). DES simplificado (S-DES) fue diseñado por el profesor Edward Schaefer de la
universidad de Santa Clara, como una herramienta para ser usada con fines educativos más que
de seguridad.

El S-DES es un algoritmo de cifrado por bloques. Utiliza un tamaño de bloque de 8 bits, y una
clave secreta de 10 bits. Esto significa que si tenemos un mensaje de tamaño mayor, éste deberá
partirse en bloques de 8 bits. Esto puede resultar muy conveniente, sobretodo si se esta
trabajando con caracteres codificados en código ASCII, en el cual cada caracter se codifica con
8 bits, de esta manera tomaríamos caracter por caracter y lo cifraríamos usando la clave. El S-
DES es un algoritmo de clave secreta, cuyo funcionamiento esta basado en el uso de
permutaciones y sustituciones.
Como se puede observar en la siguiente figura, para cifrar un bloque, inicialmente se aplica una
permutación inicial (IP ) ; una función f K ; una permutación simple SW que lo único que hace
es intercambiar las mitades derecha e izquierda del bloque; luego se vuelve a aplicar la función
f K y finalmente se aplica una permutación, que de hecho es la permutación inversa: IP −1 .

Figura Nº 3.23. Diagrama general del DES.

Para descifrar un bloque, se llevan a cabo las mismas operaciones, lo único que cambia es el
orden en el que se utilizan las subclaves K1 y K 2 que son generadas de la clave K .

90
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Generación de claves para S-DES: tanto DES como S-DES, son algoritmos de clave secreta, lo
cual implica que dos entidades que deseen comunicarse deben compartir la misma clave, pues
depende de dicho dato, que se puedan cifrar y descifrar los mensajes fácilmente. S-DES utiliza
una clave K de 10 bits, de la cual, se derivarán un par de subclaves K1 y K 2 , que se
utilizarán en distintas etapas del proceso de cifrado y descifrado. La forma de generar dichas
subclaves se muestra en la siguiente figura.

Figura Nº 3.24. Generación de las subclaves del S-DES.

Suponga que la clave es K = 1010000010 . A dicha K , se le aplicará la permutación P10,


que se muestra enseguida.
P 10
3 5 2 7 4 10 1 9 8 6
Dicha permutación nos indica, que ahora colocaremos primero el bit que se encuentra en la
tercera posición, luego el bit que se encuentra en la quinta posición, luego el que se encuentra en
la segunda posición, y así sucesivamente hasta que al final colocaremos el bit que se encuentra
en la sexta posición. Antes de aplicar la permutación, la clave se verá como en la siguiente tabla.

Clave K
K1 K 2 K 3 K 4 K 5 K 6 K 7 K 8 K 9 K10
1 0 1 0 0 0 0 0 1 0
Después de haber aplicado la permutación, se observará de la siguiente forma

K1 K 2 K 3 K 4 K 5 K 6 K 7 K 8 K 9 K10
1 0 0 0 0 0 1 1 0 0
A dicho resultado, se le divide en dos partes
1 0 0 0 0 0 1 1 0 0
A cada una de las cuales se le hace un corrimiento circular a la izquierda. Esto es el bit más a la
izquierda se coloca más a la derecha, y los demás se corren un lugar, lo cual se observa en la
siguiente tabla
0 0 0 0 1 1 1 0 0 0
Este resultado nos va a servir para realizar dos operaciones. La primera de ellas será tomar el
conjunto de 10 bits concatenando ambos bloques como sigue.

K1 K 2 K 3 K 4 K 5 K 6 K 7 K 8 K 9 K10
0 0 0 0 1 1 1 0 0 0

91
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Y se le aplica la permutación P8 que aparece a continuación:


P8
6 3 7 4 8 5 10 9

Se observa que la permutación no se incluyen los bits 1 y 2 ; por lo tanto, después de aplicarla
quedarán solamente 8 bits, a este tipo de permutaciones, se les conoce como permutaciones de
compresión. Así se obtiene la subclave K1 .

Subclave K1
K6 K3 K7 K 4 K 8 K 5 K10 K 9
1 0 1 0 0 1 0 0

La segunda operación que se lleva a cabo es tomar ambos bloques de 5 bits, y a cada uno de
ellos, se le hace un corrimiento circular a la izquierda de 2 posiciones ( 2 corrimientos hacia la
izquierda de una posición), después del cual cada uno de los bloques se verá de la siguiente
manera
0 0 0 0 0 0 0 0 1 1
Por último se juntan los dos bloques anteriores en uno sólo

K1 K 2 K 3 K 4 K 5 K 6 K 7 K 8 K 9 K10
0 0 1 0 0 0 0 0 1 1

Al bloque resultante se le aplica la permutación P8, obteniendo la siguiente subclave K 2 .

Subclave K 2
K6 K3 K7 K 4 K 8 K 5 K10 K 9
0 1 0 0 0 0 1 1

De esta manera se generan las subclaves K1 y K 2 , que se utilizarán en el proceso de cifrado y


descifrado de mensajes.

Cifrado S-DES: Se toman bloques de 8 bits, cada uno de los cuales se cifra y forma parte del
mensaje cifrado.

EJEMPLO 3.11.______________________________________________________________________

Suponga que el mensaje esta constituido por un bloque de 8 bits; y que el mensaje M , que se
desea cifrar es:

Texto o mensaje en claro M


m1 m2 m3 m4 m5 m6 m7 m8
1 0 1 1 1 1 0 1

A dicho mensaje se le aplica una permutación inicial IP .


IP
2 6 3 1 4 8 5 7

Después de lo cual, los bits del mensaje quedarán así:

m2 m6 m3 m1 m4 m8 m5 m7
0 1 1 1 1 1 1 0

92
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Figura Nº 3.25. Primera ronda del S-DES.

Ronda 1: El mensaje que constituye el bloque anterior se separa en dos partes de 4 bits cada
una; Una parte será el bloque izquierdo, denotado por L, y la otra será el bloque derecho,
denotado por R

L R
0 1 1 1 1 1 1 0

Después se aplica la función f K .

Siguiendo el diagrama, que se muestra en la figura anterior, se toman los 4 bits que conforman
el bloque R

R
b1 b2 b3 b4
1 1 1 0

Y se le aplica la permutación de expansión

E P
4 1 2 3 2 3 4 1

Queda así

b4 b1 b2 b3 b2 b3 b4 b1
0 1 1 1 1 1 0 1

Estos 8 bits, operan XOR con la subclave k1 = 10100100 que se había generado
anteriormente.

0 1 1 1 1 1 0 1
⊕ 1 0 1 0 0 1 0 0
1 1 0 1 1 0 0 1

93
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Los 4 bits más a la izquierda (MSB) se utilizan para hacer una consulta en la tabla S 0 y los
restantes 4 bits (LSB) se emplean para hacer una consulta en la tabla S1 . A dichas tablas S 0 y
S1 se les conoce como las S-cajas. Para que los cuatro bits MSB: 1101 , puedan realizar la
consulta en S 0 , es necesario ubicar un renglón y una columna. El renglón lo conforman el
primero y el cuarto, de estos cuatro bits, es decir: 11 ; y la columna la conforman el segundo y el
tercer bit, esto es: 10 . Con estos datos buscamos en S 0

S0 00 01 10 11
00 01 00 11 10
01 11 10 01 00
10 00 10 01 11
11 11 01 11 10

Y se obtiene 11 . Luego, hacemos lo mismo, pero ahora tomando en cuenta los cuatro bits LSB:
1001 . Nuevamente, se toma el primero y el cuarto bit, que conforman el renglón, esto es: 11 ; y
el segundo y el tercero la columna, es decir, 00 . Y se realiza la búsqueda, pero ahora en S1 .

S1 00 01 10 11
00 00 01 10 11
01 10 00 01 11
10 11 00 01 00
11 10 01 00 11

Y se obtiene 10 . Ahora se concatenan los 2 bits que se hallaron en la caja S 0 con los 2 bits
que se encontraron en la caja S1 . Y el resultado es 1110 . A esta cadena se le aplica la
permutación P4 que aparece a continuación

P4
2 4 3 1

Y como resultado se obtiene 1011 ; este resultado opera XOR con los cuatro bits de la izquierda
denotados por L

0 1 1 1
⊕ 1 0 1 1
1 1 0 0

El resultado constituirá el bloque izquierdo L, y el bloque derecho, será el mismo que


consideramos antes

L R
1 1 0 0 1 1 1 0

Ronda 2: se intercambian los bloques L y R, anteriores, quedando de la siguiente manera

L R
1 1 1 0 1 1 0 0

94
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Al igual que en la ronda 1, se toma el bloque derecho R y se le aplica la permutación de


expansión E P , después de lo cual, nos queda: 01101001 . Esta cadena se suma XOR con la
subclave k 2 de la siguiente manera

0 1 1 0 1 0 0 1
⊕ 0 1 0 0 0 0 1 1
0 0 1 0 1 0 1 0

Este resultado lo dividimos en dos partes: 0010 y 1010 . La primera parte la utilizamos para
buscar en S 0 los 2 bits que serán izquierdos

S0 00 01 10 11
00 01 00 11 10
01 11 10 01 00
10 00 10 01 11
11 11 01 11 10

La segunda parte la usamos para buscar en S1 los 2 bits que estarán a la derecha

S1 00 01 10 11
00 00 01 10 11
01 10 00 01 11
10 11 00 01 00
11 10 01 00 11

Con los bits encontrados tanto en S 0 , como en S1 se forma el bloque 0000 , al cual se le aplica
la permutación P4, después de lo cual, el bloque nos queda igual, este opera XOR con el bloque
izquierdo L

0 0 0 0
⊕ 1 1 1 0
1 1 1 0

El resultado se concatena con el bloque derecho R original, quedando, el siguiente resultado

L R
1 1 1 0 1 1 0 0

Al bloque anterior se le aplica la permutación inversa, denotada por IP −1 , que se muestra a


continuación

IP −1
4 1 3 5 7 2 8 6

Quedando como resultado final

Mensaje cifrado C
0 1 1 1 0 1 0 1

El proceso completo de cifrado se muestra en el diagrama que aparece en la siguiente figura.

95
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Figura Nº 3.26. Proceso de cifrado S-DES.

Descifrado S-DES

Conocidas previamente la clave y el mensaje cifrado, se descifra este último, siguiendo un


proceso similar al cifrado del mensaje, con la diferencia de que ahora se usa primero la subclave
K 2 y luego la subclave K1 . El mensaje cifrado se divide en dos partes L y R.

L R
0 1 1 1 0 1 0 1

En la siguiente figura se proporciona un diagrama con los datos que pasan por cada etapa. Es
importante recordar que para hallar los bits en las S-cajas, el renglón se obtiene tomando el
primer y el cuarto bit del dato precedente, y la columna se obtiene tomando el segundo y tercer
bit del dato precedente. Al final se obtiene nuevamente el texto en claro M , que teníamos al
principio.

96
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Figura Nº 3.27. Proceso de descifrado S-DES.

3.4.4. Cifrado de GAMAL

Este cifrado de clave pública está basado en la dificultad que supone la resolución del logaritmo
discreto cuando se trabaja con números enteros suficientemente grandes.

• Los parámetros de este cifrado son un número primo grande p , de aproximadamente 200
dígitos y un valor entero g , generador del grupo multiplicativo Z p . Los valores p y g son
públicos.
• La clave secreta del receptor es un entero aleatorio x elegido, tal que 1 < x < p − 1 .
• El usuario del programa ingresa un número primo grande p y un número g generador del
grupo multiplicativo Z p ; se debe verificar que el número p dado por el usuario sea
efectivamente primo.

97
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

EJEMPLO 3.12.______________________________________________________________________
p = 13 ⇒ el número 13 es primo, p − 1 = 12
Los elementos de Z p = {1,2,3,4,5,6,7,8,9,10,11,12}
g=2 ⇒ el número 2 es un generador del grupo multiplicativo Z p , porque
21 mod p=2
2 2 mod p=4
2 3 mod p=8
2 4 mod p=3
2 5 mod p=6
2 6 mod p = 12
2 7 mod p = 11
2 8 mod p=9
2 9 mod p=5
210 mod p = 10
211 mod p=7
212 mod p =1
El número 2 elevado a las potencias de todos los elementos de Z p generan los mismos
elementos de Z p . Entonces 2 es un generador de Z p .
Nota: en este ejemplo se encontró que para p = 107 , g = 32 es un número generador
del grupo multiplicativo Z p .

• Calcular p − 1 = φ ( p) , Ejemplo: p = 107 , φ ( p) = 106


• El usuario ingresa un número aleatorio k que cumpla la condición 1 < k < p − 1 . k debe
ser además primo relativo con φ ( p ) , esto significa que (k , φ ( p ) ) : 1 , Ejemplo: k = 49 ,
φ ( p) = 106 , (49,106) : 1
Cifrado
El cifrado del mensaje claro M debe cumplir la siguiente desigualdad, 1 < M < P .
Se toma el mensaje M y se asignan los pesos de las letras agrupándolas en bloques de tres
letras: Ejemplo: ICA ROE SMI TOL OGI AXX .

ICA : 820 , se compara 820 así: 1 < 820 < 107 , como 820 > 107 , no cumple la
desigualdad, entonces se divide el mensaje en bloques de dos letras:
IC AR OE SM IT OL OG IA .

IC AR OE : 82 017 144
Para el primer bloque, IC : 82 ; y para el segundo bloque, AR : 017 ; se cumple la
desigualdad 1 <
M < P . Sin embargo, para el tercer bloque no cumple la desigualdad, porque
1 < M < P : 1 < 144 < 107 , así que ese bloque es necesario sub-dividirlo en una letra.
• El mensaje M está compuesto por la pareja de valores enteros C = (r , s ) dado por la
congruencia:
r ≅ y K mod p , a su vez, y = g x mod p

98
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

• " x " es una clave secreta del receptor (proporcionada por el usuario), un número aleatorio
que cumple la siguiente desigualdad: 1 < x < P − 1 . Para el caso del ejemplo que vamos
siguiendo, suponga que el usuario escogió x = 74 , entonces: 1 < 74 < 106 .
• y = g x mod p = 32 74 mod 107 = 53
74 = 1001010 1 Z = 12 mod 107 = 1
Z = 1× 32 mod 107 = 32
0 Z = 32 2 mod 107 = 61
0 Z = 612 mod 107 = 83
1 Z = 832 mod 107 = 41
Z = 41× 32 mod 107 = 28
0 Z = 28 2 mod 107 = 35
1 Z = 35 2 mod 107 = 48
Z = 48 × 32 mod 107 = 38
0 Z = 38 2 mod 107 = 53
• r ≅ y K mod p ≅ 53 49 mod 107 ≅ 16

49 = 110001 1 Z = 12 mod 107 = 1


Z = 1× 53 mod 107 = 53
1 Z = 532 mod 107 = 27
Z = 27 × 53 mod 107 = 40
0 Z = 40 2 mod 107 = 102
0 Z = 102 2 mod 107 = 25
0 Z = 25 2 mod 107 = 90
1 Z = 90 2 mod 107 = 75
Z = 75 × 53 mod 107 = 16
• Para cifrar el primer bloque: M = IC : 82 , y con los siguientes datos: y = 53, r = 16 ,
se calcula S .

S = ( M ⋅ r ) mod p = (82 ⋅ 16) mod 107 = 28

2 8 2 : corresponde a C y 8 corresponde a I , por lo tanto C (r , s ) = (16,28) .


Descifrado
Para descifrar un mensaje que llega como C (r , s ) = (16,28) , el receptor lo recupera calculando
la siguiente congruencia:
S
M = mod p , para el ejemplo: S = 28 , r = 16 , p = 107 , M = 82 .
r
−1
De acuerdo al algoritmo de Cesar obtenemos vemos r
γ 0 = q1γ 1 + γ 2
107 = 6(16) + 11
16 = 1(11) + 5
11 = 2(5) + 1

99
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

t J = t J − 2 − (q J −1 )(t J −1 ) , con t0 = 0 y t1 = 1
t 2 = 0 − (6)(1) = −6
t 3= 1 − (1)(− 6) = 7
t 4 = −6 − (2)(7 ) = −20

Tenemos que: r −1 = −20 mod107 = 87

Ahora hacemos M = S ⋅ r −1 mod P = (28 ∗ 87) mod107 = 2436 mod107 = 82 ; 8


corresponde a I y 2 corresponde a C, por lo tanto para CI, se recupera el mensaje IC.

Nota: si el resultado de la operación S


r es un número decimal < 1 , se realiza la siguiente
operación: se saca r , para esto se trabaja con (r , p ) : 1 y todas las fórmulas para sacar el
−1

−1
inverso (Ver el algoritmo de Cesar). En este caso M = S ⋅ r mod 107 = 82

3.4.5. Cifrado de la MOCHILA

• Se ingresan los elementos (números) de la mochila fácil: {α1 ,α 2 ,α 3 ...α K } . El tamaño de


la mochila es k . Se llama mochila fácil porque el conjunto de números es creciente.
Ejemplo: {2, 5, 8, 17, 34, 71} , k = 6 elementos.

• Se verifica la validez de los elementos de la mochila fácil: Elemento Z > X + Y , Ejemplo


del tercer elemento 8 > 2 + 5 . Si no se cumple la desigualdad hay que rechazar el
elemento. La mochila fácil es parte de la clave privada.
k
• Por programa calcula el resultado de ∑α
i =1
i , Por ejemplo:

∑α
i =1
i = 2 + 5 + 8 + 17 + 34 + 71 = 135 .

• Para construir la clave pública, el usuario selecciona un número y lo ingresa con el teclado,
k
ejemplo, w = 137 , compara el valor de w con ∑α
i =1
i , si

k
w > ∑ α i : 137 > 135 entonces el número es válido.
i =1

• El usuario ingresa t , este es un número que cumple la siguiente desigualdad 0 < t < w ,
además, (t , w) : 1 significa que t es un número primo relativo de w . Ejemplo: t = 43 ,
0 < 43 < 137 .
• Se calcula el inverso de t , siguiendo las formulas de los algoritmos anteriores para calcular
−1
el inverso. Para este ejemplo: t = 51
• Se construye la mochila difícil, que hace parte de la clave pública α i ' = α i ⋅ t ⋅ mod w

EJEMPLO 3.13.______________________________________________________________________
α1 ' = 2 ⋅ 43 ⋅ mod 137 = 86
α 2 ' = 5 ⋅ 43 ⋅ mod 137 = 78
α 3 ' = 8 ⋅ 43 ⋅ mod 137 = 70
α 4 ' = 17 ⋅ 43 ⋅ mod 137 = 46

100
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

α 5 ' = 34 ⋅ 43 ⋅ mod 137 = 92


α 6 ' = 71⋅ 43 ⋅ mod 137 = 39
Se le conoce como mochila difícil porque el conjunto de números no es creciente.
α 1 ' = {86,78,70,46,92,39}
• El texto claro m , se convierte a binario y se forman bloques binarios de tamaño k ( k es el
tamaño de la mochila). Los caracteres los convierto en ASCII y los divido en bloques de 6.
011100 | 111011 .
k
Cifrado: Se calcula con la siguiente ecuación: C i = ∑ α i ' ⋅ bi donde bi es el número binario.
i =1

C1 = 86.0 + 78.1 + 70.1 + 46.1 + 92.0 + 39.0 = 194


C 2 = 86.1 + 78.1 + 70.1 + 46.0 + 92.1 + 39.1 = 365
• Se convierte a binario C i (desde C1 a C i ) y se acomodan en un solo bloque
secuencialmente, después se divide en bloques de 8 bits y se hace la conversión de Ascii a
caracter o símbolo.
Descifrado: Para desencriptar se convierte el mensaje C i (encriptado) a ASCII, se deja en un
solo arreglo y se empieza a recuperar C1 , C 2 ...Ci en decimal.
−1
Se aplicaCi ⋅ t mod w
Ejemplo: 194 ⋅ 51mod 137 = 30 , 365 ⋅ 51mod 137 = 120
• El resultado se divide entre los elementos de la mochila fácil, así:

30 71
0
30 34
0
30 17
1
Cuando el cociente de la división es 1 , el dividendo de la siguiente operación es el residuo
de la primera y así sucesivamente.

13 8
1
5 5
1
0 2
0
Se leen los cocientes de abajo hacia arriba y se recupera el mensaje, así: 011100 . Del
mismo modo se procede con el siguiente resultado del paso anterior (120).

Se organiza en un solo arreglo: | 011100 | 111011 | y se convierte de ASCII a carácter o


símbolo.

PROBLEMAS Y SOLUCIONES________________________________________________________

A.3.1. Se prueba un sistema ΔPCM colocando en su entrada una señal senoidal de 10KHz y 1V de
amplitud pico a pico. El muestreo se hace a 10 veces la tasa de Nyquist.

a) Cuál es el tamaño del paso requerido para evitar sobrecarga de pendiente y minimizar el
ruido de cuantización?
b) Cuál es la potencia del ruido de cuantización?

101
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

c) Si la entrada del receptor está limitada en banda a 200kHz, cuál es la relación de potencia de
la señal promedia al ruido de cuantización (SNR)0?

Solución:

a)
f = 10 KHz
1
W (t ) = sen(2π * 10 KHz * t )
2
∂W (t ) 1
= * 2π *10 KHz * cos(2π *10 KHz * t )
∂t 2
∂W (t )
= π *10 KHz * cos(π * 20 KHz * t )
∂t
Sin sobrecarga de potencia:

f s = 10 ⋅ (2 ⋅ 10 KHz ) = 200 KHz


A ⋅ (2π ⋅ 10 KHz )
δ>
fs
(2π ⋅ 10 KHz ) ⋅ 1
δ> 2
fs
(π ⋅ 10 KHz )
δ> = 0,157
200 KHz
b)
δ2 (0,157) 2
Pn ( f ) = =
6 f s 6 * 200 K
Pn ( f ) = 2.05 * 10−8W / Hz

c)

3
⎛S⎞ 3f
⎜ ⎟ = 2 S2
⎝ N ⎠ 8π f a * B
⎛S⎞ 3(200 KHz )3
⎜ ⎟= 2
⎝ N ⎠ 8π (10 KHz ) * 200 KHz
2

⎛S⎞
⎜ ⎟ = 15,2veces
⎝N⎠

A.3.2. Encuentre el código Hamming para el mensaje ”P`” en ascii, paridad impar:

Solución:

P: 70 en Hexadecimal
`: 60 en Hexadecimal.

p`= 01110000,11100000 , m = 16
2n = m + n + 1 → n = 5

102
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

Posición 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
del bit
Tipo de 0 1 1 1 0 H 0 0 0 1 1 1 0 H 0 0 0 H 0 H H
bit.

Posición Palabra de cinco


del bit 1. bits

10 0 1 0 1 0

11 0 1 0 1 1

0 0 0 0 1

12 0 1 1 0 0

0 1 1 0 1

18 1 0 0 1 0

1 1 1 1 1

19 1 0 0 1 1

0 1 1 0 0

20 1 0 1 0 0
Código
Hamming 1 1 0 0 0

A.3.3. Se tiene la siguiente palabra mensaje

[
m= 1 1 1 0 . ]
Se quiere codificar m utilizando un código Hamming (7,4).

a) Halle la palabra código a la salida del codificador.


b) Si se transmite la palabra codificada por un canal con un patrón de error

e1 = [0 1 1 1 0 0 0] ,
¿Cuál es el mensaje estimado a la salida del decodificador? Si no es igual al mensaje
enviado justifique las posibles causas.
c) Si se transmite la palabra codificada por un canal con un patrón de error

e2 = [0 0 1 1 0 0 0] ,
¿Cuál es el mensaje estimado a la salida del decodificador? Si no es igual al mensaje
enviado justifique las posibles causas.

Solución:

Para el código

103
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

⎡1 1 0 1 0 0 0⎤
⎢0 ⎡1 0 0 1 0 1 1 ⎤
1 1 0 1 0 0⎥⎥ ⎢ ⎥
G=⎢ y H = 0 1 0 1 1 1 0 .
⎢ ⎥
⎢1 1 1 0 0 1 0⎥
⎢ ⎥ ⎢
⎣ 0 0 1 0 1 1 1 ⎥⎦
⎣1 0 1 0 0 0 1⎦

a) c = mG = [0 1 0 1 1 1 0]

b) r1 = c + e1
r1 = [0 0 0 1 1 1 0]

El síndrome:
s1 = r1H T
s1 = [0 1 0]

Con el síndrome calculado se elige el patrón de error perteneciente al coset líder de mayor
probabilidad. La palabra código estimada es

cˆ = r1 + eˆ = [0 1 0 1 1 1 0] y el mensaje estimado es:


mˆ = [1 1 1 0] . Lo cual es lógico pues el patrón de error solo tiene un bit erróneo y un
código Hamming puede corregir un bit erróneo pues la distancia mínima de cualquier
código Hamming es 3.

c) r 2 = c + e2
r 2 = [0 1 1 1 0 1 0]

El síndrome:
s2 = r 2H T
s 2 = [0 1 0]

Con el síndrome calculado se elige el patrón de error perteneciente al coset líder de mayor
probabilidad. La palabra código estimada es

cˆ = r 2 + eˆ = [0 0 1 1 0 1 0] y el mensaje estimado es:


mˆ = [1 0 1 0] . En este caso el código Hamming detecta que hubo un error en la
transmisión pues el código puede detectar hasta dos bits con errores, pero no puede corregir
los errores.

d) r 3 = c + e3
r 3 = [0 0 0 1 1 0 1]

El síndrome:
s 3 = r 3H T
s3 = [0 0 0]

Con el síndrome calculado se tiene que no hubo ningún error en la transmisión.. La palabra
código estimada es

cˆ = r 3 + eˆ = [0 0 0 1 1 0 1] y el mensaje estimado es:


mˆ = [1 1 0 1] . En este caso el código no es capaz de detectar que hubo un error pues
el código es de distancia mínima 3.

104
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

A.3.4. Una entidad A elige el cifrado RSA para cifrar la información, con las siguientes claves:
p = 5 y q = 11 , por tanto n = 55

Solución:

Al ser p y q números primos se tiene que φ (n) = ( p − 1)(q − 1) = 40 ; A elige para su clave
pública e = 3 , que es primo relativo con 40. Para calcular d, el inverso de e, puede usarse el
teorema de Euclides extendido o aplicar la fórmula de Euler, teniendo en cuenta que
φ (40) = φ (2 3 ⋅ 5) = (2 2 ⋅ 1)(5 0 ⋅ 4 ) = 16 , con lo que:

d = 3φ ( 40) −1 mod 40 = 315 = 27

Si el mensaje que se desea enviar B se representa por m = 18 , el valor del mensaje cifrado
sería:

c = 18 3 mod 55 = 2 , al recibier el mensaje c, A puede calcular m elevándolo a 27, módulo


55, el valor 2. Este cálculo se puede realizar de forma sencilla utilizando una técnica similar a la
utilizada en los ejemplos de exponenciación presentada en el capitulo 3 del libro “seguridad en
redes telemáticas”, de Justo Carracedo Gallardo, editorial Mc Graw Hill, 2004, pp. 61-83. El
resultado sería:

m = 2 27 mod 55 = 18 , que es el valor original asignado a m.


Con números tan pequeños, resulta muy fácil romper la seguridad del cifrado. En efecto,
conociendo el n = 55 , es casi trivial obtener su descomposición en factores primos, utilizando
un procedimiento de tanteo y comenzando por los números primos menores hasta llegar al 5.

A.3.5. Partiendo de los mismos valores, p = 5 , q = 11 , n = 55 , φ (55) = 40 y φ ( 40) = 16 , se


va a considerar un ejemplo, en el que el mensaje claro que desea enviar B es el texto “tañer”. Se
va a suponer, además, que el valor elegido por A para su clave pública e = 7 , de donde
podemos deducir el valor del componente de su clave privada: d = 23 .

Solución:

Para codificar numéricamente el mensaje se parte del alfabeto español de 27 letras. A la letra “a”
se le asigna el valor de 0, y a la “z” el valor de 26. Los valores relativos asignables a cada una de
las letras del mensaje “tañer” serían respectivamente: 20, 0, 14, 4 y 18. Para determinar el
tamaño del bloque utilizado para cifrar con RSA hay que tener en cuenta que si éste estuviese
constituido por dos caracteres, el valor de m para los dos primeros de la palabra “tañer” sería:

m =" ta" = 20 ⋅ 27 + 0 = 540 , que, como puede comprobarse, es mucho mayor que 55, valor
de n. Por ello no se tiene más remedio que considerar cada bloque constituido por una sola letra.
Por la letra “t” se tendría:

c = 20 7 mod 55 = 15
Para realizar este cálculo puede hacerse uso de un algoritmo de exponenciación rápida propuesto
por Knuth. Para esa misma letra, cuando A reciba el primer bloque del mensaje cifrado, el valor
del primer bloque del mensaje claro sería:

m = 15 23 mod 55 = 20 , que es el valor asociado a la letra “t”. Con las restantes letras del
mensaje se procederá de forma similar.

105
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

PROBLEMAS _______________________________________________________________________

3.1. Se debe diseñar un modulador delta para transmitir la información de una señal análoga que
tiene un nivel pico a pico de 1 V y un ancho de banda de 3.4KHz, Suponga que la forma de onda
debe transmitirse sobre un canal que tiene una respuesta en frecuencia extremadamente pobre
por arriba de 1MHz.

a. Seleccione el tamaño de paso apropiado y la tasa de muestreo para una señal senosoidal de
prueba y analice el desempeño del sistema usando los valores de los parámetros que Usted
haya seleccionado.
b. Si el sistema DM se ha de usar para transmitir la información de una señal análoga de voz,
seleccione el tamaño de paso apropiado cuando la tasa de muestreo es de 25KHz. Analice el
desempeño del sistema bajo estas condiciones.

3.2. Una fuente discreta sin memoria X tiene un alfabeto de 8 símbolos xi, i = 1,...,8, con
probabilidades 0.25, 0.20, 0.15, 0.12, 0,10, 0.08, 0.05 y 0.05.

a. Use el algoritmo de Huffman para generar un código binario para la salida de esta fuente.
b. Halle la eficiencia del código hallado en a).

3.3. Dibuje con cuidado una señal analógica que varía muy lentamente. Esta función va a ser
muestreada 10 veces, con muestras espaciadas a una distancia algo menor que el intervalo usual
del Nyquist. Suponga que las muestras se alimentan a un cuantizador de dos niveles, como parte
de un sistema de modulación delta. Arranque el sistema comparando la primera muestra con 0,
número que también se usa como primera estimación inicial. Se usa estimación según la muestra
∧ ∧
previa: g j = 0.9 x j −1 . Donde x j −1 es la estimación en la muestra ( j − 1) .
Muestre la secuencia de salidas del modulador delta ± k .
'
a)
b) Arranque el sistema con un valor relativamente alto de k ' ; rastree la función original con su
'
estimación. Reduzca el valor el valor de k hasta que se produzca ruido de sobrecarga.

3.4. Considere una señal de prueba senoidal x(t)=Asen ω m t. Dibuje la onda senoidal en el intervalo
− π / 2 < ω m t < π / 2 . La onda senoidal se va a muestrear muchas veces a la velocidad
fs > fm .
Demuéstrese que si k f s 2πAf m < 1 , resultara ruido de sobrecarga ( k es el tamaño del
' '
a)
escalón del modulador delta )
b) Sea α ≡ k ' f s 2πAf m ≡ 0.707 . Demuéstrese que la región de ruido de sobrecarga inicial
en ω m t = − π ≡ θ1 . Suponiendo que el ruido de cuantización es despreciable, de manera
4
que la salida del receptor del modulador delta es prácticamente una línea recta, dibuje la
salida de receptor hasta el máximo de la curva senoidal y encuéntrese el tiempo ω m t ≡ θ 2 ,
donde termina la región de sobrecarga.
2
⎡1 θ2 ⎛ k ` fs ⎞⎤
c) Verifíque la ecuación N o = ∫ ⎢ Asenθ − ⎜⎜ (θ + θ1 ) − Asenθ1 ⎟⎟⎥ dθ para el
π 1⎣
− θ
⎝ wm ⎠⎦
ruido de sobrecarga.

3.5. Resolver los siguientes ejercicios sobre las técnicas de cifrado vistas en clase:

a. A partir de los siguientes dos ejemplos de cifrado-descifrado de CESAR, con una letra,
identifique la clave (en ambos casos es la misma) y justifique su respuesta.

m: CESAR, c: GIWEW
c: FVYXYW, m: BRUTUS

106
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

b. Dados los siguientes elementos Z p = (1,2,3,4,5,6,7,8,9,10) encuentre un generador del


grupo multiplicativo diferente de 2 y 6.

c. Cifrar el mensaje HOY con los siguientes requisitos:

Paridad impar:
H = Hex : (0 × 48), Binario : 01001000, P.I : 11001000
O = Hex : (0 × 4 F ), Binario : 01001111, P.I : 01001111
Y = Hex : (0 × 59), Binario : 01011001, P.I : 11011001
Claves: K1 : (10100100), K 2 : (01000011)
IP : (2,6,3,1,4,8,5,7), IP −1 : (4,1,3,5,7,2,8,6)

d. Cifrar en RSA el mensaje claro “PILA”, agrupando el mensaje claro en dos letras. Utilice
las siguientes claves:

P = 37, q = 29, e = 731, N = 1073,φ ( N ) = 1008


e. Cifrar en GAMAL el texto claro “SOL”, suponga la siguiente codificación del mensaje
claro:
S: 10100, O: 00011, L: 01001. Utilice las siguientes claves:
(3,7,11,20,53) , K = 5 elementos, W = 111 , t = 53

107
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS

108

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy