J'envisage un appareil IoT connecté à mon réseau local (paramètres par défaut, pas de VPN, pas de NAT, pas de DMZ) avec ou sans accès à Internet. Mon appareil fonctionnera comme un serveur HTTP offrant un mécanisme RPC avec authentification et autorisation. Il s'annonce avec mDNS et je lui parle en utilisant mon application mobile ou mon RaspberryPi.
Il semble que la norme dans le développement de l'IoT soit d'avoir un SSL mutuel (bidirectionnel). Est-ce à dire que SSL unidirectionnel ne peut pas sécuriser mon trafic? Pourquoi?
Remarques:
- Je comprends les différences techniques entre SSL unidirectionnel et bidirectionnel, je ne comprends pas pourquoi unidirectionnel (presque) n'est jamais pris en compte dans la production IoT.
- Je comprends qu'il est difficile d'avoir un SSL mutuel pour un appareil local: vous devez partager la clé publique et le certificat du serveur au client et vice-versa. Unidirectionnel, en revanche, semble plus facile (ne nécessite aucune action de l'utilisateur).
- Certains appareils produits en série comme Philips Hue préféreraient qu'un point de terminaison http local soit ouvert et non sécurisé plutôt qu'un cryptage SSL unidirectionnel. Pourquoi ferait-on ce choix?
- Je m'attends à ce que cette question ne soit pas fondée sur l'opinion. Toutes mes excuses si tel est le cas.
En règle générale, TLS est bon pour bien plus que x.509, mais de nombreuses implémentations le limitent à seulement x.509.
x.509 est une technique pour une confiance indirecte sécurisée. "A" fait confiance à "B", si "B" a un certificat, qui est signé par "C" et "C" est approuvé par "A". Cela fonctionne aussi dans la vraie vie; vous faites confiance à quelqu'un que vous ne connaissez pas, si une lettre présentée est signée par une personne de confiance. Peut-être que vous voyez l'écueil: si la lettre le dit, donnez une tasse de café que vous ne donnerez pas à votre voiture. Par conséquent, les informations supplémentaires contenues dans le certificat sont également pertinentes pour l'étendue de l'approbation. C'est pourquoi un serveur a généralement son nom DNS ou son adresse IP dans son certificat. En général, vous pouvez inclure des informations différentes (par exemple, "lampe de salon"), mais de nombreuses implémentations sont également au moins préconfigurées pour utiliser / vérifier les éléments DNS / IP. Et tout cela ne fonctionne que si quelqu'un se soucie de la confiance "
Si vous pouvez y consacrer du temps, vérifiez votre implémentation, si elle propose également des suites de chiffrement PSK. Sinon, vous pouvez peut-être ajuster le "contrôle de validation" du certificat des serveurs. Mais il faut beaucoup de lecture pour trouver une bonne solution. Et parfois, l'implémentation TLS utilisée n'offre tout simplement pas cela.
la source