Bloqueio inteligente, um olhar paranóico

Olá GT. Gostaria de oferecer à comunidade minha visão sobre bloqueios inteligentes, uma visão do pesquisador de segurança e dos paranóicos. Este artigo nasceu como uma tentativa de fazer um comentário detalhado em resposta a este artigo Dooris Clever Lock . Mas, no final, o comentário ficou muito distraído do próprio artigo, e eu decidi finalizá-lo e enviá-lo de forma independente.

Eu não sou conservador em questões de progresso. Acredito que a IoT é uma coisa muito promissora, estou esperando carros sem motoristas, acredito em eletrônicos vestíveis e, com a implantação de tags NFC, sou interrompida apenas pela falta de recursos adicionais realmente interessantes que eu potencialmente receberia. É por isso que fico feliz quando as coisas ficam com o adjetivo "inteligente". Mas não apenas a tecnologia deve ser inteligente, mas também seu desenvolvedor (bem, o usuário, de preferência também).

Após uma breve introdução, expressarei imediatamente a tese principal - uma fechadura inteligente não deve poder abrir um apartamento. Lá vai você. Além disso, em princípio, não deve ser mecanicamente impossível, nem proibir o software.

Argumento 1. Não confio no desenvolvedor

Não sinto nada pessoal sobre Alexander, mas ele pode garantir que não há nenhum marcador que permita abrir a fechadura? Pode ser um marcador de software que "captura" um "veículo todo-o-terreno" com dados especiais ou um marcador de hardware, por exemplo, em comutadores reed. Pior de tudo, poderia ser um bug banal no mundo real. O próprio autor menciona
"Além disso, Dooris pode erroneamente trancar a porta enquanto estiver aberta, se você girar a porta de uma certa maneira enquanto bate nela."

Do ponto de vista do castelo, como eu o entendo, não é particularmente importante em que direção virar; portanto, potencialmente a frase acima pode ser lida e como "... é errado abrir a porta enquanto está fechada ...". Para convencer que não há marcadores no código, o autor sugere a publicação do código-fonte. Peço desculpas, talvez tenha ficado para trás na vida, mas na época em que era programador, a tarefa de comparar as fontes e o arquivo binário era extremamente difícil. Fico em silêncio de que o arquivo binário da fechadura ainda precisa ser retirado. Este é o único firmware? Existe apenas um controlador dentro da fechadura? Ele tem um gerenciador de inicialização? Mas você não pode refleti-lo no ar?

Argumento 2. O desenvolvedor pode estar errado

E não necessariamente o desenvolvedor de uma fechadura eletrônica. De fato, esse argumento é uma modificação do anterior. Programadores de drivers sem fio também são pessoas, e Ping of Death, embora tenha sido há muito tempo, não é ficção. Eu não gostaria que a porta se abrisse apenas pelo fato de alguém passar com um smartphone, cujo nome bluetooth começa com um número .

Argumento 3. Não confio na governança da Internet

Se o castelo puder ser controlado pela Internet, o vetor de ataques aumentará muitas vezes. Onde fica esse servidor? Se os desenvolvedores tiverem um servidor centralizado, poderão abrir meu bloqueio com uma probabilidade de 99%. Se o servidor sair do cliente, os dois primeiros argumentos já serão aplicados a esse servidor.

O que fazer?

Você critica - ofereça. Como uma fechadura não pode abrir uma porta, o que ela pode fazer? Para mim, pessoalmente, um problema comum com a trava é que não consigo me lembrar, mas a fechei? Portanto, no bloqueio inteligente, vejo principalmente a funcionalidade para monitorar o fechamento via Internet. Para que, a qualquer momento, eu possa olhar para um site especial, que está tudo bem - a porta está fechada. E se não é assim, ele pode perceber rapidamente.

Mas isso não é tão simples - eu, como paranóico, não quero que ninguém descubra se minha porta está aberta ou não. Criptografia FTW. A família de protocolos “entregando bits ao armazenamento” me parece perfeita. Essa família de esquemas de protocolo permite confirmar qualquer dado sem divulgá-lo diretamente.

Além disso, eu mencionaria outra função. Uma oportunidade para fechar a fechadura. Funcionalidade bastante controversa. Na verdade, seu único uso é que, pela manhã, eles saíram e não fecharam a porta, examinaram o site ou o aplicativo e descobriram sobre ele, trancaram a fechadura. Mas a presença de tal funcionalidade adiciona muitos problemas.

Alguém pode fechar a porta em vez de você (todos os três argumentos que estavam acima). Você saiu para jogar fora o lixo e agora fica nos mesmos chinelos do lado de fora. Quanto mais confiável a proteção, mais inconveniente será seu uso. Eu vejo algo parecido com esse cenário - no bloqueio, você pode definir a combinação de códigos da maneira que os bloqueios de combinação. Somente o envio dessa combinação fechará a porta e, após o fechamento, a combinação será redefinida.

Além disso, o motor, em geral, não se importa com o caminho de rotação. Além disso, a rotação no sentido anti-horário nem sempre fecha a porta. Acontece que, "programaticamente", se a porta puder ser fechada, então, potencialmente, poderá ser aberta. Aqui, a solução é a seguinte - no estágio de configuração, o usuário bloqueia fisicamente a rotação da trava em um dos lados (como uma chave de fenda de catraca). Mas será difícil abrir uma fechadura com uma chave.

Em geral, uma função bastante controversa, que, embora possa ajudar, é potencialmente difícil de implementar.

Neste artigo, tentei apresentar minha visão de um castelo inteligente e convido aqueles que desejam debater nos comentários.

Source: https://habr.com/ru/post/pt405899/


All Articles