miércoles, 30 de diciembre de 2009

Rompen cifrado del sistema GSM

Un hacker alemán de 29 años acaba de anunciar que ha logrado romper el sistema de seguridad utilizado para cifrar las comunicaciones de los teléfonos móviles que operan bajo el sistema GSM. Karsten Nohl, de la Universidad de Virginia, hizo el anuncio en el marco de la tradicional reunión de hackers Chaos Communication Congress, y se supone que las empresas prestadoras de comunicaciones móviles bajo GSM -cerca del 80% de los teléfonos móviles de todo el mundo- deberán actualizar o modificar sus sistemas si quieren que sus redes vuelvan a ser seguras.

Karsten Nohl es el nombre del ingeniero alemán de 28 años que acaba de convertirse en la pesadilla de las empresas prestadoras de servicios de comunicaciones móviles. No es para menos: Nohl ha conseguido descifrar el código de seguridad que protege el 80% de las llamadas que se realizan -desde o hacia un teléfono móvil- en todo el planeta. La red GSM (Global System for Mobile communications) tiene unas dos décadas de edad, y había permanecido a salvo de los ataques de diferentes grupos de hackers durante todo ese tiempo. Lejos de intentar aprovecharse de su trabajo para cometer algún tipo de deliro, Kasten afirma que su objetivo siempre fue “advertir de la debilidades existentes en las redes de comunicaciones móviles”, aunque los expertos en seguridad ya han advertido que es cuestión de tiempo para que alguna organización criminal utilice los algoritmos y datos proporcionados por Nohl para interceptar llamadas privadas. Obviamente, esta situación obliga a las prestadoras del servicio a pensar en alguna estrategia de actualización o modernización de sus redes.

El ingeniero hizo público su “descubrimiento” en el marco del Chaos Communication Congress, una reunión de hackers que periodicamente se realizará en Berlín. “Esto demuestra que la seguridad actual del estándar GSM es inadecuada. Con esta acción estamos intentando empujar a los operadores a que adopten mejores medidas de seguridad para las llamadas efectuadas desde teléfonos móviles”, declaró Kohl a la prensa. Kasten contó con la ayuda de aproximadamente 20 colegas para lograr quebrar el esquema de seguridad del sistema GSM, denominado “A5/1”. Este sistema emplea una clave de 64 bits, y básicamente cifra todo el tráfico de datos que circula entre los teléfonos móviles y las celdas que se encuentran en las torres de comunicación. A pesar de que existe una versión mas moderna del A5/1 (llamada A5/3), que utiliza 128 bits, solo el 20% de las prestadoras lo utilizan en la actualidad. Es evidente que la jugada de Nohl obligará a las empresas a realizar las inversiones necesarias para modernizar sus sistemas.

Nohl y sus colaboradores crearon un fichero conteniendo todas las claves válidas, con el que cualquier persona con sólidos conocimiento de informática puede violar el sistema GSM sin necesidad de tener que utilizar algún sistema de “fuerza bruta” que pruebe con todas las combinaciones posibles. Si bien el hacker se negó a proporcionar ningún link que permita descargar dicho fichero, se sabe que el codiciado archivo ya circula por las redes P2P. Además de esta tabla, para interceptar una comunicación GSM -una actividad que es ilegal en casi todo el mundo- se necesita un receptor de radio que opere en la misma banda que los teléfonos móviles y un software especial para el procesamiento de las señales capturadas. Los operadores de telefonía se han apresurado a recordarnos que ese tipo de equipamiento y actividad es ilegal, aunque esto no parece haber sido demasiado efectivo a la hora de impedir que un verdadero ejercito de hackers intenten repetir la hazaña de Kasten.

De todos modos, es posible que dicha violación a la seguridad de la red GSM se mantenga básicamente como una “curiosidad de laboratorio”, ya que para escuchar una conversación determinada entre dos móviles puntuales hace falta -además del equipamiento y el software- filtrar los cientos o miles de llamadas que circulan por cada nodo de las celdas de la red telefónica en todo momento. Obviamente, hasta que el sistema no vuelva a ser seguro, muchas empresas que habitualmente envían datos “delicados” por la red (sistemas de identificación, servicios bancarios, etc.) buscarán alguna alternativa.

domingo, 23 de agosto de 2009

Adaptador de niveles de Bus I2C

En la actualidad existen microcontroladores que utilizan 3,3Volts de alimentación debido a las modernas tecnologías de fabricación de 0,5 micrómetros. Además, la constante miniaturización ya está entregándonos dispositivos que trabajan a 2Volts, 1,8Volts y hasta 1,35Volts. La existencia de componentes que trabajan a tensiones normalizadas de 5Volts nos obliga a adaptar los niveles de voltaje dentro del bus I2C para lograr un funcionamiento correcto entre estos dispositivos que utilizan distintas fuentes de tensión. Les parece esto un problema?? pues aca existe una solucion practica y eficiente:

Si en un circuito no existen dispositivos capaces de adaptar los niveles de los impulsos manejados dentro de un bus I2C entre dos dispositivos que sean alimentados con diferentes tensiones, es muy probable que aquel que trabaje con la menor tensión se dañe irremediablemente. En el caso inverso, aquellos que utilicen los voltajes de trabajo inferiores corren el riesgo de no ser detectados dentro del bus cuando intentan conectarse a los demás. Sin embargo, existen algunos componentes que, a pesar de operar con tensiones de 3,3Volts de alimentación, tienen la posibilidad de conectarse sin inconvenientes y sin componentes adicionales a un bus I2C que utilice una tensión de 5Volts. Un circuito de ejemplo de convivencia de elementos de distintas características sería el siguiente:

El inconveniente que se presenta con esta clase de montajes es que, en la gran mayoría de los casos, los dispositivos que son desarrollados para operar con tensiones de trabajo de 3,3Volts no traen la posibilidad de ser compatibles con un bus I2C de 5Volts, mientras que los pocos que sí lo hacen y que se encuentran en el mercado son más caros que un dispositivo estándar, ya que las técnicas de fabricación son más complejas. La manera más usual de solucionar este inconveniente es a través de la utilización de dos transistores MOS-FET de canal N conectados entre los elementos de distintas tensiones de trabajo, tal como se observa en la imagen.


Como podemos deducir de la imagen, el sector izquierdo se alimenta con 3,3Volts y las resistencias Pull-Up (Rpl) utilizadas son de un valor acorde a esta tensión de alimentación (3K3), mientras que del lado derecho, las resistencias Rph (4K7) son las que se utilizan habitualmente en cualquier disposición de bus I2C con alimentación de 5Volts. Los transistores MOS-FET de canal N utilizados en el circuito pueden ser cualquier dispositivo capaz de manejar tensiones de 50Volts y corrientes de 100mA máximas, como puede ser el modelo BSN20 fabricado por NXP.

Funcionamiento del dispositivo

Lo elemental que salta a la vista en el segundo diagrama mostrado es que la falta de cualquiera de las tensiones de alimentación en el equipo no significa que el bus I2C deje de funcionar. Por ejemplo, si estamos trabajando con un equipo alimentado a baterías, donde la preservación, optimización y uso correcto de la energía es prioritario, podemos “suspender” las secciones que no sean necesarias para el correcto funcionamiento del microcontrolador principal. Es decir, podemos suspender sensores, display, relés, sistemas con microcontroladores que funcionen de manera satelital al principal, y todo dispositivo I2C que esté “colgado” del bus y no requiera ser alimentado de manera permanente debido a que no es necesario su intervención contínua. Una de las características necesarias para un correcto funcionamiento del bus es que los pines SDA y SCL de los circuitos conectados sean de colector abierto para poder garantizar un drenaje correcto de la corriente a través del bus. Por su parte, y como vemos en el esquema, las Puertas (o Gate) de los transistores MOS-FET deben estar conectadas directamente a la tensión de alimentación más baja. Además, las Fuentes (Source) también deben estar orientadas hacia los sistemas de menor tensión, y los Drenadores (Drain) hacia los de mayor tensión de alimentación.

Al polarizarse la puerta con una tensión positiva en un MOS-FET de canal N, se crea una región de deplexión (canal de conducción electrónica) en la región que separa la fuente y el drenador. Si esta tensión crece lo suficiente, aparecerán portadores minoritarios (electrones en MOS-FET de canal N) en la región de deplexión que darán lugar a un canal de conducción. El transistor pasa entonces a estado de conducción, de modo que una diferencia de potencial entre fuente y drenador dará lugar a una corriente. El transistor, en este caso, se comporta como una resistencia controlada por la tensión de puerta y, como nosotros tenemos estos pines (Vg) conectados a VCC1, los transistores estarán polarizados para conducir cuando las condiciones de diferencias de potencial mencionadas se hagan presentes (intercambio de datos). Los tres estados posibles dentro del circuito son muy sencillos de comprender. El primero es cuando no hay actividad en el bus de datos, es decir, cuando ningún dispositivo de ninguna de las ramas de alimentación pone a cero las líneas SDA o SCL. En este caso, el diodo de protección que trae cada transistor impedirá la conducción desde las zonas de tensión alta (5Volts) hasta las zonas de tensión baja (3,3Volts), brindando la protección necesaria a los dispositivos que trabajan con menor tensión. Además, la tensión de puerta (G) será la misma que la de la fuente (S) en cada rama, por lo que no habrá diferencia de potencial G-S y, en consecuencia, ninguno de los transistores entrará en estado de conducción, manteniendo aisladas a las secciones del bus. Ambas ramas mantendrán un estado ALTO gracias a sus respectivas resistencias Pull-Up.


El segundo estado posible es cuando hay un estado bajo en alguna de las líneas del lado de los 3,3Volts. La fuente (S) del transistor involucrado pasará a un estado bajo, mientras que la puerta (G) se mantendrá polarizada a 3,3Volts. Esta diferencia de potencial iniciará la conducción del transistor. En esta situación, y del lado de alta tensión, la línea también será inducida a un estado bajo y será arrastrada por la conducción del MOS-FET. Por lo tanto, ambas secciones del bus pasarán a un estado BAJO y al mismo nivel de tensión.
El tercer y último estado es cuando una línea pasa a un estado BAJO en la zona de 5Volts. Inicialmente, el diodo interno del transistor entrará en conducción desde las líneas polarizadas a 3,3Volts hacia el potencial cercano a cero existente en la otra sección que se puso en estado BAJO. De esta forma, la fuente (S) pasa a un estado bajo inducida por la conducción del diodo y, en consecuencia, se vuelve a provocar la diferencia de potencial entre la puerta (G), que siempre estará a 3,3Vols, y la fuente (S) del transistor, comenzando la conducción a través del mismo y asegurando el estado BAJO a ambos lados del bus. Recordemos que, cuando es polarizado correctamente, el MOS-FET se comporta como un resistor variable entre drenador (D) y fuente (S).

De esta forma, podemos ver los tres estados posibles dentro del bus para un funcionamiento correcto del mismo. Como último dato, podemos agregar que las tensiones a ambos lados del bus pueden ser muy distintas entre sí, pudiendo variar entre 2Volts y 10Volts sin problemas. El único requisito que se debe mantener es que las puertas (G) de los transistores deben conectarse a la menor alimentación existente en el circuito.

Fuente:

Volver arriba