Système de transmission de données client/serveur sécurisé
La présente invention concerne les environnements client/serveur dans lesquels des connexions sont établies par les clients sur les serveurs à travers un ou plusieurs réseaux de transmission, principalement les réseaux basés sur le protocole TCP/IP, la présente invention visant en particulier à fournir un tel système sécurisé de par sa conception.
Aujourd' nui,, il est de plus en plus courant pour des ordinateurs client d'accéder à des données fournies par des serveurs à travers le réseau publique Internet, des réseaux privés ou la combinaison des deux. Mais l'architecture client/serveur pose des problèmes de sécurité du fait que l'on peut détecter à distance des serveurs en écoute et qu'il est possible pour des pirates informatiques de s'y connecter pour prendre le contrôle des hôtes de ces serveurs (en découvrant des mots de passe ou en exploitant les failles de sécurité) ou pour immobiliser ces serveurs (attaques de déni de service) .
Les attaques de déni de service (DoS) rendent les serveurs inaccessibles en les noyant sous un grand nombre de connexions afin d'empêcher les serveurs de répondre aux utilisateurs légitimes. Pour les attaques de déni de service distribuées (DDoS) , des milliers de machines au préalable compromises sont utilisées pour prendre d'assaut toutes ensemble un serveur. De nouvelles variantes utilisent des serveurs ou des routeurs tiers comme des miroirs pour démultiplier les attaques tout en restant totalement anonymes. L'actualité récente démontre que ces actes malveillants sont de plus en plus nombreux et que personne n'est épargné. II est donc très important de sécuriser toutes les machines connectées à Internet (grand public inclus) afin éviter qu'elles ne puissent servir à attaquer des serveurs.
Pour sécuriser les serveurs on a pensé à utiliser des mots de passe plus longs et plus complexes, à filtrer les adresses IP acceptées et divers dispositifs comme des pare-feu
sont mis en place à grands frais pour servir de barrière devant chaque serveur afin de limiter les attaques. Malheureusement, comme il est possible d'usurper une identité, ces mesures ne protègent ni des attaques de mot de passe en force brute, ni de l'exploitation de failles de sécurité du serveur ou du système d'exploitation, ni des attaques de déni de service. En outre, la mise en place de pare-feu efficaces présente plusieurs problèmes en dehors de leur coût d'acquisition et de maintenance. En effet, les pare-feu doivent être configurés pour permettre à des utilisateurs de l'extérieur d'atteindre les machines protégées. Cette obligation crée des problèmes techniques, légaux et logistiques, coûte cher en temps et en personnel qualifié et implique des manipulations comportant des risques d' erreurs qui peuvent entraîner des pannes ou des brèches de sécurité. Des solutions de passage à travers les pare-feu existent mais leur utilisation reste très restreinte à cause de l'infrastructure très lourde à mettre en place pour les exploiter. De plus, leur mode de réalisation fait appel à des composants mal adaptés, obsolètes, peu performants et par ailleurs dangereux du point de vue de la sécurité.
Les coûts entraînés par la mise en place de mesures de sécurité sont d' autant plus importants que les serveurs déployés pour rendre un service donné sont nombreux. Dans le cas de l'assistance aux utilisateurs ou de la maintenance à distance de machines, il faut un serveur sur chaque machine. Cela fait des millions de serveurs qui peuvent être découverts par un pirate utilisant un scanner de ports pour découvrir les serveurs en écoute ou par un virus ou un ver utilisant des failles de sécurité connues pour s'infiltrer de machine en machine sur le réseau.
Tous les types serveurs sont vulnérables (les serveurs Web, le courrier électronique, les systèmes d'inventaire, les bases de données en ligne, les applications d'assistance aux
utilisateurs ou de maintenance, etc.) et même chaque poste de travail (puisque des services y sont en attente de connexions) et les entreprises et les administrations du monde entier ne peuvent aujourd'hui plus se passer de ces outils. C'est pourquoi le but de l'invention est de fournir un système de transmission de données client/serveur sécurisé dans lequel les serveurs devenus des clients n'acceptent plus aucune connexion entrante, ce qui évite toute attaque informatique tel que le déni de service. un autre but de l'invention est de réaliser un procédé de transmission à travers un réseau de données dans lequel l'établissement d'une connexion d'un client vers un serveur s'effectue par l'intermédiaire d'un serveur central seul apte à recevoir des demandes de connexion. L'objet de l'invention est donc Système de transmission de données comprenant au moins un réseau de transmission de données, une ou plusieurs machines client reliées au réseau et une ou plusieurs machines serveur également reliées au réseau, chacune des machines client pouvant être connectée à un instant donné à une ou plusieurs des machines serveur pour échanger des données avec celle-ci (chacune des machines serveur pouvant recevoir plusieurs connexions en même temps) . Le système comprend un serveur central relié au réseau, chacune des machines serveur comprenant des moyens de connexion serveur permettant d'établir une connexion permanente vers le serveur central, et chacune des machines client comprenant des moyens de connexion client permettant d'établir une connexion provisoire vers le serveur central lorsque la machine client désire être connectée avec une machine serveur particulière pour échanger des données, le serveur central comprenant des moyens de connexion de serveur central permettant de relier la connexion provisoire à la connexion permanente de façon à établir la connexion entre la machine client et la machine serveur.
Les buts, objets et caractéristiques de l'invention apparaîtront plus clairement à la lecture de la description qui suit faite en référence aux dessins dans lesquels : o La figure 1 est une représentation schématique d'un système de transmission de données selon l'invention, o La figure 2 est un bloc-diagramme illustrant sché atiquement les machines client et serveur connectées au serveur central divisé en ses différents composants, • La figure 3 est un organigramme du procédé mis en œuvre dans le serveur central pour l'établissement d'une nouvelle connexion,
• La figure 4 est un organigramme du procédé mis en œuvre dans le serveur central pour l'envoi d'un message d'une une machine client ou serveur à une ou plusieurs machines client ou serveur,
• La figure 5 est un organigramme du procédé mis en œuvre dans le serveur central pour l'établissement d'un pont bidirectionnel, • La figure 6 est un organigramme du procédé mis en œuvre dans le serveur central pour l'établissement d'une session interactive de contrôle à distance ou de transfert de fichiers entre une machine client et une machine serveur, • La figure 7 est un organigramme du procédé mis en œuvre dans le serveur central pour enregistrer un changement d'état soumis par une machine client ou serveur, et'
• La figure 8 est un organigramme du procédé mis en œuvre dans le serveur central pour le traitement d'une demande de recherche initiée par une machine client de machines serveur disponibles sur le réseau.
Un système de transmission de données selon l'invention illustré sur la figure 1 est bâti autour d'un réseau de
transmission de données tel que le réseau Internet 10. Sont connectés à ce réseau d'une part des machines ou ordinateurs client 12, 14, 16 et d'autre part des serveurs ou machines serveur 18, 20, 22. Comme illustré par les flèches de rattachement au réseau, les connexions sont toujours sortantes, c'est à dire réalisées à l'initiative des machines client ou serveur. Les connexions sont toutes à destination d'un serveur central 24 qui est conçu pour mettre en relation une machine client avec une machine serveur en établissant un pont bidirectionnel entre les connexions établies par chacune des deux machines. A noter qu'il pourrait y avoir plusieurs serveurs centraux se partageant la charge totale.
Pour établir les connexions, chaque machine client dispose d'un logiciel de connexion d'environ 650 Ko et chaque machine serveur dispose d'un logiciel d'environ 80 Ko, ces deux fichiers pouvant être utilisés en même temps sur une même machine. A noter que ces fichiers résultent de l'adaptation d'une application client/serveur existante de contrôle à distance de PC au dispositif selon l'invention. De son côté, le serveur central dispose d'un logiciel de connexion sous la forme, par exemple, d'un fichier exécutable d'environ 650 Ko écrit en en langage C++.
A noter que selon un mode de réalisation préféré de l'invention, le logiciel d'une machine serveur ou d'une machine client établit une connexion permanente et initialise l'enregistrement automatique de cette machine auprès du serveur central dès que la machine serveur se connecte au réseau Internet. Dans les cas où une machine serveur n'a pas d'accès permanent au réseau Internet, un lien non-permanent est établi à la demande lors d'un appel SOS envoyé par l'utilisateur de la machine serveur comme décrit par la suite.
Le serveur central et les machines client peuvent
(ensemble ou séparément) contribuer à constituer (et/ou maintenir) de manière centralisée ou distribuée des listes
persistantes d'objets de toute nature (clients, utilisateurs, permissions d'accès, privilèges, connexions, données obtenues par les clients ou à envoyer par les clients) , de leurs caractéristiques (statuts, identifiant système et propriétés) ainsi que de leurs dérivés, tout ou partie de ces informations pouvant également ne pas être conservé et utilisé seulement au moment où l'on en a besoin. Les clients peuvent envoyer un paquet périodiquement au serveur central (" eep alive") pour détecter les coupures de connexion et rétablir une connexion dès que possible.
Les autorisations d'accès des machines sont centralisées dans une base de données que le serveur central maintient pour conserver la liste des machines et des utilisateurs, l'historique des opérations et toute autre information utile. Elles permettent de définir des droits en détaillant les fonctions disponibles par utilisateur sur chaque machine sachant qu'une machine client ne peut être utilisée que par un utilisateur autorisé et que si cette machine client a également été autorisée au préalable dans la base de données du serveur central. Toutes les connexions passant obligatoirement par le serveur central, il est impossible de passer outre les contrôles de droits d'accès.
Comme déjà mentionné, les machines client et serveur telles que les machines 12, à 22 illustrées sur la figure 2 s ' inscrivent automatiquement au démarrage de la machine ou à l'initiative de l'utilisateur dans la base de données 32 du serveur central. Si le bon schéma de signature électronique, la bonne clé privée, le bon algorithme de cryptage et la syntaxe adéquate sont utilisés, la connexion de la machine à l'interface réseau 26 du serveur central est réalisée après sa validation et son authentification par l'unité de traitement 30 du serveur central. Le serveur central laisse alors le système d'exploitation maintenir les connexions inactives de
façon permanente en RAM 28 jusqu'au moment où le serveur central a besoin d'une de ces connexions.
Chaque nouvelle connexion permanente arrivant au serveur central vient remplacer la connexion inactive pour cette même machine, l'identifiant système de la nouvelle connexion étant sauvegardé dans la base de données 32 du serveur central. Dans le cas des connexions provisoires, la nouvelle connexion est fermée proprement ou brutalement selon la logique décrite plus loin. Dans une fermeture "propre" la machine distante est avertie de la fin de la connexion alors que pour une fermeture "brutale" le serveur central ne prend aucune précaution.
La mémoire RAM 28 ainsi que, de façon générale, les ressources du serveur central sont recyclées car en cas de coupure de connexion permanente inopinée avec une machine client ou serveur, la connexion laissée ouverte côté serveur central sera refermée lorsqu'une nouvelle connexion permanente sera rétablie par cette même machine avec le serveur central.
En référence à la figure 3, une demande de connexion débute au niveau du serveur central par la réception d'une connexion venant d'une machine client ou serveur (étape 34) . Le serveur central détermine s'il reste un thread libre parmi le groupe de threads créés par le serveur central pour traiter les connexions entrantes (étape 36) . Un "thread" désignant dans la présente description une "unité autonome d'exécution". S'il n'y a pas de thread libre, il faut déterminer si un autre serveur central est susceptible de traiter la demande (étape 48), transmettre la demande vers cet autre serveur central (étape 52) et fermer proprement la connexion (étape 54) avant la libération du thread (étape 58). S'il n'y a pas d'autre serveur central, un message indiquant que le serveur est indisponible est transmis à la machine (étape 50) et la connexion est fermée proprement (étape 54) avant la libération du thread (étape 58) .
Lorsque le serveur central dispose d'un thread libre, la demande est traitée par le thread (étape 38) et il y a vérification de la validité de la signature et des autres mesures de sécurité (étape 40). Si la vérification s'avère négative, la connexion est coupée par fermeture brutale et il y a enregistrement de la demande (étape 56) avant la libération du thread (étape 58) . Sinon, la demande est décryptée et enregistrée (étape 42) . Le serveur central vérifie ensuite si la demande est valide, c'est à dire si la syntaxe de la commande est correcte (étape 44). Si c'est le cas, la demande est traitée (étape 46) de façon différente selon qu'il s'agit d'un changement d'état, d'une recherche, d'une discussion en ligne, d'un contrôle à distance ou d'un transfert de fichiers comme on le verra par la suite. Sinon, la connexion est coupée brutalement et enregistrée (étape 56) avant la libération du thread (étape 58).
L'établissement d'une connexion vers le serveur central utilisé pour transmettre des données vers une ou plusieurs machines destinataires nécessite la création d'un ou de plusieurs moyens de diffusion tels que des liens unidirectionnels utilisés pour transmettre l'information à une ou plusieurs machines serveur. Un exemple illustrant ce cas est décrit ci-dessous avec la discussion en ligne à deux ou en mode conférence à plus de deux (Chat) . La méthode pour l'établissement d'une discussion en ligne (Chat) entre une machine client et une ou plusieurs machines serveur est maintenant décrite en référence à la figure 8. A noter qu'une nouvelle connexion a déjà été établie entre une machine client et le serveur central comme décrit précédemment en référence à la figure 3. Le serveur central vérifie d'abord dans sa base de données si la machine client est autorisée à communiquer avec le serveur central (étape 60) . Si ce n'est pas le cas, le serveur central met fin
proprement à la connexion (étape 70) et libère le thread utilisé pour la connexion en figure 3.
Puis, le serveur central vérifie dans sa base de données, pour chacune des machines serveur demandées, si l'utilisateur de la machine client possède les droits nécessaires pour être relié aux machines serveur demandées
(étape 62) et si la connexion permanente entre le serveur central et la machine demandée est toujours opérationnelle : la connexion permanent est récupérée depuis la base de données (étape 64) et vérifiée (étape 66). Si ce n'est pas le cas, le serveur central passe à la machine destinataire suivante et met fin proprement à la connexion s'il n'y a plus de destinataires pour le message. Si la connexion est opérationnelle et les droits valides, le serveur central envoie le message reçu de la machine client à toutes les machines serveur accessibles selon les droits et dont la connexion permanente est opérationnelle (étape 72) . Note : le serveur central peut éventuellement envoyer un message avant de fermer la connexion pour informer le client ayant envoyé le message que tel ou tel correspondant n'était pas disponible ou n'était pas autorisé à être contacté. Enfin, après l'envoi du message, le serveur central met fin proprement à la connexion (étape 70) et libère le thread.
Lorsque la demande émanant d'une machine client concerne l'établissement d'une communication interactive entre cette machine client et une machine serveur, l'interconnexion effectuée dans le serveur central se fait de la manière illustrée sur la figure 5.
Tout d'abord, le serveur central transmet un ordre à la machine serveur destinataire pour lui demander d'établir une nouvelle connexion permanente pour remplacer la connexion permanente existante qui va être utilisée (étape 74) . Puis, il y a création d'un pont bidirectionnel par le serveur central de manière à établir la liaison entre la nouvelle connexion de
la machine client ayant fait la demande et i ' ancienne connexion permanente de la machine serveur destinataire. L'établissement d'un tel pont s'effectue en deux temps. Pour faire fonctionner le pont bidirectionnel, il y a d'abord création d'un thread (étape 76) pour gérer une passerelle unidirectionnelle dans le but de transférer les données venant de la connexion source, c'est à dire la connexion émanant de la machine qui a fait la demande, vers la connexion destinataire, c'est à dire la connexion de la machine demandée. Il y a ensuite création d'un autre thread pour gérer une seconde passerelle unidirectionnelle dans le but de transférer les données venant de la connexion destinataire vers la connexion source (étape 78).
Ensuite, le thread principal utilisé pour la connexion en figure 3 et ayant créé les deux threads du pont bidirectionnel est libéré (étape 80). Si l'une des deux connexions est coupée (étapes 84 ou 94), l'autre connexion est fermée proprement (étapes 86 ou 96) , ce qui met fin au processus du pont bidirectionnel par la destruction en cascade des deux threads des passerelles unidirectionnelles (étapes 90 ou 100). Lorsqu'une passerelle unidirectionnelle reçoit des données à partir de l'une des connexions, elle les transmet à l'autre connexion (étapes 88 ou 98) ce qui maintient un pont bidirectionnel entre les deux machines connectées au serveur central.
L'établissement d'un pont bidirectionnel par le serveur central tel que décrit précédemment a lieu lorsqu'il est nécessaire de créer un lien bidirectionnel de quelque nature que ce soit entre une machine client et une machine serveur et en particulier dans le cas d'un contrôle à distance de la machine serveur par la machine client, la machine client interagissant en temps réel avec l'écran de la machine serveur reproduit sur l'écran de la machine client ou dans le cas d'un transfert de fichiers entre les deux machines. A noter qu'une
variante unidirectionnelle de ce même pont consiste simplement à créer un seul thread de passerelle sur les deux créés dans le cas bidirectionnel ce qui peut être utile lorsque le message à envoyer est trop long ou envoyé sur une trop longue
5 durée pour mettre en œuvre la méthode décrite précédemment pour la discussion en ligne (Chat) .
La méthode mise en œuvre pour le contrôle à distance ou le transfert de fichiers est décrite en référence à la figure
6. Une nouvelle connexion au serveur central a été établie 0 préalablement par la machine client tel que décrit en référence à la figure 3. Tout d'abord, le serveur central vérifie dans sa base de données si la machine client est autorisée à communiquer avec le serveur central (étape 102) . Si ce n'est pas le cas, le serveur central met fin proprement 5 à la connexion (étape 112) avant de libérer le thread utilisé pour la connexion en figure 3. Si l'accès est autorisé, le serveur central vérifie dans sa base de données si l'utilisateur de la machine client possède les droits nécessaires pour être relié à la machine serveur destinataire 0 (étape 104). Si ce n'est pas le cas, le serveur central peut transmettre un message "accès refusé" à la machine client et met ensuite fin proprement à la connexion (étape 112) avant de libérer le thread. Si la machine et l'utilisateur client ont les droits requis, le serveur central récupère dans sa base de
!5 données 1 ' identifiant système de la connexion permanente inactive de la machine serveur destinataire (étape 106) .
Avant d'établir le lien entre les deux machines, le serveur central vérifie si la connexion permanente entre la machine serveur et le serveur central est toujours 0 opérationnelle (étape 108). Si ce n'est pas le cas, le serveur central peut transmettre un message "ressource indisponible" à la machine client et met ensuite fin proprement à la connexion. Si la connexion est toujours opérationnelle, le serveur central vérifie alors si un SOS, c'est à dire une
demande d'aide requise par l'utilisateur de la machine serveur destinataire, est en attente de réponse (étape 110). Si c'est le cas, le serveur central signale la fin du SOS aux machines client qui ont une connexion permanente opérationnelle et le droit d'accéder à cette machine serveur et met à jour la table des SOS dans sa base de données (étape 114) . Lorsque ces opérations ont été effectuées ou s'il n'y a pas de SOS en attente, la liaison peut être établie par la création d'un pont bidirectionnel tel que décrit en référence à la figure 4. En dehors des liens établis entre une machine client et une machine serveur par le serveur central, le serveur central doit, afin de permettre à une machine client de localiser une machine serveur et réciproquement, traiter d'autres demandes de connexion ayant trait notamment à l'inscription ou au changement d'état d'une machine et à la recherche d'une machine disponible selon un ou plusieurs critères.
C'est en effet le seul moyen pour une machine d'en joindre une autre puisque le principe même du dispositif selon l'invention n'utilise plus les adresses réseau pour joindre une machine car les adresses des machines pouvant être jointes par le serveur central ne sont pas uniques : les machines d'un même réseau privé partagent la même adresse publique de leur point de connexion au réseau publique et leur adresse privée a toutes les chances d'être utilisée sur un autre réseau privé. Pour ces raisons, le serveur central doit absolument maintenir une liste en temps-réel des machines disponibles et (éventuellement) des utilisateurs disponibles pour permettre aux machines de consulter cette liste afin de communiquer entre elles. Le seul lien permettant de joindre une machine à partir du serveur central reste bien sûr la connexion permanente mais la recherche peut se faire sur les noms de machine ou d'utilisateur ou même sur les adresses MAC (Media Access Control) si la base de données du serveur central met ces informations en concordance.
La méthode utilisée pour l'inscription ou le changement d'état d'une machine client ou serveur est décrite en référence à la figure 7. L'on suppose tout d'abord qu'une nouvelle connexion a été établie par la machine qui 5 s'identifie vers le serveur central comme décrit précédemment en référence à la figure 3. Le serveur central commence par vérifier si la machine qui s'identifie est déjà connue (étape 116) . Si ce n'est pas le cas, le serveur central sauvegarde la nouvelle connexion en ajoutant l'identifiant système dans une 0 table des machines de sa base de données (étape 128) . Si la machine est déjà connue, le serveur central vérifie si la demande correspond à un SOS émanant d'une machine serveur
(étape 118). Si c'est le cas, le SOS est enregistré dans la table des SOS se trouvant dans la base de données du serveur 5 central et est transmis à toutes les machines client en ligne et ayant le droit d'accéder à cette machine serveur (étape 130). Après ces opérations ou s'il ne s'agit pas d'un SOS le serveur central vérifie si l'état de la machine s' identifiant et de son utilisateur sont les mêmes dans la base de données
'.0 du serveur central (étape 120) . Si ce n'est pas le cas, l'état
(adresse de la machine, nouvel utilisateur, économiseur d'écran, état en ligne, niveaux de mémoire, type et version du système d'exploitation...) est enregistré dans la table des états se trouvant dans la base de données du serveur central
5 . (étape 132). Puis le serveur central ferme l'ancienne connexion permanente de cette machine si elle était valide et sauvegarde l'identifiant système de la nouvelle connexion permanente dans sa base de données (étape 122) . Ensuite, le serveur central vérifie si la version de l'application de la
) machine qui s'identifie est plus ancienne que la version disponible sur le serveur central (étape 124). Si c'est le cas, le serveur central met à jour automatiquement l'application (étape 134) sur la machine qui s'identifie puis
le serveur central libère le thread (étape 126) utilisé pour la connexion en figure 3.
La méthode utilisée pour une recherche est maintenant décrite en référence à la figure 8. Il est entendu qu'une nouvelle connexion a été établie entre une machine client et le serveur central comme décrit précédemment en référence à la figure 3. Le serveur central vérifie d'abord dans sa base de données si la machine client est autorisée à communiquer avec le serveur central (étape 136). Si ce n'est pas le cas, le serveur central peut transmettre un message "accès refusé" à la machine client et met ensuite fin proprement à la connexion (étape 146) avant de libérer le thread utilisé pour la connexion en figure 3. Si l'accès est autorisé, le serveur central cherche dans sa base de données les machines correspondant aux critères fournis (étape 138) et, pour chaque machine trouvée, il vérifie que l'utilisateur de la machine client ayant envoyé la requête possède les droits nécessaires pour accéder à la machine serveur (étape 140) puis il récupère la connexion permanente de chacune des machines depuis sa base de données (étape 148) afin de vérifier que celle-ci est bien opérationnelle (étape 150). Si ce n'est pas le cas, le serveur central peut éventuellement transmettre un message "accès refusé" ou "machine indisponible" à la machine client et s'il n'y a plus de machines correspondant à la recherche il met ensuite fin proprement à la connexion avant de libérer le thread (étape 146). Si les droits permettent l'accès et si la connexion est opérationnelle, le serveur central crée une liste les machines trouvées lors de la recherche et envoie cette liste à la machine client (étape 144) à l'issue de la recherche. Enfin, le serveur central met fin proprement à la connexion (étape 146) avant de libérer le thread.
La présente invention peut être mise en œuvre dans toutes les architectures de réseau comportant une pluralité de serveurs. Elle peut être utilisée avec le protocole TCP/IP ou
n'importe quel autre protocole orienté connexion tel que, par exemple : Séquence Packet Exchange (SPX) de Novell, System
Network Architecture (SNA) d'IBM, Open Systems Interconnection
OSI/X25 Connection Oriented Networking Service (CONS) , Xerox Network System (XNS) de Xerox, DECnet, AppleTalk, Banyan
Vines. Ainsi, elle peut être implémentée dans les exemples suivants :
1. Système client/serveur de Help Desk.
Dans ce type d'application répandue dans les entreprises, il faut installer des applications serveur sur toutes les machines à gérer à distance. Contrairement aux applications client/serveur classiques le système selon l'invention est capable d'atteindre des machines situées sur des réseaux privés sans configurer routeurs ni pare-feu et permet un déploiement en toute sécurité puisque les machines client et serveur sont invisibles et inattaquables. Le système selon l'invention est radicalement différent, de par les moyens employés et de par son mode de fonctionnement, des solutions existantes de passage à travers les pare-feu constituées d'un serveur Web utilisant un serveur Java en CGI (Common Gateway Interface), d'applets Java côté client, et d'un serveur SQL, car le serveur central est une application serveur d'un seul bloc pouvant fonctionner de manière totalement autonome. Il est beaucoup plus sûr car il n'est pas constitué de composants qui n' ont pas été conçus pour effectuer ces tâches exigeantes en termes de sécurité et de performances. Il est également beaucoup plus rapide du fait que les logiciels de connexion des machines client, des machines serveur et du serveur central sont écrits en C++ portable optimisé et que les temps de latence sont réduits au maximum puisque le serveur central a à lui seul la fonction d'un serveur Web, d'un serveur d'application Java et d'un serveur SQL ce qui élimine les temps de latence générés par le traitement des données par chacun de ces composants, les temps
de latence induits par la traduction des données nécessaire entre les composants et les temps de latence créés par la transmission réseau des données entre chacun de ces différents composants. En outre, le système selon l'invention est indépendant du protocole HTTP puisque le serveur central n'utilise pas ce protocole et, donc, ne présente pas les problèmes de performance et de sécurité inhérents à ce protocole. La méthode unique de gestion des connexions décrite précédemment permet de plus un accès sans interruption à toute machine serveur même si elle est déjà connectée à une machine client. Enfin, ce système est considérablement plus facile, moins cher à mettre en place et à maintenir que toute autre solution d'Help Desk existante utilisant ou non le passage à travers routeur et pare-feu puisque l'enregistrement des utilisateurs et des machines dans la base de données est effectué automatiquement, qu'aucune mesure de sécurité ou de configuration réseau n'est nécessaire et que le déploiement de la solution peut être fait à la demande grâce à la petite taille de la partie serveur (80 Ko) . A noter que dans cet exemple les clients se comportent également comme des serveurs et les serveurs comme des clients puisqu'une discussion en ligne (Chat) peut être initiée de part et d' autre que ce soit un client ou un serveur qui soit installé sur une machine. De la même manière, le transfert de fichier pourrait ici être initié à partir d'un serveur.
2. Système client/serveur de DRM (Device Relationship
Management) Le DRM permet aux entreprises, fabricants et sociétés de service de surveiller, gérer et maintenir en temps réel des appareils intelligents -tels que: photocopieurs, ascenseurs, chaînes de production, DAB, caisses enregistreuses, stations météo, pompes à essence, équipement médicaux ou des flottes d'avions, de camions ou de bateaux- déployés sur des sites distants partout dans le monde. Les agents intelligents
déployés ne sont pas en attente de connexions ce qui les met à l'abri de toute détection à distance et permet d'éviter les attaques .
Le serveur central DRM comporte, outre les fonctionnalités normales du serveur central, la fonction de "tunnel transparent" pour n'importe quel type d'application, logicielle ou matérielle, ayant besoin de 'transférer des données de manière sûre et temps-réelle sur des réseaux distribués comme Internet. Cette fonction de tunnel transparent est implantée du côté agent (un "agent" pouvant être à la fois un client et un serveur) et du côté serveur DRM afin de permettre à un logiciel ou un appareil tiers d'utiliser l'agent pour joindre d'autres agents ou pour demander ou envoyer des données au serveur DRM et réciproquement ce qui permet d' implanter une logique de gestion adaptée à chaque type d'appareil intelligent avec des filtres, des alertes, des règles métier et des données à fournir à ces appareils ou venant de ces appareils.
Le serveur DRM est également utile pour les sociétés éditant des logiciels réseau : la programmation réseau est simplifiée à l'extrême (il ne reste plus qu'à spécifier un destinataire par son nom où qu'il soit au monde pour lui envoyer ou lui demander des données) . Il ne reste dans ce cas que la partie en contact avec l'agent DRM et la partie en contact avec le serveur DRM à créer -c' est à dire ce qui définit l'application elle-même (pilotage d'automate, acquisition de données, maintenance, comptabilité, gestion de point de vente, etc.).
Par ailleurs, l'écriture de nouvelles applications réseau utilisant le serveur DRM conduit à une sécurité assurée d'emblée (il ne sera plus nécessaire de vérifier chaque ligne de code des nouveaux produits pour y rechercher des failles de sécurité puisque ces failles, même si elles existent, ne sont plus exploitables) .
Le serveur DRM est considérablement plus facile à utiliser, moins cher à mettre en place et à maintenir que toute autre solution existante du fait qu'il résout à lui seul toutes les difficultés techniques liées à l'accès aux réseaux et aux problèmes de sécurité inhérents à ces accès.
Selon l'inventeur, les avantages du serveur DRM sont tellement évidents qu'aucune organisation ne pourrait se passer à terme d'une solution équivalente. Grâce au caractère mineur des modifications à apporter aux solutions déjà en place, il est possible d'effectuer une migration progressive permettant une exploitation mixte conservant l'approche classique, en privilégiant la mise en place de la technologie du serveur central dans les applications les plus critiques en priorité (cette démarche ayant été expérimentée avec succès dans l'application de Help Desk présentée dans l'exemple 1).
3. Système client/serveur de protection de réseau privé
Les passerelles traditionnelles (pont, routeur, pare-feu, proxy, etc.) permettent de transmettre le trafic réseau de deux réseaux ou plus par le fait que la passerelle est située à cheval sur ces mêmes réseaux en ayant une interface réseau dans chacun des réseaux pour lesquels elle redirige du trafic.
Le serveur central, au lieu de cela, n'utilise qu'une seule et unique interface réseau pour transmettre le trafic depuis une infinité de réseaux source vers une infinité de réseaux destination, quelle que soit la situation géographique du serveur central par rapport à la topologie des réseaux pour lesquels le serveur central redirige le trafic.
La mise en œuvre d'un système selon l'invention permet, en utilisant la technologie du serveur central pour une passerelle (routeur, pare-feu, proxy, etc.), permet de délocaliser la sécurité réseau actuellement distribuée sur un seul et unique serveur central.
Il suffit à la partie agent (client ou serveur) de l'invention de prendre en charge toutes les connexions
possibles sur toutes les machines client et serveur. Les deux composants client et serveur peuvent d'ailleurs n'en faire qu'un ou être installés ensemble sur chaque machine. Ainsi, plus aucun poste de travail ni aucun serveur n'est en écoute pour aucun service : au lieu de cela, le serveur central gère les besoins de tous grâce à des agents distribués totalement sûrs puisqu' ils sont indétectables et inattaquables quelle que soit la situation géographique des machines par rapport au serveur central. Les machines n'ont pas à être "cachées" derrière le serveur central ni même à être situées sur un segment de réseau privé commun -elles peuvent être déployées n'importe où : directement connectées à Internet partout sur Terre ou installées sur n'importe quel LAN). Ce point est déterminant dans le dispositif de sécurisation parce que plusieurs serveurs centraux peuvent fonctionner sans qu'il soit possible pour un attaquant de savoir où se trouvent ces serveurs centraux ni même où sont les machines travaillant avec ces serveurs centraux car il est impossible de faire le lien entre toutes ces machines du fait qu' elles ne se trouvent pas nécessairement sur le même segment de réseau.
Ce modèle est particulièrement adapté au travail à distance selon lequel les employés d'une entreprise sont en déplacement ou travaillent depuis leur domicile. Avec le serveur central, ils sont protégés d'emblée où qu'ils soient. De la même manière, un fournisseur d'accès à Internet pourrait protéger tous ses clients -leur épargnant ainsi d'avoir à installer, configurer et maintenir des équipements de sécurité coûteux et bien souvent inefficaces.
Le courrier électronique, les systèmes d'inventaire, les bases de données en ligne, les applications d'assistance aux utilisateurs ou de maintenance, tout passe par le serveur central, ce qui permet également d'unifier la gestion des droits d'accès, les journaux d'activité, les alertes et les filtres qui sont aujourd'hui gérés par chaque application
séparément avec les coûts redondants et les risques démultipliés inhérents à chaque application utilisée.
Avec la technologie du serveur central la question de la sécurité est traitée une fois pour toutes : plus besoin de logiciels de sécurité déployés sur chaque poste, plus besoin de pare-feu chers, mal configurés et apportant de nouvelles failles, plus besoin de services de surveillance ni de risques négligés par faute de moyens ou non-identifiés . L'utilisation généralisée de la technologie du serveur central au sein d'un groupe de travail aurait un impact déterminant sur la réduction des coûts par les économies d' échelle réalisées sur l'installation, la configuration, la maintenance et l'intervention sur les postes de travail puisque seul un agent de quelques Ko, capable de se configurer tout seul et de se mettre à jour à distance, est nécessaire au lieu de solutions lourdes et onéreuses qui, malgré des mesures de sécurité disparates et redondantes, présentent régulièrement de nouvelles failles de sécurité qu'il faut sans cesse corriger avec les rustines vendues par les fabricants de ces mêmes systèmes reconnus vulnérables.
L'utilisation d'un agent bloquant tous les services en écoute et déroutant les connexions sortantes sur chaque machine permet d'utiliser la technologie du serveur central sans avoir à modifier les applications déjà en place. Comme il est possible d'intégrer facilement des dispositifs de commutation utilisant la technologie du serveur central au sein de réseaux utilisant des commutateurs classiques, une diffusion du dispositif selon l'invention peut se faire progressivement et à moindre coût. Dans le cadre de l'invention, on doit noter que plusieurs serveurs centraux peuvent être chaînés afin de les faire fonctionner en tolérance de panne, chacun d'eux se synchronisant à intervalles de temps donné avec son voisin immédiat pour mettre à jour les données de chaque serveur
central. La synchronisation peut par exemple adopter un schéma de connexion hiérarchique ou en série.
Plusieurs serveurs centraux peuvent également être utilisés dans le but de partager la charge de travail, chacun d' eux envoyant des connexions à son voisin immédiat lorsque sa limite de connexions simultanées est atteinte (le nombre des threads du groupe de threads du serveur central pouvant être défini en fonction de la capacité de traitement de chaque serveur central) . Le partage de charge peut par exemple adopter un schéma de connexion hiérarchique ou en série et peut se combiner avec la synchronisation de base de données décrite ci-dessous.
Enfin, plusieurs serveurs centraux peuvent être synchronisés les uns avec les autres en temps-réel afin que si l'un des serveurs venait à être indisponible les machines client et serveur utilisent le serveur central suivant dans leur liste des serveurs redondants, liste qui leur est fournie lors de leur connexion à l'un des serveurs centraux. Ce système peut être utilisé pour faire du partage de charge en répartissant les machines client et serveur sur plusieurs serveurs centraux avant même qu'une panne n'intervienne. Ce système est transparent pour les utilisateurs et ne requiert aucun moyen matériel supplémentaire dédié au partage de charge. En conclusion, le système selon l'invention présente des avantages considérables par rapport aux systèmes existants. Il est infiniment plus facile et plus économique à utiliser, plus sûr et plus performant, puisqu'il n'utilise pas de composants intermédiaires qui impliquent des conversions de format et des traductions dans le seul but de leur permettre de s'interfacer pour fonctionner ensemble.
L'un des avantages primordiaux vient de ce que la sécurité des clients est assurée puisque :
- les clients et les serveurs sont invisibles et inattaquables depuis le réseau puisqu'ils n'acceptent plus aucune connexion,
- le serveur central est en mesure d'effectuer un tri parmi les connexions entrantes car il n'accepte que des utilisateurs et des machines autorisés au préalable par le serveur central à communiquer entre eux,
- la technologie du serveur central permet de protéger de toute attaque tous les utilisateurs connectés au serveur central.
En outre, le serveur central est moins coûteux à protéger, à installer et à maintenir que n'importe lequel des serveurs qu'il remplace puisque :
- la technologie du serveur central lui permet d' être clone et situé n'importe où pour rediriger le trafic d'une infinité de réseaux au lieu de devoir se trouver au carrefour de ces mêmes réseaux,
- la technologie du serveur central authentifie les machines et les utilisateurs avant même qu'ils n'aient eut l'occasion de faire quoi que ce soit -ce qui permet de rejeter automatiquement les connexions venant de sources inconnues sans exposer inutilement le serveur central ou son hôte,
- la technologie du serveur central utilise les méthodes les plus sophistiquées actuellement disponibles pour crypter et signer les connexions alors que la plupart des services de l'Internet n'utilisent que des mots de passe en texte clair et des données en texte clair (SMTP, POP3, HTTP, FTP, LDAP, etc.) ou des méthodes de cryptage qui ont déjà révélé de graves vulnérabilités (rechercher 'SSL + vulnerability' ou λSSH + vulnerability' ) ,
- 1 ' architecture redondante et à partage de charge du serveur central le protège des attaques de déni de service car, si un serveur central ne répond plus, les clients changent de serveur central automatiquement sans interruption
de service sans à avoir à utiliser de dispositifs de commutation coûteux dédiés au partage de charge ou à la redondance .