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.
Respostas:
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.
fonte
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:
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.
fonte