criptografÍa
DESCRIPTION
CRIPTOGRAFÍATRANSCRIPT
-
CRIPTOGRAFA
Definiciones
Privacidad: la informacin slo puede ser leda por personas autorizadas.
Integridad: la informacin no pueda ser alterada en el transcurso de ser enviada.
Autenticidad: que se pueda confirmar que el mensaje recibido haya sido mandado por quin dice que lo mand o que el mensaje recibido es el que
se esperaba.
Puede tratarse de Autenticacin de entidad simple, en cuyo caso slo uno de los participantes en la comunicacin est obligado a demostrar su
identidad. Un ejemplo puede ser un servidor remoto. Si se trata de una
autenticacin mutua la autenticacin se realiza en ambos sentidos.
Podran distinguirse en este servicio dos calidades, una de las cuales es la
Autenticacin dbil y est apoyada en el uso ms o menos sofisticado de passwords, mientras que cuando el resultado es ms eficaz la denominamos
Autenticacin Fuerte, que requiere del intercambio de mensajes cifrados y, posiblemente, del concurso de una Tercera Parte de Confianza TTP
(Trusted Third Party).
Un criptosistema es considerado de secreto perfecto si el conocimiento del mensaje cifrado c no aporta al criptoanalista informacin alguna acerca del
mensaje en claro m (excepto, acaso, su longitud).
Entropa
Nmero medio de bits necesarios para codificar cada uno de los estados
posibles de la variable aleatoria.
Si en un sistema de transmisin cada estado representa un smbolo a
codificar para transmitir, la entropa nos da los bits/smbolo necesarios para
codificar.
-
Un criptosistema es seguro de Shannon si la cantidad de informacin que
nos aporta conocer el mensaje cifrado c sobre la entropa del texto en claro
es 0.
Hash criptogrficos Una funcin de hash toma datos binarios, llamados mensaje, y produce una representacin abreviada del mismo llamada digesto. Es una funcin
matemtica relativamente fcil de computar, pero mas difcil de invertir. El
procedimiento toma un bloque variable de datos y devuelve una cadena de
longitud fija. Los valores de hash son tambin conocidos como huellas
digitales.
La funcin de hash puede utilizarse en muchas situaciones diferentes:
Para proporcionar una prueba de autenticidad, cuando es utilizada
como una clave secreta de autenticacin simtrica.
Para proporcionar autenticacin generando respuestas de nico uso
de una va a los desafos de protocolos como CHAP.
Para proporcionar pruebas de verificacin de la integridad del
mensaje como en los contratos firmados digitalmente, y certificados
de infraestructura de clave pblica (PKI).
-
Matemticamente una funcin hash (H) es un proceso que toma una
entrada (x) y devuelve una cadena de longitud fija, llamada valor de hash
(h).
h=H(x)
Un hash criptogrfico tiene las siguientes propiedades:
-
Estas funciones slo resultan tiles para fallos accidentales en la
transmisin, pero son vulnerables a ataques man in the middle, porque un atacante puede cambiar el mensaje, recalcular el hash y enviarlo al
receptor, este no tiene manera de saber que el mensaje ha sido cambiado.
Existen dos funciones de hash bien conocidas:
-
Integridad con MD5 y SHA-1 MD5 es un algoritmo desarrollado por Ron Rivest y utilizado actualmente por una variedad de aplicaciones de Internet. MD5 es libre de colisiones, es decir, es poco probable obtener el mismo valor de hash a partir de dos
conjuntos diferentes de datos.
MD5 es una compleja secuencia de operaciones binarias simples, como
XOR y rotaciones, que se ejecutan y producen un digesto de 128 bits.
El mensaje de entrada es dividido en trozos de 512 bit. El mensaje se
amplia para que su longitud sea divisible por 512. se aade un bit igual a 1
al final del mensaje, es seguido de tantos ceros para llegar hasta los 64 bits
menor que un mltiplo de 512. Los bits restantes se rellenan con un entero
de 64 bits que representan la longitud del mensaje original en bits.
El algoritmo principal opera en un estado de 128 bits, divididos en palabras
de 32 bits, denominadas A, B, C y D. stas se inicializan a unas constantes
fijas. Despus opera en cada mensaje de 512 bits, cada bloque modificando
el estado. El procesamiento del bloque del mensaje consiste en 4 etapas similares, llamadas rondas. Cada ronda se compone de 16 operaciones
-
similares basadas en la funcin no lineal F. Hay 4 funciones F posibles,
cada una se usa en una ronda. La figura muestra la operacin de una ronda.
-
MD5 es ahora considerado menos seguro que SHA. En otro artculo dice
que no es resistente a colisiones y no es aconsejable para aplicaciones SSL.
El Instituto Nacional de Estndares y Tecnologa (NIST) desarroll SHA (Secure Hash Algorithm). Su diseo es similar a MD5.
El algoritmo SHA toma un mensaje de menos de 2 elevado a 64 bits de
longitud y produce un digesto de 160 bits a partir de bloques de 512 bits. Es un poco ms lento, pero al generar digestos de mayor longitud es menos
sensible a ataques de fuerza bruta e inversin.
-
Hay algunos aspectos a considerar en la administracin de claves:
Se utilizan dos trminos para referirse a las claves: longitud de clave y espacio de claves. La longitud de la clave es el nmero de bits que la conforman. El espacio de claves es la totalidad de las claves que pueden
formarse con una cantidad de bits.
Casi cualquier algoritmo contiene claves dbiles (el cifrado es igual al descifrado) en su espacio de claves, el cual permite que un atacante quiebre
el cifrado de forma rpida. Esto quiere decir que si una de estas claves es
utilizada para cifrar texto plano, el atacante puede utilizar una de estas
claves para cifrar el criptograma y revelar el texto plano.
-
La filosofa de la criptografa simtrica implica que, para establecer comunicacin segura entre dos usuarios, es necesario que stos conozcan y
compartan una clave simtrica concreta. Si fuesen tres los participantes en
el entorno de comunicacin y se quisiera salvaguardar la confidencialidad
dos a dos, cada usuario necesitara conocer y custodiar dos claves distintas,
siendo tres el nmero total de claves puestas en juego en el dominio.
Cuando el nmero de usuarios crece, el nmero de claves necesarias sera
enorme e inmanejable. Son vulnerables al criptoanlisis diferencial y lineal.
-
Cifrado
Existen dos tipos de cifrado: simtrico y asimtrico. Los algoritmos
simtricos utilizan la misma clave. Utilizan una clave compartida. Dado
que ambas partes deben custodiar la clave, los algoritmos de cifrado
pueden utilizar claves de menor longitud. Las claves ms cortas dan como
resultado tiempos de ejecucin ms rpidos.
Los algoritmos asimtricos utilizan diferentes claves para cifrar y descifrar. Debido a que las partes no poseen una clave pre-compartida
deben utilizarse claves muy largas para frustrar a los atacantes. Estos
algoritmos utilizan muchos recursos y tienen una ejecucin ms lenta.
Consideremos un ejemplo, Alice y Bob viven en distintas localidades y
desean intercambiar mensajes secretos entre s a travs del correo
electrnico.
-
Las tcnicas ms utilizadas en criptografa de cifrado simtrico son los
cifrados de bloque y los cifrados de flujo o de cadena.
Cifrado por bloques Transforma un bloque de texto plano de longitud fija en un bloque
criptogrfico comn de 64 o 128 bits. El cifrado por bloques, en general,
resulta en una salida de datos ms larga que los datos de entrada. Para
lograr esto, el algoritmo toma una porcin de datos por vez, por ejemplo
porciones de 8 bytes, hasta que se rellena el bloque completo. Si hay menos
datos que los necesarios para completar un bloque, el algoritmo agrega
datos artificiales (blancos) hasta que los 64 bits son utilizados.
Para lograr algoritmos seguros de Shannon se utiliza la llamada confusin (tratar de ocultar la relacin entre texto claro, texto cifrado y clave) y la
difusin (repartir la influencia de cada bit del mensaje original lo ms posible entre el texto cifrado). Si se intercala la difusin y la confusin se
denomina cifrado de producto. Muchos algoritmos utilizan la llamada Red de Feistel (DES entre otros),
que es una serie iterativa de permutacin-sustitucin.
-
La red de Feistel depende de la eleccin de los siguientes parmetros:
Tamao de bloque: bloques ms grandes significan ms seguridad pero reduce la velocidad de encriptado/desencriptado. La mayor
seguridad se alcanza por que hay ms difusin.
Tamao de la clave: tamaos ms grandes de la clave significa ms seguridad pero tambin decrementa la velocidad de
encriptado/desencriptado. Hay ms seguridad porque hay ms
resistencia a ataques de fuerza bruta y ms confusin.
4mero de iteraciones: cuantas ms iteraciones ms seguridad. Un nmero tpico de rondas es 16.
El algoritmo de desencriptado es esencialmente el mismo que el de
encriptado.
4OTA: Si el tamao de bloque es pequeo, resulta equivalente al cifrado por sustitucin, lo que no es deseable.
Cifrado con Estructura de Grupo
Otra de las cuestiones a tener en cuenta en los cifrados de producto es la
posibilidad de que posean estructura de grupo. Se dice que un cifrado tiene
estructura de grupo si se cumple la siguiente propiedad:
Esto es, si hacemos dos cifrados encadenados con k1 y k2, existe una clave
k3 que realiza la transformacin equivalente. Es interesante que un
algoritmo criptogrfico carezca de este tipo de estructura, ya que si
ciframos un mensaje primero con la clave k1 y el resultado con la clave k2,
es como si hubiramos empleado una clave de longitud doble, aumentando
la seguridad del sistema. Si, por el contrario, la transformacin
criptogrfica presentara estructura de grupo, esto hubiera sido equivalente a
cifrar el mensaje una nica vez con una tercera clave, con lo que no
habramos ganado nada.
4OTA: DES no presenta estructura de grupo.
-
Cifrado de flujo Codifica el texto plano un byte o un bit por vez. Con el cifrado de flujo, la
transformacin de estas unidades ms pequeas de texto plano es variable,
dependiendo de dnde se encuentren durante el proceso de cifrado. El
cifrado de flujo puede ser mucho ms rpido que los cifrados de bloque, y
en general no incrementa el tamao de los mensajes. Con un generador
apropiado de nmeros pseudoaleatorios puede ser tan seguro como un
cifrador de bloques con claves proporcionales.
Los cifradores de flujo se basan en el cifrador de Vernam. Lo que Vernam propuso fue generar una secuencia cifrante aleatoria de caracteres,
constituidos por cinco bits, que eran sumados mdulo 2 (XOR) con los
correspondientes caracteres del mensaje en claro. La secuencia cifrante era
aleatoria y de un solo uso (one time pad), gracias a lo cual el cifrador
obtenido era de secreto perfecto. Esto en realidad no es viable en aplicaciones normales, pero se intenta conseguir una aleatoriedad lo ms
parecida posible al cifrado de Vernam (secuencias pseudoaleatorias).
Algunas caractersticas de la secuencia cifrante son:
a) Periodo: es muy importante que la secuencia no se repita dentro del proceso de cifrado de un mensaje. Con los cifradores vigentes se
pueden conseguir periodos de tamao suficientemente grandes como
para que este requisito se cumpla sobradamente.
b) Distribucin de unos y ceros: la secuencia cifrante debe presentar una distribucin lo ms uniforme posible.
c) Imprevisibilidad: se exige que la secuencia cifrante sea imprevisible, queriendo esto significar que dada una secuencia
cifrante de cualquier longitud, predecir si el siguiente dgito es uno o
cero no puede representar una probabilidad superior al 50%,
d) Facilidad de implementacin: la secuencia cifrante debe poderse generar de manera rpida y sencilla, poniendo en juego recursos
asequibles.
Generadores de secuencia sncronos
Son aquellos en que la secuencia es generada de forma independiente tanto
del texto claro como del cifrado. Cuando empleamos este tipo de generador
-
necesitamos que tanto el emisor como el receptor estn sincronizados para
que el texto pueda descifrarse.
Si algn bit del criptograma es alterado, la sincronizacin no se pierde,
pero el texto claro se ver modificado en la misma posicin. Esta
caracterstica podra permitir a un atacante introducir cambios en nuestros
mensajes, simplemente conociendo qu bits debe alterar. Para evitar esto,
deben emplearse mecanismos de verificacin que garanticen la integridad
del mensaje recibido, como las funciones resumen.
Generadores de secuencia asncronos
Es aquel en que la secuencia generada es funcin de una semilla ms una
cantidad fija de los bits anteriores de la propia secuencia. Es resistente a la
prdida o insercin de informacin (al contrario que los sncronos), ya que
acaba por resincronizarse de manera automtica, cuando llegan t bloques
correctos de forma consecutiva.
Se consideran ms resistentes frente a ataques basados en la redundancia
del texto en claro.
Registros de Desplazamiento Retroalimentados
(feedback shift registers o FSR) son la base de muchos generadores de
secuencia para cifrados de flujo.
Estos registros, debido a que permiten generar secuencias con perodos
muy grandes y con buenas propiedades estadsticas, adems de su bien
conocida estructura algebraica y su facilidad para ser implementados por
hardware, se encuentran presentes en muchos de los generadores de
secuencia propuestos en la literatura.
-
El registro est constituido por n bits o etapas binarias que se desplazan un
lugar a la derecha a cada impulso de reloj. El nuevo valor que ocupa la
etapa 1 est determinado por una funcion g que depende de los valores de las n etapas del registro. El valor inicial del registro, la semilla, constituye
la clave bajo la que opera el cifrador. Dependiendo de si la funcin g es
lineal o no lineal tendremos dos tipos de registros: LFSR y NLFSR.
-
Data Encryptation Standard (DES) Es un algoritmo de cifrado simtrico, utilizado normalmente en cifrado por bloques. Es en esencia una secuencia de permutaciones y sustituciones de
datos, combinado con una clave de cifrado. Se basa en la combinacin de
las dos tcnicas bsicas de la criptografa simtrica: confusin y difusin. La primera de ellas consiste en establecer una dependencia funcional lo
ms compleja posible entre la clave y el mensaje en claro, y se consigue
mediante la sustitucin de unos smbolos por otros. La segunda consiste en procurar dispersar a lo largo del criptograma las propiedades estadsticas
del mensaje en claro, y en DES se consigue mediante la transposicin (permutacin de los bits).
Se utiliza el mismo algoritmo y la misma clave tanto para el cifrado como
para el descifrado, con la diferencia de que el descifrado se invierten las
claves, si se utilizaron para cifrar las claves k1, k2, k3, k4 en el descifrado
se utilizarn k4, k3, k2, k1.
Tiene una longitud de clave fija (64 bits), pero en realidad slo se utilizan
56 bits. Los 8 bits restantes son utilizados para la paridad.
Se basa en el algoritmo LUCIFER. Presenta algunas claves dbiles. En otro
libro dice que las claves semidbiles dejan el texto cifrado igual que el
texto claro.
Tambin es fcil demostrar que, debido al uso de operaciones XOR, si se
toma el complemento de una clave (sustituir ceros por unos y unos por
ceros) y se cifra con ella el complemento del texto en claro se obtiene:
-
Ek(P)=C
Ek(P)=C
Ello significa que un ataque del tipo texto en claro elegido, slo es
necesario probar la mitad de las claves posibles, es decir 2 elevado a 55 en
lugar de 2 elevado a 56.
4OTA: debido a la forma en que se extraen las subclaves que se aplican en los distintos ciclos del algoritmo, ciertas claves no aportan seguridad
suficiente al procedimiento por lo que son llamadas claves dbiles. Del mismo modo existen parejas de claves que, al cifrar el texto en claro dan
lugar a idntico criptograma, lo que significa que una de las claves de ese
par puede servir para descifrar mensajes encriptadas con la otra clave del
par. Esto da lugar a la existencia de 12 claves denominadas claves semidbiles.
Otra variante es el algoritmo DES mltiple que se basa en aplicar varias
veces el algoritmo DES con diferentes claves al mensaje original. Ya que
cuantas ms rondas tenga el algoritmo ms difcil ser el criptoanlisis.
-
4OTA: La permutacin inicial coge una entrada de 64 bits y los permuta de acuerdo con una regla predefinida. La permutacin final es el inverso de
la permutacin inicial. Estas dos permutaciones se cancelan la una a la otra.
En otras palabras, si se eliminan las ronda, el texto cifrado es el mismo que
el texto en claro.
4OTA: el efecto avanlancha es una propiedad deseable en cualquier algoritmo. Dice que un pequeo cambio en el texto plano o en la clave
produce un cambio significativo en el texto cifrado
Cifrado por bloques
ECB (Electronic Code Book) cifra en forma serial cada bloque de 64 bits de texto plano utilizando la misma clave de 56 bits. Subdivide la cadena
que se quiere codificar en bloques de tamao adecuado y se cifran todos
empleando la misma clave. Consiste en que los m1, m2, mm bloques en
que se ha dividio el mensaje van pasando, uno detrs de otro, como entrada
del cifrador y los c1, c2, . , cm (bloques encriptadas) resultantes se
concatenan uno detrs de otro, y en el mismo orden, para construir el
mensaje cifrado final.
Como cada bloque est cifrado independientemente, el descifrado tambin
puede realizarse separadamente para cada bloque de texto cifrado, con lo
que se reconstruye fcilmente el mensaje original. Es ms facil de atacar,
sobre todo si hay cierta informacin previa sobre el contenido de los
bloques. Por eso se recurre a otros modos que ofrecen mayor resistencia.
-
En el mtodo CBC, cada bloque de texto plano es procesado mediante la operacin lgica XOR en conjunto con el bloque de cifrado anterior y
luego utilizando la clave DES. As, el cifrado de cada bloque depende del
anterior. Luego, el cifrado de dos bloques de texto plano iguales puede
resultar en bloques cifrados diferentes. Este mtodo no funciona con
ataques sofisticados de criptoanlisis o ataques de fuerza bruta.
Para robustecer la seguridad del cifrado, el modo de encadenamiento de
bloques cifrados es tal que el resultado c1 de cifrar el primer bloque se
suma mdulo 2 con el bloque m2. El resultado de esta operacin XOR
constituye la entrada de la operacin de cifrado que da lugar al bloque c2, y
as sucesivamente.
-
Cifrado de flujo
DES utiliza dos mtodos para cifrar flujo:
Se deben considerar varios aspectos al utilizar DES:
-
Una clave entra en un generador pseudoaleatorio que produce un flujo de
nmeros de 8 bits que son aparentemente aleatorios. La salida del
generador, denominada keystream, se combina un byte por vez con el flujo del texto plano usando una operacin XOR.
-
Advanced Encryption Standard (AES) Despus de un tiempo de prueba en 1997, el Instituto de Estndares y
Tecnologa (4IST) acept el algoritmo de cifrado por bloques de Rijndael. Posee una longitud de bloque y longitud de clave variables. Es un cifrado
de bloques iterativo, lo que significa que el bloque de entrada inicial y la
clave de cifrado atraviesan mltiples ciclos de transformacin antes de
generar los dato de salida. Puede utilizarse claves de 128, 192 y 256 bits,
para cifrar datos de 128, 192 y 256 bits de longitud.
Se considera el algoritmo ms eficiente. No posee estructura de Red de Feistel. Se define cada ronda como una composicin de funciones invertibles. Se basa en aplicar un nmero determinado de rondas a un valor
intermedio que se denomina estado. Puesto que AES permite emplear diferentes longitudes tanto de bloque como de clave, el nmero de rondas
requeridas en cada caso es variable.
La longitud de clave mayor que DES lo hace ms seguro. AES se ejecuta
con mayor velocidad. AES es, sin embargo, un algoritmo muy joven por lo
tanto a veces se considera que 3DES es ms seguro porque lleva
implementado 35 aos.
El bloque se copia en el array estado, que se modifica en cada etapa de
encriptado o desencriptado. Despus de la etapa final, estado se copia en
una matriz de salidad.
Se utilizan 4 etapas diferentes, una de permutacin y 3 de sustitucin:
o Susticin de bytes: usa una S-caja para realizar una sustitucin byte a byte del bloque.
o Desplazamiento de filas: una simple permutacin. o Mezclar columnas: una sustitucin que usa aritmtica en un grupo. o Ronda de clave aadida: una simple operacin XOR del bloque
actual con una porcin de la clave expandida.
-
La estructura es bastante simple. Para encriptado y desencriptado, empieza
con una rond de clave aadida, seguida de 9 rondas que incluyen todas las
etapas, seguida d 10 rondas de tres etapas.
Aqu un diagrama simplificado:
-
4OTA: esta basado en campos de Galois.
Comparativa
Los cifrados asimtricos proporcionan autenticacin, integridad y
confidencialidad.
El objetivo de confidencialidad se logra cuando el proceso de cifrado
comienza con la clave pblica:
-
Cuando la clave pblica es utilizada para cifrar datos, la clave privada debe
ser utilizada para descifrarlos. Slo uno de los host posee la clave privada,
por lo tanto se logra la confidencialidad.
El objetivo de la autenticacin de los algoritmos asimtricos se logra
cuando el proceso de cifrado empieza con la clave privada.
Debido a que un solo host posee la clave privada, slo dicho host puede
haber cifrado el mensaje, probando as la autenticidad del remitente
-
Para enviar un mensaje que asegure la confidencialidad, integridad y
autenticacin:
-
Envoltura digital
Se puede conseguir la provisin de los servicios de integridad y
confidencialidad sin necesidad de recurrir a varios intercambios de
informacin entre entidades. Este es el caso del mecanismo denominado
envoltorio digital o envoltura digital. Bsicamente consiste en lo siguiente:
1. la entidad A genera de forma aleatoria una clave de sesin k.
2. La entidad A cifra el mensaje m mediante un criptosistema simtrico
usando la clave k:
C1= Ek(m)
3. La entidad A cifra la clave k con la clave pblica de B, usando un
criptosistema asimtrico:
C2=Bp(k)
4. A enva a B ambos criptogramas c1 y c2.
5. La entidad B obtiene la clave de sesin cifrando c1 con su clave
privada:
-
K=Bs(c2)
6. B descifra el mensaje m usando el mismo criptosistema simtrico y
la clave k obtenida:
M= Dk(c1)
Este mecanismo sirve para proporcionar los servicios de integridad y
confidencialidad de los datos.
CIFRADOS ASIMTRICOS
Los algoritmos tienen las siguientes caractersticas:
No es computacionalmente factible determinar la clave de
desencriptado conociendo el algoritmo de cifrado y la clave de
encriptado.
Cualquiera de las dos claves se puede utilizar para encriptar o
desencriptar.
Conocer el algoritmo ms una de las claves ms algn ejemplo de
texto cifrado es insuficiente para determinar la otra clave.
En los criptosistemas de clave secreta, la transformacin de los datos se apoya en operaciones lgicas o algebraicas muy simples cuyo cometido es
alterar el orden de los bits que aparecen en el mensaje original y sustituir
sus valores conforme a las reglas del algoritmo de cifrado. Por el contrario,
los algoritmos de cifrado de clave pblica se basan en operaciones matemticas de cierta complejidad. Por esta razon, los sistemas simtricos
son ms rpidos y eficaces que los asimtricos, pero menos seguros.
A diferencia de lo que ocurre con los criptosistemas simtricos, en los
criptosistemas asimtricos las operaciones se definen independientemente de la clave, de forma que el tamao de sta puede ser aumentado o disminuido sin que por ello se altere el algoritmo.
-
RSA
Se trata de un algoritmo patentado de clave pblica. Es el algoritmo ms
sencillo de comprender e implementar. Es muy flexible porque posee una
clave de longitud variable, por lo que la clave puede acortarse para acelerar
el procesamiento. Pero mientras ms corta es la clave, menos seguro es el
algoritmo.
Se basa en la dificultad de factorizar grandes nmeros. Las claves pblica y
privada se obtienen a partir de un nmero que es un producto de dos primos
grandes. Para algunas claves deja el mensaje original inalterado, son las
claves dbiles.
Las claves en RSA tienen un tamao entre 512 y 2048 bits de longitud. La
seguridad de RSA se basa en la dificultad para factorizar nmeros muy
grandes.
-
Funcionamiento
RSA usa dos exponentes, e y d, donde e es pblico y d es privado.
Supongamos que P es el texto plano y C es el cifrado. Uno utiliza
para crear el texto cifrado y otro usa
Para recuperar el texto plano enviado.
Los ataques a RSA son los siguientes:
Fuerza bruta: probar todas las posibilidades. Ataques matemticos: equivalente a factorizar nmeros primos muy
grandes.
Timing atacks: dependen del tiempo de ejecucin de los algoritmos de desencriptado. Se basan en el tiempo que tarda para estimar qu
tipo de algoritmo se est usando.
Ataques de texto cifrado elegido: explotan las propiedades del algoritmo RSA.
-
Algoritmo de Diffie-Hellman
Este algoritmo permite el intercambio seguro de claves entre dos usuarios.
Se basa en la dificultad para computar logaritmos discretos.