Los algoritmos de clave simétrica, también llamados de clave secreta o privada, son los algoritmos clásicos de encriptación en los cuales un mensaje es encriptado utilizando para ello una cierta clave sin la cual no puede recuperarse el mensaje original.

El esquema básico de los algoritmos de clave simétrica es:

MENSAJE + CLAVE = CÓDIGO (encriptación)

CÓDIGO + CLAVE = MENSAJE (desencriptación)

Clave privada

Esto se lleva a cabo sustituyendo porciones del mensaje original por porciones de mensaje encriptado usando la clave. La sustitución puede ser de varias formas:

Monoalfabética:

Cuando se encripta, cada caracter encriptado corresponde a un caracter del mensaje original y viceversa.

Homofónica:

Cuando un caracter de texto original se encripta en varios caracteres del texto encriptado.

Poligráfica:

Cuando n caracteres del mensaje original generan n caracteres del mensaje encriptado.

Polialfabética:

Cuando n caracteres del texto original se encriptan en m caracteres del texto encriptado (m≠n) .

Cabe destacar que la sustitución poligráfica y la sustitución homofónica son casos particulares de la sustitución polialfabética.

Criptosistemas:

Definiremos a un criptosistema como un conjunto de tres elementos:

  1. Un espacio de mensajes: PT que es la colección de todos los posibles mensajes pt que pretendemos enviar.
  2. Un espacio de claves K. Cada clave k determina un método de encriptación Ek y un método de desencriptado Dk. De forma tal que Ek(pt) = código y Dk(código)=pt.
  3. Un espacio de códigos: CT que es la colección de todos los posibles códigos ct.

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.

 

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.

Por ejemplo: 'sldsauo qrdueio pdreo' quiere decir 'saludos querido pedro'.

Los criptoanalistas que consideren como factor cierto la alternancia de vocales y consonantes en un texto tendrán problemas para descifrar nuestro mensaje. En algunas palabras se pueden poner todas las vocales al final y en otras todas al principio.

  • Jamas utilizar dos veces la misma palabra en un texto, aun en sistemas polialfabéticos esto constituye una debilidad.
  • Escribir todos los mensajes de la forma mas breve que sea posible, evitar el uso de artículos salvo que sean estrictamente necesarios para comprender el texto. Las chances de éxito de un buen criptoanálisis aumentan vertiginosamente a medida que se consigue mas información sobre el mensaje a descifrar.

 

Vie, 24/06/2005 - 16:36