Identification de protocole d’un flux de données
La présente invention concerne le traitement de données dans des réseaux de télécommunications, et notamment la reconnaissance de protocoles de flux de données.
Elle concerne plus précisément des applications de surveillance et de catégorisation de flux de données transitant sur des réseaux de télécommunications, par exemple des flux internet.
Dans la suite, on entend par flux de données tout ensemble de données échangées entre deux entités réseaux, par exemple entre un client et un serveur, ou entre deux clients (flux dits pair à pair, ou P2P).
Il est connu d’appliquer différentes méthodes de classification de flux de données afin de détecter un format de données, ou un protocole employé pour leur transport, en vue de filtrer les flux de données, de catégoriser un flux afin de permettre de traiter le flux de données en fonction de sa classification.
A cet effet, des analyseurs de flux peuvent être disposés en interception dans des points d’accès réseau, tels que des bornes Wi-fi, des pare-feu ou de serveurs de proxy par exemple.
Dans un pare-feu, la configuration d’un système de sécurité peut être basée sur la reconnaissance de propriétés de certains protocoles afin d’empêcher certains types de transfert. Un analyseur de flux de données permet ainsi de fournir au pare-feu une classification du flux de données basée sur les protocoles reconnus.
Par exemple, en référence à la figure 1 , un système d’analyse de trafic entre deux entités (client et/ou serveur) inclut un premier réseau 100 comprenant une première entité 1 12 (de type client par exemple) connecté à un second réseau 1 10 comprenant une deuxième entité 1 1 1 (de type serveur par exemple) par un lien de communication 120. Le lien 120 est analysé par un analyseur 300, qui mesure et analyse le trafic dans les deux directions ou dans une seule direction entre le premier réseau 100 et le deuxième réseau 1 10. Le trafic entre les réseaux 100 et 1 10 peut être de l’ordre du Gigabit par seconde, Gbps, dans des réseaux d’entreprise, mais peut atteindre la dizaine de Gbps dans le cœur d’un réseau d’un opérateur.
La quantité de données transitant sur un réseau de télécommunications rend par ailleurs l’analyse et la classification coûteuses en termes de ressources.
La capacité de mesure et d’analyse de l’analyseur 300 est déterminée par le nombre N de flux simultanés et le débit T de chaque flux. N affecte directement la quantité de mémoire requise pour gérer le contexte des flux enregistrés, tandis que T impacte directement la puissance de calcul requise pour mettre en œuvre l’analyse et la classification sans perte significative de paquets et sans retarder le flux. T définit la quantité de paquets à traiter dans un laps de temps donné et, ainsi, la quantité de ressources de traitement qui peut être allouée à chaque paquet.
Dans des systèmes connus, la quantité de ressources de traitement augmente proportionnellement avec l’augmentation des flux N. A ressources fixes, une infrastructure de données peut uniquement augmenter N en diminuant T, ou augmenter T en diminuant N. Exprimé autrement, la produit N*T reste sensiblement constant.
Toutefois, en pratique, N et T augmentent tous les deux de manière proportionnelle dans les réseaux informatiques existants.
Afin de tenter de palier à de tels inconvénients, le brevet EP1722509, du même déposant, propose une analyse hiérarchisée reposant sur une reconnaissance de protocole explicite dans un premier temps, et implicite dans un second temps, si la reconnaissance explicite n’est pas possible.
Une reconnaissance explicite est notamment mise en œuvre lorsqu’une couche de niveau donné indique explicitement le protocole utilisé pour la couche de niveau supérieur qu’elle encapsule. Par exemple, la couche Ethernet indique explicitement si la couche supérieure est IPv4 ou IPv6, et IP indique si la couche supérieure est TCP ou UDP. Une telle reconnaissance est aisée et requiert peu de puissance de calcul.
En ce qui concerne les couches de niveau applicatif, elles sont le plus souvent identifiées par une méthode de reconnaissance de type implicite, plus coûteuse en ressources, car elles ne sont pas explicitement indiquées par la couche de transport de niveau inférieur.
En outre, la diversité des encodages de protocoles de ce niveau ainsi que l’émergence du chiffrement des communications requièrent de nouvelles méthodes de reconnaissance de protocole.
Par exemple, l’identification de protocoles tels que SMTP et HTTP est plus aisée et moins consommatrice en ressource que l’identification d’un protocole tel que Bittorrent, dont les données sont chiffrées. Il conviendrait ainsi d’optimiser la classification de flux de données en réduisant la complexité sans réduire la fiabilité.
La présente invention vient améliorer la situation.
Elle propose à cet effet un procédé d’identification d’un protocole d’un flux de données échangé entre deux entités d’un réseau de télécommunication, le procédé de traitement comprenant les étapes suivantes :
- sur réception de données du flux de données, analyse grammaticale du flux de données en vue d’identifier un protocole du flux de données ;
- en cas d’échec de l’identification du protocole du flux de données par l’analyse grammaticale, consultation d’un moteur de signatures mettant en correspondance des protocoles avec des signatures correspondantes, et application séquentielle des signatures au flux de données en vue d’identifier un protocole du flux de données.
Une analyse grammaticale est peu consommatrice en ressources de calculs et permet d’identifier la plupart des protocoles qui ne peuvent être identifiés de manière explicite. La méthode d’analyse basée sur les signatures, plus consommatrices en ressources de calcul, est uniquement mise en œuvre en cas d’échec de l’analyse grammaticale, ce qui permet d’optimiser l’utilisation de ressources lors de l’identification implicite d’un protocole.
Selon un mode de réalisation, l’invention peut comprendre en outre, en cas d’échec de l’identification du protocole du flux de données par consultation du moteur de signatures, l’application d’une méthode statistique de reconnaissance de protocole afin d’identifier le protocole du flux de données.
Une telle méthode est également consommatrice en ressources de calcul, et n’est pas totalement fiable. Elle est donc avantageusement mise en œuvre en cas d’échec des deux premières méthodes. Elle permet de plus de reconnaître des protocoles chiffrés tels que Bittorrent, qui ne peuvent être
reconnus par les deux méthodes précédentes.
Selon un mode de réalisation, le protocole identifié peut être un protocole de niveau applicatif.
Les protocoles de niveau applicatif, et plus généralement les protocoles des couches 5 à 7 du modèle OSI, ne sont pas indiqués explicitement par les couches de niveau inférieur, et le procédé leur est donc avantageusement appliqué selon ce mode de réalisation.
Selon un mode de réalisation, en cas de succès de l'identification du protocole du flux de données par l’analyse grammaticale, le procédé peut comprendre en outre une étape d’identification de données de protocoles par l’application d’un algorithme simple passe à des éléments contextuels du flux de données selon le protocole identifié.
Un tel algorithme est peu consommateur en ressources, et permet ainsi, pour un protocole identifié donné, de différencier les données qu’ils transportent entre différents types de données de protocole.
En complément, en cas d’échec de l’identification de données de protocoles par l’application de l’algorithme simple passe, le procédé peut comprendre en outre la consultation d’un moteur de signatures mettant en correspondance des données de protocoles avec des signatures correspondantes, et l’application séquentielle des signatures au flux de données en vue d’identifier les données de protocole du flux de données.
Ainsi, la méthode d’analyse basée sur les signatures, plus consommatrices en ressources de calcul, est uniquement mise en œuvre en cas d’échec de l’analyse grammaticale, ce qui permet d’optimiser l’utilisation de ressources lors de l’identification implicite de données de protocole.
Selon un mode de réalisation, le procédé peut comprenant en outre une étape de traitement du flux de données sur la base du protocole identifié du flux de données.
Ainsi, un traitement différencié par protocole peut être appliqué.
En complément, traiter le flux de données peut comprendre l’une au moins des étapes parmi :
- appliquer une politique de qualité de service dépendant du protocole identifié ; ou
- autoriser ou interdire le flux de données sur la base du protocole identifié.
Un deuxième aspect de l’invention concerne un produit programme informatique comportant des instructions pour la mise en œuvre du procédé selon le premier aspect de l’invention, lorsque ce programme est exécuté par un processeur.
Un troisième aspect de l’invention concerne un dispositif d’identification d’un protocole d’un flux de données échangé entre deux entités d’un réseau de télécommunication, le dispositif comprenant :
- une interface configurée pour recevoir des données du flux de données ;
- un processeur configuré pour :
- mener une analyse grammaticale du flux de données en vue d’identifier un protocole du flux de données ;
- en cas d’échec de l’identification du protocole du flux de données par l’analyse grammaticale, consulter un moteur de signatures mettant en correspondance des protocoles avec des signatures correspondantes, et appliquer séquentiellement les signatures au flux de données en vue d’identifier un protocole du flux de données.
D’autres caractéristiques et avantages de l’invention apparaîtront à l’examen de la description détaillée ci-après, et des dessins annexés sur lesquels:
- la figure 1 illustre une architecture générale d’un système selon un mode de réalisation de l’invention;
- la figure 2 est un diagramme présentant les étapes d’un procédé de traitement selon un mode de réalisation de l’invention ;
- la figure 3 illustre la structure d’un dispositif de traitement de données selon un mode de réalisation de l’invention.
L’invention peut être mise en œuvre dans un dispositif d’identification de protocole tel que l’analyseur 300 illustré sur la figure 1 . Le dispositif d’identification sera présenté plus en détails en référence à la figure 3.
La figure 2 présente les étapes d’un procédé d’identification de protocole selon un mode de réalisation de l’invention.
A une étape 200, un ou plusieurs paquets d’un flux sont reçus par le dispositif d’identification, par exemple suite à une interception des paquets par l’analyseur 300 sur le lien de communication 200.
A une étape 201 , un paquet de données reçu peut être identifié pour être associé à un flux existant ou pour créer une nouvelle entrée dans une table répertoriant les flux de données en cours. Par exemple, une adresse IP (et éventuellement un numéro de port) d’une entité source et une adresse IP (et éventuellement un numéro de port) d’une entité destinataire peuvent être prises en compte pour identifier le flux correspondant au paquet. Une telle technique est bien connue et ne sera pas explicité davantage.
L’entité source ou destinataire peut désigner indifféremment un client ou un serveur. Le client peut être un ordinateur portable ou de bureau, une tablette tactile, un Smartphone ou encore tout dispositif électronique comprenant une interface permettant de communiquer dans le réseau 100 ou 110, tel que le réseau Internet par exemple. Selon l’invention, les deux entités communicantes peuvent être dans deux réseaux distincts comme illustré sur la figure 1 ou peuvent appartenir au même réseau.
Les protocoles de couches basses du flux de données peuvent être déterminés à l’étape 201 par reconnaissance explicite. Comme indiqué précédemment, une reconnaissance explicite requiert peu de puissance de calcul en ce que le protocole d’une couche d’un niveau donné peut être indiqué explicitement par la couche du niveau qui lui est directement inférieur.
Ainsi, il peut par exemple être déterminé que le protocole IPv4 ou IPv6 est utilisé à partir de données de la couche Ethernet. De même la couche IP indique si le protocole UDP ou TCP est utilisé.
A partir de l’étape 202, le procédé selon l’invention a pour but d’identifier un protocole qui n’est pas signalé explicitement par les couches de niveaux inférieurs. Une telle identification est donc implicite. A titre d’exemple, la reconnaissance d’un protocole des couches du niveau 5 à 7 du niveau OSI, et en particulier du niveau 7 (application), est considérée.
A une étape 203, le dispositif d’identification met en œuvre une analyse grammaticale des données du flux de données, contenues dans le paquet ou les paquets du flux de données, en vue d’identifier un protocole du
flux de données. En effet, certains protocoles de niveau applicatif ont une grammaire aisément identifiable en mettant en œuvre une faible puissance de calcul. C’est par exemple le cas des protocoles SMTP et HTTP. De tels protocoles ont des éléments contextuels utiles à leur reconnaissance. Par exemple, ils utilisent tous les deux un processus de « handshake » pour établissement du flux. D’autres protocoles tels que SSL ou SIP peuvent également être identifiés par reconnaissance de leur grammaire. Il est à noter que statistiquement, 90% des protocoles d’application des flux à classifier peuvent être reconnus par utilisation de l’étape 203. Utiliser en priorité une telle méthode de reconnaissance en premier permet ainsi de reconnaître un grand nombre de protocoles avec une faible puissance de calcul.
A l’étape 203, il est vérifié si le protocole du flux de données a été identifié avec succès par l’analyse grammaticale.
En cas de succès de l’identification du protocole du flux de données par l’analyse grammaticale, le procédé peut comprendre en outre une étape 204 d’identification de données de protocoles (« protocol data » en anglais) par l’application d’un algorithme simple passe (« one pass » ou « single pass » en anglais) à des éléments contextuels du flux de données selon le protocole identifié. L’algorithme simple passe peut dépendre du protocole identifié.
L’identification des données de protocole peut être considérée comme l’identification d’une application ou sous-application d’une couche supérieure à la couche du protocole identifié à l’étape 203. Par exemple, si le protocole identifié comme étant HTTP, la sous-application de couche supérieure, ou données de protocoles, peuvent être des données Facebook™ par exemple.
L’application de l’algorithme simple passe peut consister en l’injection d’éléments contextuels du flux (par exemple, pour HTTP, les éléments contextuels peuvent être des éléments tels que l’URL, User Agent, etc) dans un moteur de règles. On appelle élément contextuel du flux tout élément d’en-tête ou de charge utile (payload) du flux de données. L’utilisation d’un algorithme simple passe est peu coûteux en ressources de calcul et le temps de traitement est fixe et ne dépendant pas du nombre d’entrées.
En réponse à l’injection des éléments contextuels, le moteur de
règles peut renvoyer un ensemble de règles qui peuvent être testées sur les données du protocole identifié à l’étape 102 afin d’identifier les données de protocole. Par exemple, après avoir identifié le protocole HTTP à l’étape 202, les données de protocole peuvent être identifiées comme étant des données Facebook™.
A une étape 212, il est vérifié si les données de protocoles ont été identifiées à l’étape 204 au moyen de l’algorithme simple passe. En cas de succès, le procédé se poursuit avec l’étape 205. En cas d’échec, le procédé passe à l’étape 206 décrite ci-après.
Les étapes 204 et 205 sont optionnelles et le procédé peut passer directement de l’étape 203 à 205 en cas d’identification positive à l’étape 203.
Une fois le protocole identifié, et éventuellement les données de protocole, le procédé peut comprendre l’application d’une étape 205 de traitement du flux de données en fonction du protocole identifiée, et éventuellement en fonction des données d’application. Le traitement du flux peut par exemple consister à appliquer une politique de qualité de service dépendant du protocole identifié ou à autoriser ou interdire le flux de données sur la base du protocole identifié, ou peut plus généralement consister à classer le flux en fonction du protocole identifié. La classification peut être transmise à un dispositif de traitement extérieur au dispositif d’identification de protocole.
En cas d’échec de l’identification du protocole du flux de données par l’analyse grammaticale à l’étape 202, le procédé selon l’invention comprend une étape 206 de consultation d’un moteur de signatures mettant en correspondance des protocoles avec des signatures correspondantes. A une étape 207, les signatures sont appliquées séquentiellement au flux de données en vue d’identifier le protocole de niveau applicatif du flux de données. Une telle application séquentielle est plus coûteuse en termes de ressources, et est ainsi avantageusement appliquée uniquement en cas d’échec de l’analyse grammaticale à l’étape 202.
Statistiquement, une telle méthode par recherche de signatures permet d’accéder à la moitié des 10% de protocoles applicatifs qui n’ont pu être identifiés par la méthode d’analyse grammaticale (soit 5% des protocoles). Bien que plus coûteuse en ressources de calcul, la méthode par recherche de
signatures demeure néanmoins fiable.
Les étapes 206 et 207 peuvent également être appliquées aux données de protocole en cas d’échec d’identification à l’étape 204. Dans ce cas, les données de protocoles sont comparées avec des signatures pour leur identification.
A une étape 208, il est vérifié si le protocole du flux de données a été identifié avec succès par la méthode de recherche de signatures.
En cas de succès, le procédé reprend à l’étape 205 décrite précédemment.
En cas d’échec, un mode de réalisation de l’invention peut prévoir une étape additionnelle 209 d’application d’une méthode statistique de reconnaissance de protocole afin d’identifier le protocole applicatif du flux de données (ou les données de protocole). Une telle méthode permet notamment d’identifier des protocoles chiffrés, tels que Bittorrent. Une telle méthode est coûteuse en puissance de calculs (recherche séquentielle) et n’est pas totalement fiable. Elle permet toutefois d’identifier 1 à 2% des protocoles ou des données de protocole qui n’ont pas été identifiés par les méthodes mises en œuvre précédemment.
A une étape 210, il est vérifié si le protocole du flux de données a été identifié avec succès par la méthode statistique.
En cas de succès, le procédé reprend à l’étape 205 décrite précédemment.
En cas d’échec (statistiquement dans 3% des cas environs), le procédé s’achève sans pouvoir identifier le protocole applicatif du flux de données. Un traitement prédéfini peut être appliqué à une étape 211 en cas d’échec. Par exemple, par mesure de précaution, le flux de données peut être bloqué.
L’invention prévoit ainsi l’application incrémentale de méthodes de reconnaissances de protocole, de la méthode la plus fiable et la moins coûteuse en puissance de calcul, à la méthode la moins fiable et la plus consommatrice en ressources. Elle optimise ainsi la recherche du protocole de niveau applicatif.
La figure 3 représente un dispositif d’identification de protocole 301 selon un mode de réalisation de l’invention.
Le dispositif d’identification 301 peut être implémenté dans l’analyseur 300 situé en interception entre les réseaux 100 et 110 de la figure 1. De manière plus général, il est apte à recevoir des données de flux de données transitant entre deux entités réseau.
Le dispositif d’identification comprend une mémoire vive 305 et un processeur 304, ainsi qu’une mémoire 301 pour stocker des instructions permettant la mise en œuvre des étapes du procédé décrit ci-avant en référence à la figure 2. Le processeur peut comprendre des sous-entités 304.1 à 304.3 respectivement dédiées aux trois méthodes de reconnaissance décrites ci-avant.
La mémoire 301 peut en outre stocker des données utilisées par le processeur pour la mise en œuvre du procédé, notamment :
- le moteur de signatures mettant en correspondance des signatures avec des protocoles correspondants ;
- les ensembles de règles associées à des protocoles données, pour la reconnaissance de données de protocole ;
- des règles de méthodes statistiques de reconnaissance de protocole.
Le dispositif d’identification 301 comporte en outre une interface d’entrée 302 destinée à recevoir les données de flux de données circulant sur le lien de communication 200 ou dans un réseau donné.
Le dispositif d’identification 301 comprend en outre une interface de sortie 303 apte à fournir un résultat d’identification de protocole, ou une commande déterminée à partir du protocole identifié.
Bien entendu, la présente invention ne se limite pas à la forme de réalisation décrite ci-avant à titre d’exemple ; elle s’étend à d’autres variantes.