lunes, 12 de diciembre de 2016

Codificación de la fuente

Para que se realiza la codificación de la fuente?
Para transmitir fiablemente (o con la mínima distorsión) un proceso aleatorio (la información)-
- Reducir (sin/con pérdidas) la cantidad de información [codificación de fuente]
- Diseñar sistemas transmisión con la menor probabilidad de error de bit [teoría de la comunicación]
- Diseñar códigos/sistemas de protección (detección/corrección) frente a errores [codificación de canal]
Cómo se hace esta conversión de la fuente de información.
 Mapeo del rango de una fuente a un conjunto finito de símbolos de un alfabeto D-ario
- Binario: {0,1}, {punto, raya}, …
- Ternario: {A, B, C} …
- Ejemplo: fuente:{Red, Blue}, alfabeto={0,1}, código={00,11}. 
No es óptimo pero es código Códigos:
- Palabras código de longitud fija (asignación “ciega”)
- Palabras código de longitud variable (basados en estadísticos)
- Palabras código de longitud fija 
Cómo es el esquema de compresión.
Compresión (límite H): Codificación sin pérdidas vs con pérdidas.
Compresión de texto irreversible
- En general texto se basa en código ASCII (8bits/símbolo): caracteres imprimibles 32-255 o Código Unicode (16bits/símbolo): caracteres imprimibles 0x0020-0xFFFC (32- 65.532).
- Quitar caracteres de formato, acentos, puntuación, pasar todo a mayúsculas/minúsculas (26 + ñ = 27) => 5 bits (25=32) y quedan 5 para blanco, puntuación, palabras comunes, …
- Ciertas pérdidas.
Compresión ad-hoc (reversible) de texto
- Quitar blancos y sustituir por cadena binaria de 100000100001… o 1: indica blanco, 0: carácter
- Quitar blancos de formato y sustituir por digito de número de blancos (extensión de fuente-codificación por carreras…) o Hace falta código de escape …
- Usar 7 bits para los caracteres textuales ASCII (compresión 7/8) o Más el bit anterior, lo que hace es reducir los blancos de 8 a 1.
- 403=64.000 < 216=65.536 o 40 = 26 letras, 10 dígitos, 4 símbolos de puntuación (. , ! ?) –esto es para inglés  : ni ñ, ni ¿, ni ¡, …- o Si agrupo caracteres de 3 en 3 (extensión de fuente-codificación vectorial) tengo una nueva fuente que tiene 403 símbolos y que se puede codificar con 16 bits (teniendo incluso adicionalmente símbolos adicionales): compresión 2/3 
Investigar 3 algoritmos de cifrado, explicar cuál es su fundamento.

DES (Data Encryption Standard)
Su arquitectura está basada en un sistema monoalfabético, donde un algoritmo de cifrado aplica sucesivas permutaciones y sustituciones al texto en claro. En un primer momento la información de 64bits se somete a una permutación inicial, y a continuación se somete a una permutación con entrada de 8 bits, y otra de sustitución de entrada de 5 bits, todo ello constituido a través de un proceso con 16 etapas de cifrado.

El algoritmo DES usa una clave simétrica de 64bits, los 56 primeros bits son empleados para el cifrado, y los 8 bits restantes se usan para comprobación de errores durante el proceso. La clave efectiva es de 56 bits, por tanto, tenemos 2⁵⁶ combinaciones posibles, por lo que la fuerza bruta se hace casi imposible.

3DES (Triple Data Encryption Standard)
Se basa en aplicar el algoritmo DES tres veces, la clave tiene una longitud de 128 bits. Si se cifra el mismo bloque de datos dos veces con dos llaves diferentes (de 64 bits), aumenta el tamaño de la clave.
El 3DES parte de una llave de 128 bits, que es divida en dos llaves, A y B.
Al recibir los datos, aplicamos el algoritmo DES con la llave A, a continuación se repite con la llave B y luego otra vez con la llave A (de nuevo).
3DES aumenta de forma significativa la seguridad del sistema de DES, pero requiere más recursos del ordenador.
Existe una variante del 3DES, conocida como DES-EDE3, con tres claves diferentes y una longitud de 192bits, consiguiendo un sistema mucho más robusto.


RC5
Se aplican operaciones XOR sobre los datos, pudiendo ser de 32, 64 o 128 bits. Permite diferentes longitudes de clave, y un número variable de iteraciones (la seguridad del cifrado aumenta exponencialmente cuanto mayor número de iteraciones), también funciona como un generador de número aleatorios, sumándoles a los bloques de texto rotados mediante la XOR.

No hay comentarios:

Publicar un comentario