Explicação do código rotativo

13

Alguém poderia explicar como funcionam os protocolos de código contínuo , como o KeeLoq? Entendo a premissa básica de que eles usam um código diferente a cada vez, para que você não possa usar apenas o ataque de repetição, mas não entendo como um lado verifica o código correto etc.

Além disso, como eles executam uma sincronização inicial se o índice nos códigos contínuos não é conhecido / compartilhado anteriormente?

Se você tiver que usar o Keeloq como exemplo para explicar, tudo bem, mas eu prefiro uma explicação geral dos códigos contínuos.

NickHalden
fonte
Respostas também em crypto.stackexchange.com/questions/18311/…
handle

Respostas:

10

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.

Adam Davis
fonte
Ah, devo ter esquecido a parte "sem sequência repetida" do PRNG, que é muito importante. Qual é a vantagem de transmitir informações que permitem ao receptor determinar o código de feedback? Isso parece menos seguro do que simplesmente escolher um código de feedback e fabricar tanto o transmissor eo receptor com ele soubesse ...
NickHalden
@NickHalden, o código de feedback é diferente para cada controle remoto, e os clientes desejam adicionar mais controles remotos mais tarde ou substituir os controles remotos ausentes. Só é necessário para o treinamento. Algumas versões um pouco mais seguras exigem uma sequência específica de pressionar os botões no controle remoto antes de emitir informações adicionais de feedback, mas geralmente o sistema geral é seguro o suficiente para que, mesmo que você interrompa a criptografia, ainda precise de muito mais informações antes desse pequeno período. pouca informação é suficiente para você obter todo o código de feedback.
Adam Davis
8

Encontrei a KeeLoq pela primeira vez ao pesquisar o chip em um abridor de porta de garagem. A folha de dados do Microchip explica bem como funciona.

Em poucas palavras:

  • o receptor mantém um banco de dados de todos os transmissores, digitados em seu número de série.
  • cada transmissor é associado a uma chave de criptografia simétrica (64 bits), que está no chip e também no banco de dados do receptor.
  • cada transmissor é associado a um número de sequência cíclica de 16 bits, também armazenado no chip e no banco de dados.
  • quando o transmissor é ativado, ele incrementa seu módulo de número de seqüência 65536 (envolve 16 bits) e envia um pacote que consiste em uma máscara de bit representando quais botões foram pressionados, seu ID de série e uma versão criptografada do número de série.
  • o receptor corresponde ao número de série no banco de dados, pega a chave e descriptografa o número de série.
  • o número de série deve ser novo; não pode ser um número de série usado recentemente, que protege contra ataques de repetição. (Veja a Fig. 7.3 na folha de dados).
  • se o número de série for verificado, o receptor poderá ativar a funcionalidade com base na máscara de bits de quais botões são pressionados.
  • se o novo número de série estiver à frente em mais de 16 valores (o usuário apertou os botões várias vezes acidentalmente enquanto estava fora do receptor), é necessário um aperto de mão extra para ressincronizar, o que exige um pressionamento extra do botão. (O usuário irá pressionar o botão extra, acreditando que há uma recepção ruim).

Adicionar um novo transmissor ao banco de dados do receptor é vagamente análogo, em alto nível, ao método de configuração de pressionar o botão para adicionar clientes a um ponto de acesso Wi-Fi. De alguma forma, o receptor é colocado em um modo pelo qual aceita um novo transmissor.

Um novo transmissor pode ser aceito a partir de informações transmitidas em mensagens de ativação comuns, se o receptor e o transmissor compartilharem o mesmo ID secreto do fabricante. Isso ocorre porque a chave de criptografia de 64 bits é derivada do ID do fabricante e das informações seriais do receptor. (Veja a Seção 7.1).

Existe uma alternativa mais segura para isso: o "Secure Learn". Isso é iniciado de maneira especial no transmissor (três botões pressionados ao mesmo tempo). O transmissor envia um pacote especial: um valor inicial de 60 bits do qual a chave de criptografia é derivada, presumivelmente não dependendo do ID do fabricante ou do número de série.

Quando o receptor não está no modo de aprendizado, é claro que ele rejeita as transmissões dos transmissores que não conhece.

Kaz
fonte