relleno
Buscar en
Ecojoven
Internet

Pon un
buscador gratis
en tu sitio



"La libertad del entendimiento consiste en ser esclavo de la verdad, y la libertad de la voluntad en ser esclavo de la virtud."
Balmes

MicroChip keeLoq

Sistema seguro de apertura de puertas a distancia

KeeLoq es el sistema seguro de apertura de puertas diseñado por MicroChip para la apertura de puertas o cualquier tipo de mando a distancia. Vamos a ver en este artículo cómo funciona este sistema basado en codificación por salto de código. Aunque actualmente este sistema ha evolucionado y es más complejo, este es un buen punto de partida para conocer su funcionamiento.

KeeLoq es propiamente un proceso de cifrado o encriptación de la información de telecomando que se puede usar con cualquier tipo de mando a distancia, bien sea por infrarrojos o por radio. Cada vez que se transmite una orden de apertura o actuación, se envía una ristra de datos digitales formados por 66 bits. Recuerda que un bit es en realidad un uno o un cero, representados por la presencia o la ausencia de una corriente, un voltaje, un circuito cerrado o abierto... En otras palabras, cada bit representa el estado de un proceso que puede tener sólo dos estados.

Una trama de datos Keeloq
Una trama de datos Keeloq

Como decíamos, cada transmisión con un sistema KeeLoq contiene 66 bits formados por los siguientes códigos:

En los sistemas simples de mando a distancia hay dos formas clásicas de conseguir accesos no autorizados: el escaneado de códigos y el robo de códigos.

Escaneado de códigos

Muchos sistemas de apertura de puertas utilizan un código único y fijo de 8 bits. Cada vez que se quiere abrir una puerta se envía ese código fijo. Con ocho bits, se consiguen sólo 28 = 256 combinaciones. Si al receptor llega el código de apertura, siempre el mismo, procederá a abrir. Todos los transmisores utilizan un rango de frecuencia estandarizado, el establecido por la normativa del país.

Es muy fácil construir un transmisor que probando todas las combinaciones posibles acierte rápidamente con el código correcto. Si el transmisor prueba 8 códigos por segundo, en 32 segundos, como mucho, habrá conseguido abrir la puerta. Con 16 bits de código, podrían tardarse hasta dos horas y media (216 = 65536 códigos). Con 66 bits se alcanzan 7'3 x 1019 códigos. Se tardarían millones de años en probar todas las combinaciones. La primera medida de seguridad del sistema KeeLoq es, por tanto, usar una longitud de código suficientemente larga como para evitar el escaneado de códigos.

Robo de código

Con un receptor que guarde el código enviado por un transmisor por radio o por infrarrojos se puede conseguir el código y tener acceso fácilmente. Sólo hace falta esperar que alguien con acceso autorizado abra y robarle el código escuchando su transmisor.

El sistema de salto de código KeeLoq jamás transmite dos veces el mismo código, ni siquiera en dos veces su propio tiempo de vida. Cada vez que pulsamos el botón de transmisión se envía un código diferente. Los códigos parecen aleatorios, no hay relación aparente entre dos códigos seguidos. El robo de códigos nunca funcionará.

Los circuitos integrados HCS200, HCS300, HCS301 y HCS360 de Microchip como codificadores y el HCS500 y otros como decodificadores permiten hasta 15 funciones de comandos diferentes. Sólo se necesita añadirles la pila, los botones y el sistema de transmisión por radio o por infrarrojos. Incorporan dentro del chip una memoria EEPROM en la que se almacenan los códigos y las claves, pero que es imposible leer desde cualquier medio externo.

En el caso de que la batería del transmisor llega a una tensión peligrosamente baja, se transmite un bit más, avisando así que necesita sustitución o recarga. En este caso se genera un código de transmisión de 67 bits en lugar de los 66 habituales.

Cómo funciona el transmisor

El valor de un contador de sincronización de 16 bits se incrementa en cada transmisión al pulsar cualquier botón.

Funcionamiento del transmisor

Este valor del contador se combina con la clave por medio del algoritmo de cifrado no lineal KeeLoq. Se trata de un complejo algoritmo hace que el cambio de un solo bit en uno de los parámetros de entrada genere un gran cambio en los resultados de salida.

El número de serie es único en cada transmisor y lo identifica como un sistema conocido.

El estado de los botones indica qué botón o combinación de botones se ha pulsado.

El código de control lo forman 2 bits que permiten identificar si la secuencia completa reciba es correcta. Usa un algoritmo CRC (Código de Redundancia Cíclica, muy usado en comunicaciones) Si este sistema identifica que la secuencia recibida no es correcta a causa de ruidos o interferencias, el decodificador la rechaza. Además puede llevar un bit más de identificación de batería baja.

Cómo funciona el receptor

El decodificador recibe unos datos válidos, el CRC los identifica como datos correctos.

Funcionamiento del receptor

El número de serie del transmisor coincide con uno conocido.

Combinando los datos cifrados recibidos con la clave almacenada se deduce el valor del contador de sincronización.

Si el valor del contador cae dentro del rango válido para ese transmisor, aceptará los comandos establecidos por la combinación de botones.

El HCS500 dispone de siete ranuras de memoria para almacenar los códigos de siete transmisores diferentes.

El contador de sincronización

El valor de sincronización es un contador binario de 16 bits. Con 16 bits (216) permite 65536 valores diferentes. El decodificador guarda el valor actual del contador de sincronización de cada transmisor.

funcionamiento del contador de sincronizacion

Si el valor recibido para un determinado transmisor coincide con el almacenado en el decodificador o con alguno de los 15 siguientes, reconoce el comando como válido.

Si el valor recibido no está en la ventana de operación simple, pero sí en la ventana de operación doble, entonces se almacena el valor recibido en un registro temporal y espera otra transmisión. Cuando recibe un nuevo código del mismo transmisor, se compara con el valor almacenado en el registro temporal. Si los dos valores son consecutivos, aunque el transmisor se ha escapado de la ventana simple, vuelve a estar sincronizado, entonces almacena el nuevo valor del contador de sincronismo y ejecuta el comando.

Si un transmisor se ha escapado de la ventana de operación doble ya no funcionará. Será preciso que el decodificador vuelva a reconocerlo en modo aprendizaje. Todas las ventanas rotan cada vez que se recibe una transmisión válida. Esto hace que los valores ya usados estén en la ventana bloqueada y ya no sean válidos, protegiendo así contra el robo de códigos.

Cómo se genera la clave

Para que funcione este sistema, el decodificador debe conocer los valores de cada transmisor y tenerlos almacenados y actualizados en su memoria. Existe, por tanto, un proceso de aprendizaje por parte del decodificador. Para esto hay que poner el decodificador en modo aprendizaje. El decodificador debe aprender, por cada transmisor ,los siguientes datos:

  1. El número de serie único de cada transmisor
  2. El valor del contador de sincronización
  3. La clave de encriptación
  4. El código del fabricante

Aprendizaje del decodificador

Hay varios métodos para que el receptor aprenda los valores de cada transmisor. Cada método tiene su nivel de seguridad y una facilidad diferente que depende del sistema usado para generar la clave del transmisor.

Método normal

Derivado del número de serie. Se pone el receptor en modo aprendizaje. Al recibir una transmisión normal deduce la clave partiendo de:

  1. Número de serie que recibe del transmisor.
  2. Clave única de cada fabricante, que debe conocer puesto que la lleva grabada.
  3. Algoritmo KeeLoq que lleva programado.

La relación entre el número de serie y la clave es muy compleja, no evidente para extraños. El decodificador guarda esta clave después de comprobar que en una segunda transmisión decodifica un número de secuencia consecutivo.

Logo de Michorchip

El aprendizaje es:

Pero alguien que conozca el algoritmo y la clave del fabricante será capaz de saltarse la seguridad tras interceptar una transmisión, puesto que del número de serie, que llega en claro, deduce la clave del transmisor, y con ésta el número de secuencia. Teniendo todos estos datos puede inmediatamente generar una secuencia de transmisión válida.

Método seguro

Derivado de una semilla. No basa su seguridad ni en el secreto del algoritmo, ni en el secreto de la clave del fabricante. Para un extraño que conozca el algoritmo, las transmisiones seguirán siendo incomprensibles si no conoce la clave del transmisor.

Según Microchip, determinar la clave analizando las transmisiones no es factible. Se necesitaría un ordenador muy potente y mucho tiempo de proceso para deducir la clave de un solo transmisor. Claro que esto es cada vez menos cierto dado el avance de la informática.

En el momento de su fabricación se programa en cada transmisor:

No hay relación entre el número de serie y la clave. Hay una relación muy compleja, pero fija, entre la semilla y la clave. Durante el aprendizaje del receptor, el transmisor envía la semilla al efectuar en él una operación especial. Nunca se transmite la semilla en una operación normal del transmisor. Si se desea, se puede programar al transmisor para que, después de un determinado número de operaciones, jamás pueda volver a transmitir la semilla.

Cuando el decodificador, puesto en modo aprendizaje, recibe la semilla desde el transmisor, deduce la clave usando el algoritmo KeeLoq. Como nunca mas se transmitirá la semilla, no hay peligro de que nadie deduzca nunca la clave.

Glosario de términos

Número de serie del transmisor
Cada transmisor tiene un número de serie único de 28 ó 32 bits.
Clave secreta
Clave de 64 bits generada por una función partiendo de los siguientes valores:
  • Número de serie de 28 ó 32 bits o bien por una semilla de 32 ó 48 bits
  • Clave del fabricante, de 64 bits
Jamás se transmite y no es posible leerla.
Semilla
Valor de 32 ó 48 bits programado en el codificador. Se transmite al pulsar una combinación concreta de botones. Se puede deshabilitar después del aprendizaje del decodificador.
Generador de la clave
Función matemática usada para generar una clave única para cada transmisor partiendo del número de serie o de la semilla.
Clave del fabricante
Es necesaria en el receptor si se ha usado en la función de generación de la clave. Puede ser programada en el receptor en el proceso de fabricación.
Aprendizaje normal (derivado del número de serie)
El receptor usa la misma información usada en una transmisión normal para generar la clave secreta y descifrar el valor del número de secuencia del transmisor.
Aprendizaje seguro (derivado de la semilla)
El transmisor se activa con una combinación especial de botones para emitir un valor de 32 ó 48 bits (semilla) que se usa para generar la clave o ser parte de la clave. La transmisión de la semilla puede ser deshabilitada después del aprendizaje.
Contador de sincronización
Contador de 16 bits que se incrementa en cada activación del codificador.

Juan Carlos Llamazares: jcll@ecojoven.com