juillet
2008
Comme vu précédemment, le système décentralisé a de nombreux avantages, mais il a aussi ses inconvénients.
Le principal point noir de ce système est la sécurité. Sachant que tous les paquets ne passent que par les clients, un client mal attentionné peut modifier les paquets à sa guise.
De plus, les clients acceptants les paquets des autres clients, si un utilisateur décide de faire passer un code malicieux par le biais du logiciel, celui-ci se propagera rapidement au travers de toute la communauté.
Petit exemple : Un utilisateur de messagerie décentralisé décide de faire passer une image contenant un code malicieux de sa fabrication (non reconnu par l’antivirus), celui-ci se propagera sans aucune vérification d’intégrité de l’image. Pour contrer cet éventuel problème, de nombreuses dispositions sont à prendre lors du développement du système.
Première décision à prendre, y’aura-t-il un contrôleur maitre ?
Le Contrôleur maitre est un serveur (ou client) vérifiant les opérations importantes. Dans la suite de l’article nous allons prendre la solution la plus simple pour la sécurité, une architecture avec la présence d’un contrôleur maitre. (si vous avez des questions sur la sécurité sans l’utilisation d’un contrôleur maitre posez moi les question en commentaire).
Le contrôleur maitre vérifiera l’intégrité des paquets et tiendra à jour une liste des peers (clients) potentiellement dangereux. Quant un paquet arrivera d’un client et qu’un doute se pose sur l’intégrité de celui-ci (nous verrons le contrôle de l’intégrité dans un article prochain), il demandera simplement au contrôleur maitre de vérifier ce paquet. Ainsi, si le paquet est valide (si il respecte une architecture spéciale, que le hash est bon et que l’analyse anti-virus + malware n’a rien donné) il renverra un signal au client. Dans le cas contraire un message général sera envoyé à la totalité des peers mettant en garde contre ce client. Au bout du deuxième avertissement, ce client ne sera plus autorisé à émettre sur le réseau.
Ces petites vérifications peuvent être très utiles afin de ne pas se retrouver avec un réseau poubelle.
Dans le cadre d’une application demandant un haut niveau de sécurité toutes les transactions importantes doivent être vérifiées par des contrôleurs maitres. Dans certains cas il est possible d’assigner certains utilisateurs comme contrôleurs maîtres (afin d’éviter la location d’un serveur).
Il est aussi recommandé d’utiliser des coverts channels dans le cadre d’applications à haute sécurité (un article sur le sujet verra le jour prochainement).
Maintenant que les présentations faites, nous allons maintenant voir les fonctions d’un Contrôleur maitre (C#/.NET) et comment procéder à son intégration sur un réseau.
Suite au prochain article, publication prévue fin de semaine.
Bonne journée à tous.