Criptografa arquivos (chave privada, etc.) em um sistema embarcado

6

Estou trabalhando em um dispositivo incorporado em execução no Linux. Este dispositivo se comunica com um servidor e envia dados para ele usando um certificado e uma chave privada.

Quando distribuímos o dispositivo, receio que algumas pessoas más possam roubar essa chave privada cortando o sistema de arquivos do dispositivo incorporado e tentar adulterar os dados em nosso servidor.

Mesmo se eu criptografar essa chave privada, uma vez que o programa em execução precisa descriptografar a chave, eles ainda podem encontrar a chave de descriptografia em algum lugar no sistema de arquivos.

A alteração das permissões dos arquivos não seria uma solução, já que devemos distribuir o dispositivo inerentemente e, como tal, qualquer pessoa pode ter acesso físico a ele.

Eu ficaria feliz em ouvir qualquer sugestão para proteger a chave privada sem impedir que o programa em execução a use. Obrigado.

Edit: Nós usamos o Yocto rodando no Intel Edison.

    
por Olivier 15.04.2016 / 16:52

1 resposta

5

Se o seu hardware não for fisicamente seguro, nada do que você fizer no software fornecerá segurança física.

Não se preocupe em criptografar, a menos que você tenha um local separado, seguro para a chave. A criptografia total de disco em um computador é útil quando alguém digita a chave (senha para derivar a) no momento da inicialização. A criptografia de disco total também pode ser feita se a chave estiver em uma área de armazenamento separada e fisicamente protegida, como um TPM ou um cartão inteligente.

Tanto quanto eu posso dizer, o Intel Edison não tem essa área de armazenamento separado. Além disso, uma placa Edison pode ser inicializada a partir de um cartão SD ou pen drive , para qualquer um que tenha acesso físico para uma porta USB pode extrair todos os dados do eMMC.

Parece que a inicialização USB depende do U-Boot, então é possível que a substituição da imagem oficial do U-Boot por uma personalizada que desative o USB forçaria a inicialização do sistema operacional no eMMC. Eu realmente não sei se isso é uma possibilidade, eu simplesmente não tenho informações suficientes para refutar isso.

Mesmo com um bootloader personalizado, a placa pode ser reflashed através da conexão USB. Isso substitui parte do eMMC, mas não a coisa toda, pelo menos se o flash for interrompido. Não importa onde você tente colocar a chave no eMMC, um invasor cuidadoso pode evitar sobrescrevê-lo.

Se o seu servidor precisa confiar nos dados do dispositivo, o recurso que você está procurando é chamado de "inicialização segura" (ou "inicialização confiável" ou "inicialização verificada" ou alguns outros nomes, a terminologia não é padronizada ). Com processadores Intel, isso é obtido por meio de um TPM (mas as placas incorporadas raramente têm um TPM). Com processadores ARM, isso é obtido através do TrustZone e de algumas ferramentas dependentes do fabricante. Nem a tecnologia é uma prova contra um adversário que pode gastar uma grande quantia em dinheiro, mas quebrá-la exige, no mínimo, um ferro de solda, não apenas um pen drive.

    
por 17.04.2016 / 01:10