Avaliação de segurança de uma implementação SSL/TLS herdada em um dispositivo IoT
Estou fazendo uma avaliação de segurança na segurança de comunicação de um dispositivo IoT legado. O objetivo é avaliar e encontrar lacunas de segurança no projeto/implementação atual.
O modo de avaliação é manual, principalmente com referência ao design e código existentes. Isso é apenas do lado do cliente no dispositivo; enquanto o servidor é um servidor baseado em nuvem. O dispositivo está usando um módulo GSM (SIMCom SIM900) e faz comunicação HTTPS com o servidor pela internet usando comandos GSM AT.
Com base no meu entendimento sobre SSL/TLS, estou considerando os parâmetros ou critérios abaixo para esta avaliação:
uma. Versão do protocolo TLS
b. Conjuntos de cifras usados
c. gerenciamento de certificados e chaves
d. CAs raiz instaladas no dispositivo
e. Aspecto de PKI incorporado para gerenciamento de identidade de dispositivo
f. Aspecto de criptografia de hardware (SHE/TPM)
Estou fazendo isso da maneira certa? Embora eu ache que a lista de parâmetros acima não seja específica para a plataforma Device HW/SW; bastante genérico. mas acho que é assim que deve ser! Quero dizer, a lista de parâmetros será praticamente a mesma; no entanto, a avaliação real dependerá dos requisitos de segurança e de outros aspectos, como a pegada do dispositivo e sua plataforma, etc.
A lista de parâmetros de avaliação que estou considerando é boa e adequada?
Respostas
Este é um bom começo, mas uma avaliação completa precisaria ir muito mais fundo do que isso. Por exemplo:
Como o cliente gera números aleatórios? Ele usa um CSPRNG ? Ou ele usa um gerador de números aleatórios fraco, como aquele usado nas versões anteriores do Netscape Navigator , onde um invasor passivo era capaz de adivinhar os números aleatórios gerados para as chaves de sessão e, assim, descriptografar o texto cifrado que passa pela rede.
O cliente vaza informações quando encontra um erro de preenchimento? Nesse caso, pode ser suscetível a um ataque de oráculo de preenchimento , como foi o caso do Steam Gaming Client .
Como o cliente implementa o ECDSA ? O cliente gera um novo k aleatório para cada assinatura que cria? Caso contrário, pode ser possível para um invasor passivo calcular a chave de assinatura privada após observar algumas assinaturas, como foi o caso do Sony Playstation 3 .
Estes são apenas alguns exemplos. Mas, como você pode ver, erros sutis na implementação da criptografia podem ter consequências desastrosas. É por isso que a criptografia é tão difícil de acertar.