Host-Proof Hosting et confidentialité des données sur internet

 

 

Il y a 10 ans, mes données étaient toujours toutes avec moi, sur un disque dur, une clef usb, un ZIP… Aujourd’hui, mes emails sont stockés chez Google avec Gmail et Microsoft avec Live, les documents sont sur Google Docs, le code source sur GitHub ou GoogleCode, mes flux RSS sur GoogleReader, mes données personnelles réparties entre Facebook, Twitter, Deezer, Soundcloud,… et tout ceci continue de plus belle avec l’arrivée de produits comme Dropbox, GoogleMusic,… Maintenant je ne suis même plus capable de vous dire dans quel pays mes données sont réellement archivées, traitées, transmises.

 

Une des problématiques majeures du cloud computing — hors l’accès obligatoire à internet — est la multiplication des logins nécessaires pour accéder à l’ensemble des données que vous avez disséminées un peu partout sur la toile, c’est pourquoi je voulais essayer Passpack.com depuis longtemps. Passpack est un applicatif (site) web dédié à la centralisation et à la gestion de mots de passe qui en proposant des fonctionnalités intéressantes comme le One-Click-Login, la génération de mots de passe aléatoires, le renouvellement ou encore le partage de mot de passe entres utilisateurs, Passpack.com est devenu une des références en la matière.

 

Je ne souhaite pas ici m’étendre sur l’éternel débat du bien fondé ou non de cette solution — à vous de faire votre choix — mais je vais vous présenter le concept cryptographique qu’ils utilisent pour stocker les mots de passe afin que vous puissiez appréhender leur approche : le Host-proof hosting.

 

Comme dit précédemment,  la quantité de données envoyées par un utilisateur en direction de systèmes d’information tiers a été décuplée, mais surtout les utilisateurs sont prêt à faire confiance et à envoyer des données sensibles (numéro de carte de crédit,… ). Vous souvenez-vous il y à encore quelques années, quand la plupart de vos proches trouvaient dangereux de faire un achat sur internet ?

 

On vous rabâche que le « petit cadenas » (HTTPS) signifie que l’échange est sécurisé. Certes la confidentialité et l’intégrité des données durant l’échange client-serveur sont assurées par les technologies SSL/TLS qui permettent de se protéger notamment du sniffing. Mais est ce bien suffisant ? Ce « petit cadenas » doit-il nous donner une totale confiance dans le site ? La réponse est bien évidement non, une fois l’échange terminé les données sont stockées et accessibles en clair aux personnes — qu’elles soient malveillantes ou non — ayant accès à l’infrastructure hébergeant le site.

 

Richard Schwartz, qui a co-développé le concept d’Host-proof hosting nous résume le problème de la confiance en ces quelques mots : « Trust in web applications only extends as far as trust in whoever is hosting it », en français : « La confiance d’un utilisateur pour un applicatif web ne peut excéder la confiance qu’il a pour les gens qui l’hébergent ».

 

L‘Host-proof hosting permet de résoudre ce problème en chiffrant les données sensibles avec une clef connue uniquement par l’utilisateur. Tout le chiffrement est exécuté coté client avant l’envoi des données, les hébergeurs sont donc en possession de données chiffrées qu’ils sont incapables de déchiffrer sans que l’utilisateur ne leur fournisse la clef. De même les données retournées par le serveur sont déchiffrées coté client.

Host-Proof Hosting

 

La sécurité du procédé repose sur les algorithmes, la qualité et la longueur de clef choisie — ce qui reste un compromis entre sécurité, performance et praticité — mais sachez qu’avec de bons paramètres il faudra encore plusieurs milliers d’années pour venir à bout des algorithmes de cryptographie symétriques les plus courants AES, BLOWFISH, RC4 et rendre intelligible les données.

 

Passpack à mis à disposition des développeurs une API Javascript simple et efficace dédiée à la mise en place de ce modèle de sécurité, ça se passe ici.

 

Dans la réalité la sécurité du concept repose sur la qualité de sa mise en œuvre, il faut à tout prix empêcher à quiconque de pouvoir accéder à la clef personnelle d’un utilisateur. En général on a tendance à protéger le serveur des données arbitraires qu’il peut recevoir (injections SQL/PHP/XSS/… ), cependant dans le cas des applicatifs de type Host-proof nous allons aussi chercher à protéger le client puisque c’est lui qui reçoit la sacro-sainte clef. Deux catégories de vulnérabilités s’offrent à nous, celles où l’on attaque directement le client dans ce cas l’attaquant doit récupérer la clef personnelle ainsi que le couple login/mot de passe de sa victime et celles où l’on attaque le serveur. Dans ce cas l’attaquant doit avoir un accès au média où les données sensibles sont stockées ainsi que la clef de l’utilisateur à qui appartient les données.

 

Dans le premier cas c’est à la sécurité de l’environnement de scripting du navigateur — et sur ce point il est juste de s’interroger car ces environnements ne sont pas vraiment réputés pour être sans faille — que l’on va s’attaquer. On veillera ainsi à ce que l’applicatif client soit capable de vérifier lui même son intégrité grâce à une somme de contrôle — stockée sur un ou plusieurs serveurs tiers. Le but est ensuite de limiter les risques au maximum, il serait par exemple de bonne augure de veiller à ne pas stocker la clef en mémoire. Il faut être conscient que le risque-zéro n’existe pas, les Keylogger/Rootkits/Spyware/Phishings/… sont légions et que vous ne pouvez pas directement lutter contre. Il est donc nécessaire d’avertir au maximum l’utilisateur sur ces menaces afin qu’il ne place pas son entière confiance uniquement sur ce concept.

 

Dans le second cas, l’attaquant a déjà réussi à prendre le contrôle du serveur web — tout du moins assez pour pouvoir modifier le contenu qu’il renvoie — et il a aussi accès aux données sensibles — vous pouvez prendre le cas d’un admin malveillant — tout ce qu’il manque à l’attaquant c’est la clef correspondant aux données qu’il souhaite rendre intelligibles. Il doit donc modifier le comportement du site pour que ce dernier lui renvoie la clef lorsque l’utilisateur la saisit soit en modifiant le code HTML — ajout d’un formulaire par exemple — soit en modifiant le code de l’applicatif client. La protection la plus efficace reste la mise en place d’un simple contrôle d’intégrité et de comportement de la page réalisé avec par une machine tierce en continu pour remonter une alerte en temps réel et stopper le service ce qui limite drastiquement les risques de transmission de données. On peut aussi imaginer un mécanisme demandant à l’utilisateur de vérifier lui-même l’intégrité du contenu. On essayera aussi de rendre aussi inintelligible que possible le lien entre les données et l’utilisateur à qui elles appartiennent. L’utilisation de mécanismes distribués permet de mitiger ce type de risque en demandant à l’attaquant de prendre le contrôle de plusieurs systèmes, ce qui se révèle rapidement impossible, qui plus est dans le cadre d’une solution ou la sécurité des données est au cœur des préoccupations.

 

Comment savoir si un site à mis en place une solution de type Host-proof hosting pour protéger mes données ? Ici pas de petit cadenas, à vous de vous faire votre idée et de faire confiance ou non à ce site. Premièrement, le site doit vous demander régulièrement une clef secrète puisqu’il ne la stocke pas, ensuite il va falloir aller voir directement au niveau des données échangées avec le serveur et vérifier que les données sensibles ne passent pas en clair — l’extension Firebug pour Firefox fera merveilleusement bien l’affaire.

 

Le concept est donc viable mais requiert que son implémentation ne laisse « aucune » chance à l’attaquant de récupérer la clef ce qui relève du domaine du possible — le nombre de principe permettant de mitiger suffisamment le risque étant assez élevé — mais demande un travail et une surveillance accrus de la sécurité car la moindre faille peut compromettre tout l’ensemble.

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *