Os códigos de rolagem exigem várias partes para funcionar corretamente. Aqui, descreverei uma implementação genérica que usa todas as partes de uma maneira específica. Outros sistemas são variações sobre esse tema, mas geralmente empregam muitas das mesmas técnicas de maneira semelhante. Em vez de tentar descrever a implementação completa e como ela funciona ao mesmo tempo, descreverei um sistema simples e adicionarei complexidade à medida que avançamos até chegarmos a um sistema criptograficamente seguro.
Um código de rolagem não criptográfico é simplesmente um transmissor e receptor que usam o mesmo gerador de números pseudo-aleatórios (PRNG). Este gerador possui duas informações importantes: um cálculo e o número gerado anteriormente. O cálculo é geralmente uma equação de feedback linear que pode ser representada por um único número. Alimentando o PRNG com o número anterior e mantendo o número de feedback igual, é gerada uma sequência específica de números. A sequência não tem sequências repetidas até passar por todos os números que pode gerar e, em seguida, recomeça com a mesma sequência.
Se o controle remoto e o transmissor souberem o número de feedback e o número atual, quando o controle remoto transmitir o próximo número, o receptor poderá testá-lo em seu próprio gerador. Se corresponder, será ativado. Caso contrário, ele percorre a sequência até encontrar o número que o controle remoto enviou. Se você pressionar o controle remoto novamente, ele deverá corresponder e será ativado porque a transmissão anterior já sincronizou os geradores de números. É por isso que às vezes você precisa pressionar o botão de desbloqueio duas vezes - seu receptor ou transmissor está fora de sincronia.
Essa é a parte rotativa do código. Se o PRNG for longo o suficiente, é muito difícil descobrir o número de feedback sem muitos números na sequência consecutiva, o que é difícil de obter em uso normal. Mas não é criptograficamente seguro.
Além disso, você adiciona criptografia típica. O fabricante do veículo usa uma chave secreta específica para o transmissor e o receptor. Dependendo do fabricante, você pode descobrir que cada modelo e ano tem um código diferente ou pode compartilhar o código entre vários modelos de veículos e ao longo de vários anos. A desvantagem é que cada um deles exige que um controle remoto diferente seja estocado, mas o problema de compartilhar um código em muitos modelos é que, se estiver quebrado, mais carros ficam vulneráveis.
Por trás da criptografia, há informações sobre o botão, o número gerado pelo PRNG e algumas informações sobre o número de feedback. Não é suficiente para fazer o PRNG do zero, mas é suficiente para que, após um certo número de botões pressionados, e com algumas informações internas sobre o espaço limitado que um número de feedback possa envolver (novamente, fabricante, linha específica), o receptor possa, após vários treinamentos transmissões, determine o número de feedback e comece a rastrear o PRNG para esse controle remoto.
O código contínuo destina-se apenas a interromper os ataques de repetição. A criptografia destina-se a proteger o código rotativo para evitar que ele seja quebrado. Com apenas um ou outro, o sistema seria muito fácil de quebrar. Como o fabricante controla o transmissor e o receptor, o treinamento não envolve criptografia de chave pública ou qualquer coisa particularmente envolvida. Também evita que os difusores do mercado de reposição trabalhem em carros com esse tipo de sistema.
Código de rolagem não é impermeável, no entanto. O antigo sistema keeloq foi atacado com sucesso há apenas alguns anos (após uma década de uso), para que o código de criptografia do fabricante possa ser encontrado e os códigos de rolagem mais facilmente. Antes disso, ele foi atacado de maneiras que permitiam que as pessoas pegassem veículos sem realmente quebrar o código. Em resposta, a nova chave de criptografia é de 60 bits. Não é tão seguro quanto muitos sistemas modernos de criptografia, mas é seguro o suficiente para que provavelmente dure muitos anos antes de ser quebrado.