viernes, 11 de abril de 2014

Heartbeat


Dominio que proporciona servicios de infraestructura de clúster (comunicación y pertenencia) a sus clientes.

Esto permite a los clientes tener conocimiento de la presencia (o desaparición) de los procesos en otras máquinas e intercambiar fácilmente mensajes entre ellos.

Para resultar útil a los usuarios el dominio HEARTBEAT necesita emplearse en combinación con un gestor de recursos del clúster (clúster resource manager (CRM)) el cual posee la tarea de iniciar y parar los servicios (Direcciones IP, servidores web…) a los cuales el clúster aportará ata disponibilidad. Pacemaker es el gestor de recursos de clúster preferido para los clúster basados en Heartbeat.

Dentro de las vulnerabilidades de este dominio:
  • Una función encargada de gestionar los menajes heartbeat. Estos mensajes son los denominados keep-alive; que se utilizan para informar al servidor de que seguimos ‘vivos’ para que no cierre sesión.
  • OpenSSL sufre una grave vulnerabilidad cuya explotación permite revelar contenidos de memoria de aplicaciones que hagan uso de OpenSSL. Bugs en OpenSSL. OpenSSL es una de las bibliotecas de criptografía más usadas en los servidores web (alrededor de un 17% de los servidores web que ofrecen conexiones seguras con SSL se apoyaban en este componente y presentaban esta vulnerabilidad); por tanto, que aparezca una vulnerabilidad es algo para tomarse muy en serio. Catalogada con el código CVE-2014-0160, esta vulnerabilidad ha sido descubierta por expertos de Google y la compañía de seguridad Codenomicon y ha sido "bautizada" bajo el apelativo de Hearthbleed al estar vinculada a la funcionalidad heartbeat de OpenSSL.


Para entender mejor la gravedad de esta vulnerabilidad, creo que es importante que entendamos cuál es el bug que se ha encontrado. Hay que partir de la base que el protocolo SSL/TLS es complejo y se basa en la criptografía asimétrica, es decir, en una clave pública y una clave privada que reside en el servidor que ejerce de prestatario de los servicios que estamos utilizando.

La clave privada, como su nombre indica, no se comparte con nadie y es la base sobre la se apoya el cifrado de las comunicaciones; sin embargo, la funcionalidad heartbeat que implementaba OpenSSL presenta un fallo en el que responde con un dato que revela porciones de la memoria interna utilizada por este proceso.Dicho de otra forma, OpenSSL estaba revelando datos de la memoria del servidor en el que se estaba ejecutando y, claro está, entre los datos que están en su memoria se encuentra la clave privada (necesaria para realizar los cálculos de cifrado y descifrado de mensajes). Con este escenario, sin el que el administrador del sistema sea consciente, la clave privada podría haber quedado expuesta a un tercero que hubiese explotado esta vulnerabilidad, desmontando la seguridad de este tipo de comunicaciones.

Muchas veces se usa software especial para identificar si un servidor es vulnerable, así abriendo una página web, este analiza si el sitio web es vulnerable o no, además de mostrar ciertas estadísticas o casi acercándose a mostrar cual es el punto vulnerable del servidor.

Una solución probable para evitar este tipo de ataques y/o vulnerabilidades, es actualizando la aplicación que nos esté brindando la seguridad de nuestro servidor o sitio web.


Realmente nada puede hacer un usuario común, el trabajo recae sobre los administradores de los servidores, que trabajaran a marchas forzadas para solucionar el problema lo antes posible y rezar para que nadie conozca el fallo antes de ser reportado.

Referencias


miércoles, 9 de abril de 2014

Ataque al Sistema Criptográfico RSA (Rivest, Shamir, Adelman)

Hoy en día todavía se ignora si el problema de descomponer a un entero en sus factores primos tiene complejidad subexponencial o polinomial (usando computadoras “normales”, dejaremos las cuánticas para otro momento).

El descifrado completo de un texto cifrado con RSA es computacionalmente intratable, no se ha encontrado un algoritmo eficiente todavía para ambos problemas (Factorizar números grandes y el problema RSA). Proveyendo la seguridad contra el descifrado parcial podría requerir la adición de una seguridad padding scheme.

La historia ha comprobado, una y otra vez, que el tiempo necesario para descifrar un mensaje es generalmente menor que el que se presupone según la teoría. Eso se debe a tres factores fundamentales:
  • Creciente capacidad de cómputo de los computadores modernos.
  • Alo largo de los años se han descubiertos algorítmicos cada vez más eficaces para la resolución de problemas matemáticos; lo que afecta muy especialmente a los algoritmos de clave asimétrica. Destacados son los avances en la factorización de números primos. Por ejemplo, en 1994 se consiguió factorizar un número de 129 dígitos mediante la llamada Criba Cuadrática Polinómica; cinco años más tarde, merced al nuevo sistema Special Number Field Sieve (Criba de Campo Numérico Especial), se factorizó un número de140 dígitos, con menos de la mitad de la potencia de cálculo.
  •  Cualquier sistema de cifrado de datos tien puntos débiles, y los modernos (RSA, Diffie-Hellman, PGP, criptografía de curva elíptica) no escapan a esta regla. Casi todos os códigos actuales requieren cadenas de dígitos elegidos aleatoriamente, para lo que se utilizan generadores de números aleatorios a pseudoaleatorios. Pero si dichos números no son realmente aleatorios, las claves así generadas son vulnerables.

En tal sentido, incluso un protocolo criptográfico bien implementado puede contener imperfecciones que permitan un ataque más eficiente que el de “fuerza bruta”. Más aún, puede afirmarse rotundamente que el ingenio humano es incapaz de preparar una clave que el mismo ingenio humano no pueda resolver.

A pesar de que no existe sistema criptográfico inviolable, en la actualidad hay una creciente demanda de mejores implementaciones de encriptamiento y de versiones más robustas de las técnicas y estándares de criptografía. Esto se debe a que cada día son mayores las tareas importantes que se llevan a cabo a través de las redes mundiales: Internet, redes telefónicas, etc. Este incremento promueve el auge de ciertas actividades como el comercio electrónico (e-commerce) pero a su vez expone los datos y las comunicaciones a constantes intercepciones de los llamados “hackers”.

Las redes mundiales manejas grandes volúmenes de datos confidenciales: información de tarjetas de crédito, transacciones bancarias, información corporativa y/o gubernamental, etc. y los hackers son cada vez más hábiles en el proceso de violación de técnicas criptográficas.

Referencias


Sistema Criptográfico RSA (Rivest, Shamir, Adelman)

Algoritmo que se desarrolló en 1977 en el MIT (Instituto Tecnológico de Massachusetts) por Ronald Rivest, Adi Shamir y Leonard Adelman. Registrado el 20 de septiembre de 1983, tras expirar su patente RSA, pasa a ser un algoritmo de dominio público.

Es un algoritmo asimétrico cifrador de bloques, que utiliza una clave pública (la cual se distribuye en forma autentica) y otra privada, la cual es guardada en secreto por su propietario. Es el primer y más utilizado algoritmo de este tipo. Utiliza factorización de números enteros, además de dos números primos grandes elegidos al azar, que oscilan en un orden entre 100 y 200.

Las etapas que engloba este algoritmo son las siguientes:







                                                                                                             
Su implementación de este sistema criptográfico de da en:

  • Se usó para proteger los códigos de las armas nucleares de Estados Unidos y Rusia.
  • Intercambio de claves.
  •  Generación de tokens.
  • Firma digital.
La seguridad de RSA:

  • Depende del tamaño de n.
  • Cuanto mayor sea el tamaño del módulo mejor será la seguridad del criptosistema y mucho más difícil será factorizar cantidades que son producto de dos números primos argos, mediante algún algoritmo.
  • El tamaño de n influye negativamente en la velocidad de las operaciones del RSA.