LP ASUR - Sécurité Introduction à la Sécurité des Systèmes d'information Florent Autréau - florent@mataru.com 28 Mai 2013
Objectif Introduction aux concepts, outils et méthodologies de déploiement et administration d'infrastructure de confiance (ICP-PKI) et de solutions de cryptologie adaptées à la sécurité du S.I. : authentification, chiffrement, signature,... En qualité d'administrateur, de développeur, de RSSI ou de consultant, permettre de comprendre les principes et enjeux de ces technologies de confiance et de déployer une solution de sécurité.
Plan 1ere partie 20 novembre 2012 Intro - Sécurisation de son poste de travail 2eme partie 28 avril 2013 Sécurité Réseau SSH et routeur filtrant 3eme partie 28 mai 2013 Cryptographie ICP/Certificats et authentification sur serveur Web 4eme partie 1 et 2 juillet 2013 Sécurisation d'un petit réseau hétérogène Jeu de Rôle
Agenda 8h30-10h00 CM (en salle D105) 10h00-12h00 TP (en salle D103 A&B) 13h30-15h00 CM (en salle D105) 15h00-17h00 TP (en salle D103 A&B)
TP Evaluation L'évaluation de ce module se fera notamment par la correction d'un compterendu (10p max format pdf ASUR-TP3- <nom>.pdf ).
Retour Expériences Questions sur la 2eme partie
Concepts - Rappels
Quelques Définitions Confidentialité : garantie que seules les entités autorisées ont accès aux éléments considérés. Disponibilité : garantie que ces éléments considérés sont accessibles au moment voulu par les personnes autorisées. Intégrité : garantie que les éléments considérés sont exacts et complets. Traçabilité (voir Auditabilité ) : garantie que les accès et tentatives d'accès aux éléments considérés sont tracés et que ces traces sont conservées et exploitables. Non-répudiation / irréfutabilité Autorisation
Authentification/Identification Authentification : la procédure qui consiste, pour un système informatique, à vérifier l'identité d'une entité (personne, ordinateur...), afin d'autoriser l'accès de cette entité à des ressources (systèmes, réseaux, applications...). L'authentification permet donc de valider l'authenticité de l'entité en question. Identification : action permettant de connaître l'identité d'une entité, souvent à l'aide d'un identifiant tel qu'un nom d'utilisateur L' identification permet donc de connaître l'identité d'une entité alors que l'authentification permet de vérifier cette identité.
Authentification (1) L'authentification permet de vérifier l'identité d'un utilisateur sur une des bases suivantes : Un élément d'information que l'utilisateur connaît (mot de passe, passphrase, etc.) - ce qu'il sait Un élément que l'utilisateur possède (carte à puce, clé de stockage, certificat) ce qu'il a Une caractéristique physique propre à l'utilisateur, on parle alors de biométrie (photo, fond de rétine, empreinte digitale, ADN, etc.) - ce qu'il est Un élément que l'utilisateur réalise (signature, geste) ce qu'il fait Authenticité = authentification + intégrité
Authentification (2) Authentification simple : l'authentification ne repose que sur un seul élément ou «facteur» (exemple : l'utilisateur indique son mot de passe). Authentification forte : l'authentification repose sur deux facteurs ou plus[1]. Authentification unique : (Single Sign-On ou SSO) méthode permettant à un utilisateur de ne procéder qu'à une seule authentification pour accéder à plusieurs applications informatiques (ou sites internet sécurisés).
Authentification (3) L'authentification intervient à différents niveaux dans les couches de protocoles du modèle internet : * Au niveau applicatif : HTTP, FTP * Au niveau transport : SSL, SSH * Au niveau réseau : IPSEC * Au niveau transmission : PAP, CHAP
Authentification (4) Exemples de protocoles d'authentification : SSL (qui peut également fournir du chiffrement) NTLM (utilisé dans les réseaux de Microsoft Windows) Kerberos (standard développé au MIT et notamment utilisé par Windows et bien d'autres systèmes) Central Authentication Service (CAS) Mécanisme d'authentification et de SSO, libre et gratuit développé par l'université Yale 802.1x mécanisme standard de contrôle de port et d'authentification....
Concepts un peu de crypto
Rappels sur l utilisation de la cryptographie Cryptographie = technique de l écriture en code secret Cryptanalyse = décodage des mécanismes cryptographiques Cryptologie = cryptographie + cryptanalyse Confidentialité des messages (et plus généralement, des informations) Mais aussi (avancées récentes) : intégrité des informations authentification des personnes (ou des sites, des organisations, etc.) preuve d identité authentification des documents (signature électronique) preuve d origine non dénégation authentification des programmes code mobile
À quoi sert la cryptographie (CAIN)? Confidentialité des informations stockées ou manipulées Seuls les utilisateurs autorisés peuvent accéder à l information Authentification des utilisateurs L utilisateur est-il ou non autorisé? Pour quelle action? Intégrité des informations stockées ou manipulées Contre l altération des données Non-répudiation des informations Empêcher un utilisateur de se dédire 16
Usages de la Cryptographie Chiffrement (Encryption): fournit de la confidentialité, ainsi qu'éventuellement de l'authentification et garantit l'intégrité. Checksums/hash: garantit l'intégrité et peut aussi authentifier. Signature : authentification, intégrité et irréfutabilité.
Terminologie Texte clair information qu Alice souhaite transmettre à Bob Chiffrement processus de transformation d un message M de telle manière à le rendre incompréhensible Déchiffrement processus de reconstruction du message clair à partir du message chiffré 18
Cryptographie ancienne Cryptographie Transposition (mélange les lettres) Substitution Code (change les mots) Alphabet ou Chiffre (change les lettres) 19
Principes de Auguste Kerckhoffs (1883) 1.La sécurité repose sur le secret de la clef et non sur le secret de l algorithme 2.Le déchiffrement sans la clef doit être impossible (à l échelle humaine) 3.Trouver la clef à partir du clair et du chiffré est impossible (pour un humain) 20
Usages de la Cryptographie Chiffrement (Encryption): fournit de la confidentialité, ainsi qu'éventuellement de l'authentification et garantit l'intégrité. Checksums/hash: garantit l'intégrité et peut aussi authentifier. Signature : authentification, intégrité et irréfutabilité.
Cryptographie Clé symétrique Ou à clé secrete Alice et Bob partage un secret commun pour échanger un message codé Technique la plus ancienne DES, 3DES, AES chiffrement par bloc RC4 chiffrement par flot
Cryptographie asymétrique Ou à clé publique Utilisation d'une clé publique (qui est publiée) et d'une clé privée (qui est secrete) RSA
Crypto - Clé Publique
Echange Diffie-Hellman Alice choisit un secret (a) et calcule A= g^a mod p (clé publique ---> Bob) Bob fait de meme secret (b) et calcule B= g^b mod p (clé publique ---> Alice) Alice calcule K=B^a mod p Bob calcule A^b mod p = g^a.b mod p Alice et Bob partage K (clé partagée)
Cas d'usages Chiffrement e-mail Déchiffrement Clé publique de Bob Signature ftp ftp Transfert de fichiers Clé privée de Bob Vérification Clé privée d Alice Web Clé publique d Alice
Public Key Cryptography Standards - PKCS PKCS 7 Cryptographic Message Syntax Standard PKCS 10 Certification Request Syntax Standard - used by Netscape browser, IE, and SSL libraries PKCS 11 Cryptographic Token Interface Standard - An API for signing and verifying data by a device that holds the key PKCS 12 Personal Information Exchange Syntax Standard - file format for storing certificate and private key - used to move private information between browsers
Principe des signatures A Résumé H Document CPB Document CsB B H Résumé on compare CsA Signature CPA Signature Résumé L'égalité des résumés (digests) garantit que l'émetteur connaît la clé secrète de A, donc qu'il s'agit de A. 28
Kerberos
Sécurité des Réseaux
Infrastructure Clé Publique ICP / PKI
La PKI Pourquoi? Les PKI (Public Key Infrastructure, ICP en français) assurent ou permettent des fonctions de sécurité. En particulier des services : d'authentification de confidentialité d'intégrité de non-répudiation De contrôle d'accès Et ce en gérant de façon centralisée des certificats de clés publiques.
La PKI c'est quoi? C'est avant tout un cadre organisationnel, qui représente peut-être 80% de l'effort contre 20% de technique. C'est par exemple une politique de sécurité, une Politique de Certification (PC, document qui définit les exigences de sécurité et le contenu des certificats par exemple), une Déclaration des Pratiques de Certification (DPC, qui dit comment les exigences de la PC sont satisfaites par exemple).
Shéma Autorité de certification (AC) : Entité informatique qui effectue la signature des certificats, et qui à la responsabilité de l'infrastructure. Autorité d'enregistrement (AE) : Entité informatique assurant les tâches administratives, telles que la validation ou la révocation des certificats. Entité Client (EC) : Entité assurant l'enregistrement des demandes de certificats des utilisateurs (parfois confondue techniquement avec l'ae).
Domaines d' Applications Authentification unique (Single Sign On, SSO) Unifier les accès Ouvrir de nouveaux services Unifier des applications hétérogènes Réduire les coûts sur le long terme VPN (Virtual Private Network) Sécurisation du lien entre sites distants au niveau IP Utilisateurs mobiles... Sécurisation de données
PKI : les composants Top-level principles for information security Processes & directions for the use of cryptography How to handle valuable information & keys Security Policy Level of control / Security classification Detailed document to define practical implementation of the Security Policy Certificate Practice Statement Architecture & operation of the CAs Certificate management processes Key management processes
PKI : Les composants (2) Politique de Sécurité Definit les objectifs, principes de la Sécurité du S.I Quel est le patrimoine à protéger? Sa valeur? Quelles sont les menaces?
Les composants (3) - CPS Architecture & operation of the CAs Certificate management processes Key management processes
PKI : les composants(4) The core of the PKI The CAs will manage public key certificates for their whole life cycle Issue certificates (bind identity of a user or system to a public key with a digital signature) Certificate Authority Schedule expiry dates for certificates Ensure certificates are revoked => Publish CRLs (Certificate Revocation Lists) Registration Authority The interface between a user and the CA Authentication of the user => Critical Submission of the certificate request to the CA
PKI les composants (5) The way to distribute the certificates generated by the CA Certificate Distribution System Distribution to the users themselves Certificates stored in the enterprise directory Specific PKI directory Applications supporting the certificates Secure Web applications E-mail Secure Telnet, FTP, Electronic Data Interchange (EDI) Virtual Private Networks (VPNs) Credit card transactions Workstations authentication (Windows 2000, ) PKI-enabled Applications
Generic PKI Process : Creation 3 Validated Certificate Request Certificate Authority 4 Secured Certificate Distribution Certificate History Registration Authority Certificate Distribution System 1 Authentication Process 2 Certificate Request PKI-enabled Applications User 5 Secure access to applications
Generic PKI Process : Revocation 3 Validated Certificate Revocation Request Certificate Authority 4 Certificate Revocation List Certificate Distribution System Certificate History Registration Authority 1 Authentication Process 2 Certificate Revocation Request PKI-enabled Applications User or 5 Access denied to applications Certificate Expiry Date
Implémentation d'une PKI
Objectifs et Définition de la Stratégie d'intégration Quels applications/services? Accès sécurisé au poste de travail, SSO, accès sécurisé à l'information Modèle organisationnel Définition des politiques et Choix Architecturaux Politique d'accès / Définition des profils : qui a accès à quoi, où et quand?
Objectifs et Définition (2) Certificate Policy (CP) : identification, révocation, protection, diffusion, etc.. Certification Practices Statement (CPS) : durée de vie, protection,... Choix d'une Racine de Confiance Externaliser ou non / Dois-je opérer ma propre PKI? Qualification des vendeurs et des offres; Evolutivité, Modèle d'administration; Format, conformité, interoperabilité et co-existence avec existant.
Externaliser son ICP? L outsourcing de l operation de PKI se justifie Niveau de securité (AC privée) Retour sur investissement Perennité Très haut niveau de sécurité Simplicité et souplesse dans la mise en œuvre Fourniture de bureaux d enregistrement adaptables Évolutivité des solutions Interopérabilité Partage des coûts Expertise technique Le succès de la solution pour l'organisation dépend des conditions de distribution des certificats
TP- Découverte de la Boite à Outils OpenSSL Mini-PKI sous Linux
Discover OpenSSL Installation d'openssl (si non dispo sur le systeme) apt-get install openssl Check version and available cipher suites (openssl ciphers) Benchmark openssl (openssl speed) et notamment rsa Generation d'un self-signed certificate Openssl req Verification de sa signature, export au format PKCS12 Repeter l'operation avec des profils differents Exploration des certificats racines
PKI avec Linux Installing Linux Based PKI Installing a CA Issuing certificates Revoking certificates and publishing CRLs
# Creating and Using self signed Certificates First, we create a directory where we can work. $mkdir CA $cd CA $mkdir newcerts private The CA directory will contain: * Our Certificate Authority (CA) certificate. * The database of the certificates that we have signed. * The keys, requests, and certificates we generate.
The CA/newcerts directory will contain a copy of each certificate we sign. The CA/private directory will contain our CA private key. Without it, we will not be able to sign or renew any new certificates. #Our next step is to create a database for the certificates we will sign: $ echo '01' > serial $ touch index.txt #Now we are going to create a minimal configuration of our own in this directory. $ cp sample/openssl.cnf. $ vi./openssl.cnf
# Now download the configuration data for openssl and paste it in openssl.cnf file, that we created. Step 1: Creating a Root Certificate $ openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem -out cacert.pem -days 3650 -config./openssl.cnf This process produces two files as output: * A private key in private/cakey.pem. * A root CA certificate in cacert.pem In order to protect unauthorized use of our CA certificate, it can be passphrase protected.
# Displaying the contents of CA cert. $openssl x509 -in cacert.pem -noout -text # Creating a Certificate We can create any number of certificates for installation into our SSL applications.the procedure involves : *Creating a private key, *Certificate request, and then *Signing the request to generate the certificate.
Step 2: Creating a Certificate Signing Request $openssl req -new -nodes -out req.pem -config./openssl.cnf This process produces two files as output: * A private key in key.pem. The private key is necessary for SSL encryption. * A certificate signing request in req.pem When the certificate expires, the request can be used again to create a new certificate with a new expiry date. # We can view the contents by: $openssl req -in req.pem -text -verify -noout
Step 3: Signing a Certificate $openssl ca -out cert.pem -config./openssl.cnf infiles req.pem This process updates the CA database, and produces two files as output: *A certificate in CA directory : cert.pem *A copy of the certificate in newcerts directory Again, you can inspect the certificate: $openssl x509 -in cert.pem -noout -text -purpose
Step 4: Installing the Certificate and Key $cat key.pem cert.pem >key-cert.pem After this step, we have three installable components: * A private key in key.pem. * A certificate in cert.pem * A combined private key and certificate in key-cert.pem Step 5: Distributing the CA Certificate This step stops the clients from complaining about untrusted certificates. Send cacert.pem to anyone who is going to use our secure servers, so they can install it in their browsers, mail clients, etc. as a root certificate. $ openssl verify -CAfile cacert.pem cert.pem
Step 6: Renewing Certificates The certificate chain can break due to certificate expiry : * The certificates you signed with your root certificate have expired. * The root certificate itself has expired. # In the first case, there are two options. We can either generate new certificate signing requests and sign them as described above, or We can re-sign the original requests(if we kept them) # In the second case, we have to do some work. A new root CA certificate must be created & distributed, and then your existing certificates must be recreated or re-signed.
We cannot issue two certificates with the same Common Name, which is why the expired certificate must be revoked. The certificate is in the newcerts directory; we can determine its filename by browsing index.txt and searching for the Common Name (CN) on it. # Creating another Certificate $openssl req -new -nodes -out otherreq.pem -config./openssl.cnf $openssl ca -out othercert.pem -config./openssl.cnf - infiles otherreq.pem
# The filename is the index plus the extension ".pem", for example "02.pem". To revoke a certificate: $openssl ca -revoke newcerts/02.pem -config./openssl.cnf #Now that the certificate has been revoked, & we can re-sign the original request, or create and sign a new one. Step 7: Creating CRLs CRLs should be created regularly and made available to the users of our CA. CRLs can be created without having ever revoked a certificate. However, if you revoke a certificate, a new CRL should be generated immediately. $openssl ca -gencrl -crldays 31 -config./openssl.cnf -out rootca.crl