Comment fonctionne l’apprentissage automatique ?

Dernièrement, les entreprises technologiques ne jurent que par l’apprentissage automatique, mais personne jusqu’à présent ne s’était donné la peine d’expliquer précisément son fonctionnement. On change la donne ! Voici notre point de vue sur cette technologie, en termes simples.

Dernièrement, les entreprises technologiques ne jurent que par l’apprentissage automatique. Elles déclarent que ce dernier résout des problèmes que seuls les êtres humains étaient capables de résoudre auparavant. Certains vont même jusqu’à l’appeler « intelligence artificielle ». L’apprentissage automatique représente un intérêt tout particulier pour la sécurité informatique, où le paysage des menaces évolue constamment. Et pour cela, nous devons mettre en place des solutions adéquates.

Certains vont même plus loin en le dénommant « intelligence artificielle » juste pour le plaisir.

How machine learning works, simplified

La technologie est une question de rapidité et d’uniformité, rien de bien sorcier. Et puisque l’apprentissage automatique est fondé sur la technologie, il est plutôt facile de l’expliquer en termes humains. Passons donc aux choses sérieuses. Nous résoudrons un vrai problème à l’aide d’un mécanisme d’algorithme, l’apprentissage automatique basé sur un algorithme. Le concept est assez simple, et délivre de vraies informations précises.

Problème : distinguer un texte compréhensible du charabia

Un texte écrit par un humain ressemble à ça (dans ce cas, des écrits de Terry Pratchett) :

Give a man a fire and he’s warm for the day. But set fire to him and he’s warm for the rest of his life (Allumez un feu pour quelqu’un et il sera au chaud pour le reste de la journée. Mettez à feu un homme et il sera au chaud pour le restant de sa vie).
It is well known that a vital ingredient of success is not knowing that what you’re attempting can’t be done (Ce qu’on est n’a rien à voir avec ce qu’on doit être ni avec ce qu’on peut devenir).
The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it (Personne ne devient fou aussi vite qu’une personne parfaitement saine d’esprit).

Du charabia ressemble à ça :

DFgdgfkljhdfnmn vdfkjdfk kdfjkswjhwiuerwp2ijnsd,mfns sdlfkls wkjgwl
reoigh dfjdkjfhgdjbgk nretSRGsgkjdxfhgkdjfg gkfdgkoi
dfgldfkjgreiut rtyuiokjhg cvbnrtyu

Notre tâche est de développer l’apprentissage automatique qui pourrait les distinguer. Puisque nous traitons ce sujet dans le contexte de la sécurité informatique, le principal objectif d’un logiciel antivirus est de trouver un code malveillant parmi une grande quantité de données propres, nous désignerons donc un texte compréhensible comme étant « propre » et du charabia comme étant « malveillant ».

Cela semble être une tâche aisée pour un humain dans la mesure où il peut voir immédiatement lequel est « propre » et lequel est « malveillant ». Cependant, il s’agit d’un vrai défi de formaliser la différence, ou plus encore, d’expliquer la différence à un ordinateur. Dans ce cas, on utilise l’apprentissage automatique : on « alimente » l’algorithme de quelques exemples et le laissons apprendre de ces derniers, dans le but qu’il soit capable de donner la bonne réponse à la question.

Solution : utiliser un algorithme

Notre algorithme calculera la fréquence d’une lettre en particulier suivie d’une autre lettre, afin d’analyser toutes les paires de lettres possibles. Par exemple, pour notre première phrase « Give a man a fire and he’s warm for the day. But set fire to him and he’s warm for the rest of his life », qui est connue pour être propre, la fréquence de paires de lettres ressemblera comme suit :

Bu — 1
Gi — 1
an — 3
ar — 2
ay — 1
da — 1
es — 1
et — 1
fe — 1
fi — 2
fo — 2
he — 4
hi — 2
if — 1
im — 1

Pour faire simple, on ignore les points et les espaces. Par conséquent, dans la phrase, a est suivi de n trois fois, f est suivi de i deux fois, tandis que а est suivi de y une fois.

A ce stade, on comprend qu’une phrase n’est pas suffisante pour faire apprendre notre modèle : les combinaisons de lettres ne sont pas nombreuses, et la différence dans les fréquences est minime. Par conséquent, nous devons analyser un texte plus long. Comptons donc les paires de lettres dans « Autant en emporte le vent » (Gone with the Wind) de Margaret Mitchell (ou pour être précis, 20% du début du livre). En voici quelques-unes :

he — 11460
th — 9260
er — 7089
in — 6515
an — 6214
nd — 4746
re — 4203
ou — 4176
wa — 2166
sh — 2161
ea — 2146
nt — 2144
wc — 1

Comme vous pouvez le constater, la probabilité de rencontrer la combinaison he est deux fois plus élevée que celle de an. Et wc n’apparaît qu’une seule fois, dans newcomer.

A présent que nous avons un modèle d’un texte propre, comment l’utiliser ? Premièrement, afin de définir la probabilité d’une ligne, si elle est « propre » ou « malveillante », nous définirons son authenticité. Nous prendrons chaque paire de lettres provenant de cette ligne, définirons sa fréquence à l’aide d’un modèle (en évaluant à quel point une dite combinaison de lettres est réaliste) et multiplierons ensuite ces chiffres :

F(Gi) * F(iv) * F(ve) * F(e ) * F( a) * F(a ) * F( m) * F(ma) * F(an) * F(n ) * …
6 * 364 * 2339 * 13606 * 8751 * 1947 * 2665 * 1149 * 6214 * 5043 * …

Lorsqu’on détermine la valeur finale de l’authenticité, on prend également en compte le nombre de symboles dans la ligne : plus elle est longue et plus on multiplie de chiffres. Par conséquent, pour rendre cette valeur appropriée de manière égale pour les petites et grandes lignes, nous faisons quelques tours de magie mathématique, (on extrait la racine carrée de ladite mesure qui est la « largeur de la ligne en question moins un » du résultat).

Utiliser le modèle

A présent, nous pouvons en tirer quelques conclusions : plus le chiffre qu’on calcule est élevé et plus la ligne en question rentre dans notre modèle. Par conséquent, la plus élevée est probablement celle écrite par un humain, on peut donc l’appeler propre.

Si la ligne en question contient un grand nombre suspicieux de combinaisons rares (comme wx, zg, yg, etc.), il y a des chances pour qu’elle soit malveillante.

Pour la ligne que nous avons choisie pour l’analyse, la probabilité (« authenticité »), mesurée en points, est la suivante :

Give a man a fire and he's warm for the day. But set fire to him and he's warm for the rest of his life — 1984 points
It is well known that a vital ingredient of success is not knowing that what you're attempting can't be done — 1601 points
The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it — 2460 points
DFgdgfkljhdfnmn vdfkjdfk kdfjkswjhwiuerwp2ijnsd,mfns sdlfkls wkjgwl — 16 points
reoigh dfjdkjfhgdjbgk nretSRGsgkjdxfhgkdjfg gkfdgkoi — 9 points
dfgldfkjgreiut rtyuiokjhg cvbnrtyu — 43 points

Comme vous pouvez le constater, les lignes propres ont totalisé un score de plus de 1000 points, tandis que les malveillantes ont fait moins de 100 points. Il semblerait que notre algorithme ait fonctionné comme prévu.

Pour remettre des scores « élevés » et « faibles » dans leur contexte, la meilleure façon est de déléguer ce travail à la machine et de la laisser apprendre. Pour cela, nous soumettrons un nombre de vraies lignes « propres » et calculerons leur authenticité, et soumettrons ensuite de vraies lignes malveillantes et ainsi de suite. Puis nous calculerons le point de comparaison de l’évaluation. Dans notre cas, il équivaut à 500 points environ.

Dans la vraie vie 

Faisons un récapitulatif de ce que nous venons de faire.

1. Nous avons défini des indicateurs de lignes propres (c’est-à-dire des paires de lettres).

Dans la vraie vie, lorsqu’un antivirus opérationnel est développé, les analystes définissent également des indicateurs de fichiers et d’autres objets. A propos, fait très important : le niveau d’expertise et d’expérience des chercheurs influence directement sur la qualité des indicateurs. Par exemple, qui a dit qu’il fallait analyser les lettres par paires et non par trois ? De telles hypothèses abstraites sont également évaluées dans des laboratoires antivirus. J’ajouterai que chez Kaspersky Lab nous utilisons l’apprentissage automatique pour sélectionner les meilleurs indicateurs et ceux complémentaires.

2. Nous avons utilisé des indicateurs définis pour concevoir un modèle mathématique, que nous avons appris à partir d’un ensemble d’exemples.

Bien sûr, dans la vraie vie, nous utilisons un peu plus de modèles complexes. A présent, les meilleurs résultats proviennent d’un arbre de décision conçu par la technique du Gradient boosting, cependant notre recherche de la perfection fait que nous ne nous reposons pas sur nos lauriers.

3. Nous avons utilisé un modèle mathématique pour calculer le taux d’ « authenticité ».

Pour être honnête, dans la vraie vie, on fait exactement l’opposé, c’est-à-dire en calculant le taux « malveillant ». A première vue, ça n’a pas l’air si différent, mais imaginez à quel point une ligne serait inauthentique dans une autre langue ou un alphabet ressemblant à notre modèle. Dans le même temps, un antivirus ne peut pas produire de faux positifs lorsqu’il vérifie toute une nouvelle classe de fichiers tout simplement parce qu’il ne les connaît pas encore.

Une alternative à l’apprentissage automatique ?

Il y a 20 ans, lorsque les malwares étaient moins abondants, du « charabia » pouvait être facilement détecté par des signatures (fragments distinctifs). Comme pour les exemples mentionnés ci-dessus, les signatures pouvaient ressembler à ça :

DFgdgfkljhdfnmn vdfkjdfk kdfjkswjhwiuerwp2ijnsd,mfns sdlfkls wkjgwl
reoigh dfjdkjfhgdjbgk nretSRGsgkjdxfhgkdjfg gkfdgkoi

Lors de l’analyse du fichier et de la recherche erwp2ij, l’antivirus reconnaissait : « Aha, c’est du charabia #17 ». Et de la recherche gkjdxfhg, il pouvait en conclure qu’il s’agissait de « charabia #139 ».

Par conséquent, il y a une quinzaine d’années, lorsque la population d’échantillons de malware avait augmenté de manière significative, la détection « générique » jouait un rôle central. Un analyste de virus avait défini les règles, qui, une fois appliquées à un texte compréhensible, ressemblaient à ça :

1. La largeur d’un mot doit être comprise entre 1 et 20 caractères.

2. Les lettres majuscules sont rarement placées au milieu d’un mot.

3. Les voyelles sont souvent mélangées avec les consonnes.

Etc. Si la ligne n’est pas conforme à un certain nombre de ces règles, elle est détectée comme malveillante.

En résumé, le principe fonctionnait exactement de la même manière, mais dans ce cas un modèle mathématique était remplacé par un ensemble de règles que les analystes écrivaient manuellement.

Il y a 10 ans, lorsque le nombre d’échantillons de malware a dépassé tous les niveaux jamais imaginés, les algorithmes d’apprentissage automatique ont commencé doucement à trouver leur place parmi les programmes antivirus. Tout d’abord, en matière de complexité, ils ne le sont pas autant que l’algorithme original que nous avions cité en exemple auparavant. Mais jusqu’à présent, nous avons recruté activement des spécialistes et développé notre expertise. En conséquence de cela, nous avons le plus haut niveau de détection parmi les antivirus.

De nos jours, aucun antivirus ne pourrait marcher sans l’apprentissage automatique. Si l’on compare les méthodes de détection, l’apprentissage automatique est à égalité avec certaines techniques avancées telles que l’analyse comportementale. Néanmoins, l’analyse comportementale utilise l’apprentissage automatique ! En résumé, l’apprentissage automatique est fondamental pour une protection efficace. Point.

Inconvénients

L’apprentissage automatique possède un certain nombre d’avantages, est-ce le remède universel ? Eh bien, pas vraiment. Cette méthode fonctionne efficacement si l’algorithme cité précédemment fonctionne sur le Cloud ou sur n’importe quelle infrastructure qui apprend à analyser un grand nombre d’objets à la fois propres et malveillants.

Il permet également d’avoir une équipe d’experts qui supervise ce processus d’apprentissage et intervient chaque fois que leur expérience fait la différence.

Dans ce cas, les inconvénients sont limités, un en particulier : le besoin d’une solution d’infrastructure coûteuse, et une équipe d’experts considérablement rémunérés.

En revanche, si quelqu’un souhaite réduire drastiquement les coûts et n’utiliser que le modèle mathématique, et seulement au niveau du produit, les choses peuvent mal tourner.

1. Les faux positifs.

L’apprentissage automatique fondé sur la détection est toujours en quête d’un juste milieu entre le niveau d’objets détectés et le niveau de faux positifs. Si on veut activer plus de détection, il pourrait finalement y avoir plus de faux positifs. Avec l’apprentissage automatique, ils pourraient émerger dans un endroit que vous n’auriez jamais imaginé ou envisagé. Par exemple, la ligne propre « Visit Reykjavik » pourrait être détectée comme étant malveillante, en n’obtenant que 101 points dans notre taux d’authenticité. C’est la raison pour laquelle il est fondamental pour un laboratoire antivirus de garder des sauvegardes de fichiers propres pour permettre l’apprentissage et les tests du modèle.

2. Modèle bypass.

Un malfaiteur pourrait démonter un tel produit et voir comment il fonctionne. Les cybercriminels sont des humains, ce qui fait qu’ils sont plus créatifs (si ce n’est plus intelligents) qu’une machine, et qu’ils s’adaptent. Par exemple, la ligne suivante est considérée comme étant propre, même si sa première partie est clairement malveillante (aux yeux des humains) : dgfkljhdfnmnvdfk. Ici, il s’agit de tout un texte fait pour tromper la machine. Quelle que soit l’intelligence d’un algorithme, un humain intelligent pourra toujours trouver un moyen de le contourner. C’est la raison pour laquelle un laboratoire antivirus nécessite une infrastructure très réactive pour réagir aussitôt face à de nouvelles menaces.

How machine learning works, simplified
Voici un exemple qui montre comment le modèle mathématique précédemment cité peut-être dupé. Les mots paraissent authentiques, alors qu’en réalité c’est du charabia. Source

3. Mise à jour du modèle.

Lors de la description de l’algorithme précédemment cité, nous avions indiqué qu’un modèle qui apprenait sur des textes anglais ne fonctionnerait pas pour des textes dans d’autres langues. Vu sous cet angle, les fichiers malveillants (sous réserve qu’il aient été créés par des humains, peuvent être créatifs) sont comme un alphabet en constante évolution. Le paysage des menaces est très volatile. Après de longues années de recherche, Kaspersky Lab a développé une approche équilibrée : nous actualisons nos modèles étape par étape directement dans nos bases de données. Ceci nous permet de fournir un apprentissage supplémentaire, y compris un changement radical de l’angle d’apprentissage pour un modèle, sans interrompre ses opérations habituelles.

Conclusion

Avec tout le respect qu’on doit à l’apprentissage automatique et son importance considérable dans le monde de la cybersécurité, nous considérons chez Kaspersky Lab que l’approche la plus efficace en matière de cybersécurité est fondée sur un paradigme à plusieurs niveaux.

Un antivirus pourrait frôler la perfection, s’il est doté d’une analyse comportementale, de l’apprentissage automatique, et bien plus encore. Mais nous reviendrons sur le sujet une prochaine fois.

Conseils