Premiers pas avec la sécurité

Introduction de haut niveau à la sécurité de l’information

C’est un instinct humain de base d’évaluer le risque et d’accepter ou de prendre une certaine mesure face à ce risque. C’est l’essence de la sécurité, qui est le corps de connaissances qui fournit un cadre autour de cet instinct.

La sécurité définit trois concepts clés dans un paradigme triangulaire : la confidentialité, l’intégrité et la disponibilité (le paradigme de la CIA).

Bien qu’il soit courant pour la société de croire que la sécurité consiste simplement à protéger la confidentialité, en tant que développeur, rien n’est fait qui ne relève quelque part de la bannière de la sécurité. Par exemple, le code est écrit pour ajouter des fonctionnalités au logiciel (disponibilité), pour protéger les informations d’identification (confidentialité) ou pour garantir que la plus simple des fonctions produit une sortie cohérente et correcte (intégrité).

Les trois concepts sont assez souvent opposés par leur nature. Imaginez rendre les informations d’une entreprise disponibles via un extranet. Cette disponibilité ouvre des vecteurs d’attaque qui pourraient compromettre la confidentialité des données. De même, une entreprise avec des exigences de confidentialité onéreuses entravera la volonté de l’entreprise de mettre les données à la disposition des clients et des partenaires. Ou peut-être voulaient-ils que les données soient rendues disponibles si rapidement que le développement du site a été précipité et a entraîné des fuites de données entre les utilisateurs - un manque d’intégrité des données.

Suite à cela, quiconque ou quoi que ce soit qui fait développer un logiciel a des valeurs CIA différentes. Imaginez qu’un site Web de vente au détail puisse privilégier la disponibilité plutôt que l’intégrité ou la confidentialité, tandis qu’une banque privilégiera probablement la confidentialité plutôt que la disponibilité et l’intégrité. Cela ne veut pas dire que tous ne sont pas évalués dans chaque cas, mais que chaque scénario comporte des pondérations différentes de ces valeurs en fonction des risques sous-jacents.

Dans le monde réel, la triade CIA est souvent complétée par jusqu’à 3 autres facteurs, constituant l’hexade de Parker : possession ou contrôle, authenticité et utilité, et pour les modèles transactionnels, non-répudiation. Donc, comme vous pouvez le voir, il n’y a pas de modèle simple qui s’adapte à tous les scénarios.

En tant que développeur, une “bonne sécurité” consiste à connaître le bon équilibre entre ce qui est protégé et comment le protéger, et cela est très différent en fonction du type de données impliquées et des problèmes que le logiciel résout.

Introduction

La sécurité est un domaine très général et vaste, et touche tous les aspects du développement, du déploiement, du support, entre autres domaines. Selon le (ISC)2, il y a 10 domaines, et incluent la sécurité physique, en plus des aspects “logiciels”. L’objectif de la sécurité de l’information est de protéger la confidentialité, l’intégrité et la disponibilité de l’information. Divers professionnels de la sécurité ont également ajouté d’autres aspects à ces attributs, mais en général, ceux-ci semblent être les plus populaires. Un autre aspect de la sécurité est que la mesure de protection d’un élément d’information ne doit pas coûter plus cher que la valeur de l’information protégée.

Au début

Lors de la conception, l’architecte doit examiner quelles parties du système nécessitent un accès restreint et quelles parties peuvent être moins protégées. Par exemple, tout le monde peut avoir un accès en lecture à la page Web publique de l’entreprise, mais seules les personnes autorisées peuvent modifier le contenu.

Pour aider aux décisions à prendre et détecter les faiblesses dans la conception, un modèle de menace doit être créé comme documenté par exemple [ici à l’OWASP][1]. Un tel modèle de menace est inestimable lors de la conception d’une application sécurisée car il met en lumière différentes perspectives du système en cours de développement, comme les actifs en question, les niveaux de confiance, les points d’entrée et les flux de données. Ainsi, vous pouvez facilement repérer les faiblesses et les scénarios d’attaque possibles pour votre application.

Un modèle de menace est également utilisé par les pentesters et les pirates informatiques sérieux dans la première phase d’un test ou d’une attaque : collecter des informations et les assembler pour détecter d’éventuelles faiblesses.

[1] : https://www.owasp.org/index.php/Application_Threat_Modeling