610 likes | 776 Views
La sécurité. Références Chap 11, « Developping Distributed and E-Commerce Applications Chap 8, Livre « Java E-Commerce ». Objectifs de la sécurité. 1- Identification Qui es-tu? 2- Authentification Confiance mutuelle Peux-tu le prouver? Challenge, secret privé, secret partagé, objet
E N D
La sécurité • Références • Chap 11, « Developping Distributed and E-Commerce Applications • Chap 8, Livre « Java E-Commerce »
Objectifs de la sécurité • 1- Identification • Qui es-tu? • 2- Authentification • Confiance mutuelle • Peux-tu le prouver? • Challenge, secret privé, secret partagé, objet • Non-répudiation • 3- Confidentialité • La conversation reste privée • 4- Contrôle d’accès et autorisation • Tu fais uniquement ce que tu as le droit de faire • 5- Intégrité • Le système et les documents restent tel quel, après des mois et des années d’opérations
6- Non répudiation • Ni l’émetteur, ni le récipiendaire d’une transaction ne peuvent dénier que la transaction a bien eu lieu
Contre qui? • Compétiteurs- Guerre virtuelle • Motivations économiques • Espionnage industriel • Fraude • Politiques • « hooligans » • Pour le plaisir de détruire • Joueurs • Challenges, défis, bravades • Curieux • « comment ça marche » • Produisent des « logiciels »
Attaques typiques • Écoute – rejoue • Exemple: Écoute échange et retransmet le mot de passe • Homme au milieu • S’insère dans la relation de confiance entre l’entreprise et le consommateur • Exemple: Guichet bancaire « malicieux » • Site Web frauduleux (hameçonnage-pishing) • http://cyberie.qc.ca/jpc/2005/10/desjardins-et-lhameonnage.html
Attaque-suite • Refus de service • “Denial of service” • Exemple: Surcharge figeant un service • Centaine de milliers de requêtes http provenant d’ordinateur “zombie” • Empêcher le serveur de répondre aux requêtes légitimes • Virus • Faire exécuter par le système distant du code malicieux • Grandement facilité par • Les macros Visual Basic en Word • Requêtes SQL « automatiquement exécutées » • autres
Objectifs des attaques • Intégrité des données • Modification des données • En particulier les données de contrôle: • Code d’accès, liste des utilisateurs autorisé • Confidentialité • Lire les données conservées sur votre serveur • La liste des clients • Les numéros des cartes de crédits • Impersonnification • Un intrus prend la place d’un utilisateur légitime
Attaques non-technologiques • La majorité des attaques ne demandent pas une grande habilité technologique • Lire les mot de passes sur les collants jaunes sur les écrans! • Demander au téléphone un mot de passe en se faisant passer pour le réparateur! • Se faire aider par un utilisateur légitime
Attaques non-technologiques (2) • Deviner un mot de passe • Voler un mot de passe • Prendre avantage d’un environnement physique faiblement contrôlé, par exemple avec un CD ou une disquette système la nuit • Imiter un dialogue système avec du Javascript exécuté dans un logiciel fouineur.
Attaques réseaux • Bombe de courrier électronique • Virus • Attaques de dénis de services • Denial of service (DOS) • Balayage systématique des ports • Balayage des mots de passes • Écoute des communications réseaux
Attaques systèmes • Vise à prendre le contrôle de votre système • Profite des faiblesses de l’environnement du système d’exploitation tel qu’installé
Se défendre des attaques • Identification • Authentification • Contrôle de l’accès • Garantir la confidentialité et l’intégrité des données
Identification • Anonyme • Page Web publique • Type d’identification • l’utilisateur • Nom, adresse e-mail • le réseau • Adresse IP, adresse IP « réversible », i.e. avec nom • adresse Éthernet, • le système, l’ordinateur • Numéro de série • Un objet • Une carte • Un PDA
Authentification • Comment prouver qui je suis? • Triangulation • Obtenir une ou plusieurs autres informations « prouvant » qui je suis
Types d’authentification • Un secret partagé • Mot de passe, un Numéro d’Identification Personnel, une phrase • Un objet • Une carte magnétique • Un objet intelligent, non copiable • SecureID, • carte à puce, • le téléphone cellulaire • Une caractéristique physique • Empreintes digitales, vocales, la signature
Fonctionnement d’un secret partagé • Échangé initialement • Puis, par la suite, ce secret partagé sert à confirmer l’identité du ou des participants. • Comment? • D’un secret, on produit un nombre « public », qui prouve que je connais le même secret que mon correspondant • On peut utiliser des fonctions mathématiques à sens uniques, ou fonction de hachage • Le résultat de F(s) ne donne aucun indice sur s. • Exemple simple: • F(s) = s*NP1 modulo NP2; NP1 et NP2 sont 2 nombres premiers • F(s) = s*7 modulo 47
« Authentification Digest » • Les informations d'authentification sont traitées par un processus unidirectionnel souvent appelé hachage. • Le résultat de ce processus, appelé hash ou message condensé, est impossible à décrypter. • Cela signifie qu'il n'est pas possible de retrouver le texte d'origine à partir de la valeur de hachage.
Fonctionnement et déroulement • Le serveur envoie au navigateur certaines informations qui seront utilisées au cours du processus d'authentification. • Le navigateur ajoute ces informations au nom d'utilisateur, au mot de passe et aux autres informations dont il dispose, puis procède au hachage de toutes ces informations. • Les informations supplémentaires sont destinées à empêcher un utilisateur de copier la valeur de hachage pour la réutiliser. • La valeur de hachage obtenue est envoyée au serveur via le réseau, accompagnée des informations supplémentaires en texte clair. • Le serveur ajoute les informations supplémentaires à sa copie en texte brut du mot de passe du client et hache toutes ces informations. • Ensuite, le serveur compare la valeur de hachage reçue avec celle qu'il vient de générer. • L'accès est accordé uniquement si ces deux valeurs sont parfaitement identiques.
Important • Des informations supplémentaires sont ajoutées au mot de passe avant le hachage afin que personne ne puisse intercepter le hachage du mot de passe et l'utiliser pour emprunter l'identité du véritable client. • Des valeurs sont ajoutées pour faciliter l'identification du client, de l'ordinateur du client et du domaine auquel le client appartient. En outre, un système de datage empêche le client d'utiliser un mot de passe qui a été révoqué. • Cela constitue un avantage certain par rapport à l'authentification de base, avec laquelle une personne non autorisée peut intercepter et utiliser le mot de passe. • Le processus d'authentification Digest ne peut réussir que si le serveur de domaine qui a reçu la demande dispose d'une copie en texte brut du mot de passe de l'utilisateur à l'origine de la demande. Étant donné que le contrôleur de domaine dispose d'une copie en texte brut des mots de passe, il doit être protégé des attaques physiques et réseau.
Caractérisques du hachage • Une valeur de hachage comprend est petite • En général pas plus de 160 bits. • Cette valeur est obtenue à l'aide d'un algorithme de hachage. Toutes les valeurs de hachage partagent les propriétés suivantes, quel que soit l'algorithme utilisé • Longueur de la valeur de hachage • La longueur de la valeur de hachage est déterminée par le type d'algorithme utilisé et ne varie pas en fonction de la taille du message. • Même si le message comporte plusieurs kilo-octets ou gigaoctets, la taille de la valeur de hachage reste toujours la même. • En règle générale, la taille d'une valeur de hachage est de 128 ou 160 bits.
Hachage-suite • Déchiffrage impossible • Chaque paire de messages non identiques donne lieu à deux valeurs de hachage complètement différentes, même si les deux messages sont identiques à un bit près. • La technologie actuelle ne permet pas de découvrir une paire de messages qui se traduisent par la même valeur de hachage.
Hachage-suite • Récurrence • Chaque fois qu'un message donné est haché à l'aide du même algorithme, vous obtenez exactement la même valeur de hachage. • Irréversibilité • Tous les algorithmes de hachage sont unidirectionnels. • Il est impossible de retrouver le message d'origine à partir d'une valeur de hachage, même si vous disposez de l'algorithme de hachage. • Aucune des propriétés du message d'origine ne peut être obtenue à partir de la valeur de hachage seule.
Algorithmes de hachage standard • Secure Hash Algorithm 1 (SHA-1) • Message Digest 5 (MD 5) • Beaucoup d’autres
Encodage symétrique • Avec une fonction réversible • Le message encodé ne permet pas de retrouver le message en clair à un observateur ignorant de la clef partagée • Longueur au moins aussi longue des messages clairs et encodés • Avec une clef partagée • Encodage(x)= f(x, clef) • x= f-1(Encodage(x), clef) • Standard DES – Data Encryption Standard • Utilisé pour les applications bancaires • Faible: clef de 56 bits • Triple DES, 3 clef en successions, mieux
Authentification: Système à clef publique • Scénario simple • Une paire de 2 clefs, une publique, l’autre privée • Les 2 clefs servent à encoder • Alice et Bob ont chacun une paire de clefs • Alice et Bob s’entendent sur le protocole • Bob envoie à Alice sa clef publique • Alice encode son message avec la clef publique de Bob et lui envoie • Bob reçoit son message et le décode avec sa clef privée
Propriétés 1 • MessageCrypté1= • Encodage(message, clef privée) • Message= • Decodage(messageCrypté 1, clef publique) • Alice encode avec sa clef privé, Bob décode avec la clef publique de Alice • Offre la garantie que seul le propriétaire de la clef privée, Alice, est l’émetteur du message • Permet la signature du message
Propriétés 2 • MessageCrypté2= • Encodage(message, clef publique) • Message= • Decodage(messageCrypt2, clef privée) • Alice envoie un message encodé avec la clef publique de Bob • Offre la garantie que seul le destinataire, Bob, pourra lire le message
Exemple de RSA • RonRivest, Adi Shamir, Leonard Adleman • Choisir p et q premiers • p= 47; q =71 • Clef publique: n et e • n=p*q • n= 3337 • e, sans facteur commun avec (p-1)*(q-1)= 3220 • e= 79, choisi au hasard des possibles • La clef privée : d • Nous avons d, l’inverse modulo de e sur (p-1)*(q-1), choisi pour que • e*d modulo (p-1)*(q-1) = 1 • d=1019 • 1019*79 modulo 3220 = 1
Encodage-Décodage • Encodage c du message m • c= me mod n • Décodage • m= cd mod n • Preuve • cd =(me) d = med = mk(p-1)(q-1)+1= m*mk(p-1)(q-1)= m*1 , avec le tout modulo n • Exemple: • m=688 • 688 79 mod 3337 = c = 1570 • 1570 1019 mod 3337 = 688
Confidentialité • Encodage symétrique • Encodage avec clef publique
Protocoles • Encodage très lent avec un système à clef publique; • Habituellement, les premiers messages construisent une clef secrète partagée entre Alice et Bob; • Puis le restant de la session est encodée avec une technologie de type DES
Certificat X.509 • Le certificat est un document standardisé • « Je certifie que la clef publique dans ce document appartient à l’entité nommée dans ce document » • « Signature de l’autorité » • L’autorité, émetteur du certificat, garantie l’association entre: • Un acteur et son identité électronique reconnue; • Une clef publique, connue de tous; • L’émetteur du certificat signe électroniquement le certificat • Garantie non évidente à fournir
Contenu du certificat • Voir des exemples dans votre fureteur Internet Explorer et Netscape, sous Outils • Nom de l’entité • Clef publique de l’entité • Nom de l’autorité de certification • Dates, de certification et durée de validation • Signature du certificat par l’autorité • Type de certificats • Pour e-mail • Pour serveur de commerce électronique • Pour programmeur
Chaîne de confiance • A partir d’une autorité de certification racine, on peut déléguer à des autorités intermédiaires de certification • Le logiciel client remonte automatiquement l’arbre des autorités de certification déléguées • Exemple: 1- Autorité de certification inter-bancaire 2- Autorité de certification d’une banque • Certificat pour identifier une carte à puce
Signature • Souvent, la signature s’applique uniquement sur l’empreinte digitale du message • Du message, on produit l’empreinte par fonction de hachage • Puis l’émetteur signe l’empreinte digitale avec sa clef privée • Les lecteurs vérifient la signature • En reconstruisant l’empreinte du message • En décodant avec la clef publique de l’émetteur • Pourquoi se limiter à l’empreinte? • Pour des raisons évidentes de performances
Authentification par certificat • Vous pouvez également utiliser les fonctionnalités de sécurité SSL (Secure Sockets Layer) de votre serveur Web pour deux types d'authentifications. • SSL fonctionne avec soit seulement le certificat serveur, soit les 2 certificats: serveur et clients. • Certificat serveur • Vous pouvez utiliser un certificat serveur pour permettre aux utilisateurs d'authentifier votre site Web avant de transmettre des informations personnelles, par exemple un numéro de carte de crédit. • Les certificats serveurs contiennent généralement des informations sur votre société et sur l'organisation ayant émis le certificat. • Certificat client • Vous pouvez également utiliser des certificats clients pour authentifier les utilisateurs qui demandent des informations sur votre site Web. • L'authentification SSL consiste à vérifier le contenu d'une identification numérique cryptée fournie par le navigateur Web de l'utilisateur lors de l'ouverture de session. • Les certificats clients contiennent généralement des informations d'identification relatives à l'utilisateur et à l'organisation ayant émis le certificat.
Protocole HTTPS • HTTP avec Secure Socket Layer • Exemple simplifié • Le serveur a un certificat avec une clef publique, le certificat client est optionnel • Le client contacte le serveur et donne ses paramètres d’encryption • Le serveur retourne le certificat avec sa clef publique • Le client vérifie le certificat et la signature de l’autorité de certification • Le client génère aléatoirement une clef de session, habituellement petite (40 bits) • Le client encode et transmet cette clef de session avec la clef publique du serveur • La clef de session est maintenant partagée en le serveur et le client • Cette clef de session devient la clef partagée pour encoder et décoder la suite des échanges avec un encodage symétrique
HTTPS asymétrique • Très pratique, gérable, facile à installer, car le certificat est seulement du côté serveur • Le client fournit un mot de passe sur une session encryptée • Gestion des identités sans « clef privée »
Rappel 1- Identification Qui es-tu? 2- Authentification Confiance mutuelle Peux-tu le prouver? Challenge, secret privé, secret partagé, objetNon-répudiation 3- Confidentialité La conversation reste privée 4- Contrôle d’accès et autorisation Tu fais uniquement ce que tu as le droit de faire 5- Intégrité Le système et les documents restent tel quel, après des mois et des années d’opérations
La sécurité sous J2EE • JAAS • Java Authentification and Authorization service • Voir http://java.sun.com/products/jaas/index-14.html • Pourquoi JAAS? • Grande diversité des mécanismes • Standardise l’accès à ces services: « PAM » ou « Pluggable Authentification Module » • Authentication: gestion des identités et des crédentiels • to reliably and securely determine who is currently executing Java code, regardless of whether the code is running as an application, an applet, a bean, or a servlet; and • Autorisation: gestion des droits • to ensure they have the access control rights (permissions) required to do the actions performed.
Gestion de cette liste d’identités sous JAAS • Fichiers • /etc/passwd • NIS • Network Information System, Unix • Table dans une base de données • Oracle • Kerberos • Gestion centralisée de tickets d’accès • « Service de répertoire des utilisateurs » • Ligthweight Directory Access Protocol (LDAP) • Vue hiérarchique • Système optimisé pour la lecture • Active Directory Service • Microsoft, basé sur LDAP • Novell • Novell Directory Service
Autorisation et gestion des droits • Aussi appelé Accès Control List, ou ACL • Définit une liste de triplets • un objet • (un document html, un fichier, une table SQL, une page jsp, un service Web) • la fonction: lire, ajouter, modifier, détruire, autres • Le groupe d’utilisateur ou un utilisateur • Avant chaque appel aux fonctions d’un objet, on vérifie que l’utilisateur a le droit de le faire • Ces politiques peuvent devenir très longues et fastidieuses à faire • Souvent elles sont gérées avec des règles par défaut
Intégrité du système • Qui est responsable du code qui s’exécute? • Le propriétaire du code • L’utilisateur-opérateur du système • L’utilisateur de l’application • L’utilisateur • Le propriétaire des documents et des données • Modèle de sécurité ancien • L’utilisateur est responsable du code qui s’exécute • Les privilèges de l’utilisateur sont transférés au code qui s’exécute. • Faux, avec les activations non sollicitées • Faux, avec les programmes mobiles qui s’exécutent • VBScripts, Word, Excel, autres • HTML, Javascript • Outlook • Java, C#
Java: un nouveau modèle de sécurité • L’utilisateur confère des privilèges révocables au code qui s’exécute • Modèle « Boîte à savon » - « SandBox » • Le code auquel nous accordons une confiance limité est mis dans une boite de contrôle. • Ce code a moins de privilèges que l’utilisateur • Ce modèle est aussi repris par C#
Élément de la sécurité • La validation du byte code • Code valide, pas de calcul de pointeurs • Le chargement des classes • Peut vérifier la signature des nouvelles classes lors de leur chargement • Le gestionnaire de sécurité • Définit de façon fine les droits des objets dans la « boîte à savon » • Le contrôleur des accès du code aux ressources • Fait le travail de vérification de l’accès aux ressources réseaux, aux fichiers, etc…
Le déploiement • Références • Article de la revue « Pour la Science » • http://www.pourlascience.com/numeros/pls-260/internet.htm • Chap 8, Livre « Java E-Commerce » • Section sur les pare-feux (Firewalls) • Introduction au pare-feu • http://www.commentcamarche.net/protect/firewall.php3 • Un pare-feu personnel • http://www.zonelabs.com/products/za/index.html • Architectures de pare-feu • http://www.freenix.fr/unix/linux/HOWTO/Firewall-HOWTO-3.html • http://crpppc19.epfl.ch/doc/LANG/fr/HOWTO/Firewall-HOWTO-3.html
Pourquoi une problématique de déploiement? • Conserver l’intégrité • Le système et les documents restent tel quel, après des mois et des années d’opérations • Les systèmes des postes de travail sont « ouverts » • Les utilisateurs aiment collaborer avec leurs confrères • Les postes de travail permettent par défaut l’utilisation de nombreux services réseaux • En mode client • Fureteur sur Internet • Révèle beaucoup d’informations • En mode serveur • Serveur web personnel • Serveur de partage des fichiers (ftp ou netbios) • Service réseau (Remote Procedure Call) • Petite base de données
La sécurisation distribuée est impossible … • Tous ces services ont des failles de sécurité • Une commande externe peut lui faire faire une action non voulu • Le code est « trop puissant » • Tous ces services peuvent avoir des « politiques d’accès » • Généreuses • Localement définies et • Politiquement non gérables • Solution: • Bloquer centralement les accès réseaux • Le pare-feu
Pare-feu • Définition d’un pare-feu • Configurations types
Description d’un pare-feu • Qu'est-ce qu'un pare-feu? • Le pare-feu est en réalité un système permettant de filtrer les paquets de données échangés avec le réseau. • Un firewall peut éventuellement autoriser des communications de façon horaire (selon le jour ou l'heure par exemple). • Un pare-feu (appelé aussi coupe-feu ou firewall en anglais), est un système canalisant toutes les communications à quelques services ou ports bien définis, sur quelques ordinateurs réputés fiables