Estou usando uma placa NodeMCU com recursos WiFi para criar um rastreador de ativos simples. Consegui encontrar alguns esboços do Arduino que permitem conectividade ao Hub IoT do Azure e postar mensagens.
Uma das chaves que eu preciso "carregar" no quadro é a string de Conexão do dispositivo do Azure e, é claro, um SSID e uma senha WiFi.
Meu medo é que alguém possa simplesmente assumir o controle e "baixar" os arquivos para obter acesso às credenciais de segurança.
Meu medo é injustificado ou a perda de credenciais é uma ameaça real que preciso mitigar?
Respostas:
[aviso: sou um profissional de segurança / criptografia e lido diariamente com questões de arquitetura de segurança.]
Você se deparou com o problema de armazenar credenciais de forma que um processo autônomo possa acessá-las, mas um invasor não. Este é um problema bem conhecido e muito difícil de resolver.
Se o seu dispositivo IoT tiver um keystore de hardware embutido na placa-mãe, como alguns TPMs, ou o equivalente ao Keystore suportado por hardware Android ou ao Apple Secure Enclave, você poderá usá-lo.
Nos servidores tradicionais, você pode usar HSMs ou cartões inteligentes, mas a única solução de software completa que eu conheço é derivar uma chave AES de algum tipo de "impressão digital de hardware" criada combinando números de série de todos os dispositivos de hardware. Em seguida, use essa chave AES para criptografar as credenciais. Um processo em execução no mesmo servidor pode reconstruir a chave AES e descriptografar as credenciais, mas depois que você extrai o arquivo do servidor, é essencialmente descriptografável.
A IoT lança uma chave nisso por dois motivos:
A suposição de que os números de série do hardware são únicos provavelmente não se sustenta e
Ao contrário dos servidores, os atacantes têm acesso físico ao dispositivo, portanto, provavelmente podem obter um shell no dispositivo para executar o programa de descriptografia.
Tanto a criptografia de hardware (TPMs) quanto a criptografia de "impressão digital de hardware" são ofuscação, na melhor das hipóteses, porque, fundamentalmente, se um processo local pode descriptografar os dados, um invasor capaz de executar esse processo local também pode descriptografá-lo.
Portanto, o truque padrão parece que não funciona aqui. A primeira pergunta que você precisa fazer é:
Secure <--> Convenient
?Por fim, acho que você precisa decidir isso
security > convenience
e solicitar que um humano insira as credenciais após cada inicialização (usando algo como a resposta de @ BenceKaulics ), ou você decide issosecurity < convenience
e apenas coloca as credenciais no dispositivo, talvez usando alguma ofuscação, se você sinto que faz a diferença.Esse é um problema difícil, dificultado pela natureza dos dispositivos IoT.
Para ser completo, a solução industrial completa para esse problema é:
Dessa forma, o invasor que compromete um dispositivo pode abrir uma sessão, mas nunca tem acesso direto às credenciais.
fonte
A ameaça é real, mas, felizmente, você não é o primeiro ou o único com esse tipo de preocupação de segurança.
O que você precisa é o ESP WiFi Manager é o que você precisa aqui.
Com esta biblioteca, o ESP que não possui uma sessão salva alternará para o modo AP e hospedará um portal da web. Se você se conectar a este ponto de acesso com um PC ou smartphone, poderá configurar as credenciais de WiFi por meio de uma página da web.
Você não precisa codificar as informações críticas e pode usar o dispositivo em qualquer rede Wi-Fi que desejar, sem a necessidade de atualizar novamente.
(Documentação do ESP WiFi Manager)
fonte
Sim, eles podem acessar sua senha se você a deixar como texto sem formatação.
O ponto positivo é que muitas interfaces de conexão wifi aceitam senhas com hash. Embora os que eu usei hash MD5 aceitos e o MD5 não sejam super seguros, ainda é um desafio muito difícil para o Joe comum. Dependendo do seu arquivo de configuração, você indica o nome do seu algoritmo de hash e depois escreve sua senha ou usa o padrão usado pela interface wifi.
fonte
Resposta simples - SIM. Pode ser feito. Você deve, pelo menos, executar algum tipo de ofuscação para fornecer proteção mínima.
fonte