Securite Logiciel
Securite Logiciel
SECURITE LOGICIEL
FILIERE : INFORMATIQUE
NIVEAU : MASTER 1
ANNEE ACADEMIQUE
2023/2024
SECURITE LOGICIEL
2|Page
SECURITE LOGICIEL
3|Page
SECURITE LOGICIEL
INTRODUCTION
Cependant quels sont les principes fondamentaux de la cryptographie, son évolution et son
impact sur la sécurité logicielle et un cas d’application ? pour répondre a cette question, Nous
commencerons par une exploration des origines de la cryptographie et des principes de base,
nous examinerons ensuite les vulnérabilités courantes des logiciels et les méthodes utilisées
pour protéger les systèmes d’information contre les attaques malveillantes.
4|Page
SECURITE LOGICIEL
I. FONDEMENT DE LA CRYPTOGRAPHIE
A. Généralités sur la cryptographie
1. Historique
La cryptographie est l’étude des messages secrets. Le terme « cryptographie » viens des mots
grecs anciens : kruptos qu’on peut traduire comme « secret » ou « caché » ; et graphein pour
« écriture ». Plus précisément, la cryptographie est l’étude des codes secrets, et non celle des
messages simplement voilés. Les origines de la cryptographie semblent remonter de 4000 ans.
On a trouvé sur une tombe égyptienne de cette époque, des inscriptions contenant des
hiéroglyphes modifiés, et il semblerait qu’on ait cherché par ces modifications à obscurcir le
sens des inscriptions. Quoi qu’il en soit, plusieurs indications archéologiques tendent à montrer
que les « écritures secrètes » sont en fait aussi anciennes que l’invention de l’écriture elle-
même.
5|Page
SECURITE LOGICIEL
6|Page
SECURITE LOGICIEL
Algorithmes asymétriques : elles utilisent une paire de clés publique et privée pour le
chiffrement et le déchiffrement. Comme exemple nous avons : RSA (Rivest Shamir
Adleman), DSA et ECC.
7|Page
SECURITE LOGICIEL
Fonction de hachage : elles sont utilisées pour assurer l’intégrité des données et
comprennent des algorithmes comme SHA-256 et MD5.
La sécurité logicielle est le domaine qui vise à protéger les logiciels contre les attaques
malveillantes, comme les virus, les vers, les trojans, les spywares, etc. La sécurité logicielle
implique des bonnes pratiques de développement, de test, de mise à jour et de maintenance des
logiciels, ainsi que l'utilisation de techniques de cryptographie pour chiffrer et authentifier les
données et les communications. La sécurité logicielle est importante pour assurer la
confidentialité, l'intégrité et la disponibilité des informations et des systèmes informatiques.
Elle permet aussi de prévenir les dommages financiers, juridiques ou réputationnels causés par
les cyberattaques.
1. Définition
Les vulnérabilités logicielles sont des faiblesses ou des erreurs dans les programmes ou les
systèmes informatiques qui permettent aux attaquants de porter atteinte à la sécurité, au
fonctionnement ou aux données de ces systèmes. Les vulnérabilités logicielles peuvent être
causées par des défauts de conception, de mise en œuvre ou d'utilisation des logiciels, et sont
souvent liées à des erreurs de programmation ou à de mauvaises pratiques. La gestion des
vulnérabilités logicielles consiste à identifier, évaluer, traiter et rapporter les failles de sécurité
dans les logiciels, et à appliquer les correctifs ou les mises à jour nécessaires pour les résoudre.
La gestion des vulnérabilités logicielles est importante pour protéger les informations et les
systèmes informatiques contre les cyberattaques, et pour prévenir les dommages financiers,
juridiques ou réputationnels qui peuvent en résulter.
8|Page
SECURITE LOGICIEL
Contrôle d’accès défaillant : Il s’agit d’une faiblesse qui permet aux attaquants d’accéder
à des ressources ou à des fonctionnalités qui ne leur sont pas autorisées, comme des
données sensibles, des comptes d’autres utilisateurs, des opérations administratives, etc.
Cette vulnérabilité peut être causée par une mauvaise conception ou une mauvaise
implémentation des mécanismes d’authentification, d’autorisation et de vérification des
droits d’accès. Pour la prévenir, il faut appliquer le principe du moindre privilège, utiliser
des jetons d’accès cryptés, vérifier les droits d’accès à chaque requête, etc.
Injection : Il s’agit d’une faiblesse qui permet aux attaquants d’injecter du code
malveillant dans une application web, en exploitant des entrées non validées ou non
filtrées. Le code injecté peut alors être exécuté par l’application web ou par un système
tiers, comme une base de données, un serveur web, un navigateur, etc. Cette vulnérabilité
peut entraîner la compromission, la corruption ou la fuite de données, le détournement
de sessions, la prise de contrôle de l’application ou du système, etc. Pour la prévenir, il
faut utiliser des requêtes paramétrées, des API sécurisées, des listes blanches d’entrées,
des fonctions d’échappement, etc.
Exposition de données sensibles : Il s’agit d’une vulnérabilité qui permet aux attaquants
d’accéder à des données sensibles stockées ou transmises par une application web,
comme des mots de passe, des numéros de carte de crédit, des informations personnelles,
etc. Cette vulnérabilité peut être causée par une mauvaise configuration de la sécurité,
un chiffrement insuffisant ou inexistant, un stockage inapproprié des données, une
suppression incomplète des données, etc. Pour la prévenir, il faut chiffrer les données au
repos et en transit, utiliser des algorithmes et des protocoles de chiffrement robustes, ne
pas stocker les données sensibles inutilement, supprimer les données sensibles de
manière sécurisée, etc.
Sécurité des API défaillante : Il s’agit d’une vulnérabilité qui permet aux attaquants
d’exploiter les faiblesses des interfaces de programmation d’applications (API) exposées
par une application web, comme les API REST, SOAP, GraphQL, etc. Ces API peuvent
être utilisées pour accéder aux données ou aux fonctionnalités de l’application web, mais
aussi pour interagir avec d’autres systèmes ou services. Cette vulnérabilité peut être
causée par une mauvaise conception ou une mauvaise implémentation des mécanismes
de sécurité des API, comme l’authentification, l’autorisation, la validation des entrées,
la gestion des erreurs, etc. Pour la prévenir, il faut utiliser des standards et des Framework
9|Page
SECURITE LOGICIEL
de sécurité des API, documenter et tester les API, appliquer le principe du moindre
privilège, limiter le nombre de requêtes, etc.
Mauvaise configuration de la sécurité : Il s’agit d’une vulnérabilité qui permet aux
attaquants d’exploiter les erreurs ou les omissions dans la configuration de la sécurité
d’une application web ou de ses composants, comme les serveurs, les bases de données,
les Framework, les bibliothèques, etc. Cette vulnérabilité peut être causée par des
paramètres de sécurité par défaut, des mots de passe faibles ou codés en dur, des services
ou des ports inutiles, des mises à jour ou des correctifs manquants, etc. Pour la prévenir,
il faut suivre les guides et les recommandations de sécurité, utiliser des outils d’analyse
de la configuration, appliquer les mises à jour et les correctifs, désactiver ou supprimer
les services ou les ports inutiles, etc.
Cross-Site Scripting (XSS) : Il s’agit d’une vulnérabilité qui permet aux attaquants
d’injecter du code JavaScript malveillant dans une page web, en exploitant des entrées
non validées ou non filtrées. Le code injecté peut alors être exécuté par le navigateur du
visiteur de la page web, ce qui peut entraîner le vol de cookies, de jetons ou de
données, le détournement de sessions, la redirection vers des sites malveillants,
l’affichage de contenu frauduleux, etc. Pour la prévenir, il faut utiliser des fonctions
d’échappement, des listes blanches d’entrées, des en-têtes de sécurité, des politiques de
sécurité du contenu, etc.
Utilisation de composants vulnérables : Il s’agit d’une vulnérabilité qui permet aux
attaquants d’exploiter les faiblesses des composants tiers utilisés par une application
web, comme les bibliothèques, les Framework, les modules, les plugins, etc. Ces
composants peuvent contenir des vulnérabilités connues ou inconnues, qui peuvent
affecter la sécurité ou le fonctionnement de l’application web. Cette vulnérabilité peut
être causée par un manque de contrôle ou de suivi des composants utilisés, des versions
obsolètes ou non mises à jour, des dépendances inutiles ou non sécurisées, etc. Pour la
prévenir, il faut utiliser des outils d’analyse des dépendances, appliquer les mises à jour
et les correctifs, supprimer les composants inutiles ou non sécurisés, vérifier la fiabilité
des sources, etc.
Violation de la gestion des sessions : Il s’agit d’une vulnérabilité qui permet aux
attaquants d’accéder à des sessions actives ou inactives d’autres utilisateurs, en
exploitant les faiblesses des mécanismes de gestion des sessions d’une application web.
Les sessions sont des moyens de maintenir l’état et l’identité des utilisateurs lorsqu’ils
10 | P a g e
SECURITE LOGICIEL
interagissent avec une application web. Cette vulnérabilité peut être causée par une
génération, un stockage, un transport ou une invalidation inappropriés des identifiants
de session, comme les cookies, les jetons, les URL, etc. Pour la prévenir, il faut utiliser
des identifiants de session aléatoires, uniques, cryptés et à durée de vie limitée, utiliser
des canaux sécurisés pour transmettre les identifiants de session, invalider les
identifiants de session après la déconnexion ou l’expiration, etc.
Sécurité insuffisante du chiffrement : Il s’agit d’une vulnérabilité qui permet aux
attaquants de compromettre le chiffrement utilisé par une application web pour
protéger les données ou les communications, en exploitant les faiblesses des
algorithmes, des protocoles, des clés ou des certificats de chiffrement. Le chiffrement
est une technique qui consiste à transformer les données en un format illisible, sauf
pour ceux qui possèdent la clé ou le certificat approprié. Cette vulnérabilité peut être
causée par l’utilisation d’algorithmes ou de protocoles de chiffrement obsolètes, faibles
ou non standardisés, l’utilisation de clés ou de certificats de chiffrement faibles, codés
en dur, compromis ou expirés, l’absence de chiffrement pour certaines données ou
communications, etc. Pour la prévenir, il faut utiliser des algorithmes et des protocoles
de chiffrement robustes, standardisés et à jour, utiliser des clés ou des certificats de
chiffrement forts, aléatoires, cryptés et à durée de vie limitée, chiffrer toutes les
données sensibles au repos et en transit, vérifier la validité et la fiabilité des clés ou des
certificats de chiffrement, etc.
Journalisation et surveillance insuffisantes : Il s’agit d’une vulnérabilité qui permet aux
attaquants de mener des attaques contre une application web sans être détectés, en
exploitant le manque ou la faiblesse des mécanismes de journalisation et de
surveillance des activités ou des événements de l’application web. La journalisation et
la surveillance sont des techniques qui consistent à enregistrer, stocker, analyser et
alerter sur les informations relatives au fonctionnement, à la performance ou à la
sécurité d’une application web. Cette vulnérabilité peut être causée par l’absence ou
l’insuffisance de journaux ou de systèmes de surveillance, le manque de détails ou de
cohérence dans les journaux, le stockage ou la protection.
11 | P a g e
SECURITE LOGICIEL
La protection des logiciels est le processus qui consiste à sécuriser les logiciels contre les
attaques malveillantes, les erreurs, les failles ou les détournements. Il existe différentes
méthodes de protection des logiciels, selon le type de logiciel, le niveau de sécurité souhaité et
les menaces potentielles. Voici quelques exemples de méthodes de protection des logiciels :
La protection par le droit d'auteur : elle permet de protéger le contenu du logiciel, c'est-
à-dire le code source, les images, les sons, les textes, etc. Elle donne au créateur du
logiciel le droit exclusif d'autoriser ou d'interdire l'utilisation, la reproduction, la
modification ou la distribution de son œuvre. Elle est automatique et ne nécessite pas
de formalité particulière.
La protection par le brevet : elle permet de protéger l'invention technique découlant du
logiciel, c'est-à-dire la fonctionnalité, le principe ou le procédé mis en œuvre par le
logiciel. Elle donne au titulaire du brevet le droit exclusif d'exploiter son invention ou
d'autoriser des tiers à le faire. Elle nécessite de déposer une demande de brevet auprès
d'un office compétent et de respecter des critères de brevetabilité, tels que la nouveauté,
l'activité inventive et l'application industrielle.
La protection par la signature numérique : elle permet de garantir l'authenticité,
l'intégrité et la non-répudiation du logiciel. Elle consiste à apposer sur le logiciel une
empreinte cryptographique, générée à partir d'une clé privée, qui peut être vérifiée à
12 | P a g e
SECURITE LOGICIEL
l'aide d'une clé publique. Elle permet de s'assurer que le logiciel provient bien de son
éditeur et qu'il n'a pas été altéré ou falsifié.
La protection par l'obfuscation : elle permet de rendre le code source du logiciel difficile
à lire, à comprendre et à modifier. Elle consiste à appliquer des techniques de
transformation, de brouillage ou de masquage du code, telles que le changement de
noms de variables, l'ajout de code inutile, la modification de la structure du code, etc.
Elle vise à dissuader ou à ralentir les tentatives de reverse engineering, de piratage ou
de copie du logiciel.
La protection par le chiffrement : elle permet de rendre le contenu du logiciel illisible
sans une clé de déchiffrement. Elle consiste à appliquer un algorithme de chiffrement,
qui transforme le contenu du logiciel en une suite de caractères aléatoires, qui ne peut
être restaurée qu'avec la clé correspondante. Elle vise à empêcher l'accès non autorisé,
la divulgation ou la modification du logiciel.
La protection par la licence : elle permet de définir les conditions d'utilisation, de
distribution et de modification du logiciel. Elle consiste à établir un contrat entre
l'éditeur du logiciel et l'utilisateur ou le distributeur, qui précise les droits et les
obligations de chacun. Elle peut être de différents types, tels que la licence propriétaire,
la licence libre, la licence open source, etc.
La sécurité dans le développement logiciel est très importante, car elle permet de protéger les
logiciels contre les attaques malveillantes, les erreurs, les failles ou les détournements. Un
logiciel non sécurisé peut compromettre la confidentialité, l'intégrité et la disponibilité des
données, ainsi que la réputation et la performance de l'organisation qui le développe ou qui
l'utilise. La sécurité dans le développement logiciel peut également réduire les coûts et les délais
liés à la correction des vulnérabilités, qui sont plus difficiles et plus chères à résoudre si elles
sont découvertes tardivement. Pour intégrer la sécurité dans le développement logiciel, il existe
plusieurs méthodes et bonnes pratiques, tels que :
13 | P a g e
SECURITE LOGICIEL
ISO 27001 : il s’agit d’une norme internationale de sécurité de l’information qui fournit
un cadre pour la gestion des informations sensibles au sein d’une entreprise.
NIST SP 800-53 et NIST SP 800-171 : ce sont des normes publiées par l’institut national
des normes et de la technologie(NIST) aux Etats-Unis, fournissant des lignes directrices
pour sécuriser les systèmes d’informations.
NIST CSF : un autre cadre publier par le NIST, le cadre de cyber sécurité (CSF) fournit
des conseils sur la manière dont les organisations peuvent évoluer et améliorer leur
capacité à prévenir, détecter et répondre aux cyberattaques
Série ISO 27000 : cette série comprend diverses normes relatives aux systèmes de
gestion de la sécurité de l’information, ISO 27001 étant la plus importante.
ISO 27002 : cette norme fournit des lignes directives et des meilleurs pratiques pour la
gestion de la sécurité de l’information au sein d’une organisation
14 | P a g e
SECURITE LOGICIEL
Ces normes et certifications jouent un rôle crucial dans le développement et la maintenance des
systèmes logiciels avec une forte orientation vers la sécurité.
Les exigences réglementaires pour les logiciels sécurisés peuvent varier selon le domaine
d'application, le pays ou la région, et le niveau de risque associé au logiciel. En général, les
logiciels sécurisés doivent respecter les principes suivants :
- Intégrer la sécurité dès la conception, en tenant compte des menaces potentielles, des
besoins des utilisateurs et des bonnes pratiques du secteur.
- Effectuer des tests de sécurité réguliers et rigoureux tout au long du cycle de vie du logiciel,
en utilisant des méthodes et des outils appropriés.
- Fournir une assistance en matière de sécurité et des mises à jour logicielles aux utilisateurs
finaux, en les informant des vulnérabilités connues et des mesures correctives.
- Respecter les normes et les cadres de référence reconnus en matière de cyber sécurité, tels
que l'ISO/IEC 27001, qui définit les exigences pour la mise en place d'un système de
management de la sécurité de l'information (SMSI).
C. Sécurité quantique
1. Définition
La sécurité quantique est un domaine qui étudie comment protéger les données et les
communications contre les menaces potentielles des ordinateurs quantiques, qui sont
capables de briser les méthodes de chiffrement classiques . La sécurité quantique utilise des
principes de la physique quantique, tels que la superposition, l’intrication et
15 | P a g e
SECURITE LOGICIEL
2. Fonctionnement
La sécurité quantique repose sur l’utilisation des propriétés de la physique quantique pour
protéger les données et les communications contre les attaques des ordinateurs quantiques. Les
ordinateurs quantiques sont des machines capables d’effectuer des calculs beaucoup plus
rapides et plus puissants que les ordinateurs classiques, en exploitant des phénomènes comme
la superposition et l’intrication. Ces phénomènes permettent aux particules quantiques, comme
les photons ou les électrons, d’exister dans plusieurs états à la fois, et d’être liés entre eux même
à distance.
La sécurité quantique utilise ces propriétés pour créer des protocoles de cryptographie qui sont
résistants aux attaques quantiques, c’est-à-dire qu’ils ne peuvent pas être cassés par un
ordinateur quantique, même en théorie. Il existe deux types principaux de sécurité quantique :
la cryptographie post-quantique (PQC) et la distribution de clés quantiques (QKD).
La PQC est basée sur les mathématiques, et utilise des algorithmes qui sont difficiles à résoudre
même pour les ordinateurs quantiques. Par exemple, certains algorithmes PQC se basent sur
des problèmes de théorie des codes, de géométrie algébrique ou de théorie des nombres. La
PQC est compatible avec les systèmes de communication actuels, et peut être implémentée par
des logiciels ou des puces spéciales. La PQC est encore en cours de développement, et plusieurs
candidats sont en compétition pour devenir les standards de demain.
La QKD est basée sur la physique, et utilise des particules quantiques, comme des photons
polarisés, pour transmettre des clés secrètes entre deux parties. La QKD garantit que la
transmission des clés est sécurisée, car toute tentative d’interception ou de mesure des particules
quantiques entraîne une modification de leur état, qui peut être détectée par les parties légitimes.
La QKD nécessite des équipements spécifiques, comme des lasers, des détecteurs ou des fibres
optiques, et a des limites de distance et de débit. La QKD est déjà disponible commercialement,
et plusieurs projets pilotes ont été lancés dans le monde.
16 | P a g e
SECURITE LOGICIEL
Voici quelques exemples de domaines où la cryptographie est utilisée pour assurer la sécurité
des données et des communications :
17 | P a g e
SECURITE LOGICIEL
Figure 4:illustrations
Il existe de nombreux logiciels qui utilisent la cryptographie pour sécuriser les données et les
communications. Voici quelques exemples :
18 | P a g e
SECURITE LOGICIEL
Le chiffrement contribue à protéger les données sur votre appareil afin qu’il soit accessible
uniquement par des individus autorisés.
Si vous perdez par exemple votre ordinateur mais que vous l’avez auparavant protégé avec
BitLocker, vos données personnelles sont en sécurité : elles ne pourront pas être récupérées ni
utilisées par des personnes malveillantes. Sans le mot de passe de déverrouillage, impossible
pour quiconque d’accéder au contenu d’un disque chiffré avec BitLocker.
Nous allons voir comment activer et configurer BitLocker afin de chiffrer un disque sur
Windows. Cela peut être un disque système (celui sur lequel Windows est installé), un autre
disque physique (disque dur, SSD, clé USB…) ou bien un disque virtuel (VHD)
19 | P a g e
SECURITE LOGICIEL
20 | P a g e
SECURITE LOGICIEL
Figure 8:execution
21 | P a g e
SECURITE LOGICIEL
22 | P a g e
SECURITE LOGICIEL
Figure 12:presentation
Si vous devez utiliser votre lecteur sur une ancienne version de Windows (c’est surtout le cas
avec les lecteurs amovibles), préférez l’ancien mode de chiffrement AES-CBC (mode de
chiffrement par blocs cipher block chaining).
Vous pouvez aussi faire un clic droit sur le lecteur à chiffrer dans l’Explorateur de fichiers et
sélectionner Activer BitLocker.
24 | P a g e
SECURITE LOGICIEL
Figure 14:verification
Test
25 | P a g e
SECURITE LOGICIEL
Figure 16: message d'erreur lors de la copie d'un documents sans s'être authentifier
26 | P a g e
SECURITE LOGICIEL
CONCLUSION
La cryptographie est une science qui permet de protéger les données et les communications
contre les attaques malveillantes. Elle repose sur l'utilisation de clés, d'algorithmes et de
protocoles de chiffrement, d'authentification et de hachage. Elle est utilisée dans de nombreux
domaines, comme la banque, le réseau, la propriété intellectuelle ou la sécurité des
communications. Elle est indispensable pour garantir la confidentialité, l'intégrité, la
disponibilité et la non-répudiation des informations. La sécurité logicielle en cryptographie
consiste à concevoir, développer, tester et maintenir des logiciels qui utilisent la cryptographie
de manière correcte et efficace. Elle implique de respecter des principes, des normes et des
bonnes pratiques, comme le choix des algorithmes, la gestion des clés, la vérification des
sources, la protection contre les failles ou les attaques, ou encore la sensibilisation des
utilisateurs. La sécurité logicielle en cryptographie est un enjeu majeur pour la société
numérique, car elle conditionne la confiance et la sécurité des échanges d'informations.
Elle nécessite une collaboration entre les acteurs du domaine, comme les chercheurs, les
développeurs, les éditeurs, les autorités ou les utilisateurs. Elle doit aussi s'adapter aux
évolutions technologiques, comme le cloud, l'intelligence artificielle ou la blockchain, qui
offrent de nouvelles opportunités mais aussi de nouveaux défis pour la cryptographie.
27 | P a g e
SECURITE LOGICIEL
Bibliographie
Bibliographie
Webographie
28 | P a g e