viernes, noviembre 03, 2006

Criptografía y criptoanálisis

Hola de nuevo,

Durante el curso vemos los principios básicos, características y algoritmos sencillos de criptología.
El tema a investigar ahora son los avances más recientes en ésta área. Es decir, cuales son los nuevos algoritmos de descifrado (criptoanálisis) y de codificación (criptografía)

Recuerden que sus contribuciones se tomarán en cuenta para la evaluación del tercer parcial.

Saludos y seguimos en contacto

6 Comments:

At 12:20 p.m., Anonymous Anónimo said...

Hoy en día nadie pone en duda que hemos entrado en una nueva era caracterizada por una producción y uso masivo de la información, que además ha adquirido una importancia sin parangón en épocas anteriores. Adicionalmente, y muy vinculado a ello, estamos contemplando cómo equipos y productos que procesan, almacenan y transmiten la información ocupan todos los rincones de nuestro mundo, con una acelerada velocidad de penetración en todos los sectores sociales. Por ello, está absolutamente justificado que adjetivemos a nuestras sociedades como de la información, como antaño se tildaron de agrícolas o industriales.

Como consecuencia, la seguridad de esta información -que tan vital papel juega en nuestras sociedades y nuestras vidasse convierte en un tema de crucial relevancia, que cada vez preocupa, y ocupa, a más y más empresas y organismos públicos, conscientes de que una inadecuada protección de sus informaciones puede conllevar severas consecuencias para su devenir.


Como reacción lógica, en los últimos diez años hemos visto en nuestro país el crecimiento de un inusitado interés en la seguridad por parte de profesionales de la información, pero también de millones de meros usuarios de la tecnologías de la información -a menudo domésticos- interesados en conocer las amenazas que se ciernen sobre sus datos y equipos, las vulnerabilidades de estos y las posibilidades de protección que el desarrollo tecnológico ofrece.

Hay un libro con aportaciones en el tema es : AVANCES EN CRIPTOLOGÍA Y SEGURIDAD DE LA INFORMACIÓN

Directores: Benjamín Ramos y Arturo Ribagorda
Editorial: Díaz de Santos, S.A.
Año 2004 - 697 páginas
ISBN: 84-7978-650-7
www.diazdesantos.es/ediciones

Hay muchos algoritmos pero este es un ejemplo que escojo yo :

En criptografía, Advanced Encryption Standard (AES), también conocido como Rijndael, es un esquema de cifrado por bloque adoptado como un estándar de encriptación por el gobierno de los Estados Unidos, y se espera que sea usado en el mundo entero, como también analizado exhaustivamente, como fue el caso de su predecesor, el Estándar de Encriptación de Datos (DES). Fue adoptado por el Instituto Nacional de Estandares y Tecnología (NIST) como un FIPS (PUB 197) en noviembre del 2001 después de 5 años del proceso de estandarización
Descripción del cifrado

En la fase de SubBytes, cada byte en el state es reemplazado con su entrada en una tabla de búsqueda fija de 8 bits, S; bij = S(aij).

En el paso ShiftRows, los bytes en cada fila del state son rotados de manera cíclica hacia la izquierda. El número de lugares que cada byte es rotado difiere para cada fila.

En el paso MixColumns, cada columna del state es multiplicada por un polinomio constante c(x).

En el pasoAddRoundKey, cada byte del state se combina con un byte de la subclave usando la operación XOR (⊕).
Estrictamente hablando, AES no es precisamente Rijndael (aunque en la práctica se los llama de manera indistinta) ya que Rijndael permite un mayor rango de tamaño de bloque y clave; AES tiene un tamaño de bloque fijo de 128 bits y tamaños de llave de 128, 192 ó 256 bits, mientras que Rijndael puede ser especificado por una clave que sea múltiplo de 32 bits, con un mínimo de 128 bits y un máximo de 256 bits.

La mayoría de los cálculos del algoritmo AES se hacen en un campo finito determinado.

AES opera en un arreglo de 4×4 bytes, llamado state (algunas versiones de Rijndael con un tamaño de bloque mayor tienen columnas adicionales en el state). Para el cifrado, cada ronda de la aplicación del algoritmo AES (excepto la última) consiste en cuatro pasos:

SubBytes — en este paso se realiza una sustitución no lineal donde cada byte es reemplazado con otro de acuerdo a una tabla lookup table.
ShiftRows — en este paso se realiza un transposición donde cada fila del state es rotado de manera cíclica un número determinado de veces.
MixColumns — operación de mezclado que opera en las columnas del «state», combinando los cuatro bytes en cada columna usando una transformación lineal.
AddRoundKey — cada byte del «state» es combinado con la clave «round»; cada clave «round» se deriva de la clave de cifrado usando una key schedule.
La ronda final omite la fase MixColumns.


[editar] El paso SubBytes
En la etapa SubBytes, cada byte en el arreglo es actualizado usando la S-Box de 8 bits. Esta operación provee la no linealidad en el cifrado. La S-Box utilizada proviene de la función inversa alrededor del GF(28), conocido por tener grandes propiedades de no linealidad. Para evitar ataques basados en simples propiedades algebraicas, el S-box se construye por la combinación de la función inversa con una transformación afín inversible. El S-box también es elegido para evitar puntos estables (así como el derangement), y también cualesquiera puntos estables opuestos.

El S-box es descrito con mayor profundidad en el artículo Rijndael S-box.


[editar] El paso ShiftRows
El paso ShiftRows opera en las filas del state; rota de manera cíclica los bytes en cada fila por un determinado offset. En AES, la primera fila queda en la misma posición. Cada byte de la segunda fila es rotado una posición a la izquierda. De manera similar, la tercera y cuarta filas son rotadas por los offsets de dos y tres respectivamente. De esta manera, cada columna del state resultante del paso ShiftRows está compuesta por bytes de cada columna del state inicial. (variantes de Rijndael con mayor tamaño de bloque tienen offsets distintos).


[editar] El paso MixColumns
En el paso MixColumns, los cuatro bytes de cada columna del state se combinan usando una transformación lineal inversible. La función MixColumns toma cuatro bytes como entrada y devuelve cuatro bytes, donde cada byte de entrada influye todas las salidas de cuatro bytes. Junto con ShiftRows, MixColumns implica difusión en el cifrado. Cada columna se trata como un polinomio GF(28) y luego se multiplica el módulo x4 + 1 con un polinomio fijo c(x). El paso MixColumns puede verse como una multiplicación de dddd en Rijndael's finite field.


[editar] El paso AddRoundKey
En el paso AddRoundKey, la subclave se combina con el state. En cada ronda se obtiene una subclave de la clave principal key, usando la iteración de la clave; cada subclave es del mismo tamaño del state. La subclave se agrega combinando cada byte del state con el correspondiente byte de la subclave usando XOR.


[editar] Optimización del cifrado
En sistemas de 32 bits o de mayor tamaño de palabra, es posible acelerar la ejecución de este algoritmo mediante la conversión de las transformaciones SubBytes, ShiftRows y MixColumn en tablas. Se tienen cuatro tablas de 256 entradas de 32 bits que utilizan un total de 4 kilobytes (4096 bytes) de memoria, un Kb cada tabla. De esta manera, una ronda del algoritmo consiste en 16 búsquedas en una tabla seguida de 16 operaciones XOR de 32 bits en el paso AddRoundKey. Si el tamaño de 4 kilobytes de la tabla es demasiado grande para una plataforma determinada, la operación de búsqueda en la tabla se pude realizar mediante una sola tabla de 256 entradas de 32 bits mediante el uso de rotaciones circulares.

Los otroas existentes son:

Algoritmos
AES
RSA
DES / TripleDES
IDEA
TEA / XTEA
ARC4
DSA
ECDSA
MD5
ROT-13
Enigma
Base64

 
At 8:06 p.m., Anonymous Anónimo said...

En materia de criptología de clave pública, quedan aún varias interrogaciones teóricas. Se está intentando particularmente desarrollar criptosistemas basados en nuevos problemas, tales como los que utilizan curvas elípticas, para proponer alternativas a RSA y a los sistemas similares, particularmente en caso de progreso considerable en materia de factorización. Otro eje de investigación tiene como objeto la adaptación de los mecanismos asimétricos costosos en términos de capacidad de cálculo a los dispositivos portátiles de poca potencia tales como las tarjetas inteligentes sin contacto.


La criptología ofrece las herramientas indispensables para garantizar la protección de las libertades individuales en un mundo invadido por lo digital. Esto implica un empleo ampliamente difundido del cifrado, pero también el desarrollo de nuevos mecanismos que garantizan particularmente el anonimato en las transacciones electrónicas. La criptología no debe sin embargo transformarse en un arma que criminales puedan usar ni en un medio de control de los ciudadanos por un Big Brother digital. Por lo tanto, se deben instalar protecciones que permitan por ejemplo descifrar las comunicaciones o acabar con el anonimato en algunos casos precisamente reglamentados. El desafío actual de la criptología consiste entonces en suministrar primitivos eficaces que garanticen, de manera comprobada, si es posible, una muy fuerte seguridad, pero que no puedan ser utilizados con fines deshonestos.

 
At 1:09 a.m., Anonymous Anónimo said...

Algoritmo de Criptografía
Un algoritmo criptográfico es un algoritmo usado para asegurar uno de los puntos siguientes.

la confidencialidad de los datos
autentificación del emisor de los datos
integridad de los datos enviados
no-repudiación, un emisor no puede negar que ha enviado un mensaje particular.
Un algoritmo de firma digital proporciona algunas de estas características. También puedes ver algoritmos message digest.

Una versión separada (Java Cryptography Extensions) proporciona APIs y algoritmos relacionados con la encriptación y desencriptación.

Desencriptación
Desencriptación es la inversa de encriptación; el proceso de tomar los textos ecriptados y la clave criptográfica, y producir un texto claro (los datos originales sin encriptar)

Firma Digital
Una firma digital es una cadena de bits que se ha calculado desde algunos datos (los datos a ser "firmados") y la clave privada de la entidad.

La firma puede ser usada para verificar que los datos fienen de la entidad y que no han sido modificadas durante el tránsito.

Como una firma escrita, una firma digital tiene muchas características útiles.

Se puede verificar su autenticidad, mediante un cálculo que usa la clave pública correspondiente a la clave privada usada para generar la firma.
No se puede privar de ella, asumiendo que la clave privada mantiene el secreto
Es una función de los datos firmados y no puede ser reclamada como la firma de otros datos.
No se pueden modificar los datos firmados; si lo son, la firma no se verificará como auténtica.
Dominio o Protección de Dominio
Una protección de domino ("dominio" para acortar) encierra un conjunto de clases cuyos ejemplares tienen concedidos los mismos permisos.

Además de un conjunto de permisos, un dominio comprende un CodeSource, que es un conjunto de PublicKey junto con un codebase (en el formado de una URL). Así, las clases firmadas por la misma clave y desde la misma URL se sitúan en el mismo dominio. Las clases que tienen los mismos permisos pero tienen diferentes códigos fuente pertenecen a diferentes dominios.

Actualmente en el JDK 1.2, los dominios se crean "bajo demanda" como resultado de la carga de las clases.

Hoy todo el código enviado como parte del JDK se considera código del sistema y ejecuta dentro del único dominio del sistema. Cada applet o aplicación se ejecutan en su propio dominio, determinado por su código fuente.

Encriptación
Encriptación es el proceso de tomar los datos (llamado textolimpio) y una clave criptográfica y producir un textoencriptado, que son unos datos sin significado para cualquiera que no conozca la clave.

 
At 5:53 p.m., Anonymous Anónimo said...

Lizbeth Meza Gutierrez
Tecnicas de encriptacion:
Las técnicas de encriptación se suelen dividir en dos grupos: algoritmos de clave privada y algoritmos de clave pública. A los algoritmos de clave privada se los llama también algoritmos de encriptación simétricos o convencionales mientras que a los de clave pública también se los suelen denominar algoritmos antisimétricos.

El algoritmo RSA
Introducido por Ron Rivest, Adi Shamir y Len Adleman del MIT en 1978 el Algoritmo Rivest-Shamir-Adleman (RSA) es el único de los algoritmos de clave pública masivamente utilizados en la actualidad.

Generación de las claves

Se seleccionan dos números primos, p y q
Se calcula n = p x q.
Se calcula Φ(n) = (p-1)(q-1)
Se selecciona un entero usando: mcd (Φ(n),e) = 1 y 1 < e < Φ(n)
Se calcula d = e-1 mod Φ(n)
Clave Pública KU = {e,n}
Clave Privada KR = {d,n}

 
At 10:11 p.m., Anonymous Anónimo said...

JAVIER NOGUEZ VALENCIA

La criptografía es una ciencia que consiste en modificar la información para hacerla ilegible a otros.

Los sistemas de codificación se utilizan para la protección de datos (proteger secretos) desde hace milenios pero nunca habían sido tan fiables como en la actualidad. La moderna tecnología informática, la investigación militar y el comercio electrónico han ayudado a hacer que los algoritmos de encriptación sean de acceso libre y estén bien documentados.

El libro "Criptografía Aplicada" de Bruce Schneier es una de las publicaciones más importantes sobre este tema.

La criptografía moderna clasifica los métodos de codificación en distintas categorías independientemente del nivel de seguridad de cada uno. La categoría más importante es la distinción entre sistemas simétricos (clave secreta) y asimétricos (clave pública).

Cuando se utiliza un sistema de clave secreta (como la empleada por Steganos), es necesario acordar una clave entre los comunicantes. Los programas basados en la codificación asimétrica funcionan de otra manera. Imagine un buzón de correo: todo el mundo puede poner algo dentro (codificar) pero sólo el propietario puede leerlo (descodificar).
Hasta ahora sólo había un sistema considerado totalmente seguro: la libreta de un solo uso o codificación de Vernam (por el nombre de su inventor). Ya en 1917 Gilbert S. Vernam, que trabajó para AT&T, había inventado este sistema para proteger las comunicaciones por tele-impresora. Por desgracia, este método se aplica muy pocas veces, debido a que la clave utilizada para la codificación tiene que medir casi tanto como los datos que se van a comunicar. Se dice que el Teléfono rojo entre Washington y Moscú está protegido mediante una libreta de un solo uso.

Criptoanálisis

El criptoanálisis es lo contrario de la criptografía. Se trata del proceso de recuperación de los datos codificados sin la clave que se utilizó para codificarlos.

Hay muchas formas de descifrar sistemas de codificación, y la gran mayoría se basa en algoritmos o teorías matemáticas de mucha complejidad. El método más sencillo (aunque también el más lento) es probar todas las claves posibles. Está claro que este método no sirve para la codificación con 128 bits. Ésta es una de las razones por las que la codificación reforzada está prohibida en varios países.

Hay dos leyes científicas que demuestran que el método de comprobación de claves aumentará su velocidad:

· La ley de Moore afirma que la velocidad de cálculo de los equipos disponibles por el mismo precio aumenta cada 18 meses.

· La ley de Amdahl, por su parte, establece que algunas tareas pueden realizarse con varios equipos a la vez (p.ej. conectados por Internet). La búsqueda de claves es una de esas tareas.

Otro método importante para descifrar los sistemas de codificación es la estadística: e es la letra más utilizada en los idiomas inglés, alemán, francés y español. La repetición de textos habituales, como "Atentamente", pueden poner en peligro la seguridad de sistemas débiles de codificación. La compresión reduce la posibilidad de descifrar la codificación de esta manera.

Los algoritmos actuales (fiables) son inmunes a esos tipos de ataque, suponiendo que no haya puertas traseras.

Un método muy eficaz contra la codificación, que no tiene nada que ver con las matemáticas, es atacar al propio usuario. Con frecuencia los empleados son forzados a revelar las contraseñas mediante chantajes, engaños o, incluso, violencia física.

Sistemas monoalfabéticos y polialfabéticos:
Un algoritmo de encriptación por clave privada es monoalfabético si cada ocurrencia de un mismo caracter en el mensaje original es reemplazada siempre por un mismo caracter en el código cifrado.

Un algoritmo de encriptación por clave privada es polialfabético si cada ocurrencia de un mismo caracter en el mensaje original es reemplazada por distintos caracteres en el código cifrado.

Desarrollaremos a continuación algunos de los criptosistemas de clave privada mas conocidos, desde los más básicos hasta los más complejos.

Criptosistema Caesar
Criptosistema Hill
Criptosistema Afines
Criptosistema Playfair
Criptosistema DES


Modos de operación para encriptación de bloques.
Al utilizar algoritmos de clave privada de, por ejemplo 64 bits de longitud para encriptar textos de mas de 64 bits debe considerarse alguna técnica particular, el método mas simple consiste en dividir el bloque a comprimir en porciones de igual longitud que la clave y encriptar cada uno en forma independiente. Este método se conoce como Electronic Code Block (ECB) pero existen otras técnicas, los modos de operación standard ANSI/FIPS son:

ECB: Electronic Code Block.

CBC: Cipher Block Chainning.

CFB: Cipher Feedback.

OFB: Output Feedback.

Sobre la forma en que trabaja cada método puede consultarse el standard ANSI/FIPS correspondiente.

Deficiencias de los algoritmos de clave privada:
Los algoritmos de clave privada pueden construirse tan eficientes como se desee utilizando passwords mas y mas largos, sin embargo por mas largo que sea el password estos algoritmos presentan una vulnerabilidad evidente: el password.

En un esquema de encriptación por clave privada todo aquel que conozca el password es capaz de desencriptar un mensaje, de aquí que a veces, es mas importante estudiar como proteger el password que como trabaja el algoritmo elegido. Además, muchas veces es necesario transmitir, o enviar el password a alguna persona por lo que será necesario a su vez encriptar el password ingresando en un loop infinito.

Muchas veces el password es tan vulnerable que los criptoanalistas no se molestan en descifrar el código interceptado sino que directamente intentan averiguar el password. Uno de los ejemplos mas habituales consiste en averiguar passwords que permiten el acceso a determinados sistemas: cuentas bancarias, computadoras, computadoras donde se guardan otros passwords, etc. A continuación mencionamos algunas de las técnicas mas utilizadas para 'robo de passwords'.

Shoulder Surfing.
Esta técnica es la más básica y consiste en merodear a aquellas personas que conocen el password que se quiere averiguar intentando ver si se consigue visualizar el momento en que el password es tipeado en un teclado o escrito en algún papel, variantes más modernas de esta técnica incluyen programas residentes que monitorean las teclas que se oprimen en el teclado, cámaras que registran lo que se tipea desde un punto elevado, etc. La forma mas elemental es como su nombre lo indica observar por encima del hombro de la persona que tipea el password, parece tonto pero se utiliza muchísimo.

Caballos de Troya.
Los caballos de Troya son programas que se diseñan con el fin específico de robar passwords. El programa es introducido en una computadora y lo que hace es simplemente cada vez que es ejecutado pedirle el password al usuario y si este lo tipea (grave error) guardarlo en un archivo. Luego lo único que hay que hacer es cada tanto consultar el archivo y ver que es lo que nuestro caballo de Troya ha 'pescado'. Una de las reglas de seguridad mas importantes que establecen los administradores de sistemas es adiestrar a los usuarios para que JAMAS ingresen su password una vez que se han logoneado en el sistema, además suele ser recomendable resetear la terminal antes de logonearse al sistema por si el usuario anterior dejo andando un caballo de Troya que imita al programa de login.

Ingeniería Social.
Esta disciplina puede parecer ridícula pero es la más exitosa en cuanto a robo de passwords. La Ingeniería Social consiste en conseguir que una persona, simplemente, le diga su password a otra. Las técnicas son de lo mas variadas: llamados telefónicos pidiendo el password pues se cayó un disco y hay que backupear la información de cada usuario, pedidos de password para 'verificaciones rutinarias', encuestas a ver quien tiene el password mas seguro (!!!!), etc, etc...

Aunque parezca mentira hay personas realmente especializadas en este tipo de ataques.


La importancia del mensaje.
Contrariamente a lo que se cree habitualmente, la fuerza de un criptosistema de clave privada no reside únicamente en el algoritmo utilizado, o en la longitud de la clave sino que depende, también, del mensaje a enviar. Hay mensajes que por sus características propias serán mas fáciles de descifrar que otros, dado un mismo criptosistema, por lo tanto a la hora de enviar un texto ultra-secreto debemos tener en cuenta varios factores relacionados con el mensaje en sí.

Recomendaciones a la hora de escribir un texto altamente critico que deba ser encriptado por clave privada:

No utilizar espacios en blanco, escribir todo el texto de corrido. Cualquier caracter de alta probabilidad de ocurrencia, como por ejemplo los espacios en blanco, son un punto débil en el mensaje aun cuando se utilice un esquema polialfabético.
Si es muy necesario separar las palabras del mensaje a enviar, utilizar cualquier caracter elegido arbitrariamente en reemplazo del espacio en blanco.
Escribir con mucho cuidado el texto intentando que la distribución de cada caracter utilizado en el texto sea lo mas pareja posible, esto es de gran importancia, evitar el uso de uno o mas caracteres en forma predominante, usar palabras sinónimos, o incluir faltas de ortografía y sintaxis si es necesario. Escribir por ejemplo 'salujdhos pedfdro' que puede ser entendido fácilmente cuando se descifra el código pero podría llegar a complicar sensiblemente el criptoanálisis.
Empezar algunas palabras con caracteres que no tengan sentido alguno como por ejemplo la llave que cierra '}' o un punto y coma ';', esto puede desalentar varios intentos criptoanalíticos correctamente orientados.
Escribir algunas palabras al revés o con todas las vocales al final y las consonantes al principio, una especie de doble codificación.

 
At 12:00 a.m., Anonymous Anónimo said...

Los problemas de la distribución de llaves son resueltos por la criptografía de llave pública, este concepto fue introducido por Whitfield Diffie and Martin Hellman in 1975. (Existe evidencia actualmente que el Servicio Secreto Británico lo inventó algunos años antes de Diffie y Hellman, pero lo mantuvo como un secreto militar -y no hizo nada con ello-. [J H Ellis: The Possibility of Secure Non-Secret Digital Encryption, CESG Report, January 1970])

La Criptografía de Llave Pública es un esquema asimétrico que utiliza un par de llaves de encripción: una llave pública, la cual encripta datos, y una correspondiente llave privada, o llave secreta para desencriptar. Usted publica su llave pública al mundo mientras conserva en secreto su llave privada. Cualquiera con una copia de su llave pública puede encriptar información que sólo usted puede leer. Aún la gente que usted no conoce.

Es computasionalmente improbable el deducir la llave privada a partir de la llave pública. Cualquiera que posea una llave pública puede encriptar información pero no puede desencriptarla. Sólo la persona que tiene la llave privada correspondiente puede desencriptar la información.
El beneficio principal de la criptografia de llave pública es que esta permite que personas que no tienen ningun acuerdo previo de seguridad puedan intercambiar mensajes de manera segura. La necesidad de que el remitente y el destinatario compartan llaves secretas por medio de algún canal seguro se elimina; todas las comunicaciones incorporan sólo llaves públicas, y ninguna llave privada es jamás transmitida o compartida. Algunos ejemplos de criptosistemas de llave pública son el Elgamal (nombrada así por su inventor, Taher Elgamal), RSA (nombrada así por sus inventores: Ron Rivest, Adi Shamir y Leonard Adleman), Diffie-Hellman, y DSA (Digital Signature Algorithm, inventado por David Kravitz).

 

Publicar un comentario

<< Home