14.4.1. Conceitos: confiança, chaves e formato de arquivo¶
Antes de qualquer comando, três pontos de contexto que se aplicam a todas as outras páginas desta seção.
14.4.1.1. Modelos de confiança¶
Uma conexão TLS pode fornecer três níveis crescentes de garantia:
Apenas criptografia – o tráfego é criptografado, mas nenhum dos lados prova quem é. Fácil de configurar (sem validação de certificado), mas vulnerável a um ataque man-in-the-middle. Use apenas para testes locais.
Autenticação do servidor – o cliente verifica o certificado do servidor contra um certificado confiável (o familiar modelo HTTPS). A OpenMV Cam pode atuar tanto como o cliente (verificando um servidor remoto) quanto como o servidor (apresentando seu próprio certificado).
Autenticação mútua (mTLS) – ambas as pontas apresentam e verificam certificados. Usada quando o servidor também precisa ter certeza da identidade do cliente.
14.4.1.2. Escolhendo um tipo de chave¶
A build do mbedTLS da câmera suporta ECDSA nas curvas primas NIST/SEC e RSA. Existem três maneiras práticas de criar uma chave; ECDSA P-256 (prime256v1) é recomendado:
ECDSA P-256 (prime256v1) – cerca de 128 bits de segurança com uma chave de 256 bits. Chaves e assinaturas minúsculas e, de longe, o handshake mais rápido entre as opções suportadas em um Cortex-M (operações de curva elíptica são muito mais baratas do que operações de chave privada RSA). Universalmente suportado pelos pares TLS. Este é o melhor equilíbrio entre segurança, velocidade, uso de RAM/flash e compatibilidade em um dispositivo embarcado, motivo pelo qual é a escolha padrão aqui.
ECDSA P-384 (secp384r1) – cerca de 192 bits de segurança. Ainda de curva elíptica, então razoavelmente eficiente, mas maior e mais lento que o P-256 por uma margem de segurança que as implantações típicas de IoT não precisam. Use apenas se um certificado de longa duração ou um requisito de conformidade exigir.
RSA-2048 – cerca de 112 bits de segurança. Universalmente compatível, inclusive com pares muito antigos, mas as chaves e certificados RSA são muito maiores e as operações de chave privada RSA (feitas pelo lado que apresenta o certificado) são a opção mais lenta e que mais consome memória em um microcontrolador. Use apenas quando um par não conseguir fazer ECDSA.
Nota
Chaves Ed25519 / Curve25519 não são suportadas. A build do mbedTLS da OpenMV Cam não habilita EdDSA nem Curve25519, então um certificado ou chave Ed25519 falhará ao carregar ou no handshake. Use uma das três opções acima.
14.4.1.3. Formato de arquivo: use DER¶
A build do mbedTLS usada pela OpenMV Cam não inclui análise de PEM, então a câmera lê certificados e chaves apenas no formato DER (a codificação binária). A maioria das ferramentas emite o formato PEM (texto base64) por padrão, então todo arquivo destinado à câmera é convertido para DER primeiro – cada receita nesta seção termina com essa etapa de conversão. Você precisará de:
Uma chave privada – mantida em segredo, usada por qualquer lado que apresente um certificado.
Um certificado – a parte pública, apresentada ao outro lado durante o handshake.
Um certificado de CA / de confiança – o certificado que o lado verificador carrega para decidir se o par é confiável. Para uma configuração autoassinada, este é simplesmente o próprio certificado do par.