Sécurité – Petit glossaire pour développeurs timides

Selon leur caractère, les gens réagissent de 3 façons bien différentes face à un mot qu’ils ne comprennent pas :
- ils acquiescent d’un signe de tête avec un air de « je comprends, je suis d’accord » sur le visage, espérant toutefois qu’ils ne seront pas repérés
- ils font semblant de rechercher un truc, de recevoir un appel extrêmement urgent, d’avoir vu un spécimen d’une espèce éteinte de mouche
- ils demandent simplement le sens du mot
Ce billet est pour ceux qui ont toujours voulu savoir ce qui se cachait derrière ce jargon qu’on entend à chaque discussion portant sur la sécurité applicative sans jamais avoir osé poser de question.
Comme vous lisez cet article, vous êtes timide (titre oblige). Je vais donc expliquer les concepts de sécurité de l’information par analogie avec quelque chose que vous connaissez forcément bien : les sites de rencontres. Nous étudierons ici le cas d’un site bien particulier : Rencontric.
Note : ce post est amené à être modifié. Je vous conseille donc de développer un script qui viendra quotidiennement récupérer cette page et comparer le hash de la version du jour à celui de la version de la veille pour savoir s’il y a du nouveau (ou vous pouvez visiter la page régulièrement, ça marche aussi).
Les bases
Identification : Action de demander l’identité d’une personne (c.-à-d. qui elle est).
Quand vous rencontrez quelqu’un, vous lui demandez son prénom : vous l’identifiez. C’est purement déclaratif, vous ne vérifiez pas si c’est vrai, mais ça facilite la discussion.
Authentification : Action de vérifier/confirmer l’identité de quelqu’un.
Vous trouvez LE profil. C’est presque trop beau pour être vrai. Vous remarquez cependant que votre âme sœur déclare travailler dans la même boîte que votre meilleure amie, en qui vous avez totalement confiance et qui ne ment jamais. Vous rencontrez cette dernière et elle vous répond : «Je connais bien Dominique… C’est bien son profil ! » Bravo, vous avez authentifié la personne de vos rêves.
Note : Identification vs Authentification : mais alors, quelle est la différence ?
Ces deux procédés diffèrent dans le degré de confiance qu’ils apportent. On peut considérer qu’on a besoin d’identifier les personnes sans s’assurer de qui elles sont vraiment. Par exemple, lors d’une soirée speed-dating Rencontric, les participants ont besoin de connaître les noms des autres pour faciliter la discussion. La relation reste cependant superficielle et personne n’a besoin de savoir qu’il n’a pas affaire à un(e) mythomane. En revanche, lorsque l’on parle mariage, l’Etat Civil a besoin de savoir qui les heureux utilisateurs Rencontric sont vraiment. On leur demande alors de prouver leur identité en fournissant différents documents (actes de naissances, cartes d’identité, etc.). L’Etat Civil authentifie les personnes.
Autorisation : droit qu’une personne à faire quelque chose.
Votre meilleur ami a le droit de poster des commentaires élogieux sur votre profil public alors que votre rival ne pourra pas. Rencontric doit vous permettre de donner des droits particuliers à certains utilisateurs et vérifier ces droits quand c’est nécessaire.
CIA (a.k.a La Triade)
C’est le cœur de la sécurité informatique. Les experts en sécurité de Rencontric doivent s’assurer que le système d’information garantit que l’information qui y circule possède ces qualités.
Confidentialité : certaines informations ne sont pas faites pour être connues de tous. La confidentialité est le caractère « privé » d’une information.
Sur Rencontric, vous pouvez partager vos photos. Seulement, certaines photos peuvent aller sur votre profil public, certaines sont clairement réservées à ceux avec qui vous avez développé une relation plus profonde. Elles sont confidentielles. Les ingénieurs de Rencontric doivent s’assurer que seules les personnes autorisées puissent les voir. Ils garantissent la confidentialité des photos.
Intégrité : L’intégrité de l’information est la garantie qu’elle n’a pas été altérée accidentellement ou par quelqu’un n’ayant pas le droit de le faire.
Lorsque Dominique, votre âme sœur, consultera votre profil, vous voulez être certain(e) que cette description travaillée de vous-même que vous avez mis tant de temps à rédiger (à la 3ème personne en plus) est celle qui apparaîtra, et non une description grotesque saisie par un rival jaloux à votre place.
Disponibilité (Availability) : une information n’a de valeur que si elle est accessible lorsque l’on en a besoin : Elle doit être disponible à tout moment.
L’ingénieur sécurité de Rencontric s’assure que lorsque Dominique ouvre votre fiche-profil, la base de données peut fournir le contenu.
Traçabilité
En sécurité, on se concentre beaucoup sur l’aspect « préventif ». Garder la triade en tête lorsque l’on évalue la sécurité d’un système est primordial mais ça ne doit pas faire l’objet de toute notre attention. Une bonne sécurité est aussi punitive curative.
Chez Rencontric, on garde un enregistrement (une trace) de toutes les modifications faites sur tous les profils et de qui en est l’auteur. C’est très important ! Si votre rival a défiguré votre page de présentation, il sera banni et ne pourra plus recommencer – ce qui améliorera la sécurité du site.
Autres Concepts
Non-répudiation : C’est la possibilité de vérifier que l’émetteur/récepteur est bien celui qui prétend avoir émis/reçu le message. L’émetteur ne peut pas nier avoir émis info, récepteur ne peut nier l’avoir reçue.
Sur Rencontric, les demandes de ban sont prise très au sérieux. Pour en envoyer une, il faut composer un code qui nous est envoyé par SMS. Ce faisant, les experts sécurité de Rencontric s’assurent que les émetteurs de demandes de ban ne peuvent nier les avoir envoyées.
Faille : voir Vulnérabilité
Vecteur d’attaque : moyen par lequel un attaquant peut vous nuire.
Pour liker et disliker quelqu’un sur Rencontric, il faut faire partie de son cercle. Vous aimeriez diminuer la note d’un rival, mais vous n’êtes pas dans son cercle. Vous utilisez donc un des membres de son cercle qui vous a une dette envers vous pour qu’il le dislike pour vous. L’intermédiaire est ici le vecteur d’attaque.
Menace : problème de sécurité qui peut se poser quand les conditions sont réunies. C’est la carie dans la phrase « si tu ne brosses pas tes dents, tu vas avoir des caries !».
Chez Rencontric, vous avez la possibilité d’activer le mode sélectif. Dans ce cas, vous exigez un nombre minimum de « Likes » sur les profils qui peuvent vous aborder. Si vous n’activez pas le mode sélectif, vous pourriez bien vous trouver harcelé(e) par Claude qui possède l’impressionnant palmarès de 350 dislikes pour 1 like (donné par sa maman qui n’avait pas compris le but du site).
Risque : Probabilité que quelque chose d’imprévu se produise. C’est le ratio menace/vulnérabilité.
Vous savez que Claude rôde sur Rencontric. Cependant, vous faites partie des profils « Nice People », comme 70 000 autres adhérents. Vous considérez que le risque de se faire ennuyer par Claude est faible. En revanche, Alex, votre partenaire d’arme, vient de passer « Beautiful People », un club très fermé qui compte actuellement seulement 30 membres. Le risque est plus grand dans son cas…
Vulnérabilité : voir Faille
Impact : conséquences possibles d’une attaque
Lorsque votre ratio dislike/like est supérieur à 351, vous êtes banni du site. Claude est sur la tangente: si vous arrivez à le faire disliker par quelqu’un de son cercle, il ne trouvera jamais l’âme sœur (impact fort)
Vulnérabilité : attirance incontrôlée pour les partenaires abusifs
Principe de séparation des privilèges : principe qui consiste à donner par défaut le moins de droits possible aux consommateurs d’un service protégé (comprendre seulement les droits nécessaires à son bon fonctionnement).
Un nouvel utilisateur Rencontric n’a que peu de liberté d’action à la base… En fait, il ne peut que créer un profil et répondre aux messages qu’on lui envoie. Ça l’empêche de faire des erreurs qui pourraient nuire aux autres (dislikes accidentels, etc.) et au bon fonctionnement du site en général.
Liste blanche (white list) : liste de ceux qui sont autorisés à faire quelque chose.
Sur Rencontric, vous voulez que personne ne puisse voir les messages que vous envoient vos admirateurs en privé. Ceci dit, vous aimeriez que, lorsque vous êtes en vacances dans le Larzac sans connexion internet, votre meilleure amie et votre maman puissent répondre à votre place aux messages de Dominique. Vous devez donc lister les rares personnes autorisées à voir vos messages privés et à y répondre.
Liste Noire (black list) : liste de ceux qui n’ont pas le droit de faire quelque chose.
Sur Rencontric, vous voulez que tout le monde puisse trouver votre fiche profil, exception faite de quelques individus (qui a parlé de Claude ?). Ceux-ci sont placés dans votre liste noire.
Liste noire ou liste blanche ? Tout dépend du scénario. En général, on fait en sorte que la liste soit la moins longue possible (il est évident qu’il est plus simple d’autoriser quelques personnes à consulter vos messages que de lister les 7 000 000 d’utilisateurs qui ne peuvent pas) tout en veillant à respecter le principe de séparation des privilèges.
Vulnérabilité (oui, il y a une vraie définition) : bug dans un programme ou système qui l’expose à une attaque qui, si elle réussit, permettra à l’assaillant de le détourner de son utilisation normale (typiquement faire quelque chose qu’il n’a pas le droit de faire).
Vous êtes méfiant(e) par nature, mais si une personne vous like, vous lui faites instantanément confiance et vous vous sentez obligé(e) de tout faire pour lui faire plaisir. C’est votre vulnérabilité : si quelqu’un se rend compte de votre fonctionnement, il pourra s’en servir pour vous faire faire des choses que vous ne souhaitez pas faire (comme donner le dislike fatal à Claude).
Exploitabilité : facilité avec laquelle on utilise une technique offensive. Une attaque est facile lorsque peu de choses sont nécessaires à l’attaque (ex : si un navigateur web suffit) et difficile lorsqu’il faut de solides compétences (réseau, programmation, etc.) pour l’implémenter.
Après avoir porté malgré vous le coup de grâce à Claude (qui a fini chez le concurrent Adapt), vous n’acceptez plus de nouvelles personnes dans votre cercle. Par conséquent, plus personne ne peut vous liker et vous gardez votre contrôle en toute situation. Votre vulnérabilité est devenue très difficile à exploiter (exploitabilité faible).
Exploit : procédé / programme / système par lequel on peut tirer avantage d’une vulnérabilité pour obtenir des droits / informations qu’on n’est pas supposé avoir.
Détectabilité (detectability, discoverability): facilité avec laquelle on peut trouver la faille. Une faille à détectabilité élevée se trouve facilement.
Si vous ouvrez un profil ou une personne se présente comme étant enseignante alors qu’elle est masseuse, il vous sera difficile de savoir qu’elle ment. Si en revanche, elle déclare être avocat-médecin-Prix-Nobel et qu’elle dit dormir -2 heures par nuit, vous serez en alerte rouge et la suspecterez d’être mythomane compulsive. Dans le premier cas, la détectabilité du mensonge est faible. Dans le second, elle est élevée.
Prévalence : Pourcentage d’une population présentant un caractère spécifique. On peut en quelque sorte parler de fréquence. En sécurité, on utilise ce terme pour montrer le caractère plus ou moins commun d’une vulnérabilité.
79% des usagers de Rencontric souffrent du syndrome du canal carpien. 79% est la mesure de la prévalence de ce syndrome chez les Rencontriquiens.
Défense en profondeur : principe consistant à protéger le système à chaque couche qui le constitue.
Vous avez écrit LE guide du online dating. Ce document très précieux suscite les convoitises de bien des gens, pas tous bien intentionnés. Vous vous devez de le protéger des mains diaboliques de certains. Vous le sauvegardez donc sur un portable, protégé par mot de passe, que vous enfermez dans un coffre à code, dans une pièce fermée à clé possédant une serrure trois points. C’est de la défense en profondeur. Pour qu’un attaquant puisse accéder au contenu confidentiel (le document), il doit passer la sécurité de chaque niveau de protection (la serrure de la pièce, le code du coffre, le mot de passe du portable, etc.).