Redes Sociales

martes, 17 de mayo de 2016

Cifrado (II)

Continuamos con la serie sobre cifrado, hablando en este caso del cifrado en dispositivos moviles.

Dispositivos móviles

Hoy en día pocos son los que viajan con un portátil y es en las tablets y móviles donde almacenamos la información sensible que queremos presentar a clientes, proveedores, etc. Es también imperativo el cifrado de estos dispositivos móviles para evitar fugas de información de todo tipo.

En las ultimas versiones los sistemas operativos de las principales tecnologías móviles vienen con herramientas de cifrado completo del dispositivo.

IOS

Apple cifra sus dispositivos iPhone y iPad desde iOS5. El cifrado se realiza utilizando el algoritmo AES de 256 bits. Como en anteriores sistemas, cada fichero tiene una clave única y aleatoria de cifrado. Esta clave se almacena en un ficherito de metadatos propio del fichero cifrado que es cifrado con una clave propia del sistema de ficheros (clave A) y con una segunda clave que es una combinación del código de bloqueo del usuario y de una segunda clave única a cada iPhone y iPad (clave B).

Esta segunda clave de cifrado (la clave B), aparte de ser única para cada dispositivo, no es almacenadas por Apple en ningún momento. De hecho estas claves se encuentran integradas en los circuitos integrados del propio dispositivo. En concreto en la memoria Flash del dispositivo.

Cuando el dispositivo se apaga, la copia de esta clave que se mantenía en memoria es eliminada y por tanto un atacante tendría que comprobar todas las combinaciones (2 elevado a 256) para descubrir la clave de cifrado (clave B) del dispositivo.

Al habilitar el código de bloqueo, se habilita también el cifrado del iPad. De esta manera, aunque un ladrón/atacante conecte el dispositivo a una computadora no podrá leer la información y en caso de que lo encienda pedirá una clave de bloqueo que bloqueará el dispositivo en caso de un numero excesivo de intentos.

La forma de activar el cifrado en dispositivos iOS es la siguiente:

  1. Ir a Ajustes
  2. General
  3. Código de Bloqueo
  4. Hacer tap en "Turn Passcode On"

Al habilitar el código de bloqueo, se habilita también el cifrado del iPad.

Los dispositivos iOS mantienen una copia de la clave de cifrado (clave B) en memoria flash (si no, no habría forma de recuperar los datos cuando se encendiera el dispositivo). Dado que la clave almacenada en la memoria Flash y la clave del sistema de ficheros (clave A) son únicas al dispositivo y no se pueden cambiar, en el fondo, la seguridad del dispositivo depende del código de bloqueo. Por defecto los usuarios suelen poner un código numérico de 4 dígitos pero este código puede ser alfanumérico y del numero de caracteres que se desee.

Android

El cifrado de disco en Android se incorporó en la versión Honeycomb (3.0) con el nombre de FDE (Full Disk Encryption o cifrado de disco completo). Sin embargo, Android no cifra el disco completo, solo lo hace con las particiones de usuario. Además sólo puede cifrar el almacenamiento interno, y solo desde Android 4.4 puede cifrar unidades SD. El cifrado utiliza el algoritmo AES de 128 bits.

Hasta Android 5.0 la contraseña la introducía el usuario, y el cifrado se basaba únicamente en esa contraseña. Además, no había otra opción y era responsabilidad del usuario no perderla ni olvidarla. En caso contrario se perdia toda la información del dispositivo. Desde Android 4.4 la clave de usuario es cifrada por una clave interna única a cada kernel y es con ésta clave con la que se cifran los archivos. Al final, los datos acaban siendo descifrados con la clave de usuario. De ahí la importancia de usar claves complejas.

La diferencia entre ambos métodos es que con el primero se podía hacer una copia de los contenidos del dispositivo a un PC e intentar una fuerza bruta usando ADB. Esto, desde Android 4.4, no es posible.

Para cifrar el dispositivo Android deberemos acceder a Ajustes --> Configuración --> Seguridad --> Cifrado

El proceso de cifrado puede llegar a durar una hora, por lo que es recomendable dejar el dispositivo conectado a la red eléctrica.



Cifrado de comunicaciones

La información sensible no se encuentra solo en la unidades de nuestros equipos y dispositivos. En el momento de enviar documentos a nuestros amigos y colaboradores, estamos dejando que información potencialmente sensible circule por un cable donde cualquier podría estar escuchando nuestra conversación y la información sensible enviada (O ni eso, en comunicaciones Wifi, la informacion viaha por las ondas, accesible a todo el mundo). Por esta razón es muy importante que todas las conversaciones de todo tipo (navegación web, correos electrónicos, mensajería instantánea, etc.) vayan cifrados.

En el caso del cifrado de comunicaciones, el algoritmo de cifrado utilizado suelen ser algoritmos asimétricos como RSA o DSA, utilizados por protocolos de comunicación como PGP, GPG,SSL o TLS.


Cifrado asimétrico

Es importante conocer las bases del cifrado asimétrico de una comunicación de cualquier tipo. En una infraestructura de clave pública, cada actor (ya sea un servidor web, un cliente de correo, un navegador web, etc) tiene una clave pública (que todo el mundo puede conocer) y una clave privada (que sólo el propio actor debe conocer). Estas claves tienen la característica de que un mensaje cifrado con una de esas claves (ya sea la publica o la privada) puede ser descifrado por la otra. Es decir, si ciframos un mensaje con nuestra clave privada sólo podremos descifrarlo con nuestra clave pública. Y viceversa. Por eso se llama cifrado asimétrico.

Para garantizar la autenticidad, la confidencialidad y el no repudio en el envío de un mensaje (o un texto, o una imagen o lo que sea), el mensaje será cifrado primero con la clave privada del emisor y a continuación con la clave pública del receptor. Es decir, se cifrará dos veces. El receptor (el legitimo receptor) podrá descifrar el mensaje primero descifrando con su clave privada y luego con la clave pública del emisor.

Si un usuario es capaz de interceptar el mensaje (por ejemplo cuando pasa por el servidor de Holanda) nunca podrá descifrarlo. La razón es que, aunque pueda descifrar usando la clave publica del emisor, aún necesitará descifrar el mensaje resultante con la clave privada del receptor legítimo, que, por supuesto, no conoce.

Infraestructura de clave pública

Cuando nosotros compramos en una tienda a través de internet realmente no conocemos a quien le estamos comprando. ¿Quién nos dice que al otro lado no esta un delincuente que simplemente se quedará con nuestro dinero a cambio de nada?. Para esto existe una infraestructura de autoridades de certificación, autoridades de registro, certificados, etc. Una certificado es un ficherito que dice quien es el dueño de esa web, el algoritmo de cifrado preferido para sus comunicaciones, la clave pública de la web y el periodo de validez del certificado (entre otras muchas cosas).

Por ejemplo aqui podemos ver una conexión segura (en la que aparece el candadito) y al clicar sobre él nos da información sobre la comunicación web:

Como vemos el certificado nos indica que Microsoft.com esta en Redmond, Washington, US, que la conexion utiliza el protocolos TLS 1.2 y que para el cifrado usa AES_256_CBC y que para la negociación ha utilizado una variante del algoritmo RSA (ECDHE_RSA). Es más nos permite obtener más datos. Entre la información adicional se incluye la clave pública del servicio web (que es una RSA de 2048 bits) y en la parte inferior nos la muestra (dado que es pública la puede conocer cualquiera). En la sección de cifrado de comunicaciones web veremos que es cada una de estas cosas.

La entidad generadora de estos certificados es lo que se llama una autoridad de certificación (CA) y en certificados web los más conocidos son VeriSign o goDaddy. En el caso del ejemplo anterior se la CA es Symantec, la casa antivirus.

¿Y como sabe esa "autoridad" de certificación que realmente esa web pertenece a esa persona?. Lo cierto es que no lo sabe. Además, cualquier podría crearse un una "autoridad de certificación" y certificar que yo soy yo. Esto ultimo se soluciona porque los navegadores aceptan por defecto los certificados firmados por la autoridades de certificación bien conocidas, como VeriSign, Thawte, etc. Estos los podemos ver yendo a ajustes, opciones de internet --> contenido --> certificados --> Entidades de certificación Raiz de Confianza. Ahí veremos un listado de unas 200 CAs que acepta nuestro navegador (en este caso Internet Explorer). El 99% de los certificados web están firmadas por 4 o 5 entidades de certificación.

En este ejemplo, la autoridad de certificación no esta aceptada por el navegador. La CA resulta ser la administración española (es la página de la sede electrónica del MEC) pero como el navegador es de origen americano y se pretende que sea de uso universal, no incluyen a la administración española como CA. Esta es la razón por la que cada vez que tenemos que realizar trámites con la administración, nos pide que instalemos los certificados que la avalan.

Pues bien a todo este conglomerado de entidades de certificación, de registro, certificados, listas de revocación de certificados, etc. es a lo que se llama Infraestructura de clave pública.


Cifrando comunicaciones web

Cuando hacemos una compra a través de internet estamos enviando cierta información confidencial como los dígitos de la tarjeta de crédito, el usuario, la fecha de caducidad y el código CCV de la tarjeta. Con esta información, cualquier podría realizar una compra a través de internet, suplantando nuestra identidad, por lo que sólo debe ser conocida por el usuario y la tienda.

Sin embargo esa comunicación esta pasando por los servidores de su ISP, servidores comunicaciones alojados (generalmente) en EEUU, probablemente otros servidores alojados en Inglaterra u Holanda, los servidores del hosting de la tienda donde esta alojada la página web donde estamos comprando. Es una largo camino y un montón de servidores de los cuales no sabemos nada ni si han sido comprometidos o que sistemas de seguridad disponen.


Camino que siguen una consulta a twitter desde algún lugar de Francia

Por esta razón es necesario proteger la comunicación de manera que viaje cifrada desde nuestro ordenador al servidor web de la tienda. Para conseguir esta comunicación cifrada, el primer requisito es que el servidor web este configurado para admitir conexiones HTTPS.

Una conexión segura contra un servidor web que admitan conexiones HTTPS tiene 3 fases. En una primera fase el navegador web y el servidor negocian el algoritmo de cifrado de la comunicación. Este proceso se llama Handshake y sirve para que se establezcan varios parámetros que permitan realizar la conexión de una forma segura.Una vez terminada la negociación, la conexión segura es establecida. En ese momento, el servidor web le envía su certificado, que almacena el nombre de la entidad certificadora (CA) del servidor web, el periodo de validez de ese certificado y la clave pública del servicio web. Tal y como vimos antes, si el navegador detecta que o bien el periodo de validez es invalido y la CA son inválidos, nos mostrará un mensaje de error indicándolo, pero nos dejará continuar bajo nuestra responsabilidad.

A continuación el navegador generará una clave maestra de cifrado y se la enviará al servidor web usando la clave pública de éste, y a partir de este momento la comunicación irá cifrada usando la clave maestra (que solo el servidor y el navegador conocen puesto que el intercambio se ha producido de forma cifrada). Realmente el resto del intercambio se realiza utilizando un cifrado simétrico (cifrado y descifrado con la misma clave) que ha sido negociado en la primera fase de la conexión. El cifrado asimétrico se usa únicamente para la fase de negociación entre el navegador y el servidor.

No hay comentarios:

Publicar un comentario