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 de dispositivo baseada em X.509 no Eclipse Hono


Durante os últimos meses, a mídia tem estado cheia de notícias sobre inseguros Dispositivos IoT que não atendiam aos requisitos de segurança mais básicos. Uma das preocupações levantadas foi a confidencialidade dos dados sendo transferidos de dispositivos para serviços em nuvem fornecidos pelos fabricantes. Em muitos casos, os dados são enviados por redes públicas totalmente não criptografados, o que é bastante surpreendente, dado que todos os protocolos de transporte baseados em TCP / IP usados ​​nos dispositivos IoT de hoje (por exemplo, HTTP e MQTT) suportam a negociação e o uso de um canal de transporte seguro (criptografado) por meio de Segurança da Camada de Transporte (TLS).

O Eclipse Hono oferece suporte ao uso de TLS em seus adaptadores de protocolo HTTP e MQTT desde o início. O marco 0.9-M2 lançado recentemente adicionou suporte para a autenticação de dispositivos usando um certificado de cliente X.509 como parte do handshake TLS para o adaptador HTTP e MQTT. Isso permite que os dispositivos usem um par de chaves privadas / públicas em vez de um nome de usuário e uma senha para se autenticarem nos adaptadores de protocolo.

Chamando todos os desenvolvedores


O maior hackathon de IoT da Europa retorna a Berlim de 14 a 15 de maio de 2019. Junte-se a mais de 700 desenvolvedores em vários desafios de hack de domínio específico para hackear, jogar, aprender, se divertir e fazer novos amigos de todo o mundo!
Junte-se ao hackathon da IoT
Nesta postagem do blog, vou mostrar um exemplo completo de como criar e registrar uma âncora de confiança específica do locatário , crie um certificado para um dispositivo, registre seu nome distinto do assunto e, finalmente, use o certificado para autenticar o dispositivo para o adaptador de protocolo MQTT de Hono. No restante deste post, assumirei que você tem um entendimento geral da criptografia baseada em RSA e, em particular, das funções desempenhadas pelas chaves públicas e privadas. Para referência, o RFC 5280 define todos os detalhes técnicos do X.509.

Por que certificados de cliente?


Ao empregar senhas para dispositivos de autenticação, a senha de cada dispositivo precisa ser registrada com o serviço de credenciais do Hono para que os adaptadores de protocolo possam comparar a senha apresentada pelo dispositivo durante a autenticação com o hash da senha no registro.

Uma das vantagens de usar certificados de cliente para autenticar dispositivos é que não é mais necessário registrar segredos individuais (senhas) para dispositivos com Hono. Em vez disso, é suficiente registrar uma única âncora de confiança para um locatário, que pode então ser usado para verificar a identidade de todos os dispositivos pertencentes ao locatário como parte do handshake TLS. Para que isso funcione, os certificados de cliente usados ​​pelos dispositivos devem conter uma assinatura digital que pode ser validada usando a chave pública que serve como âncora de confiança do locatário.

Crie uma autoridade de certificação do locatário


A primeira etapa, portanto, é criar o par de chaves pública / privada do locatário que será usado para assinar os certificados de cliente usados ​​pelos dispositivos do locatário.
$ 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"

O nome distinto do sujeito definido com o parâmetro `-subj` pode conter qualquer nome distinto X.500 válido. No entanto, para manter as coisas simples, você deve evitar usar qualquer tipo de atributo além de `CN`,` L`, `ST`,` O`, `OU`,` C`, `STREET`,` DC`, `UID`.

Registre o inquilino


Agora que as chaves foram criadas, podemos registrar um inquilino usando a chave pública como âncora de confiança.

Por conveniência, usaremos o Hono Sandbox. No entanto, qualquer outra instalação (local) executando a versão 0.9-M2 ou posterior também deve funcionar.

Nos comandos abaixo, substitua o identificador de locatário `ACME` por um identificador de sua escolha. Isso é importante porque Hono impõe a exclusividade de identificadores de inquilino. Cada identificador pode, portanto, ser registrado apenas uma vez por instância do Hono.

Os três primeiros comandos definem algumas variáveis ​​para uso posterior:o identificador do locatário, o nome distinto do assunto do certificado e a chave pública codificada em Base64. As variáveis ​​são então usadas no comando para registrar a âncora de confiança com o novo inquilino.
$ 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 'Tipo de conteúdo:application / json' -H 'Esperar:' --data-binary @ tenant.json https://hono.eclipse.org:28443/tenant

Crie um certificado do dispositivo


A próxima etapa é criar um par de chaves para o dispositivo e seu certificado de cliente correspondente, que é assinado pela chave privada do locatário.
$ 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

Novamente, certifique-se de não usar nenhum tipo de atributo além de `CN`,` L`, `ST`,` O`, `OU`,` C`, `STREET`,` DC`, `UID` no assunto Nome Distinto.

Registre o dispositivo


Agora podemos usar um identificador de dispositivo arbitrário para registrar o dispositivo com o locatário.
$ curl -i -H 'Content-Type:application / json' --data-binary '{"device-id":"hot-fuzz"}' https://hono.eclipse.org:28443/registration/$ INQUILINO

Registre o DN do assunto do dispositivo


A etapa final é registrar o nome distinto do assunto do dispositivo. Novamente, certifique-se de usar os mesmos identificadores de locatário e dispositivo acima.
$ 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

Teste a conexão


Agora que o dispositivo foi registrado, é hora de se conectar ao adaptador MQTT usando o certificado de cliente recém-criado e publicar alguns dados.

Primeiro, iniciamos um consumidor para o locatário para o qual registramos o dispositivo. Você pode baixar o cliente do site da Hono:
$ 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
Na etapa final, usamos o cliente de linha de comando Eclipse Mosquitto para publicar alguns dados de telemetria:
$ 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 "Olá"

Se tudo correr bem, você poderá ver os dados sendo registrados no console do terminal onde iniciou o consumidor.

O dispositivo também pode usar HTTP para publicar dados:

$ curl -i --cert device-cert.pem --key device-key.pem -H 'Content-Type:plain / text' -H 'Expect:' --data-binary 'Olá' https:// hono.eclipse.org:8443/telemetry

Tecnologia da Internet das Coisas

  1. Introdução à teoria dos dispositivos de estado sólido
  2. Lançamento do novo registro de dispositivo baseado em MongoDB no Eclipse Hono
  3. Eclipse Hono 1.0.0 lançado:Uma plataforma de conectividade IoT aberta
  4. Alimentação confiável em um dispositivo médico operado por bateria
  5. Monitorando os avanços do dispositivo médico
  6. Sistema de controle de dispositivo baseado em temperatura usando LM35
  7. Arm expande a conectividade IoT e capacidades de gerenciamento de dispositivos com aquisição de Stream Technologies
  8. As vulnerabilidades do aplicativo deixam os dispositivos IoT abertos para ataques
  9. Ajustar e esquecer:a ameaça representada pela IoT não configurada
  10. Uma introdução ao hackeamento de hardware embarcado de dispositivo IoT