web-dev-qa-db-fra.com

Est-il sûr de transférer des données de localisation à l'aide de TLS?

Est-il sûr de transférer des données de localisation en utilisant TLS avec des certificats auto-signés?

J'ai lu beaucoup de discussions variées sur le web ce qui me fait poser des questions sur le sujet.

3
Divinar

Le cryptage TLS est évidemment suffisamment puissant pour protéger vos données. La faiblesse de cette question est l'intégrité des clés impliquées.

Les certificats protègent l'intégrité des clés en s'assurant qu'aucun attaquant n'a échangé une clé légitime contre une fausse clé et intercepte les messages dans une attaque Attacker-In-The-Middle. La façon dont les certificats protègent contre cela est d'être signée par une autorité de certification racine à laquelle tous les ordinateurs du réseau de communication acceptent à l'avance de faire confiance. En lui-même, un certificat auto-signé n'a pas une telle intégrité, car aucun des ordinateurs participants ne sait lui faire confiance.

Il existe plusieurs façons de contourner ce problème. La première (et la plus sûre) consiste à faire signer la clé par une autorité de certification digne de confiance, au lieu d'être sur un certificat auto-signé. La plupart des AC facturent des frais pour un certificat (ce qui peut être rebutant). Votre fournisseur DNS peut vous offrir quelques certificats gratuits dans le cadre de son service. Let's Encrypt offre la signature CA à n'importe qui gratuitement, et vous pouvez exécuter l'ensemble du processus via leur API. L'avantage est que la sécurité de votre système sera "normale" et que vos clés seront aussi protégées que tout autre site; l'inconvénient est le petit effort supplémentaire impliqué dans l'apprentissage du processus et l'obtention du certificat signé.

Une autre façon consiste à générer votre propre autorité de certification racine personnalisée. OpenSSL peut être utilisé pour générer un certificat auto-signé par une autorité de certification, qui peut ensuite être utilisé pour signer d'autres certificats, tels que le certificat de votre serveur de localisation. Google renverra de nombreux exemples de la façon de procéder en quelques appels à openssl. Ensuite, sur tous les ordinateurs sur lesquels vous souhaitez approuver les communications de votre serveur de localisation, vous installez le certificat d'autorité de certification racine personnalisé dans le magasin de certificats racine de confiance de chaque système. Vous utilisez ensuite l'autorité de certification racine personnalisée pour signer les clés de votre serveur de localisation, et ces ordinateurs leur feront confiance. Cela semble facile, car il ne s'agit que de quelques appels à OpenSSL et de l'installation d'un nouveau certificat racine. Et vos données et échanges de clés sont protégés. Cependant, les inconvénients sont plus importants qu'ils ne le paraissent: tous les ordinateurs qui font confiance à votre autorité de certification personnalisée sont désormais susceptibles d'usurper toutes les communications TLS si quelqu'un parvient à compromettre votre clé privée de l'autorité de certification maison. (Cela peut également être problématique si vous n'êtes pas autorisé à installer une nouvelle autorité de certification racine sur tous les ordinateurs concernés. Par exemple, votre lieu de travail aurait probablement un incident de sécurité si le PC de votre entreprise avait installé votre certificat maison.) Vous pouvez atténuer certains de ces risques en créant prudemment votre autorité de certification personnalisée, en gardant la clé privée hors ligne sur une clé USB stockée dans un coffre-fort, etc., mais cela représente une énorme quantité de travail pour très peu d'avantages, et rien ne peut résoudre le problème d'installation. sur un ordinateur géré en externe.

Il y a une troisième option: regardez le certificat avec vos globes oculaires et assurez-vous que c'est le même certificat que vous avez commencé - à chaque fois que vous l'utilisez. Bien que cela fonctionne, il ne protège qu'un seul échange de clés à la fois. Dans un an, si vous êtes négligent et oubliez de vérifier le certificat avant d'échanger des données, il est possible qu'un attaquant au milieu puisse frapper et vous ne le remarquerez pas.

Une quatrième option, où je pense que vous alliez, consiste à ignorer l'intégrité de l'échange de clés et à espérer qu'aucun attaquant n'essaye d'intercepter vos communications. Bien sûr, si vous êtes attaqué, vous ne saurez jamais. Et si vous pouvez vivre avec ce risque, pourquoi vous embêter à le chiffrer?

7
John Deters