Los códigos de balanceo requieren varias partes para funcionar correctamente. Aquí describiré una implementación genérica que utiliza todas las partes de una manera específica. Otros sistemas son variaciones de este tema, pero generalmente emplean muchas de las mismas técnicas de manera similar. En lugar de intentar describir la implementación completa y cómo funciona de una vez, describiré un sistema simple y agregaré complejidad a medida que avanzamos hasta que alcancemos un sistema criptográficamente seguro.
Un código sucesivo no criptográfico es simplemente un transmisor y un receptor que utilizan el mismo generador de números pseudoaleatorios (PRNG). Este generador tiene dos piezas de información importante: un cálculo y el número generado previamente. El cálculo es generalmente una ecuación de realimentación lineal que puede representarse por un solo número. Al alimentar al PRNG con el número anterior y mantener el número de retroalimentación igual, se genera una secuencia específica de números. La secuencia no tiene secuencias repetidas hasta que se repasa cada número que puede generar, y luego vuelve a comenzar con la misma secuencia.
Si tanto el control remoto como el transmisor conocen el número de realimentación y el número actual, entonces cuando el control remoto transmita el siguiente número, el receptor puede probarlo con su propio generador. Si coincide, se activa. Si no lo hace, recorre la secuencia hasta que encuentra el número que envió el control remoto. Si vuelve a presionar el control remoto, debe coincidir y se activará porque la transmisión anterior ya sincronizó los generadores de números. Esta es la razón por la que a veces tiene que presionar el botón de desbloqueo dos veces: su receptor o transmisor no están sincronizados.
Esa es la parte móvil del código. Si el PRNG es lo suficientemente largo, es muy difícil encontrar el número de retroalimentación sin muchos números en la secuencia en una fila, lo que es difícil de obtener en el uso normal. Pero no es criptográficamente seguro.
Además de eso, se agrega el cifrado típico. El fabricante del vehículo utiliza una clave secreta específica para el transmisor y el receptor. Dependiendo del fabricante, es posible que cada modelo y año tengan un código diferente, o que compartan el código entre varios modelos de vehículos y durante varios años. La compensación es que cada uno requiere que se almacene un control remoto diferente, pero el problema de compartir un código en muchos modelos es que si se rompe, habrá más autos vulnerables.
Detrás del cifrado, tiene información de botones, el número generado por PRNG y poca información sobre el número de comentarios. No es suficiente para hacer el PRNG desde cero, pero sí lo suficiente para que después de un cierto número de pulsaciones de botones, y con cierta información interna sobre el espacio limitado, un número de retroalimentación pueda implicar (de nuevo, fabricante, línea específica) que el receptor pueda, después de varios entrenamientos transmisiones, determine el número de retroalimentación y comience a rastrear el PRNG para ese control remoto.
El código variable solo sirve para detener los ataques de reproducción. El cifrado está destinado a asegurar el código rodante para evitar que se rompa. Con solo uno u otro, el sistema sería demasiado fácil de romper. Dado que el fabricante controla tanto el transmisor como el receptor, la capacitación no incluye criptografía de clave pública ni nada que esté particularmente involucrado. También evita que los dispositivos de posventa funcionen en automóviles con este tipo de sistema.
El código rodante no es impermeable, sin embargo. El antiguo sistema keeloq fue atacado con éxito hace apenas unos años (después de una década de uso), por lo que se puede encontrar el código de encriptación del fabricante y los códigos de balanceo se pueden encontrar más fácilmente. Anteriormente, ha sido atacado de manera que las personas pueden tomar vehículos sin romper el código. En respuesta, la nueva clave de cifrado es de 60 bits. No es tan seguro como muchos sistemas de encriptación modernos, pero lo suficientemente seguro como para que dure muchos años antes de que se rompa.