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

Anuncios

Instalando OpenBSD en 5 minutos

Después de unos días de no haber estado con ustedes, (es que estaba estudiando para rendir un final) les traigo en esta ocasión un video sobre la instalación de openBSD, por supuesto no soy yo (por ahora, pero espero poder instalar en mi maquina en estos días que voy a estar mas libre).

Introducción a los Sistemas BSD

Me puse a investigar algo sobre los sistemas BSD, espero les guste.

¿Qué es BSD?

BSD son las siglas de “Berkeley Software Distribution”. Así se llamó a las distribuciones de código fuente que se hicieron en la Universidad de Berkeley en California y que en origen eran extensiones del sistema operativo UNIX de AT&T Research. Varios proyectos de sistemas operativos de código abierto tienen su origen en una distribución de éste código conocida como 4.4BSD-Lite. Añaden además un buen número de paquetes de otros proyectos de Código Abierto, incluyendo de forma destacada al proyecto GNU. El sistema operativo completo incluye:

  • El kernel BSD, que se encarga de la programación del tiempo de ejecución de los procesos, la gestión de memoria, el multiproceso simétrico (SMP), los controladores de dispositivos, etc.A diferecia del kernel Linux existen varios kernel BSD con diversas funciones.
  • La biblioteca C, la API base del sistema.La biblioteca C de BSD está basada en código procedente de Berkeley no del proyecto GNU.
  • Aplicaciones como las distintas shells, aplicaciones de gestión de ficheros, compiladores y enlazadores.Algunas de las aplicaciones derivan del proyecto GNU, otras no.
  • El sistema X Window, que gestiona el entorno gráfico.El sistema X Window que se usa en la mayoría de versiones de BSD es producto de un proyecto aparte, el Proyecto XFree86. Se usa el mismo código que en Linux. BSD por lo general no predetermina un “gestor de ventanas” como KDE o GNOME, aunque éstos y otros muchos esten disponibles.
  • Muchos otros programas y utilidades

¿Por qué BSD no se conoce mejor?

Existen diversas razones por las que BSD es relativamente desconocido:

  1. Los desarrolladores de BSD con frecuencia están más interesados en depurar su código que en promocionarlo.
  2. La mayor parte de la popularidad de Linux se debe a factores externos a los proyectos Linux, como la prensa y las compañías que ofrecen servicios relacionados con Linux. Hasta hace poco los BSD de fuente abierta carecían de tales abogados.
  3. Los desarrolladores de BSD suelen estar más experimentados que los de Linux y ponen menos de su parte a la hora de hacer el sistema fácil de usar. Los recién llegados suelen sentirse más cómodos con Linux.
  4. En 1.992 AT&T denunció a BSDI, el distribuidor de BSD/386, alegando que el producto contenía código propiedad de AT&T. El caso fué sobreseído en 1.994 pero la huella del litigio perdura. Aún en Marzo de 2.000 en un artículo publicado en la web se aseguraba que el caso había sido “resuelto hace poco”.Un detalle que el proceso judicial aclaró fue el de la nomenclatura: en los 80 BSD era conocido como “BSD UNIX ”. Tras la eliminación del último vestigio de código de AT&T, BSD perdió el derecho a llamarse UNIX. Es por esto que es posible encontrar títulos de libros referentes a “the 4.3BSD UNIX operating system” y “the 4.4BSD operating system” y “the 4.4BSD operating system”.
  5. Existe la creencia de que los proyectos BSD están fragmentados y enfrentados entre sí. El Wall Street Journal habló de la “balcanización ” de los proyectos BSD. Como en el caso del pleito, esa creencia se fundamenta en historia antígua.

¿Quién posée BSD?

Ninguna persona o empresa posée BSD. Su creación y distribución es obra de una comunidad de voluntarios altamente cualificados y comprometidos a lo largo y ancho del mundo. Algunos de los componentes de BSD son proyectos de Código Abierto que cuentan con responsables ajenos al proyecto BSD.

¿Cuántas versiones de BSD existen?

A diferencia de las numerosas distribuciones de Linux tan sólo hay tres BSD libres. Cada proyecto BSD mantiene su propio árbol de fuentes y su propio kernel. En la práctica, sin embargo, las diferencias en el entorno de usuario (“userland”) entre los distintos BSD son menores que las que hay en Linux.

Es difícil enumerar los objetivos de cada proyecto puesto que las diferencias son muy subjetivas. En general,

  • FreeBSD tiene como meta ofrecer alto rendimiento y facilidad de uso al usuario final y es uno de los favoritos entre proveedores de contenidos web. Funciona en PC y en procesadores Alpha de Compaq. El proyecto FreeBSD cuenta con un número de usuarios significativamente mayor que los otros proyectos.

  • NetBSD tiene como meta la Portabilidad: No en vano su lema es “of course it runs NetBSD” (que podría traducirse como “claro que funciona con NetBSD”). Funciona en máquinas que abarcan desde PDAs a grandes servidores e incluso ha sido usado por la NASA en misiones espaciales. Es una excelente elección para utilizar viejo hardware no Intel.

Sigue leyendo “Introducción a los Sistemas BSD”

El Sistema Operativo mas Seguro del Mundo: OpenBSD

En estos días, me entro la curiosidad sobre cual es el sistema operativo mas seguro, y buscando en la red, encontré que es OpenBSD, un sistema operativo basado en BSD.

OpenBSD es un sistema operativo libre tipo Unix, multiplataforma, basado en 4.4BSD. Es un descendiente de NetBSD, con un foco especial en la seguridad y la criptografía.Este sistema operativo, se concentra en la portabilidad, cumplimiento de normas y regulaciones, corrección, seguridad proactiva y criptografía integrada. OpenBSD incluye emulación de binarios para la mayoría de los programas de los sistemas SVR4 (Solaris), FreeBSD, GNU/Linux, BSD/OS, SunOS y HP-UX.

Licencia BSD

OpenBSD, se distribuye bajo la licencia BSD, aprobada por la OSI.

“Cabe aclarar que la licencia BSD, es aun menos restrictiva que la GPL, permitiendo el uso del código fuente en software no libre, puede argumentarse que esta licencia asegura el “verdadero” software libre, en el sentido que el usuario tiene libertad ilimitada con respecto al software” (Que LOCO).

La META: Ser el Mas Seguro

EL objetivo Principal de OpenBSD es ser el Sistema Operativo mas seguro del mundo, y para conseguirlo, el proyecto fue ubicado en Canada, donde no tienen leyes de exportación contra tecnología criptográfica como en EE.UU., por lo tanto OpenBSD se exporta con criptografía integrada, esto les ha permitido ser el primer sistema operativo en incluir IPsec. (+ info sobre IPSec en http://vig.pearsoned.com/samplechapter/0130118982.pdf)

Otro componente fundamental es OpenSSH, que es una implementación libre del protocolo SSH (secure shell) y que ha sido adoptado por el resto de Unix tanto libres como comerciales, OpenSSH soporta tanto SSH1 y SSH2. (+ info. http://www.snailbook.com/)

MI2G

Según un estudio de la Unidad de Inteligencia  del mi2g revela que los sistemas operativos de servidores online mas seguros del mundo son los sistemas de la familia Open Source de BSD y el sistema Darwin (Apple Computers), además este estudio revela que los servidores Linux fueron los mas hackeados por primera vez, tanto en esferas gubernamentales como no, y los hackeos de sistemas basados en Windows, ha decrecido significativamente.

Aunque en este estudio, no se tuvieron en cuenta muchas otras brechas de seguridad como, virus, troyanos y gusanos.

Transparencia absoluta

En todo lo relativo a los problemas de seguridad, de forma que cuando se descubre algún exploits/problema/bugs, lo que se hace no es ocultarlo sino todo lo contrario, se da a conocer, de esta forma se solucionara lo antes posible.
“La información sobre seguridad se mueve a gran velocidad en los círculos de “crackers”. Por otra parte, nuestra experiencia nos dice que programar y hacer públicas soluciones correctas a problemas de seguridad requiere promedios de una hora de trabajo; la rapidez en las reparaciones es posible. En consecuencia, pensamos que una total transparencia ayuda a aquellos usuarios a quienes de verdad les preocupe la seguridad.”

Auditoria Extrema
El sistema de auditoría de OpenBSD, es uno de los factores claves de su enorme éxito, se trata de auditorías de seguridad «proactividad», es decir intentan detectar los problemas/bug/errores antes de que ocurran y no ha posteriori como hace el resto de sistemas.
“El proceso que seguimos para incrementar la seguridad se basa simplemente en un exhaustivo análisis, fichero por fichero, de todo componente crítico de software. En nuestras auditorías no buscamos agujeros de seguridad, sino errores de programación; si años más tarde alguien descubre que el error solucionado por nosotros constituía un problema de seguridad, bueno… más a nuestro favor. Se han descubierto defectos en casi todas las áreas del sistema. Durante nuestras auditorías han sido encontradas clases de seguridad totalmente nuevas, y a menudo ha sido necesario volver a auditar código fuente que había sido auditado previamente, con estos nuevos defectos como objetivo. Con frecuencia el código se audita múltiples veces y por distintas personas con conocimientos y experiencia en auditorías diferente.”


Ningún Fallo de Seguridad en 6 años

Hasta Junio de 2002, la página web de OpenBSD ostentaba el eslogan: «Ningún fallo de seguridad remoto en la instalación por defecto en los últimos 6 años». Esto debió ser cambiado por: «Un solo agujero de seguridad en la instalación por defecto, en más de 8 años», después de que se encontrara un agujero en OpenSSH y posteriormente por: «Sólo dos agujeros de seguridad en la instalación por defecto, en más de 10 años», al encontrase un fallo en el módulo de IPv6. Alguna gente ha criticado este lema, ya que casi nada está activado en la instalación por defecto de OpenBSD, y las versiones estables han incluido software en el que posteriormente se encontraron agujeros de seguridad. El equipo de programadores de OpenBSD mantiene que el eslogan se refiere una instalación por defecto del sistema operativo, y que es correcto ajustándose a su definición. Uno de las innovaciones fundamentales del proyecto OpenBSD es introducir el concepto del sistema operativo “Seguro por Defecto”. Según la ciencia de la seguridad informática, es estándar, y además fundamental, activar la menor cantidad posible de servicios en máquinas que se encuentren en producción. Aun con todo, incluso sin tener en cuenta esta práctica, OpenBSD es un sistema extremadamente seguro y estable.

Además de todo esto OpenBSD fue el primer sistema operativo libre que se distribuyó con un sistema de filtrado de paquetes incorporado.

Fuentes:

MI2G
http://www.mi2g.net/cgi/mi2g/press/021104.php
http://www.mi2g.net/cgi/mi2g/press/190204_2.php
Wiki
http://es.wikipedia.org/wiki/OpenBSD
Bulma
http://www.bulma.net/body.phtml?nIdNoticia=871
OpenBSD
http://www.openbsd.org/faq/es/faq1.html
www.openbsd.org/es/
ZDNet
http://techupdate.zdnet.com/techupdate/stories/main/0,14179,2822483,00.html
Si quieren instalar OpenBSD:
www.whyfloss.com/pages/conference/static/editions/bsas07/charla14.pdf
The Most secure Unix
http://librenix.com/?inode=9290
Secure Architecture
https://www.journeyed.com/itemDetail.asp?ItmNo=100653095

Subir ↑