La sécurité des données
Notre Box se connecte à la console utilisateur Wattsense à travers l'Internet, par 4G ou réseau filaire, afin de fournir la plus grande valeur ajoutée à nos clients. Toute communication sur un réseau étendu, en particulier Internet, présente des challenges en termes de sécurité, confidentialité des donnée et fiabilité des échanges. Chez Wattsense, nous avons mis la sécurité au fondement même de notre architecture.
Voici les concepts clés qui garantissent la robustesse de notre modèle de sécurité et la mitigation des potentielles attaques envers notre Box, notre Plateforme IoT et les canaux de communications.
L'architecture
Dans ce document, nous aborderons les différents principes et stratégies de conception et de sécurisation des moyens de communications de la Plateforme IoT et des Box Wattsense. Il s’agit notamment des échanges entre la Box et la Plateforme IoT ainsi que les interactions de l’utilisateur avec notre Plateforme IoT
Aperçu de l'architecture des flux de communications chez Wattsense
Entre la Box et la plateforme IoT
Le canal de communication principal permet l’échange bidirectionnel entre la Box et la plateforme IoT de Wattsense. La Box envoie les données collectées ainsi que les évènements internes, la plateforme IoT quant à elle envoie les commandes et configurations. La sécurité de ce canal de communication utilise les mécanismes suivants :
1 - Chiffrement de bout en bout
L’information transitant entre la Box et la plateforme IoT de wattsense étant sur Internet, il est alors important de garantir sa confidentialité et son intégrité. De ce fait, toutes nos communications sont chiffrées en utilisant le protocole Transport Layer Security (TLS) ou sécurité de la couche de transport. Toute connexion TLS est initiée par un échange sécurisé de clés, un chiffrement symétrique ainsi qu’un contrôle de l’intégrité des messages. Chez Wattsense, toutes nos communications, en particulier celles entre la Box et la plateforme IoT, utilisent le protocole TLS et suivent les trois propriétés suivantes :
- Les communications sont confidentielles entre les deux parties.
- L'intégrité des données ; ces dernières ne peuvent être altérées et les deux parties ont la garantie de leur validité.
- L’authentification ; chacune des deux parties peut valider l’identité de l’autre avant et pendant l’échange.
Afin de garantir le plus haut niveau de sécurité, nos connexions TLS se font avec l’authentification serveur et l’authentification client activés. Autrement dit, la Box utilise l'autorité de certification ou Certificate Authority (CA) afin de valider que la Plateforme IoT à laquelle elle se connecte est détenue et opérée par Wattsense, tandis que la Plateforme IoT utilise des certificats uniques pour valider l’identité de la Box. Ces certificats sont générés et stockés en toute sécurité sur notre Plateforme IoT. Cela permet d’identifier les deux parties et ainsi éviter des attaques du type usurpation d’adresse où un acteur malveillant prétend être le serveur.
De plus, notre Box se connecte via 4G au serveur de notre plateforme IoT. Ceci réduit considérablement le champ des attaques potentielles.
2 - Modèle de communication
Le paradigme d’échange bidirectionnel Pub/Sub permet d’avoir un échange sécurisé entre la Box et la Plateforme IoT. La communication se fait sur un ensemble de canaux prédéfinis et privés par Box.
Comme décrit précédemment, chaque Box dispose d'un certificat généré de manière unique pour autoriser la communication avec la plateforme IoT. La Plateforme IoT s'appuie sur ces certificats pour autoriser la Box à échanger des données avec le serveur en utilisant ses canaux de communication privés. Par conséquent, dans le cas où le certificat d'une Box est compromis, nous pouvons révoquer l'accès à ces canaux en révoquant le certificat.
3 - Modèle de conception de port sortant uniquement
Laisser les ports entrants ouverts peut entraîner des attaques potentielles sur le logiciel utilisant lesdits ports, ce qui peut provoquer des infections par des logiciels malveillants, la modification et le vol de données, des attaques DoS et l'exécution de code arbitraire. Compte tenu de cela, les boîtiers Wattsense suivent un modèle de conception de port sortant uniquement, ceci les protège contre les attaques décrites ci-dessus. Par conséquent, la Box communique avec le monde extérieur plutôt que l’inverse.
4 - Surveillance de l'état de la Box
La présence d'anomalies dans la connexion des Box et/ou les données envoyées à la Plateforme IoT peuvent indiquer la présence d'un incident de sécurité. Chez Wattsense, nous surveillons activement l'état de notre Box: un appareil hors ligne pourrait signifier une manipulation non autorisé de la Box. Dans ce cas, nous communiquons activement avec nos clients pour déterminer la nature de ces incidents et fournir une assistance si nécessaire.
5 - Mises à jour sécurisées du micrologiciel et du logiciel
Une exigence majeure pour un modèle de sécurité efficace est de maintenir le logiciel et le micrologiciel Box à jour. Chez Wattsense, nous utilisons une plate-forme de niveau pour mettre à jour les Box sans contact, ou Over the Air (OTA), au moyen de canaux chiffrés. Notre plate-forme comprend des fonctionnalités telles que la limitation du déploiement de logiciels à un ensemble spécifique de Box, les déploiements en cascade, les arrêts d'urgence des déploiements de logiciels en cas de défaillance et de violation. De plus, nous utilisons également des contrôles d'intégrité des logiciels de pointe, tel que la vérification de l'authenticité des micrologiciels et logiciels téléchargés en utilisant des certificats appartenant à Wattsense.
Entre la plateforme IoT et l'utilisateur
L'objectif de la communication entre la plateforme IoT et l'utilisateur (ou les applications) est de récupérer les données envoyées par la Box Wattsense, de configurer la Box ou d'envoyer des commandes à la Box. Les données provenant des Box sont stockées en toute sécurité dans notre Cloud et sont accessibles via différentes API.
Communication
Nous mettons à disposition à nos utilisateurs deux canaux de communication afin qu’ils puissent récupérer les données remontées par leurs Boxes, de les configurer ces dernières, ou de leur envoyer des commandes.
1 - REST API
Une API REST peut être utilisée pour manipuler et gérer les ressources sur notre plateforme IoT. Pour assurer une communication sécurisée, notre API REST est uniquement accessible via HTTPS (HTTP sécurisé par TLS). Autrement dit, les données sont envoyées et reçues sur un canal sécurisé et chiffré. Les pratiques d'authentification et d'autorisation de notre API REST sont décrites comme suit.
Authentification :
Les deux principaux types d'authentification pour l'API REST sont via Basic Access Authentication et les clés d'API. Les identifiants utilisateurs sont tous stockés de manière sécurisé, nous utilisons des algorithmes de hachage irréversible et résistants aux attaques à la force brute. De plus, toute requête à notre API doit être authentifiée et autorisée.
Dans la prochaine version, nous autoriserons l'authentification en deux étapes pour renforcer davantage l'accès à notre API REST. (*)
Modèle d'autorisation :
Notre API REST fournit également un modèle d'autorisation par ressource. Par exemple, un administrateur peut autoriser un utilisateur à envoyer des commandes à une Box spécifique ou à lire des données sans connaître la configuration de la Box. Notre modèle d'autorisation suit les deux grands principes suivants pour garantir la confidentialité et la sécurité :
- Un utilisateur / application ne doit disposer que du jeu d'autorisations requis pour effectuer les actions pour lesquelles il est autorisé, et pas plus.
- Le niveau d'accès par défaut d'un utilisateur à n'importe quelle ressource doit être «refusé» à moins qu'il n'ait reçu une autorisation explicite.
Sur notre plateforme IoT, chaque utilisateur est lié à un compte et ne peut voir que ce que l'administrateur lui a autorisé à accéder. Cela permet aux propriétaires de Box de personnaliser l'accès pour les développeurs d'applications, en utilisant des rôles personnalisés ou par défaut, et de maintenir la confidentialité selon les normes les plus élevées.
2 - MQTT et Webhooks
Les connecteurs MQTT et Webhook de nos plateformes IoT sont principalement utilisés pour obtenir des données en temps réel. Ils sont tous deux configurables via notre API REST.
Le connecteur MQTT propose deux modes de communication sécurisés sur des canaux sécurisés :
Authentification par nom d’utilisateur et mot de passe :
Le connecteur MQTT ouvre un canal sécurisé (sur TLS) vers le serveur en utilisant les identifiants renseignés par le client.
Authentification par certificat (certificats X.509) :
Elle utilise une authentification par certificat qui permet de valider l’identité de notre connecteur.
Les webhooks envoient les données de notre plateforme IoT aux serveurs du client configurés à distance. La communication Webhooks utilise également HTTPS et inclut l'authentification par nom d’utilisateur et mot de passe et l'authentification OAuth.
Pour assurer l’intégrité des informations transmises, nous y ajoutons (dans les entêtes HTTP) une signature HMAC. Cela permet à nos clients de déterminer que le message reçu n’a pas été compromis et qu’il est bien envoyé par Wattsense.
Isolement du stockage des données
Le stockage des données sur notre plateforme IoT suit les meilleures pratiques de l'industrie en termes de sécurité, afin de fournir une protection des données de nos clients.
Les serveurs qui hébergent nos bases de données sont situés dans des cloud privés virtuel (VPC) avec des pare-feu dédiés. Par conséquent, nos bases de données sont cachées d'Internet et seuls les services au sein des réseaux VPC autorisés (via le VPC Peering) sont autorisés à y accéder.
Besoin d'en savoir plus sur la sécurité de notre infrastructure ?