Le Blog Amazon Web Services
L’importance du chiffrement : comment AWS vous aide à protéger vos données
La « défense en profondeur » est un concept de sécurité consistant à superposer plusieurs mécanismes de protections conçus de telle sorte que si un mécanisme de sécurité échoue, il y en aura au moins un autre qui protègera le système. Le chiffrement est un composant essentiel d’une stratégie de ce type. Alors que de plus en plus d’entreprises cherchent à déployer plus rapidement et à grande échelle, elles ont besoin de moyens pour répondre aux exigences de conformité critiques et pour améliorer la sécurité de leurs données. Le chiffrement, lorsqu’il est utilisé correctement, peut fournir une couche de protection supplémentaire par rapport aux systèmes de contrôle d’accès.
Comment fonctionne le chiffrement ?
Le chiffrement consiste à convertir des données en données illisibles (texte chiffré) en utilisant un algorithme combiné avec une clé de chiffrement. Ce texte chiffré ne peut redevenir lisible qu’en utilisant la bonne clé pour déchiffrer. Par exemple, une simple phrase comme « Hello World ! » peut générer un texte chiffré tel que « 1c28df2b595b4e30b7b07500963dc7c ». Il existe plusieurs types d’algorithmes de chiffrement, qui utilisent différents types de clés. Un algorithme de chiffrement fort s’appuie sur des propriétés mathématiques qui assurent qu’un texte chiffré ne pourra pas être déchiffré sans la clé, quelle que soit la puissance de calcul à la disposition de l’attaquant. En conséquence, la gestion et la protection des clés deviennent un élément essentiel de toute solution de chiffrement.
Le chiffrement dans le cadre de votre stratégie de sécurité
Une stratégie de sécurité efficace commence par un contrôle d’accès rigoureux et est accompagnée d’un travail continu pour définir les droits minimum nécessaires pour chaque utilisateur ou chaque système accédant aux données. Lorsque vous utilisez AWS, vous êtes en charge de définir ces politiques de contrôle d’accès et il est possible de mettre en place une stratégie de défense en profondeur pour obtenir la meilleure protection de vos données.
Le chiffrement est un élément essentiel d’une stratégie de défense en profondeur car il permet d’atténuer les faiblesses de votre mécanisme de contrôle d’accès principal.
Que se passerait-il si un mécanisme de contrôle d’accès échouait et autorisait l’accès à des données stockées sur un disque ou transitant sur une connexion réseau ? Si ces données sont chiffrées, tant que l’attaquant n’a pas accès à la clé de déchiffrement, il lui est impossible d’exploiter ces données.
Et que se passerait-il si vous créiez par erreur des politiques d’accès à vos données trop permissives? Si le système de chiffrement et de gestion des clés est séparée du système de contrôle d’accès, l’accès accidentel aux données sera évité.
Pour montrer à quel point il est difficile de déchiffrer des données chiffrées, prenons l’exemple du standard AES (Advanced Encryption Standard) avec des clés de 256 bits (AES-256). Il s’agit de l’algorithme le plus puissant adopté par l’industrie et il est approuvé par les gouvernements pour le chiffrement de données. AES-256 est aussi la technologie que nous utilisons pour chiffrer les données dans AWS, y compris le chiffrement côté serveur d’Amazon Simple Storage Service (S3). Il faudrait au moins mille milliards d’années pour le casser en utilisant les technologies informatiques actuelles. Notez que les recherches en cours sur le sujet suggèrent que même lorsque l’informatique quantique sera disponible, cela ne réduira pas suffisamment le temps nécessaire pour casser le chiffrement AES.
Exigences relatives à une solution de chiffrement
Pour tirer le meilleur parti d’une solution de chiffrement, vous devez penser à deux choses :
- La protection des clés “au repos” : Les systèmes utilisant vos clés de chiffrement sont-ils sécurisés de manière à ce que les clés ne puissent jamais être utilisées en dehors du système ? Aussi, ces systèmes mettent-ils correctement en œuvre les algorithmes de chiffrement pour produire des messages chiffrés solides qui ne pourront pas être déchiffrés sans les bonnes clés ?
- La gestion indépendante des clés : L’autorisation d’utiliser les clés de chiffrement est-elle indépendante de la façon dont l’accès aux données est contrôlé ?
Il existe des solutions tierces que vous pouvez utiliser avec AWS pour répondre à ces exigences. Cependant, l’exploitation à grande échelle de tels systèmes peut être compliquée et coûteuse. Or AWS offre une large gamme de solutions pour simplifier le chiffrement et la gestion des clés.
Protection des clés au repos
Lorsque vous utilisez une solutions de gestion des clés, il peut être difficile d’évaluer le risque de fuite de vos clés. Ces clés doivent être stockées quelque part, et vous ne pouvez pas toujours auditer les mécanismes de protection contre les accès non autorisés au système de stockage. La complexité technique, combinée avec la nécessité de rendre le chiffrement utilisable sans dégrader les performances ou la disponibilité, implique que le choix et l’exploitation d’une solution de gestion des clés nécessitent souvent des compromis. Une bonne pratique pour maximiser la sécurité des clés consiste à utiliser un module de sécurité matériel (HSM – Hardware Security Module). Un HSM est un équipement informatique spécialisé qui intègre plusieurs contrôles de sécurité empêchant les clés de chiffrement de sortir du dispositif d’une manière qui permettrait à un attaquant d’accéder à ces clés et de les utiliser.
L’une des protections implémentées dans les HSM modernes consiste à détecter les tentatives physiques ou logiques d’accès aux clés en clair sans autorisation, et à détruire ces clés avant que la tentative ne réussisse. Étant donné qu’il n’est pas possible d’installer et d’exploiter son propre matériel dans ses centres de données, AWS propose deux services utilisant des HSM implémentant ce type de mécanismes pour protéger les clés des clients : AWS Key Management Service (KMS), qui gère une flotte de HSM pour le compte du client, et AWS CloudHSM, qui donne au client la possibilité de gérer ses propres HSM. Chaque service permet soit de créer des clés en votre nom, soit d’importer des clés à partir de vos systèmes pour qu’elles soient utilisées par chaque service.
Comme nous l’avons vu précédemment, un HSM est un dispositif qui empêche l’accès aux clés elles-mêmes. En conséquence, lorsque l’on souhaite utiliser une clé protégée par un HSM pour chiffrer ou déchiffrer de la donnée, il faut “transporter” cette donnée vers le HSM qui exécutera les opérations cryptographiques sans que l’utilisateur n’ait eu besoin d’accéder à la clé en clair. Pour les très grands ensembles de données (par exemple, une base de données), il n’est pas pratique de déplacer des gigaoctets de données entre l’ensemble de données et le HSM pour chaque opération de lecture/écriture. Pour palier ce problème, une solution consiste à distribuer une clé de chiffrement des données à l’application lorsqu’elle est nécessaire. Les clés “maitresses” (CMK – Customer Master Key) stockées dans le HSM sont utilisées pour chiffrer une copie de la clé de données (CDK – Customer Data Key) afin que l’application puisse stocker la clé chiffrée avec les données chiffrées par cette clé. Une fois que l’application a chiffré les données, la copie en clair de la clé de données peut être supprimée de la mémoire. La seule façon de déchiffrer les données est de renvoyer la clé de données chiffrée, qui ne fait que quelques centaines d’octets, au HSM et de la déchiffrer. Cette technique est appelée chiffrement d’enveloppe et elle permet au chiffrement et au déchiffrement de se produire directement sur la machine où les données résident, plutôt que d’envoyer les données vers le HSM à chaque fois qu’une opération de chiffrement/déchiffrement est nécessaire. Ainsi, les clés stockées dans AWS KMS ou AWS CloudHSM peuvent être utilisées soit pour chiffrer directement des données avec la CMK, soit pour chiffrer/déchiffrer des CDK qui seront utilisées par les applications pour chiffrer leurs données.
Le processus de chiffrement d’enveloppe est utilisé par tous les services AWS dans lesquels les données sont chiffrées pour le compte d’un client (ce que l’on appelle le chiffrement côté serveur ou server-side encryption), et ce afin de minimiser la dégradation des performances. Si vous souhaitez chiffrer des données dans vos propres applications (chiffrement côté client ou client-side encryption), nous vous encourageons à utiliser également le chiffrement d’enveloppe avec AWS KMS ou AWS CloudHSM. Ces deux services proposent des bibliothèques et des SDK pour ajouter la fonctionnalité de chiffrement dans le code des applications. Par exemple, l’AWS Encryption SDK est un d’outil qui peut être utilisé partout, pas seulement dans les applications exécutées dans AWS.
La mise en œuvre des algorithmes de chiffrement et des HSM étant essentielle, tous les fournisseurs de HSM devraient faire valider leurs produits par un tiers de confiance. Les HSM d’AWS KMS et d’AWS CloudHSM sont validés dans le cadre du programme FIPS 140-2 du National Institute of Standards and Technology, un standard en terme d’évaluation des modules cryptographiques. Ce programme valide la conception et la mise en œuvre sécurisées des modules cryptographiques, notamment les fonctions liées aux ports et aux interfaces, les mécanismes d’authentification, la sécurité physique et l’inviolabilité, les environnements opérationnels, la gestion des clés cryptographiques et les interférences électromagnétiques/compatibilité électromagnétique (EMI/EMC). Le chiffrement à l’aide d’un module cryptographique validé FIPS 140-2 est souvent une exigence pour d’autres programmes de conformité liés à la sécurité, tels que FedRamp et HIPAA-HITECH aux États-Unis, ou la norme internationale de l’industrie des cartes de paiement (PCI-DSS).
Gestion indépendante des clés
Bien que AWS KMS et AWS CloudHSM protègent vos CMK, vous êtes responsable de la gestion du contrôle d’accès à ces clés et donc de déterminer qui peut utiliser une clé de chiffrement et dans quelles conditions il peut le faire. Un avantage de l’utilisation d’AWS KMS est que le langage que vous utilisez pour définir les politiques de contrôles d’accès aux clés est le même que celui que vous utilisez pour définir l’accès à toutes les autres ressources AWS. Notez que seul le langage est commun, les systèmes sous jacents sont différents. En effet, comme expliqué précédemment, il est important d’utiliser un mécanisme pour gérer l’accès aux clés qui soit différent de celui que vous utilisez pour gérer l’accès à vos données. AWS KMS fournit ce mécanisme et vous permet de créer un ensemble d’administrateurs qui peuvent gérer uniquement les clés et un autre ensemble d’administrateurs qui peuvent gérer uniquement l’accès aux données chiffrées. Cette manière de configurer l’accès à vos clés de chiffrement permet d’assurer la séparation des tâches et ainsi, d’éviter l’escalade accidentelle des privilèges de déchiffrement des données à des utilisateurs non autorisés. Pour une séparation encore plus poussée de ce contrôle, AWS CloudHSM offre un mécanisme de politique indépendant pour définir l’accès aux clés.
Il est important de noter que la possibilité de séparer la gestion des clés de la gestion des données n’altère pas votre capacité à auditer et vérifier que vous avez configuré correctement l’accès aux clés de chiffrement. AWS KMS est intégré à AWS CloudTrail, ce qui vous permet de vérifier qui a utilisé quelles clés, pour quelles ressources et à quel moment. Vous disposez ainsi d’une vision de vos processus de gestion du chiffrement qui est généralement beaucoup plus riche que les mécanismes d’audit disponibles pour les équipements déployés on-premises. Les événements d’audit d’AWS CloudHSM peuvent eux être envoyés à Amazon CloudWatch, le service de surveillance et d’observabilité d’AWS.
Chiffrement des données au repos et en transit
Tous les services AWS qui traitent les données des clients chiffrent les données en transit et proposent des options pour chiffrer les données au repos. Tous les services AWS qui proposent un chiffrement au repos à l’aide d’AWS KMS ou d’AWS CloudHSM utilisent AES-256. Aucun de ces services ne stocke les clés de chiffrement au repos en clair – c’est une fonction que seuls AWS KMS et AWS CloudHSM peuvent exécuter à l’aide de leurs HSM validés FIPS 140-2. Cette architecture permet de minimiser l’utilisation non autorisée des clés.
Lors du chiffrement des données en transit, les services AWS utilisent le protocole TLS (Transport Layer Security) pour assurer le chiffrement entre votre application et le service AWS. La grande majorité des solutions commerciales utilisent un projet open source appelé OpenSSL pour leurs besoins TLS. OpenSSL compte environ 500 000 lignes de code, dont au moins 70 000 implémentent TLS. Cette base de code est vaste, complexe et difficile à auditer. De plus, lorsqu’OpenSSL présente des bogues, la communauté mondiale des développeurs doit non seulement corriger et tester les modifications, mais aussi s’assurer que les corrections apportées n’introduisent pas de nouvelles failles.
La réponse d’AWS aux défis posés par l’implémentation de TLS dans OpenSSL a été de développer notre propre implémentation de TLS, connue sous le nom de s2n, ou signal to noise. Nous avons publié s2n en juin 2015, et nous l’avons conçu pour être léger et rapide. L’objectif de s2n est de fournir un chiffrement réseau plus facile à comprendre et entièrement auditable. Nous l’avons publié sous la licence Apache 2.0 et le projet est hébergé sur GitHub.
Nous avons également conçu s2n afin qu’il puisse être analysé avec un raisonnement automatisé pour tester la sécurité et la justesse à l’aide de logique mathématique. Grâce à ce processus, connu sous le nom de méthode formelle, nous vérifions l’exactitude de la base de code s2n chaque fois que nous modifions le code. Nous avons également automatisé ces preuves mathématiques, que nous ré-exécutons régulièrement pour nous assurer que les propriétés de sécurité souhaitées restent inchangées avec les nouvelles versions du code. Les preuves mathématiques automatisées sont une tendance émergente dans l’industrie de la sécurité, et AWS utilise cette approche pour une grande partie de ses logiciels critiques.
La mise en œuvre de TLS nécessite l’utilisation de clés de chiffrement et de certificats numériques qui attestent de la propriété de ces clés. Le gestionnaire de certificats AWS et l’autorité de certification privée AWS sont deux services qui simplifient l’émission et la rotation des certificats numériques pour vos points de terminaison TLS. Ces deux services utilisent une combinaison d’AWS KMS et d’AWS CloudHSM pour générer et/ou protéger les clés utilisées dans les certificats numériques qu’ils émettent.
Résumé
Chez AWS, la sécurité est notre priorité absolue et nous souhaitons rendre aussi simple que possible l’utilisation du chiffrement pour protéger vos données au-delà du simple contrôle d’accès. En créant et en prenant en charge des outils de chiffrement qui fonctionnent à la fois dans et hors du cloud, nous vous aidons à sécuriser vos données et à garantir la conformité de l’ensemble de vos environnements. Nous plaçons la sécurité au centre de tout ce que nous faisons pour que vous puissiez protéger vos données avec la meilleure technologie de sécurité tout en maitrisant vos coûts.
Article original contribué par Ken Beer, General Manager du service AWS KMS et adapté par Sébastien Grazzini, Solutions Architect chez AWS France, LinkedIn.