« L'intelligence artificielle en cybersécurité » : différence entre les versions

De Wiki Campus Cyber
Aller à :navigation, rechercher
(Page créée avec « {{Commun |Name=GT IA ET CYBERSECURITE CAS D’USAGE DE L’INTELLIGENCE ARTIFICIELLE EN CYBERSECURITE |Status=0 }} = PARTIE 1 - LES APPORTS DE L’IA EN CYBERSECURITE = ==1. Présentation de l’IA ? == L’Intelligence Artificielle est un « ensemble de théories et de techniques mises en œuvre en vue de réaliser des machines capables de simuler l'intelligence humaine » . Elle comprend deux grandes familles : l’IA symbolique et l’IA numérique, qui on... »)
 
Aucun résumé des modifications
Ligne 8 : Ligne 8 :
L’Intelligence Artificielle est un « ensemble de théories et de techniques mises en œuvre en vue de réaliser des machines capables de simuler l'intelligence humaine » . Elle comprend deux grandes familles : l’IA symbolique et l’IA numérique, qui ont chacune connu des périodes de succès et des « hivers », ainsi que le montre le schéma ci-dessous représentant l’activité de ces deux familles depuis les années 50.  
L’Intelligence Artificielle est un « ensemble de théories et de techniques mises en œuvre en vue de réaliser des machines capables de simuler l'intelligence humaine » . Elle comprend deux grandes familles : l’IA symbolique et l’IA numérique, qui ont chacune connu des périodes de succès et des « hivers », ainsi que le montre le schéma ci-dessous représentant l’activité de ces deux familles depuis les années 50.  


[[Fileimage3.1.png|center|600px]]
[[File:image3.1.png|center|600px]]


=====L’IA symbolique=====
=====L’IA symbolique=====
Ligne 24 : Ligne 24 :
* L’exploitation ('''inférence''' ou Run en anglais) : quand on présente de nouvelles données au modèle obtenu par apprentissage, on va obtenir le résultat le plus probable pour les données entrées. On utilise donc des données du passé pour apprendre un modèle qu’on utilise sur des données du futur. On collecte en général au fil de l’eau ces données du futur et le résultat associé, et on le compare à ce qui se produit vraiment, mesurant ainsi l’erreur de prévision (on dit qu’il y a une erreur s’ils sont différents). On peut ensuite, à la fréquence qu’on le désire, relancer l’apprentissage du modèle en incorporant ces nouvelles données : on met ainsi en place une boucle de réapprentissage qui permet d’améliorer le modèle au cours du temps.
* L’exploitation ('''inférence''' ou Run en anglais) : quand on présente de nouvelles données au modèle obtenu par apprentissage, on va obtenir le résultat le plus probable pour les données entrées. On utilise donc des données du passé pour apprendre un modèle qu’on utilise sur des données du futur. On collecte en général au fil de l’eau ces données du futur et le résultat associé, et on le compare à ce qui se produit vraiment, mesurant ainsi l’erreur de prévision (on dit qu’il y a une erreur s’ils sont différents). On peut ensuite, à la fréquence qu’on le désire, relancer l’apprentissage du modèle en incorporant ces nouvelles données : on met ainsi en place une boucle de réapprentissage qui permet d’améliorer le modèle au cours du temps.


[[File:image3.2.png|center|400px]]
[[File:image3.2.png|center|600px]]


Les algorithmes d’apprentissage correspondent essentiellement à deux grandes approches :
Les algorithmes d’apprentissage correspondent essentiellement à deux grandes approches :

Version du 7 juillet 2022 à 09:57

PARTIE 1 - LES APPORTS DE L’IA EN CYBERSECURITE[modifier | modifier le wikicode]

1. Présentation de l’IA ?[modifier | modifier le wikicode]

L’Intelligence Artificielle est un « ensemble de théories et de techniques mises en œuvre en vue de réaliser des machines capables de simuler l'intelligence humaine » . Elle comprend deux grandes familles : l’IA symbolique et l’IA numérique, qui ont chacune connu des périodes de succès et des « hivers », ainsi que le montre le schéma ci-dessous représentant l’activité de ces deux familles depuis les années 50.

Image3.1.png
L’IA symbolique[modifier | modifier le wikicode]

Les systèmes experts ont porté la croissance de l’IA en particulier dans les années 80 avant de décliner en raison des résultats décevants par rapport à la promesse initiale. Un système expert (aujourd’hui intitulé plus humblement un système d’aide à la décision) infère une décision en fonction de faits qui lui sont fournis en entrée et de règles modélisant l’expertise métier. L’avantage de tels systèmes réside dans la compréhension immédiate des décisions fournies, mais la difficulté à élaborer le modèle d’expertise et la maintenance nécessaire pour faire évoluer le système au cours du temps, rendent la mise en œuvre particulièrement complexe . Aujourd’hui, des méthodes hybrides , fondées sur le couplage des systèmes de règles et de techniques de Machine Learning, permettent d’envisager des systèmes d’aide à la décision beaucoup plus efficaces et résilients. Dans ces méthodes, l’expertise métier est modélisée au travers d’un ensemble de règles restreint ayant pour objectif d’encadrer la mise en œuvre des modèles générés par apprentissage automatique à partir des données disponibles. Elles visent donc à fournir au système les moyens de prendre des décisions à partir des données disponibles et également de traiter les cas complexes, critiques ou tout simplement qui ne s’expriment pas à travers l’analyse des données par le biais de la logique. Cela est particulièrement adapté pour les systèmes soumis à des contraintes de fiabilité ou dans des environnements limités en données disponibles ou tout simplement dans des cas où une situation particulière et transitoire se produit : par exemple, sur un site de recommandation, des règles liées aux campagnes marketing en cours ou aux stocks disponibles peuvent être définies pour filtrer les résultats produits par le modèle numérique qui seront effectivement mis en production.

Au début des années 90, une vision moins monolithique de l’IA voit le jour au travers d’une approche « à base d’agents ». Les systèmes multi-agents (SMA) permettent de répartir de façon totalement décentralisée un problème complexe sur l’ensemble des agents du système et de les faire collaborer ou coopérer pour obtenir la meilleure réponse possible par le biais de différents paradigmes organisationnels et de protocole de communication. Les systèmes multi-agents sont classiquement utilisés pour modéliser ou simuler des environnements naturellement distribués et en interaction, comme des comportements de populations, du trafic, des réseaux, des interactions humain/machine…. Chaque agent d’un SMA est qualifié d’autonome dans sa prise de décision et a un comportement propre. C’est par l’interaction des agents entre eux et éventuellement l’environnement, que le système global fait émerger une réponse au problème posé. Un agent peut être modélisé de façon explicite, comme par la mise en œuvre de règles ou de modèles cognitifs type BDI (Beliefs, Desires, Intentions), mais peuvent également exploiter des technologies de Reinforcement Learning voire de Machine Learning au niveau local ou organisationnel, on parle alors de SMA apprenants . Ce type de SMA a pour avantage d’être particulièrement adaptatif et évolutif aux interactions et aux modifications de l’environnement dans lequel il évolue.

L’IA numérique[modifier | modifier le wikicode]

Depuis 2012, et la supériorité écrasante des techniques deep learning à la conférence ImageNet , les techniques les plus répandues aujourd’hui, et notamment dans les applications industrielles, sont les techniques du Machine Learning (ou apprentissage automatique), , dont fait partie le deep learning. Ce sont d’ailleurs les techniques les plus utilisées dans les cas d’usage cybersécurité exploitant l’IA : dans toute la suite, quand nous parlerons d’IA, il s’agira donc de Machine Learning, sauf mention contraire.

La production d’une solution IA (par Machine Learning donc) se fait en deux étapes :

  • L’apprentissage (ou Build en anglais) : à partir d’un besoin exprimé le data scientist va collecter les données adaptées pour constituer un dataset d’apprentissage, puis sélectionner un algorithme d’apprentissage (très souvent dans une librairie open-source, comme par exemple scikit-learn ). A la fin de l’apprentissage, on obtient un modèle IA, i.e. un programme qui peut ensuite être utilisé : ce programme peut être dans n’importe quel langage informatique, le plus courant étant aujourd’hui python. Bien entendu, les données utilisées sont nécessairement des données du passé. On utilise aussi un dataset de validation, différent du dataset d’apprentissage, mais ayant la même structure, pour pouvoir comparer des modèles entre eux et choisir le meilleur. En général, on découpe aléatoirement l’ensemble de toutes les données disponibles en deux parties, par exemple 80% pour l’apprentissage et 20% pour la validation.
  • L’exploitation (inférence ou Run en anglais) : quand on présente de nouvelles données au modèle obtenu par apprentissage, on va obtenir le résultat le plus probable pour les données entrées. On utilise donc des données du passé pour apprendre un modèle qu’on utilise sur des données du futur. On collecte en général au fil de l’eau ces données du futur et le résultat associé, et on le compare à ce qui se produit vraiment, mesurant ainsi l’erreur de prévision (on dit qu’il y a une erreur s’ils sont différents). On peut ensuite, à la fréquence qu’on le désire, relancer l’apprentissage du modèle en incorporant ces nouvelles données : on met ainsi en place une boucle de réapprentissage qui permet d’améliorer le modèle au cours du temps.
Image3.2.png

Les algorithmes d’apprentissage correspondent essentiellement à deux grandes approches :

  • L’apprentissage supervisé : les données comprennent chacune une étiquette. Pour les algorithmes de classification c’est l’étiquette de classe (par exemple spam ou non-spam dans un système de classification d’emails). Pour les algorithmes de régression, c’est une étiquette numérique (par exemple le temps moyen entre défaillances). L’apprentissage va avoir pour but de réduire l’erreur sur le dataset d’apprentissage  : on fait passer l’un après l’autre les données du dataset, puis pour chaque donnée, on compare le résultat obtenu par le modèle à l’étiquette et on mesure l’erreur. L’apprentissage va essayer, itérativement, en repassant de nombreuses fois le dataset, de progressivement diminuer ces erreurs.. La qualité de l’apprentissage va dépendre fortement du nombre d’événements « connus » (c’est-à-dire les données dont on possède l’étiquette). S’ils sont en quantité suffisante, on pourra obtenir un bon modèle. Sinon, il faudra utiliser une autre approche.
  • L’apprentissage non supervisé : les données ne comprennent pas d’étiquette. Il y a de nombreuses approches, en particulier pour regrouper les données similaires (algorithmes de clustering). On peut également utiliser une approche non supervisée, l’auto-encodeur (où on essaie de produire un modèle qui doit apprendre à produire en résultat la donnée présentée en entrée, voir plus bas) quand il n’y a pas de données étiquetées parce que le phénomène est nouveau : il s’agit alors de détecter des anomalies qui seront remontées comme des alertes vers un opérateur.

Il existe d’autres approches moins utilisées, apprentissage semi-supervisé, apprentissage par renforcement notamment. L’apprentissage par renforcement, très utilisé pour les jeux permet par exemple de réaliser des tests de pénétration. Les techniques de vision ou de traitement de la langue naturelle (NLP natural language processing) font très souvent appel à des techniques à base de réseaux de neurones, profonds en général. Ceux-ci permettent de construire une représentation des données dans un espace de dimension plus faible : on parle d’embedding dans l’espace de représentation. D’autres techniques d’embedding permettent de représenter du texte (word2vec) ou des graphes (graph2vec). On peut alors, par exemple, catégoriser des documents, en faire des résumés automatiques, ou mettre en place des techniques de data leak protection. Le nombre total d’algorithmes n’est pas très élevé (avec beaucoup de variantes). On pourra consulter la cheatsheet qui les résume en 5 pages (denses !) ou la synthèse: régression linéaire et régression logistique, arbre de décision et Random Forest, Support Vector Machine (SVM), k plus proche voisins et k-means, Naive Bayes, réseaux de neurones (que nous présentons plus bas) et reinforcement learning. Nous allons maintenant rapidement présenter quelques réseaux de neurones couramment utilisés dans les applications de cybersécurité ou utiles à leur compréhension. On appelle neurone artificiel un élément de calcul caractérisé par son vecteur de « poids » w (qui est un vecteur de paramètres qu’on va apprendre pendant l’apprentissage) et sa fonction d’activation f : quand le neurone reçoit une donnée x en entrée (un vecteur ou une image par exemple), il calcule le produit scalaire de x et w, et le transmet à sa fonction d’activation qui produit alors une sortie (ou output) y, fonction de ce produit scalaire. Les fonctions les plus utilisées sont les sigmoïdes ou les fonctions reLU.

Image3.3.png

Un réseau de neurones est une collection de neurones interconnectés : les outputs des uns servant d’inputs aux autres. L’architecture du réseau est caractérisée par le nombre de neurones et la façon dont ils sont connectés, les « poids » sont des paramètres pondérant les connexions. Par exemple, le réseau de neurones multicouche ci-dessous comprend une couche d’entrée (où l’input x est présenté), une couche de 4 neurones qui prennent x en entrée, puis une couche de 6 neurones prenant en entrée les sorties des neurones de la couche précédente et enfin un neurone de sortie qui produit l’output y du réseau. Les 2 couches de 4 et 6 neurones sont dites « couches cachées ».

Image 3.4.png

Un réseau de neurones peut être entraîné par apprentissage à produire des sorties y ̂ identiques (ou aussi proches que possible) des sorties y (attendues : les étiquettes). Pour cela, on constitue un dataset d’apprentissage de n exemples où pour le kième exemple (x^k,y^k ) x^k est une donnée x^k=(x_1^k,…,x_p^k ) avec p variables (par exemple pour une image 10x10, p=10*10=100) et y^k est l’étiquette de l’exemple x^k (on est en situation d’apprentissage supervisé). Par exemple y^k=+1 (si x^k est de classe 1) ou y^k=-1 (si x^k est de classe 0). Pour chaque exemple x^k le résultat associé (y^k ) ̂ est calculé en propageant les calculs dans le réseau, de gauche à droite dans la figure ci-dessus. L’entraînement du réseau va alors consister à apprendre (déterminer les poids w tels que, pour chaque k, la sortie calculée (y^k ) ̂ soit aussi proche que possible de l’étiquette y^k. Pour cela, on cherche à minimiser l’erreur, c’est-à-dire l’écart entre les deux sur le dataset d’apprentissage. L’algorithme de rétro-propagation du gradient permet de réduire cette erreur, par itérations successives sur le vecteur de poids w.

L'apprentissage consiste à présenter un exemple, ou un ensemble d’exemples (batch), mesurer l’erreur, modifier les poids et itérer. Si on veut exécuter un apprentissage sur un ensemble de données qui ne sont pas toutes sur le serveur (par exemple parce que l’ensemble d’apprentissage provient d’un groupe de plusieurs entités qui ne souhaitent pas faire voir leurs données aux autres entités du groupe), on peut mettre en œuvre un apprentissage fédéré (federated Learning) : on fait quelques itérations sur les données d’une entité, puis on transmet les poids obtenus à l’entité suivante, qui exécute à son tour quelques itérations sur ses données et ainsi de suite. Ce mécanisme permet donc de « partager » des données pour l’apprentissage d’un modèle sans que les données ne soient jamais visibles par les différentes entités. Il faut bien sûr que les différentes entités se soient entendues d’abord sur le type de modèle utilisé (souvent un réseau convolutionnel, voir ci-dessous).

Un auto-encodeur est un réseau multicouche (figure ci-dessous) dans lequel l’entrée x et la sortie y sont identiques. Un auto-encodeur peut donc être entraîné en mode non supervisé (l’étiquette associée à x^k est x^k lui-même). L’intérêt de l’auto-encodeur est qu’il produit dans sa couche cachée une « représentation » (ou embedding) de l’exemple x^k. Cela n’a d’intérêt évidemment que si la dimension de la couche cachée (le nombre de neurones) est (beaucoup) plus faible que la dimension de l’exemple (le nombre p de variables définissant l’exemple).) Les auto-encodeurs sont utilisés, par exemple, pour détecter des anomalies (un exemple anormal produit une erreur de reconstruction beaucoup plus grande qu’un exemple normal.) On peut évidemment construire des auto-encodeurs « profonds » avec plusieurs couches cachées (à droite ci-dessous).

Image3.5.png

Un réseau de neurones multicouche convolutionnel est un réseau dans lequel les neurones d’une même couche sont connectés localement à une partie seulement des neurones de la couche précédente, et tous avec les mêmes poids . Le produit scalaire qu’ils calculent (comme défini plus haut) est un produit de convolution, d’où le nom. On dit que le réseau est « profond » s’il a beaucoup de couches cachées. On parle alors de « deep learning » pour qualifier l’entraînement de ce réseau. Notons que même si un réseau a des dizaines de couches, les mécanismes de connexion locale et de poids partagés limite le nombre de paramètres (les poids).

Image3.6.png

Les GAN (Generative Adversarial Networks) sont apparus en 2014 et sont à l’origine de l’industrie des contrefaçons numériques (fakes) d’images, de vidéos, de textes, de parole. Un GAN est un ensemble de 2 réseaux (souvent des réseaux convolutionnels profonds). Un réseau, le discriminateur est un classifieur qui doit dire si l’exemple présenté est réel ou fake. Le générateur quant à lui produit une sortie (un fake) en espérant qu’elle sera classée comme « réelle » par le discriminateur. En apprentissage, le discriminateur essaie de maximiser l’écart entre les distributions des vrais exemples et des fakes (la cross-entropy) et le générateur essaie de la minimiser. En résumé, le faux-monnayeur essaie de tromper le policier. En fin d’apprentissage, les contrefaçons sont quasiment impossibles à différencier des vrais exemples.

Image3.7.png

Performances : Une fois le modèle produit, on veut évaluer ses performances. Dans le cas d’un classifieur (en 2 classes par exemple : les positifs P et les négatifs N, par exemple les spams et les non-spams), on va construire la matrice de confusion. Pour cela, on calcule, pour chaque exemple x^k sa classe produite par le modèle (y^k ) ̂ et on la compare à sa vraie classe y^k. On dit que

  • x^k est un vrai positif si (y^k ) ̂=y^k=P
  • x^k est un faux positif si (y^k ) ̂=P et y^k= N
  • x^k est un faux négatif si (y^k ) ̂= N et y^k=P
  • x^k est un vrai négatif si (y^k ) ̂= N et y^k= N

Ensuite, on compte, sur le dataset d’apprentissage {(x^1,y^1 )"," (x^2,y^2 )"," …,(x^k,y^k ),…,(x^n,y^n )} le nombre total de vrai / faux positifs et vrai / faux négatifs qu’on note VP, FP, VN et FN (RP / RN est le nombre d’exemples réellement positifs / négatifs et CP / CN le nombre d’exemples classifiés positifs / négatifs par le modèle) (à gauche ci-dessous) :

Image3.8.png

Les performances d’un modèle pourront donc être mesurées simplement en comptant le nombre d’erreurs (FP + FN ), ou bien le nombre de bons résultats (VP+VN ). On peut aussi définir en normalisant en colonne (à droite ci-dessus) :

  • La sensibilité (ou taux de reconnaissance des positifs) : α=VP⁄RP
  • La spécificité (ou taux de reconnaissance des négatifs) : β=VN⁄RN

On agira donc sur la sensibilité pour limiter les faux positifs (un faux positif déclenche une alerte et a donc un impact direct sur la charge de l’équipe chargée des actions de traitement) ou sur la spécificité pour limiter les faux négatifs (un faux négatif est un événement nocif raté, ce qui peut avoir des conséquences graves).

Par exemple, pour un système de filtrage de spams, on pourra mesurer la performance en utilisant l’une des méthodes suivantes :

  • Compter le nombre d’erreurs FP + FN  : la somme du nombre de spams non qualifiés comme spams et du nombre de non-spams qualifiés comme spams ;
  • Compter le nombre bons résultats VP+VN  : la somme du nombre de spams correctement qualifiés comme spams et de non-spams correctement qualifiés comme non-spams ;
  • Calculer le taux de spams détectés α : le rapport du nombre de spams correctement qualifiés comme spams au nombre total de spams ;
  • Calculer le taux de non-spams détectés β : le rapport du nombre de non-spams correctement qualifiés comme non spams au nombre total de non-spams ;

Il existe bien d’autres façons de mesurer la performance : le choix de la mesure dépend du problème qu’on cherche à résoudre, et de l’importance respective des erreurs (FP ou FN. . C’est la mesure de la performance qui permettra de décider si le modèle est satisfaisant et doit être passé en production. Une fois en production, on s’attend à ce que le modèle se comporte sur les données de production avec des performances comparables à ce qu’elles étaient pendant la phase de construction du modèle : on dit que le modèle généralise bien.

Cette propriété est fondamentale et il est très important pour la garantir de s’assurer que le modèle qu’on utilise n’est pas en situation d’overfitting : quand un modèle est trop complexe, il va pouvoir « apprendre par cœur » le dataset d’apprentissage et ne pourra pas généraliser correctement en production. La figure ci-dessous illustre ce phénomène : quand on augmente la complexité (techniquement c’est la dimension de Vapnik Chervonenkis) d’un modèle (par exemple le nombre de neurones d’un réseau de neurones, ou la profondeur d’un arbre de décision), l’erreur sur le dataset d’apprentissage décroit, en même temps que l’erreur sur l’ensemble de validation. Cependant, quand le modèle devient trop complexe, l’erreur d’apprentissage continue à décroître (le modèle a appris le dataset par cœur) mais l’erreur en validation se met à augmenter : le modèle ne généralise plus, il « overfit » le dataset d’apprentissage.

Image3.9.png

La qualité d’une solution IA tient donc fondamentalement à deux ingrédients : l’algorithme et surtout les données. Attaquer / protéger une solution IA, c’est donc attaquer/ protéger ces éléments, tout au long du cycle de vie représenté ci-dessous : entraînement (apprentissage ou build), production (exploitation ou run / inference)

Bien entendu, une solution IA est toujours intégrée dans un système global (matériel et logiciel) : pour attaquer la solution IA, il faut attaquer le système global.

Image3.10.png

2. C’est quoi la cybersécurité ?[modifier | modifier le wikicode]

L’ANSSI définit la cybersécurité comme « État recherché pour un système d’information lui permettant de résister à des événements issus du cyberespace susceptibles de compromettre la disponibilité, l’intégrité ou la confidentialité des données stockées, traitées ou transmises et des services connexes que ces systèmes offrent ou qu’ils rendent accessibles. La cybersécurité fait appel à des techniques de sécurité des systèmes d’information et s’appuie sur la lutte contre la cybercriminalité et sur la mise en place d’une cyberdéfense. »

Wikipédia définit la cybersécurité comme « la protection des systèmes informatiques contre le vol et l’endommagement de leur matériel, logiciels ou informations, ainsi que contre la perturbation ou le détournement des services qu’ils fournissent. »

Plus précisément, on conçoit généralement la cybersécurité d'un système informatique au travers des conséquences que les attaques peuvent engendrer sur ce système, et que l'on veut bien évidemment éviter. Les conséquences d'attaques s'expriment par la violation d'une ou plusieurs des trois propriétés de base que l'on souhaite pour l’information, les services et l’infrastructure informatique : confidentialité, intégrité et disponibilité.

Notez ici que la protection des données personnelles passe par la protection de la confidentialité de certaines informations, celles qui ont un lien avec une personne.

En pratique on distingue deux approches dans la cybersécurité :

  • La cybersécurité organisationnelle (ou fonctionnelle), qui définit les mesures de protection, évalue et accepte les risques (analyse de risques, EBIOS, homologation ...) bien que très théorique cette pratique se nourrit de l’expérience du terrain et prend en compte la réalité des menaces détectées et observées en pratique.
  • La cybersécurité opérationnelle, qui met en place les mesures décidées, détecte les atteintes aux systèmes d’information et remédie aux attaques lorsqu’elles ont lieu. Très orientée “terrain”, la cybersécurité opérationnelle met en œuvre des services de SOC (surveillance et détection d’incident en cybersécurité) et de CERT (réponse à incident et qualification de la menace).

Ainsi, sécuriser un système d’information signifie empêcher une entité non autorisée d’accéder à, de modifier ou de rendre indisponibles les données, les services ou l'infrastructure informatique.

Pour empêcher les actions non souhaitées, on met en place des mécanismes préventifs (par exemple : authentification, contrôle d'accès, chiffrement des données). En outre, ces mécanismes pouvant être parfois malheureusement contournés, il est nécessaire de mettre également en place des mécanismes de supervision permettant de vérifier qu'aucune violation de propriété n'a eu lieu (en cas de violation, l'administrateur du système doit être alerté afin de mettre en place des actions correctives).

Nous nous intéressons dans la suite de ce document à la sécurité des mécanismes d’apprentissage automatique (machine learning, ML). En effet, aujourd’hui, ces mécanismes sont ceux des mécanismes relevant de l’IA qui donnent lieu à utilisation massive. En conséquence, ils donnent aussi lieu à de nombreuses études, y compris dans le monde académique. Ces études incluent une analyse de leur cybersécurité.

Dans le cadre de la sécurité du ML, les données potentiellement cibles d'attaques (et donc à protéger) sont identifiables en suivant les étapes du pipeline de l’apprentissage à l’inférence. Les attaques en elles-mêmes peuvent être, soit similaires à celles qui sont classiquement lancées contre tout système d’information (pour ne donner que quelques exemples : ransomware, DDoS, destruction des données et des backups, etc.), soit de nouvelles formes d’attaques dirigées spécifiquement contre les mécanismes de machine learning (empoisonnement, évasion, oracle : voir section 5). En conséquence, les contre-mesures qui permettront d’empêcher, d’atténuer, de détecter les attaques contre les systèmes ML sont d’une part des mécanismes classiques (chiffrement des données par exemple), d’autre part des mécanismes spécifiques au ML (augmentation de la robustesse des modèles par exemple).

Note 1 : une violation de la disponibilité correspond par définition à une réduction de la performance du système. Dans le cas du machine learning : moindre rapidité en apprentissage ou inférence, voire impossibilité de convergence en apprentissage ou d’obtenir une sortie en inférence. Les attaques contre la disponibilité peuvent passer par des atteintes à l’intégrité. Ainsi, on peut imaginer modifier des données d’apprentissage pour réduire la vitesse de convergence d’un algorithme. Dans un cas comme celui-ci, une contre-mesure taillée pour l’intégrité permettra aussi d’assurer la disponibilité.

D’une manière générale, les attaques contre la disponibilité des systèmes à base de ML semblent être des attaques classiques (exemple : saturation d’un lien réseau, sabotage, etc.). C’est sans doute pour cette raison que, généralement, ce sont les propriétés de confidentialité et d’intégrité qui sont plutôt étudiées. La disponibilité fait souvent l’objet de moins de travaux spécifiques, précisément car il n’y a pas de spécificité du ML dans ce cas.

Note 2 : le dictionnaire Larousse définit la fraude comme un « acte malhonnête fait dans l'intention de tromper en contrevenant à la loi ou aux règlements ». Un tel acte peut passer par une attaque informatique, donc une violation de confidentialité, d’intégrité ou de disponibilité. La fraude est alors la fin, la cyberattaque le moyen. La lutte contre la fraude peut donc inclure certains éléments de cybersécurité. En revanche, d’autres aspects de la lutte contre la fraude ne relève pas de la cybersécurité (exemple : détection de flux financiers non habituels).

3. L’apport de l’IA pour augmenter les méthodes cyber (protection)[modifier | modifier le wikicode]

L’intelligence artificielle, dans toutes ses formes, peut apporter beaucoup à la cybersécurité. La première valeur, fondamentale, de l’intelligence artificielle est liée à la capacité des algorithmes de s’adapter à l’évolution d’un système d’information. Nous pouvons prendre exemple auprès du NIST framework pour apporter un certain nombre d’exemples :

  • Protéger : nous savons que nous contenter d’utiliser les IOCs (Indicator of compromise) n’est pas une solution. En effet, la moindre variation implique une absence de détection, la quantité exponentiellement croissante d’IOCs implique que les systèmes de détection ne pourront fonctionner uniquement sur ce système.
  • Répondre : Les environnements des systèmes d’information se sont transformés en ensembles très organiques et mouvants. Il est donc indispensable d’avoir des processus de réponse à incident qui s’adaptent à cette dynamique. La simple robotisation sous la forme de développements n’est plus en mesure d’apporter l’assurance de son efficacité ni de son impact (ou plutôt non impact en général) sur la production. Ce dynamisme rend aussi la prise de décision en situation d’urgence extrêmement complexe et peut donc engendrer des délais de réaction néfastes.

L’intelligence artificielle est donc une voie pour travailler sur plusieurs autres axes : les techniques, l’aide à la décision, la visibilité, …

Un autre point de difficulté de la gestion d’informations de sécurité est le volume et la diversité des sources d’informations. Les techniques liées à l’analyse de données et à l’apprentissage partagé (data mesh et federated learning) peuvent être appliquées au domaine de la cybersécurité en proposant des optimisations dans les coûts et complexités d’infrastructures de collectes et de traitement de l’analyse pour permettre une approche plus proche du temps réel.

Il est aussi à noter que ce volume d’informations en constante croissance, génère par essence un nombre important d’événements (positifs ou non) que le traitement humain ne peut pas traiter même avec un volume de ressources important, difficilement accessible sur le marché par ailleurs.

Il est donc raisonnable d’anticiper des apports forts de l’IA (machine learning, deep learning, natural language processing, …) pour aider à apporter une plus grande réactivité nécessaire à l’augmentation de la vitesse des attaques, ainsi que pour aider à anticiper les attaques grâce aux analyses des menaces et des techniques d’usage. Les aspects d’efficacité de process de sécurité peuvent aussi être améliorés via l’intelligence artificielle en s’attachant à pointer les anomalies et les axes d’optimisations via un apprentissage interentreprises. L’humain, plus pertinent et adaptable dans nombres de cas ne sera pas pour autant effacé mais ses activités vont changer pour exploiter au mieux cette intelligence augmentée fournie par l’intelligence artificielle.

4. Framework de classification des cas d’usages[modifier | modifier le wikicode]

Le Framework de classification des cas d’usages est une initiative du Groupe de Travail, basé sur les guides et standards du domaine, et se veut pratique pour catégoriser simplement les cas d’usages rencontrés au sein de différents organismes. En complément de l’aide à l’organisation des connaissances, ce framework a été conçu pour être lisible par des entités internationales, tout en garantissant une lecture simple.

Le Framework de classification des cas d’usage proposé par le Groupe de Travail est orienté autour de trois axes principaux :

  1. La catégorisation des cas d’usages suivant les activités des équipes cybersécurité, traduisant l’organisation type de la cybersécurité ;
  2. La classification du cas d’usage en fonction des objectifs de sécurité qu’il cherche à traiter, pour cela, le NIST Cybersecurity Framework est utilisé ;
  3. Le traitement d’attaque du MITRE ATT&CK ou la mise en œuvre d’éléments de défense du MITRE D3FEND.
Activités cybersécurité[modifier | modifier le wikicode]

La catégorisation des cas d’usages par rapport aux activités des équipes cybersécurité a permis de constituer 4 grandes catégories :

  1. La gestion des risques et de la conformité, incluant l’ensemble des activités de définition, traitement, et gestiondes risques et régulations applicables aux organisations ;
  2. L’évaluation de sécurité, souvent référencée en tant que RedTeam, réalisant les activités d’audit, de tests d’intrusion, et de compromission de l’organisation ;
  3. La sécurité applicative, intégrant les domaines de la gestion des identités et des accès, la mise sous protection des applications (Security by Design, SSDLC, SecDevOps, …) ;
  4. La sécurité des infrastructures intégrant la mise en œuvre des solutions de cybersécurité d’infrastructure (FW, IPS, EDR, Proxy, Annuaires, etc.) nécessaires à la sécurité en profondeur des systèmes d’information ;
  5. Les activités de cyberdéfense, souvent référencée en tant que BlueTeam, assurant la sécurité opérationnelle des Systèmes d’Information des organisations.
Objectifs de sécurité[modifier | modifier le wikicode]

Les objectifs de sécurité visent à déterminer les activités à mettre en œuvre afin de maîtriser les risques de cybersécurité au sein des organisations, ceux-ci sont découpés en 5 types :

  • IDENTIFIER ayant pour objectif l’identification, l’évaluation, et la mise en œuvre de l’organisation adaptée à la maîtrise et au traitement des risques ;
  • PROTEGER ayant pour objectif de mettre en œuvre les activités nécessaires à la protection et à la maintenance en condition de sécurité des systèmes d’information ;
  • DETECTER ayant pour objectif d’identifier, de qualifier, et de déclencher les activités nécessaires à la détection d’un incident de cybersécurité ;
  • REPONDRE ayant pour objectif de traiter, communiquer, et d’améliorer le traitement des incidents de cybersécurité ;
  • REPRISE ayant pour objectif de retourner à un état de fonctionnement normal suite à un incident de cybersécurité.

Nous présentons ces éléments dans une matrice :

Image3.11.png

5. Le Machine Learning cible d’attaques[modifier | modifier le wikicode]

Comme déjà dit, nous ne traitons ici que des attaques sur des modèles de machine learning car ils sont très majoritaires dans l’usage (tous secteurs confondus) ainsi que dans les publications de recherche sur la cybersécurité de l’IA .

Familles d’attaques[modifier | modifier le wikicode]

Comme nous l’avons mentionné précédemment dans ce document, les attaques contre le ML peuvent être, soit similaires à celles qui sont classiquement lancées contre tout système d’information (vol de données, l’usurpation d’identité, le déni de services, etc.) soit de nouvelles formes d’attaques dirigées spécifiquement contre les mécanismes de machine learning. Ces dernières peuvent être regroupées en 3 grands familles (empoisonnement, oracle et évasion) sur lesquelles nous nous focalisons ici - comme proposé par le NIST.

Empoisonnement[modifier | modifier le wikicode]

Un attaquant modifie le corpus de données utilisé pour entraîner les modèles afin d'altérer ou d’influencer le comportement de ces systèmes lorsqu'ils seront déployés en production.

Oracle (inférence, extraction)[modifier | modifier le wikicode]

Un attaquant crée des entrées et reçoit les sorties du modèle attaqué, dans le but d'obtenir des informations sur ce modèle - et même parfois sur les données d'entraînement.

Évasion[modifier | modifier le wikicode]

Un attaquant modifie de manière malveillante une requête sur le modèle attaqué afin que celui-ci produise un résultat erroné.

Image3.12.png

Évasion Un attaquant modifie de manière malveillante une requête sur le modèle attaqué afin que celui-ci produise un résultat erroné.

Les conséquences de ces attaques sont, comme il est classique en cyber sécurité, la violation d’une ou plusieurs des trois grandes propriétés de la sécurité :

  • Intégrité des données ou du modèle : en conséquence, le modèle ne se comporte pas comme prévu (cas du panneau « STOP » pris pour une limitation de vitesse par une voiture autonome) ;
  • Confidentialité des données ou du modèle : vol de propriété intellectuelle ou de données ;
  • Disponibilité du système de ML : allant de l'augmentation de la latence au blocage complet.
Surface d’attaque[modifier | modifier le wikicode]

Les attaques se déroulent dans les diverses phases du cycle de vie du système ML. En outre, elles nécessitent plus ou moins de connaissances de la part de l’attaquant.

Cycle de vie[modifier | modifier le wikicode]

Nous présentons ci-dessous un schéma apportant une vue simplifiée du cycle de vie d'un modèle de machine learning et montrant les étapes au cours desquelles les différents types d’attaque définis ci-dessus peuvent avoir lieu. En haut de la figure, nous retrouvons donc les trois grandes familles d'attaque ; en bas de cette figure, les données du monde réel qui servent à alimenter l’entraînement ou les requêtes en phase d’inférence (c’est à dire en production, appelée aussi phase de « run »). Enfin, entre les deux, nous montrons les 3 principales étapes par lesquelles passe le modèle : entraînement, de validation et d’inférence (sachant que la construction sera cyclique avec des allers-retours entre ces étapes).

Image3.13.png

Comme on le voit sur ce schéma, la vision cybersécurité du processus est très similaire à ce qui a été présenté dans la section 1 sur l’IA. Les attaques peuvent cibler les différentes étapes du développement (build) et de l’inférence (run).

Connaissance de l’attaquant[modifier | modifier le wikicode]

Les menaces contre les systèmes ML dépendent des connaissances de l'adversaire sur le modèle cible :

  • Boîte noire : l’attaquant n’a pas d’information sur le modèle ;
  • Boîte grise : l’attaquant a quelques informations, sur le type d’algorithme utilisé, ou bien les paramètres en entrée, ou encore une partie des données d’entraînement ;
  • Boîte blanche : l’attaquant a pleine connaissance du modèle (type, entrées, paramètres, etc.).

Toute la stratégie d’attaque et les méthodes utilisées concrètement dépendent de ce degré de connaissance.