Acerca de...
El equipo
Encuestas
Política de privacidad
WinTablets

Encuesta

¿Cual crees que triunfará?

Ver Resultados

Cargando ... Cargando ...

últimas entradas importantes

Categorías

Entradas recientes

Archivos

07
Abr 2015
grandes seriesMicrosoftPost-Hangout

Post Hangout 21 – Seguridad en Windows. Introducción (I de V)

Vale, ya sé que es un poco tarde, pero cuando hicimos el Hangout yo estaba demasiado ocupado con problemas personales y luego ya se me olvidó. Pero como los prometido es deuda, aquí tenéis cuatro entradas (que se publicarán a razón de una al día) sobre la seguridad en Windows. Trataré de alguna de las cosas de las que hablamos allí y de otras en las que no, e intentaré ser didáctico allí donde pueda entender que la cosa se complica.

En esta primera entrada voy a presentar una especie de introducción de temas previos antes de entrar en materia. No os durmáis.

1.- Ponerse las botas (chiste para entendidos y viejunos).

Cuando uno enciende un ordenador cuando estaba apagado, se carga un sistema operativo. Esto no es cierto del todo pero nos vale como metáfora.

De todos modos, para los tiquismiquis, en general encender un hardware basado en microprocesador produce un reset físico en el mismo que hace que el procesador empiece a leer datos por una dirección de memoria prefijada gracias a la configuración de una serie de patillas del mismo (vamos, la forma en que estén soldadas en placa junto a otros tiquismiquis como valores resistivos asociados, etc.). El hardware anexo al microprocesador “pone” en esa dirección de memoria una ROM.

Aunque los ARM arrancan de otra manera. Los ARM, hasta donde yo sé, el encendido arranca un mini procesador especial que inyecta el código de boot (el mismo que la ROM citada) dentro del micro ARM y luego produce el arranque del mismo asociado a ese código.

Vale. A esa ROM se le suele llamar BIOS, aunque últimamente ese concepto está algo obsoleto y ahora muchas placas llevan algo llamado EFI, que es lo mismo que la BIOS pero con otro nombre. Eso sí, es mucho más moderno y permite hacer más cosas antes de que el microprocesador arranque.

Ese código en ROM (generalmente en memorias FLASH regrabables) lo que hacen es instruir al microprocesador para que busque un disco y dentro de ese disco un MBR, que leerán y ejecutarán. Ese código MBR, generalmente de no más de 512 bytes, buscarán la partición activa y cargarán el sistema operativo.

Luego veremos por qué todo este rollo macabeo sobre el arranque de un ordenador.

Antes decía que al encender un ordenador, se carga un sistema operativo. Ahora la idea es evidente por sí misma, pero al inicio de la informática no lo era ni de lejos. Windows, OS X, Linux, Android, iOS son sistemas operativos.

En general un sistema operativo moderno está dividido en tres partes. La primera es el núcleo, que es el sistema operativo en sí. En Linux se llama kernel, aunque algunos lo llamamos kelmer para echarnos unas risas. En Windows se llama también así (kernel, no kelmer, aunque últimamente… ¿veis?). Es ahí donde está todo el busilis del ordenador. Donde se gestiona la memoria, donde se abren y cierran ficheros, donde gestionamos las conexiones de red y casi cualquier cosa que el sistema operativo sea capaz de hacer.

Encima el núcleo está lo que yo llamo la shell pero que podríamos llamar la interfaz de usuario. En Windows la ventana de MS-DOS es una interfaz de usuario. El Explorador de Windows y la barra de tareas, otra. En OS X tenemos el Finder y el Dock, y quizás también Spotlight. En Linux, la consola (la que sea, bash, term, csh,…) y las X junto a KDE, Gnome, XFCE, Enlightenment… Bueno, las X depende de cómo enfoquemos la idea.

Y finalmente la tercera parte son las aplicaciones de usuario.

En resumen, y a efectos de lo que nos ocupa, tenemos cinco grandes elementos:

  • El pre-boot o bootstrap (BIOS, EFI, …)
  • El núcleo
  • La shell
  • Las aplicaciones de usuario.
  • El propio usuario.

Cinco bellísimos bloques sobre los cuales atacar destruyendo la seguridad de un ordenador.

2.- ¿Correo certificado? Sí, gracias.

Todos entendemos el concepto de correo [postal] certificado. Viene a decir que hay un intermediario que garantiza que nuestra carta llega fehacientemente a destino. E incluso podríamos ver la firma y el nombre del que la recibió si añadimos la opción de con acuse de recibo.

En el mundo digital el concepto es similar. Un certificado digital es un simple fichero de apenas unos nimios kilobytes pero que contiene uno de los conceptos de matemática práctica más avanzados que existen hoy en día.

Está basado en dos números primos grandes y la colaboración de un tercero de confianza, tercero que suele ser la entidad certificadora que nos garantiza que el certificado es correcto y que no ha sido cambiado.

En teoría es prácticamente imposible de romper ya que el algoritmo neceario para ello entra dentro de los del tipo np-completos, que a fecha de hoy no tienen solución. Si alguien fuera capaz de resolver uno de esos algoritmos, que están agrupados en familias, ese alguien sería situado al lado de Newton, Einstein y del que inventó el pan con mantequilla. A título póstumo, porque no creo que llegara a vivir ni un segundo después de hacer el anuncio.

En fin, bromas aparte, la idea del certificado es bastante sencilla. Se toma lo que se quiere proteger, se le realizan una serie de operaciones matemáticas y se le firma con el resultado. Cuando quieres verificar si eso ha sido tocado externamente, conectas con la entidad certificadora, que valida la incorruptibilidad de San Certificado.

Aunque a simple vista parece algo bastante complejo y fácil de romper, no lo es. Es como si yo cogiera una carta que he sellado con mi certificado y la guardara. Cuando fuera a abrirla, cogería la carta, el certificado, me iría a la entidad y se las enseñaría. Ellos me dirían si ha habido cambios o no.

También vale cuando estás enviando información a terceros (léase navegando por internet). Yo envío un correo firmado a un tercero, que llama a la entidad certificadora, que le dirá si el correo ha sido alterado o no. Y quien dice correo dice página web.

Uno de los puntos débiles de la operación es el camino, o el flujo de datos entre mi ordenador y el de la entidad certificadora, que alguien podría intentar modificar para engañar al receptor. Resulta que ese camino también va firmado y encriptado con los mismos conceptos, por lo que en principio es seguro.

Otro de los puntos débiles sería hacer un juego de manos y cambiar a la entidad certificadora. Es igual de difícil de sustituir porque la propia entidad, antes de garantizarte nada, se valida de forma segura contigo para garantizar que es ella y no otra.

Y es entonces cuando entran en juego los certificados raíz, que son un tipo de certificado que viene inserto en los sistemas operativos y navegadores y guardados bajo siete llaves. Igual que los otros, el sistema también puede verificar la validez de estos certificados contra la entidad certificadora y garantizar que todo está bien.

¿Os acordáis de Lenovo y el problema con el malware que venía instalado de fábrica? Todo estaba basado en un certificado raíz instalado para descodificar las comunicaciones encriptadas (HTTPS) con los servidores. Lo que ocurría, básicamente, era que, cuando el usuario navegaba, Lenovo tenía insertado en medio de la comunicación un man-in-the-middle que, usando dicho certificado, abría la conexión segura entre el navegador y el servidor web, y cambiaba cosas de la página web sin que el usuario se enterara.

La idea era cambiar publicidad, pero imaginaos que igual que se cambiaba un banner, se podían recoger los usuarios y las contraseñas, datos de tarjetas de crédito, etc. Y eso sin que nadie hubiera sustituido a ese man in the middle.

Microsoft fue la primera en tomar acciones al respecto, deshabilitando el certificado raíz de Lenovo, con lo que al navegar el usuario vería una pantalla roja muy bonita anunciando que su seguridad había sido comprometida.

Por RFOG | 2 Comentarios | Enlaza esta entrada
contacto@wintablet.info tema WinTablet.info por Ángel García (Hal9000)