Cours informatique en pdf sur la Sécurité des Réseaux
...
Introduction
Une application distribuée est réalisée par un ensemble d’entités logicielles logiquement autonomes, qui produisent, consomment et échangent des informations ( OUTi = PROG(INi) ).
Ordinateurs et sécurité des applications
Dans un premier temps les composants logiciels des applications étaient logés dans un même système informatique, constituant de fait leur média de communication (parfois dénommé gluware). Le bus système permet le transfert des informations stockées en mémoire, les modules logiciels sont réalisés par des processus gérés par le système d’exploitation. La sécurité est uniquement dépendante des caractéristiques du système d’exploitation, par exemple en termes de gestion des droits utilisateurs, ou d’isolement des processus.
...
Le réseau téléphonique (RTC)
Dans une deuxième période l’application distribuée est répartie entre plusieurs systèmes informatiques reliés entre eux par des liens de communications supposés sures (c’est à dire qu’il est difficile d’enregistrer ou de modifier l’information transmise) tels que modems ou liaisons spécialisées (X25, RNIS …). Nous remarquerons à ce propos qu’il est possible de sécuriser une liaison de type point à point par un dispositif matériel de chiffrement.
L'internet
Enfin l’émergence de la toile d’araignée mondiale a permis de concevoir des systèmes distribués à l’échelle planétaire, les composants logiciels sont répartis sur des systèmes informatiques hétéroclites, le réseau n’est pas sûr, le nombre d’utilisateurs est important. La sécurité devient un paramètre critique et tente de concilier des contraintes à priori antinomiques telles que, nécessité économique d’utiliser Internet, et impérative résistance à la piraterie informatique ou à l’espionnage.
L'internet sans fil, les réseaux radio
La dernière révolution des communications s’appuie sur les technologies de réseaux IP sans fil, tels que Wi-Fi ou WiMAX. Les liens filaires symboles d’une connectivité volontaire et contrôlée s’estompent; l’infrastructure du réseau devient diffuse et invisible. Un nouveau besoin de sécurité s’affirme, le contrôle des accès réseaux.
Transfert de fichiers et streaming
Les réseaux de communication transportent les données produites et consommées par les systèmes distribués. Ils offrent deux types de services fondamentaux, le transfert de fichiers (un ensemble de données prédéfinies) et la diffusion d’information, variant dans le temps, en mode flux. La première catégorie comporte des services tels que le courrier électronique (POP, SMTP…), le WEB (HTTP) et diverses méthodes d’échange d’information (FTP, NNTP, …). La deuxième catégorie regroupe les protocoles relatifs au multimédia ou à la téléphonie sur IP, par exemple RTP, H323, ou SIP.
Roaming, VPN
Les fournisseurs de services internet gèrent un ensemble de serveurs qui stockent les données et les applications de leurs clients (base de données, messageries, fichiers…). Le roaming consiste à autoriser l’accès à distance de ces ressources, ce qui implique également la gestion sécurisée de la mobilité des utilisateurs, typiquement à l’aide de protocoles VPN (Virtual Private Network).
Du Data Center au Cloud
Durant la période 2000-2010 les grands fournisseurs de services de l’Internet (tels que Google, facebook) ont développé une technologie s’appuyant sur des Data Centers, c'est-à-dire des sites informatiques regroupant jusqu’à un million d’ordinateurs (cartes mère), pour un cout de l’ordre de 600 M$, et consommant environ 100 MW (le dixième d’un réacteur nucléaire).
Cette approche est à la base du concept du Cloud Computing, le client est équipé d’un terminal léger comportant un navigateur ou une machine virtuelle, la sécurité d’accès au service repose sur des technologies WEB. Une plateforme de cloud computing est divisée en trois couches fonctionnelles:
- Le SaaS ou Software as a Service. Par exemple Salesforce.com met à la disposition de ses clients un ensemble de logiciels dédiés à la gestion des entreprises.
- PaaS ou Plateform as a Service. C’est un environnement (APIs, Machine Virtuelles) permettant de déployer des applications par exemple Google App Engine ou Microsoft Azure.
- IaaS, ou Infrastructure as a Service. C’est typiquement un service de location de ressources telles que serveurs ou stockage de données, par exemple Amazon EC2.
La propriété essentielle est la notion d’élasticité, c’est-à-dire l’adaptation dynamique des ressources à la demande.
L'émergence du monde connecté
En 2013 plus d'un milliard de smartphones ont été vendus; ce chiffre marque le basculement vers le paradigme du monde connecté. Par exemple la maison connectée (smart home), la voiture connectée (connected car), les objets connectés (lunette, montre, vêtements...), les capteurs médicaux (body area network, BAN), les immeubles intelligents (smart building), la ville intelligente (smart city), et de manière générale l'internet des choses (Internet of Things IoT). Selon un white paper1 de cisco le nombre d'objets connectés était de 10 milliards en 2010 et pourrait atteindre 50 milliards en 2020. Le moteur de recherches SHODAN () recense les dispositifs connectés. De nombreuses attaques/intrusions s'appuient sur l'usage de mots de passe par défaut. La RFC 7228 ("Terminology for Constrained-Node Networks", 2014) propose un classification en 3 classes des nœuds de l'IoT à ressources réduites
- Classe C0, RAM << 10KB, code << 100KB, ces systèmes (capteurs) n'ont pas les ressources nécessaires pour gérer des connections sécurisées
- Classe C1, RAM #10KB, code #100KB, les ressources systèmes sont suffisantes pour assurer des connections (TC-UDP/IP) sécurisées selon des protocoles peu complexes.
- Classe C2, RAM #50KB, code #500KB, les ressources systèmes autorisent des connections à des dispositifs TCP/IP (notebook, tablettes) classiques.
Le protocole COAP (RFC 7252) sécurise les échanges d'information de capteurs en utilisant DTLS (TLS avec un transport UDP) L'industrie, en particulier le contrôle des processus industriels (usines...) utilise également des technologies connectées. Par exemple le système de contrôle et d'acquisition de données SCADA2 (Supervisory Control And Data Acquisition), comporte des dispositifs de contrôle tels que PLC (programmable logic controllers) ou RTU (remote terminal unit) communiquant via le protocole MODBUS fonctionnant en mode Master/Slave (sur des liaisons séries RS232, RS-485) ou Client/Server (TCP/IP).
L’architecture logicielle selon REST
Dans sa thèse de doctorat, "Architectural Styles and the Design of Networkbased Software Architectures", publiée en 2000 Thomas Fielding (Université d’Irvine, CA, USA) définit le concept d’architecture REST (Representational
State Transfer).
Il introduit la notion d’architecture logicielle (distribuée) sous forme d’un assemblage de trois types d’éléments, les composants, les connecteurs et les données.
Un composant (component) est un bloc abstrait d’instructions et d’états machine qui traite des données reçues via son interface.
Un connecteur (connector) est un mécanisme abstrait qui organise la communication, la coordination, et la coopération entre composants.
Un datum est un élément d’information reçu ou transmis par un composant via un connecteur.
Une architecture REST est une généralisation du WEB; ses principales caractéristiques sont les suivantes
- Deux types d’entités les clients et les serveurs (Client-Server).
- Pas d’états machine (stateless). Les requêtes échangées sont indépendantes les unes des autres.
- Usage de caches (cache) pour meilleure efficacité du système.
- Interface Uniforme (uniform interface) en particulier pour l’identification et l’usage des ressources.
- Système structuré en couche (layered system), mais présentant des interfaces uniques.
- Code à la demande (on demand code) exécuté par le client.
Dans un contexte REST la sécurité du réseau consiste à garantir l’intégrité et la confidentialité des données échangées entre composants.
Principes de sécurité.
Classiquement la sécurité s’appuie sur cinq concepts de base.
L’identification (identity). L’utilisateur d’un système ou de ressources diverses possède une identité (une sorte de clé primaire d’une base de données) qui détermine ses lettres de crédits (credential) et ses autorisations d’usage. Cette dernière peut être déclinée de multiples manières, compte utilisateur (login) d’un système d’exploitation ou techniques biométriques empreinte digitale, empreinte vocale, schéma rétinien…
L’authentification (authentication). Cette opération consiste à faire la preuve de son identité. Par exemple on peut utiliser un mot de passe, ou une méthode de défi basée sur une fonction cryptographique et un secret partagé. L’authentification est simple ou mutuelle selon les contraintes de l’environnement.
La confidentialité (privacy). C’est la garantie que les données échangées ne sont compréhensibles que pour les deux entités qui partagent un même secret souvent appelé association de sécurité (SA). Cette propriété implique la mise en œuvre d’algorithmes de chiffrements soit en mode flux (octet par octet, comme par exemple dans RC4) soit en mode bloc (par exemple une série de 8 octets dans le cas du DES).
L’intégrité des données (MAC, Message AuthentiCation). Le chiffrement évite les écoutes indiscrètes, mais il ne protège pas contre la modification des informations par un intervenant mal intentionné. Des fonctions à sens unique (encore dénommées empreintes) telles que MD5 (16 octets) ou SHA1
(20 octets) réalisent ce service. Le MAC peut être associé à une clé secrète, telle la procédure HMAC(Clé, Message), Keyed-Hashing for Message
AuthentiCation .
La non-répudiation. Elle consiste à prouver l’origine des données.
Généralement cette opération utilise une signature asymétrique en chiffrant l’empreinte du message avec la clé RSA privée de son auteur (RSA(Empreinte(Message))).
On cite fréquemment un sixième attribut relatif à aux notions de sûreté de fonctionnement, disponibilité, et résilience du système.
Remarquons également que la sécurité implique le partage de confiance entre les différents acteurs de la chaîne. Pour partager un secret il faut avoir confiance dans les capacités des parties concernées à ne pas le divulguer.
Ainsi les infrastructures à clés publiques (PKI) supposent que l’on fasse confiance aux entités qui produisent les clés privées, et les signatures des certificats.
La confiance est une relation sans propriétés particulières.
Réflexivité, ai-je confiance en moi-même (pas dans tous domaines).
Symétrie, je fais confiance au pilote de l’avion ou au chirurgien, la réciproque n’est pas forcément vraie.
Transitivité, j’ai confiance dans le président, le président a confiance en la présidente, je n’ai pas obligatoirement confiance dans la présidente.
Les infrastructures PKI supposent une transitivité de la relation de confiance. Le client du réseau et un serveur d’authentification partagent une même autorité de certification (CA), qui crée une classe de confiance basée sur une relation R (R signifiant= «fait confiance à»). (Client R CA) ET (Serveur R CA) => (Client R Serveur)
Sécurité des Applications Distribuées
La sécurité globale s’appuie sur le triptyque:
1) la sécurité des applications clientes et serveurs,
2) la sécurité des plateformes informatiques qui exécutent ces applications (Operating System, Hardware),
3) la sécurité des protocoles de communication et du réseau qui transporte ces éléments.