Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial Internet of Things >> Tecnologia da Internet das Coisas

Autenticação Segura de Dispositivos com Certificados X.509 no Eclipse Hono

Nos últimos meses, cobertura da mídia destacou dispositivos IoT inseguros que falham em atender padrões básicos de segurança. Preocupação recorrente é a confidencialidade de dados transmitidos de dispositivos a serviços na nuvem. Surpreendentemente, muitos dispositivos enviam dados por redes públicas sem criptografia, mesmo que protocolos baseados em TCP/IP como HTTP e MQTT suportem criptografia TLS.

O Eclipse Hono habilitou TLS para seus adaptadores HTTP e MQTT desde o início. O marco 0.9-M2 agora adiciona suporte para autenticação via certificado cliente X.509 durante o handshake TLS, permitindo que dispositivos usem par de chaves em vez de usuário/senha.

Chamando todos os desenvolvedores

O maior hackathon IoT da Europa retorna a Berlim em 14-15 de maio de 2023. Junte-se a 700+ desenvolvedores em desafios domain-specific, aprenda, faça networking e divirta-se.

Neste guia, percorremos um exemplo completo: criar e registrar trust anchor específico de tenant, gerar certificado de dispositivo, registrar seu subject DN, e usar o certificado para autenticar o dispositivo contra o adaptador MQTT do Hono. Conhecimento prático de criptografia RSA e conceitos X.509 (RFC 5280) é assumido.

Por que certificados cliente?

Usar senhas requer armazenar segredo por dispositivo no serviço Credentials do Hono, que é então comparado à senha fornecida pelo dispositivo. Certificados cliente eliminam a necessidade de segredos por dispositivo. Registrando um único trust anchor para um tenant, todos os certificados de dispositivo podem ser validados no handshake TLS usando a chave pública do tenant.

Criar uma autoridade certificadora do tenant

Gere o par de chaves RSA do tenant e certificado auto-assinado. Estes assinarão todos os certificados de dispositivo.

$ openssl genrsa -out tenant-key.pem 4096
$ openssl req -x509 -key tenant-key.pem -out tenant-cert.pem -days 365 -subj "/O=ACME Inc./CN=Sensors"

Use apenas atributos X.500 padrão (CN, L, ST, O, OU, C, STREET, DC, UID) para manter o DN simples.

Registrar o tenant

Registre o trust anchor com o Hono. O exemplo a seguir usa o Hono Sandbox (v0.9-M2 ou posterior). Substitua ACME por um tenant ID único para sua instância.

$ TENANT="ACME"
$ SUBJECT=$(openssl x509 -in tenant-cert.pem -noout -subject -nameopt RFC2253 | sed s/^subject=//)
$ PK=$(openssl x509 -in tenant-cert.pem -noout -pubkey | sed /^---/d | sed -z 's/\n//g')
$ cat < tenant.json
{
  "tenant-id": "$TENANT",
  "trusted-ca": {
    "subject-dn": "$SUBJECT",
    "public-key": "$PK"
  }
}
EOS
$ curl -i -H "Content-Type: application/json" -H "Expect:" --data-binary @tenant.json https://hono.eclipse.org:28443/tenant

Criar certificado de dispositivo

Gere par de chaves do dispositivo e certificado assinado pela CA do tenant.

$ openssl genrsa -out device-key.pem 4096
$ openssl req -new -key device-key.pem -subj "\/O=ACME Inc.\/CN=Hot Fuzz Device" | \
 openssl x509 -req -days 365 -out device-cert.pem -CA tenant-cert.pem -CAkey tenant-key.pem -CAcreateserial

Registrar o dispositivo

Registre um device ID com o tenant.

$ curl -i -H "Content-Type: application/json" --data-binary '{"device-id":"hot-fuzz"}' https://hono.eclipse.org:28443/registration/$TENANT

Registrar o subject DN do dispositivo

Associe o subject DN do certificado do dispositivo ao device ID.

$ SUBJECT=$(openssl x509 -in device-cert.pem -noout -subject -nameopt RFC2253 | sed s/^subject=//)
$ cat < credentials.json
{
  "device-id": "hot-fuzz",
  "type": "x509-cert",
  "auth-id": "$SUBJECT",
  "secrets": [{}]
}
EOS
$ curl -i -H "Content-Type: application/json" --data-binary @credentials.json https://hono.eclipse.org:28443/credentials/$TENANT

Testar a conexão

Inicie um consumer para o tenant e publique telemetria usando o certificado do dispositivo.

# Iniciar consumer
java -jar hono-cli-*-exec.jar \
 --hono.client.host=hono.eclipse.org \
 --hono.client.port=15671 \
 --hono.client.tlsEnabled=true \
 --hono.client.username=consumer@HONO \
 --hono.client.password=verysecret \
 --spring.profiles.active=receiver \
 --tenant.id=$TENANT

# Publicar telemetria via MQTT
mosquitto_pub -h hono.eclipse.org -p 8883 \
 --capath /etc/ssl/certs/ \
 --cert device-cert.pem \
 --key device-key.pem \
 -q 1 -t telemetry -m "Hello there"

Se bem-sucedido, o console do consumer exibirá a mensagem. Você também pode publicar via HTTP:

curl -i --cert device-cert.pem --key device-key.pem \
 -H "Content-Type: plain/text" -H "Expect:" \
 --data-binary "Hello there" https://hono.eclipse.org:8443/telemetry

Tecnologia da Internet das Coisas

  1. Teoria de Dispositivos de Estado Sólido: Da Física às Aplicações Práticas
  2. Eclipse Hono Lança Registro de Dispositivos Baseado em MongoDB — Escalável, Pronto para Produção
  3. Eclipse Hono 1.0.0 Lança: Plataforma Unificada Open-Source de Conectividade IoT
  4. Soluções Confiáveis de Power-On para Dispositivos Médicos a Bateria
  5. Acompanhando Avanços em Tecnologia de Dispositivos Médicos
  6. Sistema de Controle de Temperatura Baseado em LM35 com Microcontrolador AT89S52
  7. Arm Aprimora Conectividade e Gestão de Dispositivos IoT com Aquisição da Stream Technologies
  8. Vulnerabilidades em Dispositivos IoT Expõem Casa Inteligente a Ataques: Ameaça de Comprometimento de Credenciais
  9. Dispositivos IoT Não Configurados: A Ameaça Oculta à Sua Casa Inteligente
  10. Hacking de Hardware Embarcado para Dispositivos IoT: Ferramentas, Técnicas e Implicações de Negócio