43
palais des congrès Paris 7, 8 et 9 février 2012

Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Embed Size (px)

DESCRIPTION

Cette session revient, dans un premier temps, sur l’architecture Cartes à puce de la plateforme Windows et ses évolutions en termes de middleware et de prise en charge d’algorithmes cryptographiques. Dans ce contexte, la session présente les principes de fonctionnement du « Smart Card Logon », les possibilités de mappage en termes de certificats X.509 v3, les extensions apportées notamment vis-à-vis d’OCSP, etc. Fort de ces éléments, la session vise à donner, dans un second temps, un retour d’expérience sur la prise en charge et l’utilisation des cartes à puce avec Windows 7. La session se conclura sur un ensemble de bonnes pratiques illustrées au travers de démonstrations (démos !) de scénarios d’utilisation.

Citation preview

Page 1: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

palais des congrès Paris

7, 8 et 9 février 2012

Page 2: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Retour d’expériences sur la prise en charge des cartes à puce dans Windows 7

Guillaume AUBERTConsultantDivision ServicesMicrosoft France

Philippe BERAUDConsultant ArchitecteDirection Technique et SécuritéMicrosoft France

Jean-Yves GRASSETConsultant ArchitecteDirection Technique et SécuritéMicrosoft France

Code Session : SEC2302

Page 3: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Evolutions introduites sur la plateforme Windows vis-à-vis des cartes à pucesRetours d’expérience avec Windows 7 sur la prise en charge des cartes à puce

Prérequis sur l’infrastructure Exigences vis-à-vis des gabarits/profils des certificats

X.509 v3 Mappage des certificats du porteur avec un compte AD Utilisation de stratégies de groupe

Objectifs et sommaire de la session

Page 4: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Apporter des réponses à des questions récurrentes En voici quelques-unes ;-)

Peut-on forcer l’utilisation de la carte à puce pour ouvrir une session ? Quid de la granularité ? Sur tous les postes de travail, pour tous les

utilisateurs ou vis-à-vis d’une population identifiée ? Est-ce que l’utilisateur à besoin de connaitre son mot de passe ?

Quid de l’accès aux applications nécessitant un mot de passe Est-ce qu’un utilisateur peut ouvrir plusieurs sessions en parallèle ?

Quid du comportement lors du retrait de la carte à puce ? Est-ce qu’une même carte à puce peut authentifier plusieurs utilisateurs ?

(c.à.d. une carte à puce non nominative) ? Est-ce que plusieurs cartes à puce peuvent authentifier un même

utilisateur (c.à.d. un compte d’administration générique) ? Est-ce qu’une carte à puce peut contenir plusieurs certificats d’ouverture

de session (c.à.d. un compte utilisateur et un compte d’administration nominatif) ?

Objectifs et sommaire de la session

Page 5: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Evolutions au niveau de la plateforme Windows

1Smart Card LogonWindows 7

Page 6: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Bus cryptographique ouvert (OCI) CNG (Crypto API Next Generation)Introduction d’une nouvelle architecture facilitant la prise en charge des cartes à puce : Windows Smart Card Framework (WSF)Remplacement de la technologie GINA (Graphical Identification and Authentication) pour notamment faciliter l’usage des cartes à pucesSupport de multiples stratégies de groupes à destination des cartes à puceRefonte des interfaces et API d’enrôlement

Evolutions au niveau de la plateforme Windows

Page 7: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Refonte du moteur de chiffrement Remplacement à long terme et progressif de CAPI 1

Permettre la mise en œuvre et l’utilisation de la crypto d’une manière plus « agile » via plug-ins

Facilité d’introduire de nouveaux algorithmes Facilité de remplacer des implémentations d’algorithmes

par de nouvelles implémentations

Crypto API Next Generation (CNG)Les algorithmes et implémentations dépendent de l’environnementSecteur public, Secteur privé, Défense, Politique, Géographie, etc.

La sureté des algorithmes et implémentations s’altère avec tempsMD5 SHA1 SHA2

RSA ECC

Page 8: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Supporte de base un sur-ensemble des algorithmes déjà offerts par les CSP Microsoft de CAPI 1

Chiffrement symétrique et asymétrique, hachage, RNG, échange de clé, signature

Support PKCS#1 v2.1 pour le wrapping des clés privées Exposant public RSA > 32 bits

Prend en charge de façon native les algorithmes Suite-B Conformité Suite-B et recommandations gouvernements pays OTAN ECDH (échange de clé), ECDSA (signature)

Courbes NIST P-256, P-384, P-521 Implémentation Microsoft Research

SHA-2 (256, 384, 512) AES (128, 192, 256)

Crypto API Next Generation (CNG)

Page 9: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Ensemble de technologies et d’investissements qui sous-tendent l'authentification forte basée sur la carte à puce

Windows Vista et ultérieur Windows Smart Card Technical Reference

Windows Smart Card Framework (WSF)

Windows Smartcar

d Framewo

rk

Qualité

Expérience utilisateur

Technologies de base

Distribution

Marque

Page 10: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

WSF – Technologie de base

L/RPC

Contexte Système (Session 0)

Gestionnaire de ressources Cartes à puces (SVCHost.exe)

Pilote Lecteur

Lecteur Carte à puce/Carte à puce

Contexte Utilisateur (Session x)

RPC

CAPI

Application Z

CNG

Base CSP SC KSP

Mini-pilote RSA

Mini-pilote RSA/ECC

Mini-pilote ECC

WinSCard (PC/SC) (WinSCard.dll)

CSP tiers

Application Y, ex. S/MIME

KSP tiers

CAPI 2

Application X

Service de propagation de certificats

Service/Politique de

retrait de carte

CAPI/WinSCard

Page 11: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Pilote USB-CCID natifSupport de Crypto Next Generation (CNG)

Introduction du Microsoft Smart Card Key Storage Provider Enrôlement de certificat ECC (courbe elliptique) sur une carte à

puce Requiert une AC ECC, ex. AD CS Windows Server 2008 R2

Signature ECDSA avec un certificat ECC sur une carte à puce Echanges de clé avec ECDH avec des clés privées sur une carte

à puce Authentification client avec TLS

Support sur la carte des fonctions de dérivation (KDF) en conformité avec FIPS 140-2

Stratégie locale Microsoft Smart Card Key Storage Provider

WSF – Technologies de base

Page 12: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Mini-pilote Carte à puce Factorisation des opérations communes à la gestion des cartes dans la

plateforme Smart Card Base CSP pour CAPI, Smart Card KSP pour CNG

Smart Card Minidriver Specification v.7 API à destination des encarteurs Série de primitives invoquées par le CSP/KSP : un seul et même mini-

pilote pour CAPI et CNG Support de RSA et ECC

CryptoAPI seulement RSA CNG RSA, ECC, ou les deux

Implémente les spécificités de la carte Invoque l’API WinSCard SCRM – Smart Card Resource Manager

Implémentation Microsoft de l’ICC Resource Manager (PC/SC Workgroup Specification 1.0)

WSF – Technologies de base

Page 13: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Programme de certification « Logo Ready » géré par le Microsoft Smart Card Competency Center (SCCC)Suite de tests de certification mini pilote Carte à puce améliorée

Smart Card Minidriver Certification Requirements Mini pilotes Carte à puces certifiés disponible sur le

catalogue Windows Update

WSF – Qualité, Distribution, Marque

Page 14: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Sélection des certificats Suppression des certificats archivés et en double Icônes pour différencier les certificats logiciels des certificats carte à puce

PIN externe Utilisation du Windows Biometric Framework (WBF) pour la collecte et le

traitement des données biométriques pour déverrouiller une carte à puce

Support BitLocker Option Carte à puce pour activer le chiffrement BitLocker Fonctionne avec les volumes de données

Ouverture de session avec carte à puce ECC (courbes elliptiques) Requiert un contrôleur de domaine Windows Server 2008 R2 Enrôlement de certificat ECC sur une carte à puce

WSF Windows 7 - Expérience utilisateur

Page 15: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Cartes à puce comme périphériques Visibles via le gestionnaire de périphériques A même de fonctionner via Windows Update

Support du Plug-and-Play (PnP) Installation du (mini-)pilote basée sur Windows Update et

WSUS/SUS Installation du (mini-)pilote avant l’ouverture de session Aucun accès requis avec des privilèges d’administration Réduction des coûts de déploiement Non interactif

WSF Windows 7 - Distribution

Page 16: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Retours d’expérience avec Windows 7

2Smart Card LogonWindows 7

Page 17: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Ré-architecture pour réduire la surface d’attaque et améliorer globalement les performances du systèmes

Credentials Providers Credential Provider Technical Reference Remplacent GINA (avec Winlogon et LogonUI)

GINA (Graphical Identification and Authentication) n’existe plus (Les Winlogon Notification Packages non plus)

Sont invoqués par LogonUI (ou CredUI) Plusieurs Credential Provider peuvent être opérationnels en même

temps Smartcard Credential Provider, Password Provider, etc.

Ouverture de session (Logon)

Contexte Système (Session 0)

LSASSWinInit

Contexte Utilisateur (Session x)

WinLogon LogonUI

Credential Provider 1

Credential Provider 1

Credential Provider 1

Interfaces Credential Provider

Page 18: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Principes de fonctionnement Permet d’assurer une authentification Kerberos via PKINIT

PKINIT est une extension du protocole Kerberos RFC 4556 Public Key Cryptography for Initial Authentication in

Kerberos (PKINIT) RFC 4557 Online Certificate Status Protocol (OCSP) Support for

Public Key Cryptography for Initial Authentication in Kerberos (PKINIT)

Constitue une authentification mutuelle Le contrôleur de domaine valide le certificat de l’utilisateur Le client valide le certificat du contrôleur de domaine

Associe le porteur de la carte à un compte AD PKINIT peut utiliser différentes méthodes pour associer le

certificat à un compte (mappage)

Ouverture de session par carte à puce

Page 19: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Ouverture de session par carte à puce

1. Insertion de la carte

2. Demande des crédentiels

9. LSALogonUser

5. Clic sur la tuile, entrée du PIN, validation

4. Affichage UI

8. Crédentiels

6. Validation7. Obtention des

crédentiels pour l’ouverture de session

WinLogon

LogonUI

Smartcard Credential Provider

Interfaces Credential Provider

WinSCard (PC/SC) (WinSCard.dll)

Lecteur Carte à puce/Carte à puce

Password Credential Provider

3. Obtention de l’information sur les crédentiels

LSASS

1

3a. Enumération des lecteurs et cartes à puces

3b. Lecture des certificats

3c. Certification/Validation des certificats

Page 20: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Cf. Public Key Cryptography for Initial Authentication (PKINIT) in Kerberos Protocol Specification

Ouverture de session par carte à puce

12. PA_PK_AS_REQ

Certificat utilisateur signé avec la clé privée

15. PA_PK_AS_REP chiffré avec la clé publique

Contenant: TGT + PAC + clé de session + condensé NTLM du mot de passe

Objet utilisateur: Nom, UPN, Appartenance aux groupes, Publication Certificat

10.11.

17. Le client Kerberos déchiffre la clé de session avec la clé privée

LSASS

2

Kerberos SSP

Gestionnaire de

ressources Cartes à puces

(SVCHost.exe)

CSP/KSP, Base

CSP/KSP

Active Directory Domain Services

KDC Kerberos(CD)

13.

CDP ou OCSP

16.

a. Utilise la clé publique du certificat pour déchiffrer l’AS_REQ

b. (Vérifie le NTAuth)

c. Mappe le compte

d. Créer un TGT

14.

18.

Page 21: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Tous les contrôleurs de domaine (CD) et les postes de travail de la forêt doivent faire confiance à l’autorité racine (AC) de la chaîne de certificat utiliséeL’AC qui a émis le certificat X.509 v3 du porteur doit être déclarée dans le magasin NTAuth d’Active Directory (AD)

Stocké dans la partition de configuration de l’Active Directory

Lors des évènements d’enrôlement automatique, les certificats d’AC contenus dans l’objet DS NTAuth sont téléchargés dans le magasin de certificats NTAuth des postes et des CD

Publication manuelle d’un certificat d’AC dans le magasin NTAuth

Prérequis sur l’infrastructure

CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=<forest>,DC=com

certutil -dspublish -f <name>.crt NTAuthCA

HKLM\Software\Microsoft\Enterprise Certificates\NTAuth\Certificates

Page 22: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Tous les DC doivent posséder un certificat X.509 v3 Nécessaire pour :

S’authentifier auprès du client Permettre les interrogations LDAPS vers AD Sécuriser la réplication d’annuaire en SMTP entre sites (rarement

utilisé) Via l’un des 3 gabarits natifs suivants avec AD CS

Domain Controller Domain Controller Authentifcation Kerberos Authentication

IGC tierce Cf.

Guidelines for Enabling Smart Card Logon with Third-Party Certification (281245)

Prérequis sur l’infrastructure

Page 23: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Prérequis sur l’infrastructure

Attribut Windows 2000 Windows Server 2003 Windows Server 2003 Windows Server 2008 (R2)

Subject CN={FQDN} Empty Empty Empty

Certificate Template DomainController Directory Email Replication Domain Controller Authentication

Kerberos Authentication

Enhanced Key Usage Client Authentication (1.3.6.1.5.5.7.3.2)

Server Authentication (1.3.6.1.5.5.7.3.1)

Directory Service Email Replication (1.3.6.1.4.1.311.21.19)

Client Authentication (1.3.6.1.5.5.7.3.2)

Server Authentication (1.3.6.1.5.5.7.3.1)

Smart Card Logon (1.3.6.1.4.1.311.20.2.2)

Client Authentication (1.3.6.1.5.5.7.3.2)

Server Authentication (1.3.6.1.5.5.7.3.1)

Smart Card Logon (1.3.6.1.4.1.311.20.2.2)

KDC Authentication (1.3.6.1.5.2.3.5)

Subject Alternative Name

Other Name:

1.3.6.1.4.1.311.25.1={GUID}

DNS Name={FQDN}

Other Name:

1.3.6.1.4.1.311.25.1={GUID}

DNS Name={FQDN}

DNS Name={FQDN-hostname}

DNS Name={FQDN-domainname}

DNS Name={NetBIOS-Domain-Name}

Page 24: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Avec le gabarit Kerberos Authentication Possibilité de forcer la validation Kerberos renforcée au niveau

des postes

Validation de KDC Authentication OID (1.3.6.1.5.2.3.5) dans l’extension EKU Nom de domaine dans le champ SAN du certificat du

contrôleur de domaine san=dns.name[&dns=dns.name] Exemple : san=dns=dc1.extranet.fabrikam.com&dns=extranet

Prérequis sur l’infrastructure

HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameterskdcvalidation

Page 25: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Un bref rappel des exigences sur Windows XP Le certificat X.509 v3 et la clé privée doivent être nécessairement

dans l’emplacement par défaut de la carte à puce (default container ou Slot 0)

Le certificat doit inclure une extension CRL Distribution Point Le certificat doit contenir les OID suivantes :

Smart Card Logon (1.3.6.1.4.1.311.20.2.2) Client Authentication (1.3.6.1.5.5.7.3.2)

L’UPN de l’utilisateur doit être présent dans le champ Subject Alternative Name (SAN) (ASN1-encoded UTF8)

Clé privée Key Echange (AT_KEYECHANGE) Cf.

Guidelines for Enabling Smart Card Logon with Third-Party Certification (281245)

Gabarit de certificat client

Page 26: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Une flexibilité accrue avec Windows Vista/Windows 7

Le certificat et la clé privée peuvent être dans n’importe quel emplacement.

L’extension CRL Distribution Point n’est plus nécessaire ! Le certificat ne doit pas nécessairement contenir l’OID

Smart Card Logon Seul l’OID est requis Client Authentication

Clé privée Key Echange (AT_KEYECHANGE) ou Signature Only (AT_SIGNATURE)

Gabarit de certificat client

Page 27: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

DEMO

Gabarit de certificat client

Smart Card LogonWindows 7

Page 28: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Un bref rappel pour Windows XP Uniquement Mappage implicite (ou mode UPN)

Fondé sur la valeur UPN présente dans l’extension Subject Alternative Name du certificat X.509 V3 du porteur

Mappage avec un compte AD

Page 29: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Une flexibilité accrue avec Windows Vista/Windows 7

Mappage implicite (ou mode UPN) Fondé sur la valeur UPN présente dans l’extension

Subject Alternative Name du certificat Mappage explicite fondé sur l’attribut AltSecID d’un

compte AD Implique le peuplement de l’Issuer <I> et du Subject

<S> dans le compte de l’utilisateur (X509:<I><S>)

Mappage avec un compte AD

Page 30: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Une flexibilité accrue avec Windows Vista/Windows 7 Mappage dynamique

Nécessite un DC Windows Server 2008 ou supérieur Intègre les deux mécanismes de mappage précédents Y ajoute 4 autres méthodes fondées sur les extensions

du certificat

Mappage avec un compte AD

Mode d’association

Attribut AltSecID

UPN -

Subject et Issuer X509:<I>DC=com,DC=fabrikam,CN=fabrikam-FABRIKAMDC1-CA<S>DC=com,DC=fabrikam,CN=Users,CN=Jane Anderson

Subject DN X509:<S>DC=com,DC=fabrikam,CN=Users,CN=Jane Anderson

Subject Key Identifier

X509:<SKI>7d012fef831ef49b1d74628da26a0c52a8fd49e4

Issuer and Serial Number

X509:<I>DC=com,DC=fabrikam,CN=fabrikam-FABRIKAMDC1-CA<SR>110000000000ee7e1561

SHA1 Hash X509:<SHA1-PUKEY>c080c821939e778ae8d9404dfbf501981aaf46bc

RFC822 name X509:<RFC822>[email protected]

Page 31: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Mappage avec un compte AD

Page 32: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Mappage dynamique de Windows Vista/Windows 7 Association un certificat à plusieurs utilisateurs

Même attribut AltSecID pour les utilisateurs concernés Utilisation nécessaire d’indices (hints)

L’utilisateur peut indiquer son nom d’utilisateur et/ou son domaine

Mappage avec un compte AD

Computer Configuration\Policies\Administrative Templates: Policy definitions\Windows Components\Smart Card

Allow user name hint

Page 33: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Nécessité dans certains cas d’utiliser une association explicite avec des certificats avec un SAN contenant l’UPN du porteur

Désactivation de l’ association implicite sur les CD

Mappage avec un compte AD

HKLM\SYSTEM\CurrentControlSet\Services\KdcUseSubjectAltName

Page 34: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

DEMO

Mappage avec un compte AD

Smart Card LogonWindows 7

Page 35: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

En guise de synthèse sur Windows 7

Mappage avec un compte AD – Avantages/inconvénients

Type de mappage

Avantage Inconvénient

Implicite o Simplicité de mise en œuvre

o Déjà mise en œuvre sous Windows XP

o Rapidité

o Nécessite le peuplement du champ SAN (UTF-8)

o Mappage mono utilisateur dans la forêt

Explicite o Alternative lorsque le champ SAN n’est pas peuplé…

o Mappage possible sur plusieurs utilisateurs

o Nécessite le peuplement de l’attribut AltSecID des utilisateurs dans AD

Dynamique o Souplesse accrue dans le mappage

o Utilisation d’indices (hint)

o Mappage possible sur plusieurs utilisateurs

o Nécessite un DC Windows 2008 ou supérieur

o Expérience utilisateur éventuellement complexifiée par l’utilisation d’indices (hint)

Page 36: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Au niveau poste de travail Stratégie de groupe

Ne modifie pas le mot de passe de l’utilisateur

Au niveau utilisateur Attribut « Smart Card Logon is required for interactive logon » du

compte

Remplace le mot de passe de l’utilisateur par une valeur aléatoire (128 bits)

Le mot de passe n’expire jamais

Forcer l’utilisation de la carte à puce

Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security OptionsInteractive Login:Smart Card Required

Page 37: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Stratégies machine exclusivement

Propagation des certificats du porteur et des certificats AC racine Via le Certificate Propagation Service (CertPropSvc)

Affichage de l’interface de déblocage de la carte à puce Smartcard Credential Provider

Prise en charge de multiples certificats sur la même carte pour le logon

Affichage des certificats sans l’EKU Smart Card Logon (1.3.6.1.4.1.311.20.2.2)

Affichage des certificats ECC (Elliptic Curve Cryptography)

Stratégies de groupe Carte à puce

Computer Configuration\Policies\Administrative Templates: Policy definitions\Windows Components\Smart Card

HKLM\SOFTWARE\Policies\Microsoft\Windows\SmartCardCredentialProviderHKLM\SOFTWARE\Policies\Microsoft\Windows\CertProp

Page 38: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Stratégies machine exclusivement

Imposer une ouverture de session par carte à puce Définir le comportement lorsque la carte à puce est

retirée Nécessite le Smart Card Policy Service (SCPolicySvc) Nettoyage possible des certificats AC racine

Stratégies de groupe Carte à puce

Computer Settings\Windows Settings\Security Settings\Local Policies\Security Options

Page 39: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

DEMO

Stratégie de groupe Cartes à puce

Smart Card LogonWindows 7

Page 40: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Contact :[email protected] www.gemalto.com/enterprise

MERCI !

Page 41: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Ouverture de session par carte à puce sous Windows 7

Également pour les sessions Remote Desktop Services (RDS)

Les nouveaux modes de mappage offrent la flexibilité nécessaire pour s’adapter dans la majorité des cas aux gabarits/profils des certificats X.509 déjà déployés :)

En guise de conclusion

Page 43: Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7

Microsoft France39, quai du président Roosevelt

92130 Issy-Les-Moulineaux

www.microsoft.com/france