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.
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.
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