« L'intelligence artificielle en cybersécurité » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
(55 versions intermédiaires par 6 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
{{Commun | {{Commun | ||
| | |ShortDescription FR=Identifie et analyse certains cas d'usage où l’Intelligence Artificielle permet des avancées pour la cybersécurité. | ||
|Status= | |ShortDescription EN=Identifies and analyzes a number of use cases where Artificial Intelligence is helping to advance cybersecurity. | ||
| | |ImageStr=IA wiki.png | ||
|Status=Production | |||
|Name=GT IA et cybersécurité : cas d'usage de l'intelligence artificielle en cybersécurité | |||
}} | }} | ||
<translate> | |||
== Qu'est-ce que 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 » [1] . 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 | |||
[[File:image3.1.png|center|600px]] | [[File:image3.1.png|center|600px]] | ||
=== L’IA symbolique === | |||
'''Les [https://fr.wikipedia.org/wiki/Syst%C3%A8me_expert systèmes experts]''' [2] 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 [3]. Aujourd’hui, des méthodes hybrides , fondées sur le couplage des systèmes de règles et de techniques de [https://fr.wikipedia.org/wiki/Apprentissage_automatique 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. | |||
'''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 | 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 [https://fr.wikipedia.org/wiki/Syst%C3%A8me_multi-agents 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 [4] 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 [https://fr.wikipedia.org/wiki/Apprentissage_par_renforcement?wprov=srpw1_2 Reinforcement Learning] voire de ''Machine Learning'' au niveau local ou organisationnel, on parle alors de SMA apprenants [5] . 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=== | |||
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.''' | Depuis 2012, et la supériorité écrasante des techniques [https://fr.wikipedia.org/wiki/Apprentissage_profond deep learning] à la conférence ImageNet [6] , 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 : | 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 | * '''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 [7]''). 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. | * 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|600px]] | [[File:image3.2.png|center|600px]] | ||
=== Les approches usuelles en cybersécurité === | |||
Les algorithmes d’apprentissage correspondent essentiellement à deux grandes approches : | 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 supervisé''' [8] : 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. | * '''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. | === Les approches non usuelles en cybersécurité === | ||
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. | 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 [9] permet par exemple de réaliser des tests de pénétration [10,11]. 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) [12] ou des graphes (graph2vec)[13]. 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 [14]'' qui les résume en 5 pages (denses !) ou la synthèse [15]: 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. | 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. | 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. | ||
[[File:image3.3.png|center|600px]] | [[File:image3.3.png|center|600px]] | ||
=== Le Deep Learning, ou l'utilisation de réseau de neurones === | |||
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 ». | 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 ». | ||
[[File:image 3.4.png|center|600px]] | [[File:image 3.4.png|center|600px]] | ||
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 | 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<sup>k</sup>,y<sup>k</sup> ) '''x<sup>k</sup> est une donnée''' | ||
x<sup>k</sup> =(x<sup>k</sup><sub>1</sub>,…,x<sup>k</sup><sub>p</sub> ) avec p variables (par exemple pour une image 10x10, p=10*10=100) et y<sup>k</sup> est l’étiquette de l’exemple x<sup>k</sup> (on est en situation d’apprentissage supervisé). Par exemple : | |||
[[Fichier:Formule12bis.PNG|gauche|sans_cadre|434x434px]] | |||
Pour chaque exemple x<sup>k</sup> le résultat associé [[Fichier:Formule 8.PNG|25x25px]]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 [[Fichier:Formule 8.PNG|25x25px]] soit aussi proche que possible de l’étiquette y<sup>k</sup>. 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 [16] 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). | 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é ('''[https://fr.wikipedia.org/wiki/Apprentissage_f%C3%A9d%C3%A9r%C3%A9 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 | Un '''''[https://fr.wikipedia.org/wiki/Auto-encodeur 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<sup>k</sup> est x<sup>k</sup> 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<sup>k</sup>. 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). | ||
[[File:image3.5.png|center|400px]] | [[File:image3.5.png|center|400px]] | ||
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). | 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 [17] . 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). | ||
[[File:image3.6.png|center|600px]] | [[File:image3.6.png|center|600px]] | ||
Les ''' | ==== Focus sur les Generative Adversarial Networks ==== | ||
Les '''[https://fr.wikipedia.org/wiki/R%C3%A9seaux_antagonistes_g%C3%A9n%C3%A9ratifs Generative Adversarial Networks (GAN)]''' [18]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. | |||
[[File:image3.7.png|center|600px]] | [[File:image3.7.png|center|600px]] | ||
==== Mesure et performance des modèles ==== | |||
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<sup>k</sup> sa classe produite par le modèle [[Fichier:Formule 8.PNG|25x25px]]et on la compare à sa vraie classe y<sup>k</sup>. | |||
On dit que | On dit que | ||
[[Fichier:Formule_11.PNG|sans_cadre]] | |||
[[File:image3.8.png|center|600px]] | Ensuite, on compte, sur le dataset d’apprentissage [[Fichier:Formule 12.PNG|sans_cadre]] 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) :[[File:image3.8.png|center|600px]] | ||
Les performances d’un modèle pourront donc être mesurées simplement en comptant le nombre d’erreurs (FP + FN | 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) : | ||
[[Fichier:Formule_13.PNG|sans_cadre|521x521px]] | |||
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). | 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). | ||
Ligne 83 : | Ligne 97 : | ||
* 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 ; | * 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 | 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. | 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 [19]) 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. | ||
[[File:image3.9.png|center|600px]] | [[File:image3.9.png|center|600px]] | ||
Ligne 95 : | Ligne 109 : | ||
[[File:image3.10.png|center|400px]] | [[File:image3.10.png|center|400px]] | ||
== | == Qu'est-ce que la cybersécurité ? == | ||
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. » | 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. » | ||
Ligne 117 : | Ligne 130 : | ||
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). | 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é. | |||
'''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. | 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). | |||
== Les apports de l'IA pour la cybersécurité == | |||
== | === L’apport de l’IA pour augmenter les méthodes de protection et de réponse === | ||
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 : | 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. | * '''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. | * '''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é, … | 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. | 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 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. | 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. | ||
===Les technologies les plus matures === | |||
Les | |||
= | |||
= | |||
Il existe des technologies d’IA très matures et qui peuvent directement être utiles pour la cybersécurité. | Il existe des technologies d’IA très matures et qui peuvent directement être utiles pour la cybersécurité. | ||
La '''détection d’anomalie''' consiste à identifier des éléments ou événements qui diffèrent significativement des autres éléments : on parle souvent en IA d’outlier pour indiquer que l’élément n’obéit pas à la distribution des autres éléments. Par exemple, un pic d'activités inattendu peut correspondre à une intrusion sur un réseau informatique. Il y a deux familles principales de détection d’anomalie | La '''détection d’anomalie''' consiste à identifier des éléments ou événements qui diffèrent significativement des autres éléments : on parle souvent en IA ''d’outlier'' pour indiquer que l’élément n’obéit pas à la distribution des autres éléments. Par exemple, un pic d'activités inattendu peut correspondre à une intrusion sur un réseau informatique. Il y a deux familles principales de détection d’anomalie [20] : | ||
Les '''méthodes supervisées''' : on connaît ici l’étiquette (normal / anormal) des éléments du dataset d’apprentissage. Ces méthodes souffrent cependant du problème de déséquilibre des classes : il y a en général plus de 99% des éléments qui sont normaux, et moins de 1% d’anomalies. La plupart des classifieurs ont donc beaucoup de mal à obtenir une bonne solution. Surtout qu’en plus, de nouvelles anomalies peuvent se produire qui n’auront pas été apprises. On préfère donc les méthodes non supervisées. Cependant, la technique des auto-encodeurs est souvent utilisée : | Les '''méthodes supervisées''' : on connaît ici l’étiquette (normal / anormal) des éléments du ''dataset'' d’apprentissage. Ces méthodes souffrent cependant du problème de déséquilibre des classes : il y a en général plus de 99% des éléments qui sont normaux, et moins de 1% d’anomalies. La plupart des classifieurs ont donc beaucoup de mal à obtenir une bonne solution. Surtout qu’en plus, de nouvelles anomalies peuvent se produire qui n’auront pas été apprises. On préfère donc les méthodes non supervisées. Cependant, la technique des auto-encodeurs est souvent utilisée : | ||
*Auto-encodeur : un auto-encodeur est entraîné sur des données normales. La distribution des erreurs sur le dataset d’apprentissage est collectée. Ensuite, quand un élément est présenté on compare son erreur (écart entre élément reconstruit par l’auto-encodeur et élément initial) aux erreurs « normales ». Si elle est largement plus grande c’est une anomalie. Comme nous l’avons vu plus haut, l’auto-encodeur est entraîné en mode non supervisé : ici on l’a utilisé sur des données normales. Si on ne dispose pas de cette information, on l’entraînera sur toutes les données, mais comme il y a toujours beaucoup plus de données normales, le modèle apprendra essentiellement à reconstruire les données normales. | *Auto-encodeur [21]: un auto-encodeur est entraîné sur des données normales. La distribution des erreurs sur le ''dataset'' d’apprentissage est collectée. Ensuite, quand un élément est présenté on compare son erreur (écart entre élément reconstruit par l’auto-encodeur et élément initial) aux erreurs « normales ». Si elle est largement plus grande c’est une anomalie. Comme nous l’avons vu plus haut, l’auto-encodeur est entraîné en mode non supervisé : ici on l’a utilisé sur des données normales. Si on ne dispose pas de cette information, on l’entraînera sur toutes les données, mais comme il y a toujours beaucoup plus de données normales, le modèle apprendra essentiellement à reconstruire les données normales. | ||
Les '''méthodes non supervisées''' : on n’a pas d’étiquette (normal / anormal) des éléments du dataset d’apprentissage. On dispose de plusieurs techniques simples pour détecter les anomalies. | Les '''méthodes non supervisées''' : on n’a pas d’étiquette (normal / anormal) des éléments du ''dataset'' d’apprentissage. On dispose de plusieurs techniques simples pour détecter les anomalies. | ||
* L’algorithme de plus proche voisin détecte comme anomalie les éléments dont les k-distances (la distance de l’élément à son kième plus proche voisin) sont les plus grandes. L’idée est que les éléments anormaux sont loin des autres éléments. | * L’algorithme de plus proche voisin détecte comme anomalie les éléments dont les k-distances (la distance de l’élément à son kième plus proche voisin) sont les plus grandes. L’idée est que les éléments anormaux sont loin des autres éléments. | ||
* Isolation Forest : on utilise un l’algorithme de forêt aléatoire pour isoler les points par des séparations successives de l’espace. Les points faciles à séparer sont les anomalies, ils sont isolés dans des zones à faible densité. | * Isolation Forest [22] : on utilise un l’algorithme de forêt aléatoire pour isoler les points par des séparations successives de l’espace. Les points faciles à séparer sont les anomalies, ils sont isolés dans des zones à faible densité. | ||
* One-class SVM | * One-class SVM [23]: on détermine un hyperplan qui met le plus d’éléments possible d’un côté, celles qui sont de l’autre côté sont les anomalies. | ||
Le Traitement automatique du langage (TAL en français ou NLP, Natural Language Processing en anglais) a de très nombreuses applications : | |||
Le Traitement automatique du langage (TAL en français ou NLP, Natural Language Processing en anglais) a de très nombreuses applications : | '''Le Traitement automatique du langage''' (TAL en français ou NLP, ''Natural Language Processing'' en anglais) a de très nombreuses applications : | ||
* Classification de texte : il s’agit de classer les documents entre plusieurs catégories prédéfinies, par exemple pour les filtres de spams (solution utilisée par Gmail) ; | * Classification de texte : il s’agit de classer les documents entre plusieurs catégories prédéfinies, par exemple pour les filtres de spams (solution utilisée par Gmail) ; | ||
* Catégorisation (clusturing) de texte : il s’agit de regrouper les textes dont les caractéristiques (groupes de mots et expressions) sont similaires ; on parle souvent de regroupement par sujets ; | * Catégorisation (''clusturing'') de texte : il s’agit de regrouper les textes dont les caractéristiques (groupes de mots et expressions) sont similaires ; on parle souvent de regroupement par sujets ; | ||
* Analyse du « sentiment », c’est-à-dire l’opinion exprimée dans un texte ou sur un media social ; cela est utilisé pour identifier des menaces potentielles de sécurité ; | * Analyse du « sentiment », c’est-à-dire l’opinion exprimée dans un texte ou sur un media social ; cela est utilisé pour identifier des menaces potentielles de sécurité ; | ||
* Génération de texte : par exemple pour répondre aux questions pour les assistants intelligents (Siri ou Alexa) ou les chatbots. Après une phase de transcription speech-to-Text, le système propose une réponse, adaptée au contexte ; | * Génération de texte : par exemple pour répondre aux questions pour les assistants intelligents (Siri ou Alexa) ou les chatbots. Après une phase de transcription speech-to-Text, le système propose une réponse, adaptée au contexte ; | ||
* Résumé : il s’agit de produire automatiquement une synthèse du document. Le résumé peut être construit à partir des phrases jugées les plus importantes du texte ou par génération de nouvelles phrases ; | * Résumé : il s’agit de produire automatiquement une synthèse du document. Le résumé peut être construit à partir des phrases jugées les plus importantes du texte ou par génération de nouvelles phrases ; | ||
* Complétion automatique : est utilisée par Google ou les smartphones pour compléter la requête pendant qu’on la tape. | * Complétion automatique : est utilisée par Google ou les smartphones pour compléter la requête pendant qu’on la tape. | ||
Le NLP s’est développé en trois phases : | Le NLP s’est développé en trois phases : | ||
* Jusqu’aux années 90, on a développé des méthodes symboliques, à base de règles de grammaire et des ontologies codées « à la main », avec les limites habituelles de ces techniques ; | * Jusqu’aux années 90, on a développé des méthodes symboliques, à base de règles de grammaire et des ontologies codées « à la main », avec les limites habituelles de ces techniques ; | ||
* A partir des années 90, la quantité de données disponibles, sur le Web notamment, permet le développement de méthodes de Machine Learning. Dès la fin des années 2000, ces méthodes permettent déjà des résultats nettement supérieurs aux méthodes symboliques, notamment en matière de traduction automatique, à condition de disposer de corpus de données très grands. Si c’est le cas, il suffit de statistiques d’occurrences de mots ou de n-grams (n mots successifs) ou bien de modèles simples de Machine Learning sur des représentations du texte (features) : « simple models and a lot of data trump more elaborate models based on less data ». | * A partir des années 90, la quantité de données disponibles, sur le Web notamment, permet le développement de méthodes de ''Machine Learning''. Dès la fin des années 2000, ces méthodes permettent déjà des résultats nettement supérieurs aux méthodes symboliques, notamment en matière de traduction automatique, à condition de disposer de corpus de données très grands. Si c’est le cas, il suffit de statistiques d’occurrences de mots ou de n-grams (n mots successifs) ou bien de modèles simples de ''Machine Learning'' sur des représentations du texte (''features'') : « ''simple models and a lot of data trump more elaborate models based on less data'' ». | ||
* A partir des années 2010, les méthodes à base de réseaux de neurones (modèle de langage neuronal) prédominent : l’article séminal de Bengio et ses collègues propose d’entraîner un réseau de neurones à prévoir un mot à partir des mots qui le précèdent (le dataset d’apprentissage n’a dont pas besoin d’être étiqueté, ce qui est évidemment un énorme avantage). Pour cela, le réseau de neurones produit une représentation des mots (word embedding) dans un vecteur qui capture la similarité sémantique entre les mots (la similarité cosinus des vecteurs représentant deux mots synonymes, mesurée par leur produit scalaire, est proche de 1). La méthode word2vec créée en 2013 par Google, produit, grâce à un réseau de neurones, une représentation des mots par un vecteur de 100-1000 dimensions (features). Elle est aujourd’hui très largement utilisée, notamment pour sa rapidité, et la faible dimension de la représentation. | * A partir des années 2010, les méthodes à base de réseaux de neurones (modèle de langage neuronal) prédominent : l’article séminal de Bengio et ses collègues [24] propose d’entraîner un réseau de neurones à prévoir un mot à partir des mots qui le précèdent (le dataset d’apprentissage n’a dont pas besoin d’être étiqueté, ce qui est évidemment un énorme avantage). Pour cela, le réseau de neurones produit une représentation des mots (''word embedding'') dans un vecteur qui capture la similarité sémantique entre les mots (la similarité cosinus des vecteurs représentant deux mots synonymes, mesurée par leur produit scalaire, est proche de 1). La méthode word2vec [25] créée en 2013 par Google, produit, grâce à un réseau de neurones, une représentation des mots par un vecteur de 100-1000 dimensions (''features''). Elle est aujourd’hui très largement utilisée, notamment pour sa rapidité, et la faible dimension de la représentation. | ||
* Récemment, des méthodes de réseaux de neurones basées sur les transformers | * Récemment, des méthodes de réseaux de neurones basées sur les ''transformers'' [26] (''autoencodeurs'' avec un mécanisme d’attention) sont apparues pour construire de meilleurs embeddings. Grâce à la possibilité de paralléliser les traitements, on peut entraîner des modèles sur de très grands corpus : BERT (B''idirectional Encoder Representations from Transformers'') est ainsi proposé en open source par Google [27] comme un modèle pré-entraîné, qu’on peut ensuite « fine-tuner » sur son problème particulier (c’est-à-dire qu’on fait quelques itérations du code fourni sur son propre ''dataset''). Des versions pour le français sont disponibles : CamenBERT [28], et FlauBERT [29] . | ||
* Enfin, la génération des modèles GPT , annoncée par Open-AI en 2018, est à base de transformers, mais énormes (GPT 2 a 1,5 milliard de paramètres et GPT 3, 175 milliards) : ils permettent à partir d’un texte quelconque fourni en entrée de générer (on dit que ce sont des modèles génératifs) des textes quasiment impossibles à distinguer de textes écrits par des humains (ils apprennent à prévoir le prochain mot dans un texte). Open-AI a finalement décidé de ne pas mettre les modèles GPT en open source, parce qu’ils seraient « trop dangereux ». | * Enfin, la génération des modèles GPT , annoncée par Open-AI en 2018, est à base de ''transformers'', mais énormes (GPT 2 a 1,5 milliard de paramètres et GPT 3, 175 milliards) : ils permettent à partir d’un texte quelconque fourni en entrée de générer (on dit que ce sont des modèles génératifs) des textes quasiment impossibles à distinguer de textes écrits par des humains (ils apprennent à prévoir le prochain mot dans un texte). Open-AI a finalement décidé de ne pas mettre les modèles GPT en open source, parce qu’ils seraient « trop dangereux ». | ||
Ces différents modèles permettent de générer des représentations qui sont ensuite utilisées en entrée de modèles classiques de machine learning (classification, clustering …) | Ces différents modèles permettent de générer des représentations qui sont ensuite utilisées en entrée de modèles classiques de ''machine learning'' [30] (classification, clustering …) | ||
=== L'utilisation pour la protection des actifs numériques === | |||
Asset inventory / IT Asset Inventory (natural language requests) / Asset Classification | Asset inventory / IT Asset Inventory (natural language requests) / Asset Classification | ||
Ligne 305 : | Ligne 214 : | ||
L’analyse comportementale de segments d’utilisateurs peut permettre de proposer une matrice type de droits à appliquer sur des systèmes ou sur des données pour une population homogène (même fonction, même organisation, même localisation, …). L’analyse de la temporalité des accès à ces ressources IT ou aux données pourraient également permettre de mettre en place une politique d’octroi des accès Just-In-Time (par exemple, n’ouvrir les droits au logiciel de paye à la population en charge qu’aux périodes habituelles de lancement des cycles de paye). | L’analyse comportementale de segments d’utilisateurs peut permettre de proposer une matrice type de droits à appliquer sur des systèmes ou sur des données pour une population homogène (même fonction, même organisation, même localisation, …). L’analyse de la temporalité des accès à ces ressources IT ou aux données pourraient également permettre de mettre en place une politique d’octroi des accès Just-In-Time (par exemple, n’ouvrir les droits au logiciel de paye à la population en charge qu’aux périodes habituelles de lancement des cycles de paye). | ||
'' | === L'utilisation pour la détection d'attaque === | ||
* Détection sur le réseau : détection des flux malveillants sur la base d’une analyse comportementale | * Détection sur le réseau : détection des flux malveillants sur la base d’une analyse comportementale | ||
* Endpoint Protection | * Endpoint Protection | ||
Ligne 315 : | Ligne 223 : | ||
* DLP / Illegitimate Data access | * DLP / Illegitimate Data access | ||
'' | === L'utilisation pour la réaction en cas d'incident === | ||
* Réaction au niveau du réseau : blocage des flux réseau catégorisés comme malveillants | * Réaction au niveau du réseau : blocage des flux réseau catégorisés comme malveillants | ||
* Réaction au niveau des endpoints : arrêt des process, suppression de fichiers malveillants, … | * Réaction au niveau des endpoints : arrêt des process, suppression de fichiers malveillants, … | ||
Ligne 321 : | Ligne 229 : | ||
* Remédiation des droits d’accès non standardisés | * Remédiation des droits d’accès non standardisés | ||
== | == Ce que l'IA ne peut pas (encore) faire en cybersécurité == | ||
==== L'IA ne va pas remplacer votre équipe cyber ==== | |||
Aujourd’hui l’IA ne permet pas de se passer d’une équipe d’experts en cybersécurité. La diversité des menaces, le besoin de prise de décision, l’analyse de nouveaux types d’attaques, la qualification d’une menace en fonction des cas réellement déployés en production, … font qu’aujourd’hui l’IA est plus perçue comme un outil d’aide à la décision et d’aide à la détection (pré-détection, qualification) sans pour autant atteindre un niveau de qualité permettant d’accorder une confiance absolue aux résultats obtenue par l’IA. Cependant, l’IA permet de traiter plus de volumes de données, de détecter plus d’attaques, dans un contexte de pénurie d’experts en cybersécurité ... | Aujourd’hui l’IA ne permet pas de se passer d’une équipe d’experts en cybersécurité. La diversité des menaces, le besoin de prise de décision, l’analyse de nouveaux types d’attaques, la qualification d’une menace en fonction des cas réellement déployés en production, … font qu’aujourd’hui l’IA est plus perçue comme un outil d’aide à la décision et d’aide à la détection (pré-détection, qualification) sans pour autant atteindre un niveau de qualité permettant d’accorder une confiance absolue aux résultats obtenue par l’IA. Cependant, l’IA permet de traiter plus de volumes de données, de détecter plus d’attaques, dans un contexte de pénurie d’experts en cybersécurité ... | ||
==== Détecter un nouveau type d'attaque ==== | |||
Du fait qu'il faille entraîner l'IA avec des données existantes sur des situations passées rend très peu probable la détection d'une attaque qui n'exploiterait aucun mécanisme ayant déjà été identifié. L’IA est en mesure de détecter une variation sur un modèle mais peine encore pour qualifier si cette anomalie est à considérer comme une menace ou non, c’est à dire que l’IA génère souvent trop de faux positifs (situations normales classées comme anormales). | Du fait qu'il faille entraîner l'IA avec des données existantes sur des situations passées rend très peu probable la détection d'une attaque qui n'exploiterait aucun mécanisme ayant déjà été identifié. L’IA est en mesure de détecter une variation sur un modèle mais peine encore pour qualifier si cette anomalie est à considérer comme une menace ou non, c’est à dire que l’IA génère souvent trop de faux positifs (situations normales classées comme anormales). | ||
==== L'IA peut-elle prédire la prochaine attaque cyber ? ==== | |||
En se basant sur plusieurs sources telles que, le darkweb, les publications autour du secteur d’activités sur les différents réseaux sociaux, il peut être tentant d’essayer de prévoir une prochaine attaque d’envergure. Toutefois les attaques cyber sont jusqu’à présent toujours déclenchées par la volonté d’un attaquant de nuire à sa cible. L’intelligence artificielle n’a pas la capacité de prévoir les facteurs psychologiques de prise de décision chez l’attaquant. | En se basant sur plusieurs sources telles que, le darkweb, les publications autour du secteur d’activités sur les différents réseaux sociaux, il peut être tentant d’essayer de prévoir une prochaine attaque d’envergure. Toutefois les attaques cyber sont jusqu’à présent toujours déclenchées par la volonté d’un attaquant de nuire à sa cible. L’intelligence artificielle n’a pas la capacité de prévoir les facteurs psychologiques de prise de décision chez l’attaquant. | ||
' | ==== L'IA ne détectera pas une attaque déjà présente dans un jeu de données ==== | ||
Le cas où la donnée qui a servi à l’entraînement initial contenait une vulnérabilité ou une attaque encore non identifiée et donc étiquetée comme normale, nécessite un réapprentissage complet ; même si la menace est identifiée par la suite, l’IA n’a pas la capacité de ré-évaluer les données au cours de l’apprentissage, mais peut ré-évaluer le modèle si les données sont corrigées. | |||
La | ==== La constitution de la timeline de l’attaquant (Forensic) ==== | ||
Une des activités en cybersécurité consiste, une fois qu’une attaque a été détectée à retracer l’historique de l’attaque et le modus operandi de l’attaquant. Cette activité est encore souvent réalisée de façon “artisanale” en analysant des dumps de disque ou des journaux d’évènements. La complexité grandissante des attaques, les améliorations des techniques d’offuscation des programmes malveillants (multiple mutation, modifications aléatoire, …) rend difficile ces détections par une IA. | |||
De plus les traces collectées lors de l’analyse doivent pouvoir être utilisées en cas de poursuite judiciaire et défendues avec conviction, une preuve produite par le seul travail d’une IA paraît encore difficilement recevable : c’est un des objectifs de la [https://www.confiance.ai/ certification de l’IA]. | |||
== Les principales limites connues de l'IA en cybersécurité == | |||
=== Qualité de la donnée === | |||
La qualité des données nécessaires à l'entraînement de l'IA, nécessite d'être extrêmement bien qualifié afin de limiter des faux positifs (par exemple cas qualifié d’intrusion, alors que ce n’en est pas) ou les risques de non-détection (faux négatif). | |||
La qualité d’un système IA (données + algorithme) dépend de nombreux facteurs, qui vont tous agir pour augmenter la '''confiance''' de l’utilisateur (on parle de Trustworthy AI) : | === Qualité du système IAs === | ||
La qualité d’un système IA (données + algorithme) dépend de nombreux facteurs, qui vont tous agir pour augmenter la '''confiance''' de l’utilisateur (on parle de ''Trustworthy'' AI) : | |||
# '''Exactitude''' : la première qualité d’un système IA est bien sûr son exactitude, c’est-à-dire sa capacité à obtenir des performances au niveau de ce qui est attendu (dans les spécifications par exemple). On mesure cette qualité avec des indicateurs techniques de performance comme décrit dans la partie 1 §1), ainsi qu’avec des indicateurs métier, le tout sur le système en production : il faut donc que le système IA généralise bien, c’est-à-dire qu’il doit avoir des performances sur les données de production du même ordre que sur les données d’apprentissage. | # '''Exactitude''' : la première qualité d’un système IA est bien sûr son exactitude, c’est-à-dire sa capacité à obtenir des performances au niveau de ce qui est attendu (dans les spécifications par exemple). On mesure cette qualité avec des indicateurs techniques de performance comme décrit dans la partie 1 §1), ainsi qu’avec des indicateurs métier, le tout sur le système en production : il faut donc que le système IA généralise bien, c’est-à-dire qu’il doit avoir des performances sur les données de production du même ordre que sur les données d’apprentissage. | ||
Ligne 351 : | Ligne 260 : | ||
# '''Explicabilité''' : on demande ici, en plus de la transparence sur le processus entrée-résultat, d’avoir des explications sur les raisons pour lesquelles le système a obtenu ce résultat. L’IA explicable (ou XAI) est, dans certains cas une obligation légale (par exemple dans le cas de l’attribution d’un crédit). Obtenir un système IA explicable va amener à se restreindre à certains algorithmes (par exemple une régression linéaire plutôt qu’on réseau de neurones), ce qui va en général réduire la performance. La recherche sur la XAI est très active. | # '''Explicabilité''' : on demande ici, en plus de la transparence sur le processus entrée-résultat, d’avoir des explications sur les raisons pour lesquelles le système a obtenu ce résultat. L’IA explicable (ou XAI) est, dans certains cas une obligation légale (par exemple dans le cas de l’attribution d’un crédit). Obtenir un système IA explicable va amener à se restreindre à certains algorithmes (par exemple une régression linéaire plutôt qu’on réseau de neurones), ce qui va en général réduire la performance. La recherche sur la XAI est très active. | ||
# '''Robustesse et fiabilité''' : un système IA doit être robuste à de petits changements dans les données en entrée qui doivent ne produire que de petits changements sur les résultats (c’est l’idée qu’il y a toujours un peu de bruit sur les données et que le système ne doit pas sur-réagir). De même, les données vont graduellement changer au cours du temps et le système devrait continuer à bien fonctionner et rester fiable. | # '''Robustesse et fiabilité''' : un système IA doit être robuste à de petits changements dans les données en entrée qui doivent ne produire que de petits changements sur les résultats (c’est l’idée qu’il y a toujours un peu de bruit sur les données et que le système ne doit pas sur-réagir). De même, les données vont graduellement changer au cours du temps et le système devrait continuer à bien fonctionner et rester fiable. | ||
# '''Éthique''' : quand un système risque d’impacter la vie ou la santé des citoyens, il faut s’assurer qu’il respecte les principes des droits humains, notamment la confidentialité de la vie privée (privacy), les lois et règles en vigueur dans la société et qu’il n’est pas discriminatoire envers un sous-groupe de citoyens, du fait du biais dans les données d’apprentissage. Ces critères ont été décrits en détail . | # '''Éthique''' : quand un système risque d’impacter la vie ou la santé des citoyens, il faut s’assurer qu’il respecte les principes des droits humains, notamment la confidentialité de la vie privée (''privacy''), les lois et règles en vigueur dans la société et qu’il n’est pas discriminatoire envers un sous-groupe de citoyens, du fait du biais dans les données d’apprentissage. Ces critères ont été décrits en détail [31] . | ||
# '''Sécurité''' : un système IA doit assurer la (cyber)sécurité des utilisateurs, la protection de leurs données et, de façon générale, la protection du processus complet d’analyse. | # '''Sécurité''' : un système IA doit assurer la (cyber)sécurité des utilisateurs, la protection de leurs données et, de façon générale, la protection du processus complet d’analyse. | ||
# '''Prouvabilité''' : enfin, le système IA doit être prouvable, c’est à dire capable de garantir que la performance du système sera bien au niveau indiqué. Le domaine de la « certification de l’IA » donne lieu à des programmes de recherche très actifs , notamment pour les applications critiques. Le problème vient de ce que le Machine Learning fournit des modèles « probabilistes », c’est-à-dire produisant les réponses les plus probables et non pas des réponses garanties exactes comme ce qu’un algorithme habituel exact fournit. Mais justement, on utilise l’IA dans des situations où on ne dispose pas d’algorithmes exacts. | # '''Prouvabilité''' : enfin, le système IA doit être prouvable, c’est à dire capable de garantir que la performance du système sera bien au niveau indiqué. Le domaine de la « certification de l’IA » donne lieu à des programmes de recherche très actifs , notamment pour les applications critiques. Le problème vient de ce que le Machine Learning fournit des modèles « probabilistes », c’est-à-dire produisant les réponses les plus probables et non pas des réponses garanties exactes comme ce qu’un algorithme habituel exact fournit. Mais justement, on utilise l’IA dans des situations où on ne dispose pas d’algorithmes exacts. | ||
Ligne 359 : | Ligne 268 : | ||
'''Il faut noter que, en pratique, dans l’état actuel des connaissances, il est souvent impossible de garantir l’ensemble de ces facteurs de qualité.''' | '''Il faut noter que, en pratique, dans l’état actuel des connaissances, il est souvent impossible de garantir l’ensemble de ces facteurs de qualité.''' | ||
=== Le manque d’information sur les critères de détection === | |||
Les résultats produits par des IA sont souvent binaires (attaque/pas attaque, vulnérable/non vulnérable). Il n’y a en général pas d’explication des résultats obtenus par l’IA (dans les produits clé en main actuels), alors qu’un humain sera capable de justifier les différents critères pris en compte dans l’évaluation et la qualification d’une menace et d’une attaque. Si l’on souhaite ces informations, alors il faut se limiter à certains algorithmes qui fournissent l’importance des critères (régression linéaire par exemple) voire même des explications (arbres de décision). | |||
== L'IA peut-elle traiter tous les maux de la cybersécurité ? == | |||
De par sa nature probabiliste, l’Intelligence Artificielle ne pourra pas traiter en autonomie les activités réalisées de façon ponctuelle ou en faible volumétrie. Par voie de conséquence, l’Intelligence Artificielle ne peut prétendre aux activités de réponse sur incident, gestion de crise et de reprise de l’existant. | |||
Dans la matrice définie au paragraphe 4 (1ère partie) , les objectifs de sécurité Identifier, Protéger, et Détecter peuvent être traités grâce à des volumes de données conséquents (nombre d’actifs, profils de droits, volumétrie des journaux, etc.), les objectifs Répondre et Reprise sont plus complexes à traiter du fait du manque de données disponibles. | |||
En conclusion, on ne doit pas attendre de l’IA qu’elle produise une révolution qui remplace les outils existants ou résolve tous les problèmes . L’IA permet cependant déjà d’automatiser des tâches répétitives en allant plus loin que les solutions d’automatisation RPA (''robotic process automation'') scriptées , de traiter des volumes de données trop importants pour qu’un humain puisse les traiter dans des temps raisonnables et de donner du contexte. Elle peut aussi être utilisée pour concevoir des nouvelles méthodes de traitement (en protection, détection et réaction). Si sur certaines applications bien définies, l’IA est très efficace, elle reste limitée à ces périmètres : on parle de ''Narrow AI'', par opposition à une IA générale (''Artificial General Intelligence'' ou Strong AI) qui serait capable de réaliser de multiples tâches, comme un être humain sait le faire (l’IA générale n’existe pas aujourd’hui et c’est sans doute pour longtemps). Bien comprendre ses domaines d’intervention est donc nécessaire. | |||
== Notes == | |||
[1] Intelligence Artificielle. <nowiki>https://www.larousse.fr/encyclopedie/divers/intelligence_artificielle/187257</nowiki> | |||
[2] Systèmes experts : <nowiki>https://link.springer.com/chapter/10.1007/978-3-642-84048-7_1</nowiki> | |||
[3] Clive L. Dym. Issues in the design and implementation of expert systems. Arti cial Intelligence for Engineering, Design, Analysis and Manufacturing, no. 1, pp. 37-46. 1987. <nowiki>https://core.ac.uk/download/pdf/70977779.pdf</nowiki> | |||
[4]Jacques Ferber. Les Systèmes Multi Agents: vers une intelligence collective. InterEditions. 1995. <nowiki>http://www.lirmm.fr/~ferber/publications/LesSMA_Ferber.pdf</nowiki> | |||
[5] https://ojs.aaai.org/index.php/aimagazine/article/view/2426 | |||
[6] Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton. ImageNet Classification with Deep Convolutional Neural Networks. Neural Information Processing Systems pp 1097-1105. 2012. papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf | |||
[7] <nowiki>https://scikit-learn.org/</nowiki> | |||
[8] Quelques méthodes d’apprentissages : Bayesiens, Machine à vecteur de support, Arbre de décision | |||
[9] Voir par exemple les travaux de DeepMind <nowiki>https://doi.org/10.1038/s41586-019-1724-zs</nowiki> | |||
[10] https://pwnagotchi.ai/ | |||
[11] Autonomous Penetration Testing using Reinforcement Learning <nowiki>https://arxiv.org/abs/1905.05965</nowiki> | |||
[12] Mikolov, Tomas, Kai Chen, Greg Corrado, and Jeffrey Dean. Efficient estimation of word representations in vector space. ''arXiv preprint,'' 2013. <nowiki>https://arxiv.org/pdf/1301.3781.pdf</nowiki> | |||
[13] Narayanan, Annamalai, Mahinthan Chandramohan, Rajasekar Venkatesan, Lihui Chen, Yang Liu, and Shantanu Jaiswal. graph2vec: Learning distributed representations of graphs. arXiv preprint, 2017. <nowiki>https://arxiv.org/pdf/1707.05005.pdf</nowiki> | |||
[14] https://github.com/aaronwangy/Data-Science-Cheatsheet/blob/main/Data_Science_Cheatsheet.pdf<nowiki/>f | |||
[15] https://towardsdatascience.com/overview-of-supervised-machine-learning-algorithms-a5107d036296 | |||
[16] http://cseweb.ucsd.edu/classes/wi08/cse253/Handouts/lecun-98b.pdf | |||
[17] https://hal.archives-ouvertes.fr/hal-00003371 | |||
[18] https://arxiv.org/abs/1406.2661 | |||
[19] Vladimir Vapnik – Estimation of Dependences based on empirical data. Springer. Information sciences and Statistics. Reprint of 1982 Edition with afterword. 2006 | |||
[20] Togbe, Maurras, Yousra Chabchoub, Aliou Boly, and Raja Chiky. Etude comparative des méthodes de détection d'anomalies. Revue des Nouvelles Technologies de l'Information, 2020. <nowiki>https://hal.archives-ouvertes.fr/hal-02874904/document</nowiki> | |||
[21] Hinton, Geoffrey E., and Ruslan R. Salakhutdinov. Reducing the dimensionality of data with neural networks.Science 313, no. 5786: pp. 504-507. 2006. <nowiki>https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.459.3788&rep=rep1&type=pdf</nowiki> | |||
[22] Liu, Fei Tony, Kai Ming Ting, Zhi-Hua Zhou. Isolation forest. In 2008 eighth ieee international conference on data mining, pp. 413-422. IEEE, 2008. <nowiki>https://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/icdm08b.pdf?q=isolation-forest</nowiki> | |||
[23] Schölkopf, B., Platt, J.C., Shawe-Taylor, J., Smola, A.J. and Williamson, R.C. Estimating the support of a high-dimensional distribution. Neural computation, 13(7), pp.1443-1471. 2001. | |||
[24] Bengio, Yoshua, Réjean Ducharme, Pascal Vincent, and Christian Jauvin. A neural probabilistic language model. Journal of machine learning research 3, no. Feb: 1137-1155. 2003. <nowiki>https://www.jmlr.org/papers/volume3/tmp/bengio03a.pdf</nowiki> | |||
[25] Mikolov, Tomas, Kai Chen, Greg Corrado, and Jeffrey Dean. Efficient estimation of word representations in vector space. arXiv preprint, 2013. <nowiki>https://arxiv.org/pdf/1301.3781.pdf</nowiki> | |||
[26] Vaswani, Ashish, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, and Illia Polosukhin. Attention is all you need. In Advances in neural information processing systems, pp. 5998-6008. 2017. <nowiki>https://proceedings.neurips.cc/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf</nowiki> | |||
[27] <nowiki>https://ai.googleblog.com/2018/11/open-sourcing-bert-state-of-art-pre.html</nowiki> | |||
[28] Martin, Louis, Benjamin Muller, Pedro Javier Ortiz Suárez, Yoann Dupont, Laurent Romary, Éric Villemonte de La Clergerie, Djamé Seddah, and Benoît Sagot. Camembert: a tasty french language model. arXiv preprint, 2019. <nowiki>https://arxiv.org/abs/1911.03894</nowiki> | |||
[29] Le, Hang, Loïc Vial, Jibril Frej, Vincent Segonne, Maximin Coavoux, Benjamin Lecouteux, Alexandre Allauzen, Benoît Crabbé, Laurent Besacier, and Didier Schwab. Flaubert: Unsupervised language model pre-training for french. arXiv preprint, 2019. <nowiki>https://arxiv.org/pdf/1912.05372.pdf</nowiki> | |||
[30] Radford, Alec, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, and Ilya Sutskever. Language models are unsupervised multitask learners. OpenAI blog 1, no.8:9. 2019. <nowiki>https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf</nowiki> | |||
[31] Lignes directrices en matière d’éthique pour une IA digne de confiance. High Level Expert Group on AI (AI HLEG), Commission Européenne. 8 avril 2019. <nowiki>https://ec.europa.eu/newsroom/dae/document.cfm?doc_id=60427</nowiki> | |||
</translate> | |||
{{PageSubHeader Commun | |||
|WorkGroup=IA et cybersécurité | |||
}} |
Dernière version du 10 juillet 2024 à 14:05
Identifie et analyse certains cas d'usage où l’Intelligence Artificielle permet des avancées pour la cybersécurité.
Catégorie : Commun Statut : Production 1 : Idée - 2 : Prototype - 3 : Validation - 4 : Production
Qu'est-ce que 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 » [1] . 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’IA symbolique[modifier | modifier le wikicode]
Les systèmes experts [2] 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 [3]. 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 [4] 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 [5] . 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 [6] , 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 [7]). 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.
Les approches usuelles en cybersécurité[modifier | modifier le wikicode]
Les algorithmes d’apprentissage correspondent essentiellement à deux grandes approches :
- L’apprentissage supervisé [8] : 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.
Les approches non usuelles en cybersécurité[modifier | modifier le wikicode]
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 [9] permet par exemple de réaliser des tests de pénétration [10,11]. 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) [12] ou des graphes (graph2vec)[13]. 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 [14] qui les résume en 5 pages (denses !) ou la synthèse [15]: 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.
Le Deep Learning, ou l'utilisation de réseau de neurones[modifier | modifier le wikicode]
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 ».
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 (xk,yk ) xk est une donnée
xk =(xk1,…,xkp ) avec p variables (par exemple pour une image 10x10, p=10*10=100) et yk est l’étiquette de l’exemple xk (on est en situation d’apprentissage supervisé). Par exemple :
Pour chaque exemple xk le résultat associé 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 soit aussi proche que possible de l’étiquette yk. 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 [16] 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 à xk est xk 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 xk. 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).
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 [17] . 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).
Focus sur les Generative Adversarial Networks[modifier | modifier le wikicode]
Les Generative Adversarial Networks (GAN) [18]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.
Mesure et performance des modèles[modifier | modifier le wikicode]
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 xk sa classe produite par le modèle et on la compare à sa vraie classe yk. On dit que
Ensuite, on compte, sur le dataset d’apprentissage 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) :
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) :
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 [19]) 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.
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.
Qu'est-ce que 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).
Les apports de l'IA pour la cybersécurité[modifier | modifier le wikicode]
L’apport de l’IA pour augmenter les méthodes de protection et de réponse[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.
Les technologies les plus matures[modifier | modifier le wikicode]
Il existe des technologies d’IA très matures et qui peuvent directement être utiles pour la cybersécurité.
La détection d’anomalie consiste à identifier des éléments ou événements qui diffèrent significativement des autres éléments : on parle souvent en IA d’outlier pour indiquer que l’élément n’obéit pas à la distribution des autres éléments. Par exemple, un pic d'activités inattendu peut correspondre à une intrusion sur un réseau informatique. Il y a deux familles principales de détection d’anomalie [20] :
Les méthodes supervisées : on connaît ici l’étiquette (normal / anormal) des éléments du dataset d’apprentissage. Ces méthodes souffrent cependant du problème de déséquilibre des classes : il y a en général plus de 99% des éléments qui sont normaux, et moins de 1% d’anomalies. La plupart des classifieurs ont donc beaucoup de mal à obtenir une bonne solution. Surtout qu’en plus, de nouvelles anomalies peuvent se produire qui n’auront pas été apprises. On préfère donc les méthodes non supervisées. Cependant, la technique des auto-encodeurs est souvent utilisée :
- Auto-encodeur [21]: un auto-encodeur est entraîné sur des données normales. La distribution des erreurs sur le dataset d’apprentissage est collectée. Ensuite, quand un élément est présenté on compare son erreur (écart entre élément reconstruit par l’auto-encodeur et élément initial) aux erreurs « normales ». Si elle est largement plus grande c’est une anomalie. Comme nous l’avons vu plus haut, l’auto-encodeur est entraîné en mode non supervisé : ici on l’a utilisé sur des données normales. Si on ne dispose pas de cette information, on l’entraînera sur toutes les données, mais comme il y a toujours beaucoup plus de données normales, le modèle apprendra essentiellement à reconstruire les données normales.
Les méthodes non supervisées : on n’a pas d’étiquette (normal / anormal) des éléments du dataset d’apprentissage. On dispose de plusieurs techniques simples pour détecter les anomalies.
- L’algorithme de plus proche voisin détecte comme anomalie les éléments dont les k-distances (la distance de l’élément à son kième plus proche voisin) sont les plus grandes. L’idée est que les éléments anormaux sont loin des autres éléments.
- Isolation Forest [22] : on utilise un l’algorithme de forêt aléatoire pour isoler les points par des séparations successives de l’espace. Les points faciles à séparer sont les anomalies, ils sont isolés dans des zones à faible densité.
- One-class SVM [23]: on détermine un hyperplan qui met le plus d’éléments possible d’un côté, celles qui sont de l’autre côté sont les anomalies.
Le Traitement automatique du langage (TAL en français ou NLP, Natural Language Processing en anglais) a de très nombreuses applications :
Le Traitement automatique du langage (TAL en français ou NLP, Natural Language Processing en anglais) a de très nombreuses applications :
- Classification de texte : il s’agit de classer les documents entre plusieurs catégories prédéfinies, par exemple pour les filtres de spams (solution utilisée par Gmail) ;
- Catégorisation (clusturing) de texte : il s’agit de regrouper les textes dont les caractéristiques (groupes de mots et expressions) sont similaires ; on parle souvent de regroupement par sujets ;
- Analyse du « sentiment », c’est-à-dire l’opinion exprimée dans un texte ou sur un media social ; cela est utilisé pour identifier des menaces potentielles de sécurité ;
- Génération de texte : par exemple pour répondre aux questions pour les assistants intelligents (Siri ou Alexa) ou les chatbots. Après une phase de transcription speech-to-Text, le système propose une réponse, adaptée au contexte ;
- Résumé : il s’agit de produire automatiquement une synthèse du document. Le résumé peut être construit à partir des phrases jugées les plus importantes du texte ou par génération de nouvelles phrases ;
- Complétion automatique : est utilisée par Google ou les smartphones pour compléter la requête pendant qu’on la tape.
Le NLP s’est développé en trois phases :
- Jusqu’aux années 90, on a développé des méthodes symboliques, à base de règles de grammaire et des ontologies codées « à la main », avec les limites habituelles de ces techniques ;
- A partir des années 90, la quantité de données disponibles, sur le Web notamment, permet le développement de méthodes de Machine Learning. Dès la fin des années 2000, ces méthodes permettent déjà des résultats nettement supérieurs aux méthodes symboliques, notamment en matière de traduction automatique, à condition de disposer de corpus de données très grands. Si c’est le cas, il suffit de statistiques d’occurrences de mots ou de n-grams (n mots successifs) ou bien de modèles simples de Machine Learning sur des représentations du texte (features) : « simple models and a lot of data trump more elaborate models based on less data ».
- A partir des années 2010, les méthodes à base de réseaux de neurones (modèle de langage neuronal) prédominent : l’article séminal de Bengio et ses collègues [24] propose d’entraîner un réseau de neurones à prévoir un mot à partir des mots qui le précèdent (le dataset d’apprentissage n’a dont pas besoin d’être étiqueté, ce qui est évidemment un énorme avantage). Pour cela, le réseau de neurones produit une représentation des mots (word embedding) dans un vecteur qui capture la similarité sémantique entre les mots (la similarité cosinus des vecteurs représentant deux mots synonymes, mesurée par leur produit scalaire, est proche de 1). La méthode word2vec [25] créée en 2013 par Google, produit, grâce à un réseau de neurones, une représentation des mots par un vecteur de 100-1000 dimensions (features). Elle est aujourd’hui très largement utilisée, notamment pour sa rapidité, et la faible dimension de la représentation.
- Récemment, des méthodes de réseaux de neurones basées sur les transformers [26] (autoencodeurs avec un mécanisme d’attention) sont apparues pour construire de meilleurs embeddings. Grâce à la possibilité de paralléliser les traitements, on peut entraîner des modèles sur de très grands corpus : BERT (Bidirectional Encoder Representations from Transformers) est ainsi proposé en open source par Google [27] comme un modèle pré-entraîné, qu’on peut ensuite « fine-tuner » sur son problème particulier (c’est-à-dire qu’on fait quelques itérations du code fourni sur son propre dataset). Des versions pour le français sont disponibles : CamenBERT [28], et FlauBERT [29] .
- Enfin, la génération des modèles GPT , annoncée par Open-AI en 2018, est à base de transformers, mais énormes (GPT 2 a 1,5 milliard de paramètres et GPT 3, 175 milliards) : ils permettent à partir d’un texte quelconque fourni en entrée de générer (on dit que ce sont des modèles génératifs) des textes quasiment impossibles à distinguer de textes écrits par des humains (ils apprennent à prévoir le prochain mot dans un texte). Open-AI a finalement décidé de ne pas mettre les modèles GPT en open source, parce qu’ils seraient « trop dangereux ».
Ces différents modèles permettent de générer des représentations qui sont ensuite utilisées en entrée de modèles classiques de machine learning [30] (classification, clustering …)
L'utilisation pour la protection des actifs numériques[modifier | modifier le wikicode]
Asset inventory / IT Asset Inventory (natural language requests) / Asset Classification
Gestion des configurations et identification d’erreurs humaines
L’analyse par une IA des configurations d’équipements homogènes d’un système d’information pourrait permettre de détecter des anomalies de configuration. Cela permettrait de réduire les risques liés à une erreur de configuration humaine, à un oubli ou l’absence d’intégration d’une partie du parc dans un outil de gestion des configurations. A titre d’exemple, une IA pourrait détecter l’absence d’un élément de configuration qu’elle ne détecterait que sur 1% du parc de routeurs d’une même technologie.
Amélioration de la gestion des vulnérabilités et de l’exposition
Analyse de l’exposition des assets et croisement avec les vulnérabilités pour prioriser les vulnérabilités à remédier. Couplage avec des sources de CTI pour prioriser les types de vulnérabilités exploitées à un instant T.
Renforcement des processus d’authentification des utilisateurs
L’utilisation de l’IA dans les outils d’authentification basés sur de la biométrie classique se généralise, y compris au niveau du grand public. Des mécanismes comme Face ID d’Apple s’appuient par exemple sur des moteurs neuronaux.
Il est également envisageable d’utiliser l’IA afin d’analyser le comportement d’un utilisateur et proposer d’adapter son mode d’authentification en fonction de sa posture (authentification simple ou authentification 2FA).
La classification des données
Analyse sémantique / tag / format type (regex)
La définition de droits d’accès sur des ressources IT ou sur des données
L’analyse comportementale de segments d’utilisateurs peut permettre de proposer une matrice type de droits à appliquer sur des systèmes ou sur des données pour une population homogène (même fonction, même organisation, même localisation, …). L’analyse de la temporalité des accès à ces ressources IT ou aux données pourraient également permettre de mettre en place une politique d’octroi des accès Just-In-Time (par exemple, n’ouvrir les droits au logiciel de paye à la population en charge qu’aux périodes habituelles de lancement des cycles de paye).
L'utilisation pour la détection d'attaque[modifier | modifier le wikicode]
- Détection sur le réseau : détection des flux malveillants sur la base d’une analyse comportementale
- Endpoint Protection
- Breach Risk Prediction ???
- Artificial Intelligence Identifies Unknown Threats / Detecting New Threats
- Accelerates Detection Times
- Access rights deviation identification
- DLP / Illegitimate Data access
L'utilisation pour la réaction en cas d'incident[modifier | modifier le wikicode]
- Réaction au niveau du réseau : blocage des flux réseau catégorisés comme malveillants
- Réaction au niveau des endpoints : arrêt des process, suppression de fichiers malveillants, …
- Accélération des temps de réponse en fournissant des éléments de contexte et des propositions d’action de remédiation à valider par les analystes Sécurité et les équipes IT
- Remédiation des droits d’accès non standardisés
Ce que l'IA ne peut pas (encore) faire en cybersécurité[modifier | modifier le wikicode]
L'IA ne va pas remplacer votre équipe cyber[modifier | modifier le wikicode]
Aujourd’hui l’IA ne permet pas de se passer d’une équipe d’experts en cybersécurité. La diversité des menaces, le besoin de prise de décision, l’analyse de nouveaux types d’attaques, la qualification d’une menace en fonction des cas réellement déployés en production, … font qu’aujourd’hui l’IA est plus perçue comme un outil d’aide à la décision et d’aide à la détection (pré-détection, qualification) sans pour autant atteindre un niveau de qualité permettant d’accorder une confiance absolue aux résultats obtenue par l’IA. Cependant, l’IA permet de traiter plus de volumes de données, de détecter plus d’attaques, dans un contexte de pénurie d’experts en cybersécurité ...
Détecter un nouveau type d'attaque[modifier | modifier le wikicode]
Du fait qu'il faille entraîner l'IA avec des données existantes sur des situations passées rend très peu probable la détection d'une attaque qui n'exploiterait aucun mécanisme ayant déjà été identifié. L’IA est en mesure de détecter une variation sur un modèle mais peine encore pour qualifier si cette anomalie est à considérer comme une menace ou non, c’est à dire que l’IA génère souvent trop de faux positifs (situations normales classées comme anormales).
L'IA peut-elle prédire la prochaine attaque cyber ?[modifier | modifier le wikicode]
En se basant sur plusieurs sources telles que, le darkweb, les publications autour du secteur d’activités sur les différents réseaux sociaux, il peut être tentant d’essayer de prévoir une prochaine attaque d’envergure. Toutefois les attaques cyber sont jusqu’à présent toujours déclenchées par la volonté d’un attaquant de nuire à sa cible. L’intelligence artificielle n’a pas la capacité de prévoir les facteurs psychologiques de prise de décision chez l’attaquant.
L'IA ne détectera pas une attaque déjà présente dans un jeu de données[modifier | modifier le wikicode]
Le cas où la donnée qui a servi à l’entraînement initial contenait une vulnérabilité ou une attaque encore non identifiée et donc étiquetée comme normale, nécessite un réapprentissage complet ; même si la menace est identifiée par la suite, l’IA n’a pas la capacité de ré-évaluer les données au cours de l’apprentissage, mais peut ré-évaluer le modèle si les données sont corrigées.
La constitution de la timeline de l’attaquant (Forensic)[modifier | modifier le wikicode]
Une des activités en cybersécurité consiste, une fois qu’une attaque a été détectée à retracer l’historique de l’attaque et le modus operandi de l’attaquant. Cette activité est encore souvent réalisée de façon “artisanale” en analysant des dumps de disque ou des journaux d’évènements. La complexité grandissante des attaques, les améliorations des techniques d’offuscation des programmes malveillants (multiple mutation, modifications aléatoire, …) rend difficile ces détections par une IA.
De plus les traces collectées lors de l’analyse doivent pouvoir être utilisées en cas de poursuite judiciaire et défendues avec conviction, une preuve produite par le seul travail d’une IA paraît encore difficilement recevable : c’est un des objectifs de la certification de l’IA.
Les principales limites connues de l'IA en cybersécurité[modifier | modifier le wikicode]
Qualité de la donnée[modifier | modifier le wikicode]
La qualité des données nécessaires à l'entraînement de l'IA, nécessite d'être extrêmement bien qualifié afin de limiter des faux positifs (par exemple cas qualifié d’intrusion, alors que ce n’en est pas) ou les risques de non-détection (faux négatif).
Qualité du système IAs[modifier | modifier le wikicode]
La qualité d’un système IA (données + algorithme) dépend de nombreux facteurs, qui vont tous agir pour augmenter la confiance de l’utilisateur (on parle de Trustworthy AI) :
- Exactitude : la première qualité d’un système IA est bien sûr son exactitude, c’est-à-dire sa capacité à obtenir des performances au niveau de ce qui est attendu (dans les spécifications par exemple). On mesure cette qualité avec des indicateurs techniques de performance comme décrit dans la partie 1 §1), ainsi qu’avec des indicateurs métier, le tout sur le système en production : il faut donc que le système IA généralise bien, c’est-à-dire qu’il doit avoir des performances sur les données de production du même ordre que sur les données d’apprentissage.
- Transparence : la seconde qualité d’un système IA est d’être transparent pour les utilisateurs, c’est-à-dire qu’il faut que les utilisateurs puissent comprendre les décisions proposées par le système. Cela passe par la transparence sur les données qui ont été utilisées (traçabilité), et sur le process qui permet de passer d’une donnée présentée en entrée à un résultat. Certains algorithmes sont très clairs sur ce processus (les régressions linéaires ou les arbres de décision, d’autres beaucoup moins (réseaux de neurones) dont on dit alors que ce sont des « boîtes noires ».
- Explicabilité : on demande ici, en plus de la transparence sur le processus entrée-résultat, d’avoir des explications sur les raisons pour lesquelles le système a obtenu ce résultat. L’IA explicable (ou XAI) est, dans certains cas une obligation légale (par exemple dans le cas de l’attribution d’un crédit). Obtenir un système IA explicable va amener à se restreindre à certains algorithmes (par exemple une régression linéaire plutôt qu’on réseau de neurones), ce qui va en général réduire la performance. La recherche sur la XAI est très active.
- Robustesse et fiabilité : un système IA doit être robuste à de petits changements dans les données en entrée qui doivent ne produire que de petits changements sur les résultats (c’est l’idée qu’il y a toujours un peu de bruit sur les données et que le système ne doit pas sur-réagir). De même, les données vont graduellement changer au cours du temps et le système devrait continuer à bien fonctionner et rester fiable.
- Éthique : quand un système risque d’impacter la vie ou la santé des citoyens, il faut s’assurer qu’il respecte les principes des droits humains, notamment la confidentialité de la vie privée (privacy), les lois et règles en vigueur dans la société et qu’il n’est pas discriminatoire envers un sous-groupe de citoyens, du fait du biais dans les données d’apprentissage. Ces critères ont été décrits en détail [31] .
- Sécurité : un système IA doit assurer la (cyber)sécurité des utilisateurs, la protection de leurs données et, de façon générale, la protection du processus complet d’analyse.
- Prouvabilité : enfin, le système IA doit être prouvable, c’est à dire capable de garantir que la performance du système sera bien au niveau indiqué. Le domaine de la « certification de l’IA » donne lieu à des programmes de recherche très actifs , notamment pour les applications critiques. Le problème vient de ce que le Machine Learning fournit des modèles « probabilistes », c’est-à-dire produisant les réponses les plus probables et non pas des réponses garanties exactes comme ce qu’un algorithme habituel exact fournit. Mais justement, on utilise l’IA dans des situations où on ne dispose pas d’algorithmes exacts.
L’ensemble de ces facteurs visent à établir une IA de confiance, ce que le projet de la CE dans l’AI Act cherche à réguler pour les applications IA à haut risque : ce cadre législatif permettra de protéger les citoyens contre les conséquences néfastes de l’usage d’applications IA. En particulier, il visera à mettre en place un processus systématique de traçage des données (la qualité des données est évidemment critique pour la qualité du système IA), de contrôle des étapes de développement et de maintenance tout au long du cycle de vie de l’application IA.
Il faut noter que, en pratique, dans l’état actuel des connaissances, il est souvent impossible de garantir l’ensemble de ces facteurs de qualité.
Le manque d’information sur les critères de détection[modifier | modifier le wikicode]
Les résultats produits par des IA sont souvent binaires (attaque/pas attaque, vulnérable/non vulnérable). Il n’y a en général pas d’explication des résultats obtenus par l’IA (dans les produits clé en main actuels), alors qu’un humain sera capable de justifier les différents critères pris en compte dans l’évaluation et la qualification d’une menace et d’une attaque. Si l’on souhaite ces informations, alors il faut se limiter à certains algorithmes qui fournissent l’importance des critères (régression linéaire par exemple) voire même des explications (arbres de décision).
L'IA peut-elle traiter tous les maux de la cybersécurité ?[modifier | modifier le wikicode]
De par sa nature probabiliste, l’Intelligence Artificielle ne pourra pas traiter en autonomie les activités réalisées de façon ponctuelle ou en faible volumétrie. Par voie de conséquence, l’Intelligence Artificielle ne peut prétendre aux activités de réponse sur incident, gestion de crise et de reprise de l’existant.
Dans la matrice définie au paragraphe 4 (1ère partie) , les objectifs de sécurité Identifier, Protéger, et Détecter peuvent être traités grâce à des volumes de données conséquents (nombre d’actifs, profils de droits, volumétrie des journaux, etc.), les objectifs Répondre et Reprise sont plus complexes à traiter du fait du manque de données disponibles.
En conclusion, on ne doit pas attendre de l’IA qu’elle produise une révolution qui remplace les outils existants ou résolve tous les problèmes . L’IA permet cependant déjà d’automatiser des tâches répétitives en allant plus loin que les solutions d’automatisation RPA (robotic process automation) scriptées , de traiter des volumes de données trop importants pour qu’un humain puisse les traiter dans des temps raisonnables et de donner du contexte. Elle peut aussi être utilisée pour concevoir des nouvelles méthodes de traitement (en protection, détection et réaction). Si sur certaines applications bien définies, l’IA est très efficace, elle reste limitée à ces périmètres : on parle de Narrow AI, par opposition à une IA générale (Artificial General Intelligence ou Strong AI) qui serait capable de réaliser de multiples tâches, comme un être humain sait le faire (l’IA générale n’existe pas aujourd’hui et c’est sans doute pour longtemps). Bien comprendre ses domaines d’intervention est donc nécessaire.
Notes[modifier | modifier le wikicode]
[1] Intelligence Artificielle. https://www.larousse.fr/encyclopedie/divers/intelligence_artificielle/187257
[2] Systèmes experts : https://link.springer.com/chapter/10.1007/978-3-642-84048-7_1
[3] Clive L. Dym. Issues in the design and implementation of expert systems. Arti cial Intelligence for Engineering, Design, Analysis and Manufacturing, no. 1, pp. 37-46. 1987. https://core.ac.uk/download/pdf/70977779.pdf
[4]Jacques Ferber. Les Systèmes Multi Agents: vers une intelligence collective. InterEditions. 1995. http://www.lirmm.fr/~ferber/publications/LesSMA_Ferber.pdf
[5] https://ojs.aaai.org/index.php/aimagazine/article/view/2426
[6] Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton. ImageNet Classification with Deep Convolutional Neural Networks. Neural Information Processing Systems pp 1097-1105. 2012. papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
[7] https://scikit-learn.org/
[8] Quelques méthodes d’apprentissages : Bayesiens, Machine à vecteur de support, Arbre de décision
[9] Voir par exemple les travaux de DeepMind https://doi.org/10.1038/s41586-019-1724-zs
[11] Autonomous Penetration Testing using Reinforcement Learning https://arxiv.org/abs/1905.05965
[12] Mikolov, Tomas, Kai Chen, Greg Corrado, and Jeffrey Dean. Efficient estimation of word representations in vector space. arXiv preprint, 2013. https://arxiv.org/pdf/1301.3781.pdf
[13] Narayanan, Annamalai, Mahinthan Chandramohan, Rajasekar Venkatesan, Lihui Chen, Yang Liu, and Shantanu Jaiswal. graph2vec: Learning distributed representations of graphs. arXiv preprint, 2017. https://arxiv.org/pdf/1707.05005.pdf
[14] https://github.com/aaronwangy/Data-Science-Cheatsheet/blob/main/Data_Science_Cheatsheet.pdff
[15] https://towardsdatascience.com/overview-of-supervised-machine-learning-algorithms-a5107d036296
[16] http://cseweb.ucsd.edu/classes/wi08/cse253/Handouts/lecun-98b.pdf
[17] https://hal.archives-ouvertes.fr/hal-00003371
[18] https://arxiv.org/abs/1406.2661
[19] Vladimir Vapnik – Estimation of Dependences based on empirical data. Springer. Information sciences and Statistics. Reprint of 1982 Edition with afterword. 2006
[20] Togbe, Maurras, Yousra Chabchoub, Aliou Boly, and Raja Chiky. Etude comparative des méthodes de détection d'anomalies. Revue des Nouvelles Technologies de l'Information, 2020. https://hal.archives-ouvertes.fr/hal-02874904/document
[21] Hinton, Geoffrey E., and Ruslan R. Salakhutdinov. Reducing the dimensionality of data with neural networks.Science 313, no. 5786: pp. 504-507. 2006. https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.459.3788&rep=rep1&type=pdf
[22] Liu, Fei Tony, Kai Ming Ting, Zhi-Hua Zhou. Isolation forest. In 2008 eighth ieee international conference on data mining, pp. 413-422. IEEE, 2008. https://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/icdm08b.pdf?q=isolation-forest
[23] Schölkopf, B., Platt, J.C., Shawe-Taylor, J., Smola, A.J. and Williamson, R.C. Estimating the support of a high-dimensional distribution. Neural computation, 13(7), pp.1443-1471. 2001.
[24] Bengio, Yoshua, Réjean Ducharme, Pascal Vincent, and Christian Jauvin. A neural probabilistic language model. Journal of machine learning research 3, no. Feb: 1137-1155. 2003. https://www.jmlr.org/papers/volume3/tmp/bengio03a.pdf
[25] Mikolov, Tomas, Kai Chen, Greg Corrado, and Jeffrey Dean. Efficient estimation of word representations in vector space. arXiv preprint, 2013. https://arxiv.org/pdf/1301.3781.pdf
[26] Vaswani, Ashish, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, and Illia Polosukhin. Attention is all you need. In Advances in neural information processing systems, pp. 5998-6008. 2017. https://proceedings.neurips.cc/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf
[27] https://ai.googleblog.com/2018/11/open-sourcing-bert-state-of-art-pre.html
[28] Martin, Louis, Benjamin Muller, Pedro Javier Ortiz Suárez, Yoann Dupont, Laurent Romary, Éric Villemonte de La Clergerie, Djamé Seddah, and Benoît Sagot. Camembert: a tasty french language model. arXiv preprint, 2019. https://arxiv.org/abs/1911.03894
[29] Le, Hang, Loïc Vial, Jibril Frej, Vincent Segonne, Maximin Coavoux, Benjamin Lecouteux, Alexandre Allauzen, Benoît Crabbé, Laurent Besacier, and Didier Schwab. Flaubert: Unsupervised language model pre-training for french. arXiv preprint, 2019. https://arxiv.org/pdf/1912.05372.pdf
[30] Radford, Alec, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, and Ilya Sutskever. Language models are unsupervised multitask learners. OpenAI blog 1, no.8:9. 2019. https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf
[31] Lignes directrices en matière d’éthique pour une IA digne de confiance. High Level Expert Group on AI (AI HLEG), Commission Européenne. 8 avril 2019. https://ec.europa.eu/newsroom/dae/document.cfm?doc_id=60427