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.
2. Retour d’expériences sur la prise en
charge des cartes à puce dans Windows
7
Code Session : SEC2302
Guillaume AUBERT Philippe BERAUD Jean-Yves GRASSET
Consultant Consultant Architecte Consultant Architecte
Division Services Direction Technique et Sécurité Direction Technique et Sécurité
Microsoft France Microsoft France Microsoft France
3. Objectifs et sommaire de la session
Evolutions introduites sur la plateforme Windows vis-à-vis
des cartes à puces
Retours 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
4. Objectifs et sommaire de la session
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) ?
6. Evolutions au niveau de la plateforme
Windows
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 à
puces
Support de multiples stratégies de groupes à destination des
cartes à puce
7. Crypto API Next Generation (CNG)
Les algorithmes et implémentations dépendent de l’environnement
Secteur public, Secteur privé, Défense, Politique, Géographie, etc.
La sureté des algorithmes et implémentations s’altère avec temps
MD5 SHA1 SHA2
RSA ECC
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
8. Crypto API Next Generation (CNG)
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)
9. Windows Smart Card Framework
(WSF)
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
Technologies
de base
Expérience
Distribution
utilisateur
Windows
Smartcard
Qualité Marque
Framewor
k
11. WSF – Technologies de base
Pilote USB-CCID natif
Support 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
12. WSF – Technologies de base
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
13. WSF – Qualité, Distribution, Marque
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
14. WSF Windows 7 - Expérience
utilisateur des certificats
Sélection
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)
15. WSF Windows 7 - Distribution
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
17. Ouverture de session (Logon)
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.
18. Ouverture de session par carte à puce
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)
20. Ouverture de session par carte à puce
Cf. Public Key Cryptography for Initial Authentication (PKINIT) in
Kerberos Protocol Specification
21. Prérequis sur l’infrastructure
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ée
L’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
certutil -dspublish -f <name>.crt NTAuthCA
22. Prérequis sur l’infrastructure
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)
23. 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 Directory Service Email Replication Client Authentication Client Authentication
(1.3.6.1.5.5.7.3.2) (1.3.6.1.4.1.311.21.19) (1.3.6.1.5.5.7.3.2) (1.3.6.1.5.5.7.3.2)
Server Authentication Server Authentication Server Authentication
(1.3.6.1.5.5.7.3.1) (1.3.6.1.5.5.7.3.1) (1.3.6.1.5.5.7.3.1)
Smart Card Logon Smart Card Logon
(1.3.6.1.4.1.311.20.2.2) (1.3.6.1.4.1.311.20.2.2)
KDC Authentication
(1.3.6.1.5.2.3.5)
Subject Alternative Other Name: Other Name: DNS Name={FQDN-hostname} DNS Name={FQDN-
Name domainname}
1.3.6.1.4.1.311.25.1={GUID} 1.3.6.1.4.1.311.25.1={GUID}
DNS Name={NetBIOS-
DNS Name={FQDN} DNS Name={FQDN}
Domain-Name}
24. Prérequis sur l’infrastructure
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
25. Gabarit de certificat client
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)
26. Gabarit de certificat client
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)
28. Mappage avec un compte AD
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
29. Mappage avec un compte AD
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>)
30. Mappage avec un compte AD
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
Mode certificat AltSecID
Attribut
d’association
32. Mappage avec un compte AD
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
Computer ConfigurationPoliciesAdministrative Templates: Policy definitionsWindows ComponentsSmart
Card
Allow user name hint
33. Mappage avec un compte AD
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
HKLMSYSTEMCurrentControlSetServicesKdc
UseSubjectAltName
35. Mappage avec un compte AD –
Avantages/inconvénients
En guise de synthèse sur Windows 7
Type de mappage Avantage Inconvénient
36. Forcer l’utilisation de la carte à puce
Au niveau poste de travail
Stratégie de groupe
Computer ConfigurationPoliciesWindows SettingsSecurity SettingsLocal PoliciesSecurity Options
Interactive Login:Smart Card Required
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)
37. Stratégies de groupe Carte à puce
Stratégies machine exclusivement
Computer ConfigurationPoliciesAdministrative Templates: Policy definitionsWindows ComponentsSmart Card
HKLMSOFTWAREPoliciesMicrosoftWindowsSmartCardCredentialProvider
HKLMSOFTWAREPoliciesMicrosoftWindowsCertProp
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)
38. Stratégies de groupe Carte à puce
Stratégies machine exclusivement
Computer SettingsWindows SettingsSecurity SettingsLocal PoliciesSecurity Options
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
41. En guise de conclusion
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 :)
42. Pour aller plus loin
Windows Vista Smart Card Infrastructure
Windows Smart Card Technical Reference
Credential Provider Technical Reference
Certificate Revocation and Status Checking
Site TechNet AD CS
Blog Windows PKI
Le magasin NTAuth est un objet de l’annuaire Active Directory qui est localisé dans le conteneur Configuration de la forêt.Distribution automatique des empreintes du certificat sur tous les membres du domaine.
A partir de Windows 2003 server :différentiation de l’utilisation sur 2 gabarits de certificats,la fonctionnalité de base pour l’ouverture de carte à puce n’est pas affectée mais les nouveaux gabarits offrent une meilleure flexibilité ou granularité,le GUID n’est plus nécessaire.
Le certificat et la clé privée peuvent être dans n’importe quel emplacement.Le certificat ne doit pas nécessairement contenir l’OID Smart Card Logon uniquement Client Authentication.Clé privée Key Echange (AT_KEYECHANGE) ou Signature Only (AT_SIGNATURE).L’extension CRL Distribution Point n’est plus nécessaire.
Le certificat et la clé privée peuvent être dans n’importe quel emplacement.Le certificat ne doit pas nécessairement contenir l’OID Smart Card Logon uniquement Client Authentication.Clé privée Key Echange (AT_KEYECHANGE) ou Signature Only (AT_SIGNATURE).L’extension CRL Distribution Point n’est plus nécessaire.
If the certificate contains an SAN/UPN extension, KDC will use that to map the client. If the certificate contains an SAN/UPN extension and no user object is found based on the UPN, the authentication fails.If there is no UPN in the certificate, the KDC constructs the string "X509:<I><S>" (where "I" is the value from the Issuer field and "S" is the value from the Subject field in the certificate) to look up. If there is no UPN in the certificate and no user object is located in the previous steps, the client account is looked up based on the distinguished name (DN) of the subject; the KDC constructs the "X509:<S>" string (where "S" is the value from the Subject field in the certificate) to look up. If there is no UPN in the certificate and no user object is located in the previous steps, the KDC uses the subject and serial number to construct the "X509:<S><SR>" string (where "S" is the subject name and "SR" is the serial number from the certificate) to look up. If there is no UPN in the certificate and no user object is located, and the client certificate contains a subject key identifier, the KDC constructs the "X509:<SKI>" string (where "SKI" is the subject key identifier) to look up. If there is no UPN in the certificate and no user object is located in the previous steps, the KDC constructs the "X509:<SHA1-PUKEY>" string to look up. If there is no UPN in the certificate and no user object is located in the previous steps, the client account is looked up based on the SAN/822name, and the KDC constructs the "X509:<RFC822>" string to look up.