Petit guide en terre inconnue : le chiffrement
À l'occasion du lancement du gestionnaire de mots de passe, Cozy Pass, Paul Tran-Van, Responsable R&D et Data Scientist chez Cozy Cloud a décidé de rentrer dans le vif du sujet en vous parlant de chiffrement. Comment marche le gestionnaire de mots de passe dans votre Cozy ? Quel est son protocole de chiffrement ? Dans moins de cinq minutes, le chiffrement dans Cozy n'aura plus de secrets pour vous et vous n'aurez qu'une hâte : installer Cozy Pass.
Définition
Selon Wikipedia :
Le chiffrement est un procédé grâce auquel on souhaite rendre la compréhension d'un document impossible à toute personne qui n'a pas la clé de déchiffrement.
Prenons pour exemple de chiffrement un échange de message entre deux correspondants.
- Un message clairement lisible est chiffré en un message incompréhensible pour quiconque le voit. Par exemple,
Bonjour Cozy
est chiffré enWHa?&iehgzy8W9aehml5
. - Le message chiffré est envoyé au destinataire. Si ce message est intercepté, il restera chiffré et donc illisible par un attaquant.
- Quand il arrive à destination, le destinataire, et seulement lui, possède un moyen de déchiffrer le message original :
Bonjour Cozy
.
Cette façon de protéger les messages entre correspondants ne date pas d’hier.
On peut prendre pour exemple le Code César, du nom du célèbre Imperator Romain. Ce dernier, lors de la guerre des Gaules, utilisait un système de chiffrement pour transmettre ses messages : chaque lettre y était substituée par une autre, par un décalage fixe dans l’alphabet. Par exemple, Cozy
avec un décalage de 1 donne Dpaz
: le C est transformé en D, le o en p, etc.
Aujourd’hui, les systèmes de chiffrement sont bien plus complexes, mais pas si différents. Ils reposent toujours sur deux principes fondamentaux :
-
Un algorithme de chiffrement, c’est-à-dire la façon dont seront transformées les données. Dans le cas du Code César, il s’agit de la permutation des lettres de l’alphabet.
-
Une clé de chiffrement : la valeur secrète qui sera utilisée par l’algorithme pour effectuer le chiffrement. Dans notre exemple du Code César, la clé est simplement “1” et peut prendre 26 valeurs différentes, la taille de l’alphabet.
Quand César chiffrait ses messages, la sécurité reposait plus sur la non-connaissance de l’algorithme par les espions que sur la clé. En effet, une fois l’algorithme percé à jour, il est relativement aisé d’en déduire la clé à partir d’un message.
Dans la sécurité moderne, on considère plutôt l’inverse : la clé est le socle de la sécurité, tandis que l’algorithme de chiffrement doit être public afin qu’il puisse être audité par des experts.
Il y a généralement différentes étapes dans un système de chiffrement, avec différents échanges de messages, et souvent plusieurs algorithmes et plusieurs clés utilisés. On parle alors de protocole de chiffrement, que nous détaillons ici plus précisément dans le cadre du gestionnaire de mots de passe.
Chiffrement des données
Comment ça marche ?
Dans votre Cozy, le gestionnaire de mots de passe est utilisé pour stocker vos identifiants, carte bleues et identités.
- Lors de la création du mot de passe Cozy, une clé de chiffrement en est dérivée par un enchaînement d’opérations mathématiques. Nous l’appelons la clé maître et n’est jamais stockée. Il est important de signaler que le mot de passe n’est jamais transmis en clair au serveur Cozy, qui ne connaît donc jamais cette clé.
- Une autre clé est générée aléatoirement et chiffrée par la clé maître, qu’on appelle clé de trousseau (ou clé de chiffrement). Cette dernière reste stockée chiffrée dans la base de données et servira à chiffrer toutes les futures clés. Là encore, le serveur Cozy n'y a jamais accès en clair.
Et côté utilisateur ?
-
Lorsque l’utilisateur se connecte à son gestionnaire de mots de passe, la clé maître est recalculée à partir du mot de passe Cozy et la clé de trousseau déchiffrée.
-
Si l’utilisateur ajoute un nouvel identifiant, typiquement le nom d’utilisateur et le mot de passe, il est immédiatemment chiffré avec la clé de trousseau.
-
Le nouvel identifiant chiffré est envoyé au serveur qui le stockera, sans avoir aucun moyen de connaître son contenu.
-
Chaque donnée gérée par le gestionnaire de mot de passe (identifiant, carte bleue, identité) est ainsi récupérée depuis le serveur Cozy et déchiffrée dans l'application grâce à la clé de trousseau.
Cas particulier des services connectés dans Cozy
Dans le cas où des identifiants sont utilisés par un connecteur (=pour récupérer les données d'un service en ligne), un chiffrement particulier est mis en place. En effet, il est nécessaire que les identifiants (et seulement ceux-là) puissent être déchiffrés sans action de la part de l’utilisateur, afin de pouvoir récupérer automatiquement les données de vos services en ligne de façon périodique.
Il est primordial de préciser ici que les connecteurs sont exécutés chez Cozy Cloud dans un environnement isolé et sécurisé, qui est le seul à avoir les droits pour déchiffrer les identifiants des connecteurs.
Pour cela, nous utilisons un principe appelé chiffrement asymétrique :
- Une paire de clé est utilisée : l’une servira exclusivement à chiffrer tandis que l’autre ne servira qu’à déchiffrer.
- On appelle “clé publique” la clé de chiffrement qui, comme son nom l'indique, n’a pas besoin d’être protégée et “clé privée” la clé de déchiffrement qui doit rester secrète. Cette dernière est stockée dans le gestionnaire de mots de passe et chiffrée avec la clé de trousseau.
Le principe du chiffrement des connecteurs est le suivant :
-
Lors de la création du mot de passe du Cozy, une clé particulière est générée, qu’on appelle clé d'organisation. Cette clé est partagée entre le serveur Cozy et le gestionnaire de mot de passe et sert pour le (dé)chiffrement des connecteurs.
1.1. La clé d’organisation est transmise au gestionnaire de mot de passe, en la chiffrant avec la clé publique. Elle sera déchiffrée grâce à la clé privée.
1.2. Elle est également stockée dans le Cozy de l’utilisateur, chiffrée avec une clé propre à l'environnement isolé, qu’on appelle clé Cozy.
-
A la création d’un connecteur, les identifiants sont stockés chiffrés avec la clé d'organisation partagée.
-
Lors de l’exécution du connecteur, le déchiffrement des identifiants se fait grâce à la clé d'organisation, elle-même déchiffrée via la clé Cozy dans l'environnement isolé.
-
Tous les identifiants utilisés par les connecteurs sont accessibles dans le gestionnaire de mots de passe et déchiffrés grâce à la clé d'organisation partagée.
Et Cozy Pass alors ?
Aujourd'hui, une nouvelle application est disponible dans votre Cozy : Cozy Pass, un gestionnaire de mots de passe intégré basé sur le protocole de chiffrement ainsi décrit auparavant.
Pour Cozy Pass, nous avons préféré repartir de protocoles établis plutôt que de réinventer la roue. C'est une garantie de sécurité pour vous.
Pour ces raisons nous avons choisi de nous baser sur le protocole ouvert de Bitwarden, en réimplémentant une partie du logiciel et en adaptant d'autres.
A l'ouverture de votre Cozy, vous découvrirez vos identifiants de comptes en ligne déjà connectés à votre Cozy synchronisés et accessibles à tout moment dans Cozy Pass mais pas seulement :
- vous pourrez enregistrer tous vos mots de passe et identifiants (une bonne fois pour toutes) lorsque vous naviguez sur Internet ;
- vous pourrez importer tous vos mots de passe enregistrés dans un autre gestionnaire de mots de passe ;
- vous pourrez vous connecter sans saisie de mot de passe sur vos comptes en ligne (et ainsi arrêter de cliquer sur le lien “Mot de passe oublié ?”) ;
- vous pourrez générer un remplissage instantané des formulaires des sites internet, pour une connexion facilitée à vos services préférés (au revoir la saisie manuelle longue et compliquée) ;
- vous pourrez faciliter vos achats sur le web en enregistrant vos cartes bancaires.
Finis les mots de passe oubliés !
Pour en discuter avec notre Responsable R&D
Paul Tran-Van : son LinkedIn ou Twitter
Articles, liens et ressources
- Plus de détails sur le chiffrement dans Cozy sur Github
- Article "Introduction cryptographique" écrit par Eric Daspet, CTO Cozy Cloud
- En savoir plus sur le Code César
- Découvrir Cozy sur cozy.io et Cozy Pass