Criptografia y Números Pseudoaleatorios en OpenBSD

En estos dias en la materia Simulacion estuvimos aprendiendo sobre generacion de Numeros Aleatorios o Pseudoaletorios, e investigando un poco sobre OpenBSD encontre para que sirven estos famosos numeros pseudoaletorios (sin contar las simulaciones), espero les guste:
––El «mantra» de cualquier buen ingeniero de seguridad es : «La seguridad no es un producto, sino un proceso.» Es algo más que diseñar criptografía fuerte en un sistema; es diseñar el sistema por completo de manera que todas las medidas de seguridad, incluyendo la criptografía, funcionen al unísono.——

— Bruce Schneier, autor de «Applied Cryptography».

¿Por qué incluimos criptografía?

En dos palabras: porque podemos.

El proyecto OpenBSD está ubicado en Canadá.

La Lista sobre Controles a la Exportación de Canadá no impone ninguna restricción significativa a la exportación de software criptográfico, y es incluso más explícita sobre la exportación de software de libre disponibilidad. Marc Plumb ha realizado un estudio para comprobar las leyes sobre criptografía.

Gracias a este detalle, el proyecto OpenBSD ha integrado criptografía en muchas partes del sistema operativo. Una condición sine qua non que exigimos del software criptográfico que usamos es que sea de dominio público y con licencias decentes. No hacemos uso directo de criptografía con patentes restrictivas. También exigimos que provenga de países con leyes sobre la exportación útiles para nosotros, ya que no deseamos quebrantar las leyes de ningún país. Los componentes criptográficos que usamos hoy en día fueron escritos en Argentina, Australia, Canadá, Alemania, Grecia, Noruega, y Suecia.

Cuando creamos revisiones de las versiones de OpenBSD, las versiones preliminares (snapshots), construimos los binarios para éstas en países libres, para asegurarnos de que todo el código fuente y binario que ponemos a disposición de los usuarios esté libre de toda sospecha. En el pasado hemos compilado nuestras versiones binarias en Canadá, Suecia y Alemania.

OpenBSD incluye Kerberos V. El código base que usamos es el de la versión exportable de Heimdal, de Suecia. Hemos ampliado nuestro código fuente del entorno gráfico X11 para usar Kerberos.

VPNC TEST PARTNER OpenBSD fue el primer sistema operativo que incluyó IPsec. Hemos incluido IPsec desde el lanzamiento de OpenBSD 2.1 en 1997. Nuestra implementación de IPsec integrada en el núcleo, con aceleración de hardware basada en una variedad de tarjetas, y nuestro dæmon libre ISAKMP, se usa como una de las máquinas para las pruebas de conformidad de IPsec realizadas por VPNC.

La criptografía es hoy un importante medio para mejorar la seguridad en un sistema operativo. La criptografía que se utiliza en OpenBSD se puede clasificar según varios aspectos, descritos en esta página.

OpenSSH

Desde la versión 2.6, OpenBSD contiene OpenSSH, una versión de ssh totalmente libre y sin gravámenes de patentes. OpenSSH interaccionaba con la versión 1 de ssh y además añadía muchas características:

  • todos los componentes de naturaleza restrictiva (o sea, patentes; veáse ssl(8)) habían sido eliminados directamente del código fuente; cualquier componente bajo licencia o patentado usaba bibliotecas externas;
  • había sido actualizado para dar soporte al protocolo 1.5 de ssh;
  • contenía además soporte para autenticación y pases de tickets con Kerberos;
  • incluía soporte para autenticación con «contraseña de uso de una sola vez» (one-time password) con skey(1).

Dicho brevemente, tomamos una versión de ssh bajo licencia libre y la «OpenBSD-izamos». Un año más tarde, extendimos OpenSSH para que también incluyera el protocolo SSH 2. El resultado fue el soporte para los 3 protocolos principales de SSH: 1.3, 1.5 y 2.0.

Generadores de números pseudoaleatorios

Un generador de números pseudoaleatorios (PRNG, Pseudo Random Number Generator) provee a las aplicaciones con una fuente de números que tienen ciertas propiedades importantes para la seguridad del sistema:

  • Debería ser imposible que un extraño pudiera predecir la salida del generador de números aleatorios, incluso si conoce la salida anterior.
  • Los números generados no deberían tener patrones que se repitieran, lo que quiere decir que el PRNG debería tener una longitud de ciclo muy larga.

Un PRNG es, por lo general, un algoritmo en el que los mismos valores iniciales producirán las mismas secuencias de salida. En un sistema operativo multiusuario existen muchos recursos que permiten alimentar el PRNG con datos aleatorios. El núcleo de OpenBSD usa el interruptor de tiempo del ratón, las señales de interrupción de datos de la red, las señales producidas entre diferentes pulsaciones de teclado y la información de E/S del disco, para alimentar la entropía. Los números aleatorios están disponibles para las rutinas del núcleo y se exportan mediante dispositivos a programas en los directorios de usuario.

Hasta el momento, los números aleatorios se usan en las siguientes partes:

  • Asignación dinámica de sin_port en bind(2).
  • PIDs de procesos.
  • IDs de datagramas de IP.
  • IDs de transacción de RPC (XID).
  • IDs de transacción de NFS RPC (XID).
  • IDs de requerimiento de DNS.
  • Números de generación de I-nodos (ver getfh(2) y fsirand(8)).
  • Perturbaciones de tiempo en traceroute(8).
  • Nombres temporales más robustos para mktemp(3) y mkstemp(3).
  • Aleatoriedad añadida al valor TCP ISS para la protección contra ataques de «falseamiento de direcciones» (spoofing).
  • Relleno aleatorio en los paquetes esp_old de IPsec.
  • Generación de «sales» para los distintos algoritmos de las contraseñas.
  • Generación de retos S/Key falsos.
  • En isakmpd(8), proveer pruebas vivas de intercambios de claves.

randomness2

Funciones de resumen criptográfico (hash functions)

Una función de resumen criptográfico comprime sus datos de entrada en una cadena de tamaño constante. Para una función de resumen criptográfico no es factible encontrar:

  • dos entradas que tengan la misma salida (resistencia a la colisión);
  • una entrada diferente para una entrada dada con la misma salida (resistencia a 2a preimagen).

MD5, SHA1 y RIPEMD-160 se usan en OpenBSD como funciones de resumen criptográfico, v.g.:

  • En S/Key(1) para proveer contraseñas de uso de una sola vez.
  • En IPsec(4) e isakmpd(8) para autenticar el origen de los datos de los paquetes y asegurar la integridad de los paquetes.
  • Para las contraseñas MD5 de estilo FreeBSD (no activadas por definición), véase passwd.conf(5)
  • En libssl para la firma digital en los mensajes.

Transformaciones criptográficas

Las transformaciones criptográficas se usan para cifrar y descifrar datos. Éstas son comúnmente utilizadas con una clave de cifrado para cifrar datos, y con una clave de descifrar para descifrarlos. La seguridad de una transformación criptográfica debería descansar sólo en el material de la clave.

OpenBSD provee transformaciones como DES, 3DES, Blowfish y Cast para el núcleo del sistema y los programas en directorios de usuario, y se usan en muchas partes, como por ejemplo:

  • En libc para crear contraseñas con Blowfish(3). Véanse también las ponencias de USENIX sobre este tema.
  • En IPsec(4) para proveer confidencialidad en la red.
  • En isakmpd(8) para proteger los intercambios en los que se negocie material de clave IPsec.
  • En AFS para proteger los mensajes que pasan por la red, dando confidencialidad para el acceso remoto a los sistemas de archivos.
  • En libssl para dejar que las aplicaciones se comuniquen mediante el protocolo de facto criptográficamente seguro, SSL.

Se buscan criptógrafos internacionales

Nuestro proyecto necesita personas que trabajen en estos sistemas. Si algún criptógrafo, que no sea estadounidense y que cumpla los requisitos que se han enumerado en esta página, está interesado en ayudar con criptografía integrada en OpenBSD, puede contactar con nosotros.

Textos Interesantes

The Design of the OpenBSD Cryptographic Framework.
Usenix 2003, por Angelos D. Keromytis, Jason L. Wright, y Theo de Raadt.
Ponencia.

Cryptography in OpenBSD: An Overview.
Usenix 1999, por Theo de Raadt, Niklas Hallqvist, Artur Grabowski, Angelos D. Keromytis, Niels Provos.
Ponencia y diapositivas.

Fuente: http://www.openbsd.org

Criptografía y la Informática

La criptografía (del griego κρύπτω krypto, «oculto», y γράφω graphos, «escribir», literalmente «escritura oculta») es el arte o ciencia de cifrar y descifrar información mediante técnicas especiales y es empleada frecuentemente para permitir un intercambio de mensajes que sólo puedan ser leídos por personas a las que van dirigidos y que poseen los medios para descifrarlos.

Con más precisión, cuando se habla de esta área de conocimiento como ciencia se debería hablar de criptología, que a su vez engloba tanto las técnicas de cifrado, es decir la criptografía propiamente dicha, como sus técnicas complementarias, entre las cuales se incluye el criptoanálisis, que estudia métodos empleados para romper textos cifrados con objeto de recuperar la información original en ausencia de las claves.

Maquina Enigma utilizada por los alemanes en la 2da Guerra Mundial

Finalidad

La finalidad de la criptografía es, en primer lugar, garantizar el secreto en la comunicación entre dos entidades (personas, organizaciones, etc.) y, en segundo lugar, asegurar que la información que se envía es auténtica en un doble sentido: que el remitente sea realmente quien dice ser y que el contenido del mensaje enviado, habitualmente denominado criptograma, no haya sido modificado en su tránsito.

Otro método utilizado para ocultar el contenido de un mensaje es ocultar el propio mensaje en un canal de información, pero en puridad, esta técnica no se considera criptografía, sino esteganografía. Por ejemplo, mediante la esteganografía se puede ocultar un mensaje en un canal de sonido, una imagen o incluso en reparto de los espacios en blanco usados para justificar un texto. La esteganografía no tiene porqué ser un método alternativo a la criptografía, siendo común que ambos métodos se utilicen de forma simultánea para dificultar aún más la labor del criptoanalista.

En la actualidad, la criptografía no sólo se utiliza para comunicar información de forma segura ocultando su contenido a posibles fisgones. Una de las ramas de la criptografía que más ha revolucionado el panorama actual de las tecnologías informáticas es el de la firma digital: tecnología que busca asociar al emisor de un mensaje con su contenido de forma que aquel no pueda posteriormente repudiarlo.

Maquina de Lorenz utilizada por las altos rangos en la 2da Guerra Mundial

Criptografia e Informatica

La Criptografía es una rama de las matemáticas que, al orientarse al mundo de los mensajes digitales, proporciona las herramientas idóneas para solucionar los problemas relacionados con la autenticidad y la confiabilidad. El problema de la confidencialidad se vincula comúnmente con técnicas denominadas de «encripción» y la autenticidad con técnicas denominadas de «firma digital», aunque la solución de ambos, en realidad, se reduce a la aplicación de procedimientos criptográficos de encripción y desencripción.
El uso de técnicas criptográficas tiene como propósito prevenir algunas faltas de seguridad en un sistema computarizado.
La seguridad, en general, se considera como un aspecto de gran importancia en cualquier corporación que trabaje con sistemas computarizados. El hecho de que gran parte de actividades humanas sean cada vez más dependientes de los sistemas computarizados, hace que la seguridad desempeñe una función protagónica.

La diferencia entre Criptografía y seguridad informática puede ilustrarse así:

En un modelo criptográfico típico, existen dos puntos: «a» y «b», que se consideran fiables y, entre ellos, se transmite información mediante un canal no fiable. La Criptografía se ocupa de los problemas relacionados con la transmisión confidencial y segura por el medio no fiable, en tanto la seguridad informática se ocupa de asegurar la fiabilidad de los nodos «a» y «b».

La Criptografía se divide en dos grandes ramas, la Criptografía de clave privada o simétrica y la Criptografía de clave pública o asimétrica. La primera se refiere al conjunto de métodos que permiten una comunicación segura entre las partes siempre que, con anterioridad, se intercambie la clave correspondiente, que se denomina clave simétrica. La simetría se refiere a que las partes tienen la misma llave, tanto para cifrar como para descifrar.

Criptografía simétrica

La Criptografía simétrica, se ha implementado en diferentes tipos de dispositivos: manuales, mecánicos, eléctricos, hasta llegar a las computadoras, donde se programan los algoritmos actuales. La idea general es aplicar diferentes funciones al mensaje que se desea cifrar de modo tal, que sólo conociendo la clave, pueda descifrarse. Aunque no existe un tipo de diseño estándar, tal vez, el más popular es el de Fiestel,5 que realiza un número finito de interacciones de una manera particular, hasta que finalmente el mensaje es cifrado. Este es el caso del sistema criptográfico simétrico más conocido: DES (Data Encryption Standard).

Este último, el DES, es un sistema criptográfico que toma como entrada un bloque de 64 bits del mensaje y lo somete a 16 interacciones. Su clave de 56 bits, en la práctica tiene 64 bits, porque a cada conjunto de 7 bits se le agrega un bit que puede utilizarse para establecer la paridad. DES tiene 4 modos de operación: ECB (Electronic Codebook Mode) para mensajes cortos, de menos de 64 bits, CBC (Cipher Block Chaining Mode) para mensajes largos, CFB (Cipher Block Feedback) para cifrar bit por bit o byte por byte y el OFB (Output Feedback Mode) con el mismo uso, pero que evita la propagación de errores.7-11

Hasta el momento, no se ha podido romper el sistema DES mediante la deducción de la clave simétrica a partir de la información interceptada; sin embargo, con un método de fuerza bruta, la prueba de alrededor de 256 posibles claves, pudo descifrarse DES en enero de 1999.5 Ello implica que, es posible obtener la clave del sistema DES en un tiempo relativamente corto; así, se ha vuelto inseguro para propósitos de alta seguridad. La opción que se ha tomado para sustituir a DES es el cifrado múltiple, que aplica varias veces el mismo algoritmo para fortalecer la longitud de la clave y que ha tomado forma como nuevo sistema para el cifrado y se conoce actualmente como triple-DES o TDES.

Criptografía de clave pública o asimétrica

La Criptografía de clave pública o asimétrica, también denominada RSA por las siglas de los apellidos de sus inventores Rivest Shamir y Adelman, es por definición aquella que utiliza dos claves diferentes para cada usuario, una para cifrar que se llama clave pública y otra para descifrar que es la clave privada. El nacimiento de la Criptografía asimétrica ocurrió como resultado de la búsqueda de un modo más práctico de intercambiar las llaves simétricas.

Fuentes:

http://www.bvs.sld.cu
http://es.wikipedia.org
http://www.inixa.com

Subir ↑