FLASH INFORMATIQUE FI



Plate-forme sécurisée d’un réseau de cartes d’identité virtuelles à l’aide de carte à puce




Tewfiq EL MALIKI


Les avancées technologiques récentes autant en matière de sécurité informatique qu’en microélectronique et surtout l’engouement pour Internet et les cartes à puce, peuvent être vecteur de modernisation dans la gestion des mots de passe et de la consultation ou échange des fichiers sensibles. Dans le contexte de la sécurité globale, la problématique de la prolifération de mots de passe, de login et de la multiplication de cartes à puce pour le même utilisateur est devenue une urgence à résoudre. En effet, pour ne pas compromettre la sécurité, l’utilisation d’un code PIN associé à une carte à puce devient une solution prometteuse. Dans cet article, nous allons montrer comment on peut mettre en oeuvre une architecture sécurisée pour l’échange et la consultation de documents sensibles grâce aux certificats numériques et à la carte à puce.

Introduction

Le concept de la sécurité globale impose une politique de sécurité généralisée englobant chaque connexion et transaction, ainsi que les accès physiques et les accès distants. Cette politique n’est pas compatible avec la gestion des mots de passe actuelle. Cette dernière pose plusieurs problématiques, entre autres la prolifération des mots de passe et des cartes à puce contrôlant des applications de différents niveaux de sécurité et associant une carte à puce à une application ce qui peut compromettre la sécurité globale. En effet, certains utilisateurs notent leurs mots de passe sur des blocs-notes, car leur gestion pose problème. En outre, la gestion des clefs de cryptage devient de plus en plus critique, sans oublier les traces laissées lors des connexions aux serveurs.

JPEG - 10.3 ko
Prolifération des cartes à puce et des mots de passe dans le cadre de sécurité globale

Solution


La recherche d’une solution globale à ce problème réside dans l’utilisation des cartes d’identités virtuelles (Certificats délivrés par des autorités de certifications)[1,2], combinée à des cartes à puce multi-applications à système d’exploitation ouvert. Pour augmenter davantage la sécurité, nous pouvons utiliser des méthodes biométriques d’authentification telles que la reconnaissance vocale [3,4] et/ou digitale [5] (la biométrie n’est pas traitée dans cet article).

Rappel sur les certficats

Un certificat peut être considéré comme une carte d’identité ou un passeport, il peut contenir presque l’équivalent des mêmes informations. Le format reconnu actuellement est le format X.509 V3 [6]. C’est un petit fichier, généré par une autorité de certification, qui contient au moins les informations suivantes :

  • le nom de l’autorité de certification qui a créé le certificat
  • le nom et le prénom de la personne
  • son organisation (École d’ingénieurs de Genève par exemple)
  • son service (Laboratoire de Télécommunications)
  • son adresse électronique
  • sa clé publique
  • les dates limites de validité du certificat
  • sa signature électronique

S’il y a perte ou usurpation du certificat, il peut à tout moment être révoqué auprès de l’autorité de certification.

Solution de carte à puce


JPEG - 4.4 ko
Principe d’utilisation d’une carte à puce multi-applications à OS ouvert

La carte évolue continuellement. De la simple télécarte aux actuelles JavaCard [7,8], elle propose de nouvelles fonctionnalités tout en conservant les qualités qui ont fait sa réputation : un objet portable, personnalisé et sécurisé. Elle est devenue une plate-forme d’exécution à part entière. De plus, les cartes multi-applicatives, c’est-à-dire capables d’abriter plusieurs applications, font leur apparition. Une carte de ce type permet le remplacement de la multitude de cartes qui encombrent notre portefeuille.
Ces applications peuvent soit être indépendantes les unes des autres, soit partager des informations et des services entre elles. L’idée est de simplifier le rôle du client en lui proposant toujours plus de services basés sur un seul objet sécurisé.
Le potentiel le plus important du domaine des cartes à puce se situe désormais dans la combinaison de différentes applications sur une seule et même carte, avec l’apparition de cartes multi-applications qui combineront les services GSM, de porte-monnaie électronique, ainsi que des applications de fidélité.

JPEG - 2.3 ko
Approche Java Card

Java Cards

Les JavaCards sont des cartes permettant d’exécuter des applets Java. Au lieu d’entrer dans la ROM le code applicatif, on y met un interpréteur Java qui exécute des applets situées dans l’EEPROM.
Ainsi la JavaCard facilite la tâche des développeurs d’applications. La programmation s’effectue avec un langage répandu Java. De plus, on peut faire évoluer la carte sans développement d’un nouveau masque, mais simplement par chargement dynamique de nouvelles applets dans l’EEPROM.
L’avantage de la carte à puce est qu’elle stocke d’une manière sécurisée le certificat et ne laisse aucune trace sur le poste de travail. En plus, la JavaCard [9] offre l’avantage d’associer une applet à chaque application et offre un mécanisme de sécurité avancé. Les commandes se font à travers les paquets APDU selon une structure bien déterminée. À chaque commande est associée une réponse.
L’utilisation d’une carte JCOP d’IBM [8] qui est une plate-forme standard nous a permis de stocker le certificat d’une manière sécurisée. Cette carte est une JavaCard avec un environnement de développement et accompagnée d’un émulateur qui vous évite de griller des cartes au début du développement de votre application. Nous avons aussi utilisé des JavaCard sans contact c’est-à-dire à lecture à distance pour éviter d’user les contacts de la carte ; elles sont très conviviales pour les utilisateurs.

JPEG - 2.3 ko
Approche Java Card

Plate-forme sécurisée

Nous allons présenter une plate-forme sécurisée basée sur des cartes d’identité virtuelles.
Le but de cette plate-forme est de garantir l’authentification et de simplifier la connexion de l’utilisateur afin d’autoriser la connexion à des applications distantes et/ou de consulter des informations sensibles.
La plate-forme est constituée :

  • d’un serveur jouant le rôle d’autorité de certification capable de générer des cartes d’identité virtuelles sous forme de certificats ;
  • d’une clé USB faisant office de lecteur de cartes à puce [10]. L’avantage des clefs USB est qu’elles peuvent intégrer une carte SIM en plus de la carte à puce. Elles peuvent sauver et exécuter en interne toutes informations sensibles ;
  • et d’un Serveur Web permettant une authentification forte.

Fonctionnement


JPEG - 3.9 ko
Schéma de fonctionnement d’une plate-forme sécurisée
  • Pour associer un certificat à un utilisateur, ce dernier doit se déplacer physiquement à l’autorité de certification. Il précisera les sites Web sécurisés auxquels il veut se connecter. Celle-ci lui remet un code personnel et un code de retrait et les sites associés à son certificat. Dès que son certificat est généré, l’utilisateur est informé (SMS, e-mail, téléphone, ...) de la possibilité de retirer son certificat.
  • Pour le retrait du certificat, l’utilisateur met sa clef [10] (respectivement, carte SIM, carte à puce) et l’application démarre automatiquement et demande le code PIN de la clef. Ainsi, une connexion sécurisée est établie vers le serveur de l’autorité de certification avec les paramètres préconfigurés. L’application retire le certificat et le sauvegarde dans la clef (carte SIM, carte à puce).
  • Afin de se connecter à un serveur Web sécurisé, l’application connaissant d’avance le certificat associé à ce serveur met le certificat dans le magasin personnel de l’utilisateur pour que le navigateur Web ou le gestionnaire de mail puisse l’utiliser.
  • Au prochain démarrage, l’utilisateur n’a besoin de se souvenir que de son code PIN de la clé (respectivement CD).
  • Ainsi, toutes les connexions vers les sites Web prédéterminés seront sécurisées et à la fin de la connexion l’application supprimera le certificat qu’elle a installé dans le magasin personnel de l’utilisateur.

Cas d’utilisation

Notre plate-forme peut être facilement utilisée dans plusieurs contextes pour sécuriser d’une manière simple les accès et les données sensibles.

Consultation sécurisée de compte bancaire

Pour que les clients d’une banque puissent accéder à des informations confidentielles sur leur compte depuis n’importe quel poste (PC personnel, public), il suffit qu’ils possèdent seulement leur clef USB et l’application.

Changement d’état civil

La commune délivre à chaque citoyen un certificat pour accéder et éventuellement changer ses données personnelles. Le certificat peut être stocké dans la même clef USB utilisée pour la banque ou toute autre clef.

Dossier médical

Le patient n’a besoin que d’un certificat pour accéder via Internet à son dossier médical depuis n’importe quel endroit. Cette démarche lui évite de se déplacer vers chaque médecin traitant pour collecter l’information afin de la montrer à d’autres médecins.

Mise en oeuvre de la plate-forme

Environnement

Il faut installer le serveur WWW sécurisé et l’autorité de certification sous Linux. Tous les logiciels mentionnés ci-dessous supportent une installation sur de nombreuses plates-formes Unix ou Windows NT.
Nous avons mis en oeuvre une application pour l’utilisateur qui lui permet d’installer d’une manière simple et conviviale les certificats depuis la carte à puce, CD Card ou Clef USB moyennant un code. Cette manière nous permet d’avoir le contrôle de l’installation du certificat dans le magasin d’Internet Explorer. Ce faisant, nous cachons à l’utilisateur la difficulté d’installation du certificat et nous limitons considérablement les manoeuvres de l’utilisateur qui sont, en général, sources de failles sécuritaires.
Les instructions ci-dessous sont prévues pour une installation sous Unix.

Les logiciels

Pour la mise en route de notre serveur Web, il faut :

  • installer Apache [13]
  • installer openSSL [14]
  • installer mod_SSL [15]

Configuration d’Apache et de mod_ssl

Pour configurer Apache avec le mode SSL, il faut modifier le fichier de configuration d’Apache httpd.conf. En effet, dans ce fichier il faut activer : le mode SSL et le port 443.
On ne pourra mettre en service Apache que lorsque le certificat du serveur aura été généré et installé.

Création de l’autorité de certification

# openssl req -new -x509 -days 1000 -keyout private/cakey.pem -out cacert.pem

Pour le navigateur Internet Explorer, il faut convertir le format du certificat en format DER par les commandes suivantes :

# openssl x509 -in cacert.pem -out cacert.der -outform DER<br>

Création d’un certificat pour le serveur WWW

# openssl genrsa -des3 -out tmp.key 1024

Cette commande génère une paire de clefs publique et privée :

# openssl rsa -in tmp.key -out serverkey.pem
# openssl req -new -days 999 -key serverkey.pem -out newreq.pem
# openssl ca -out servercert.pem -infiles ../private/newreq.pem

Copie les certificats dans le répertoire apache/conf/ssl

Création d’un certificat pour un utilisateur

La création d’un certificat X.509 pour un utilisateur s’effectue en trois temps :

  • la création d’une requête de certificat (Certificate Signing Request, CSR) qui contiendra les éléments d’identification de l’utilisateur ;
  • la signature de la requête par l’autorité de certification ;
  • le rajout du certificat du serveur dans l’environnement d’Apache. Voici dans le détail comment s’enchaînent ces opérations :
# openssl req -new -keyout newreq.pem -out newreq.pem -days 365

# openssl ca -out newcert.pem -infiles newreq.pem

# openssl pkcs12 -export -in newcert.pem -inkey newreq.pem \
-name "Prénom Nom" -clcerts -out "Prénom Nom.p12"

C’est ce certificat qui doit être retiré et installé dans la carte à puce à travers la clef USB.
Ainsi la plate-forme est fonctionnelle pour tout utilisateur possédant le certificat stocké dans sa carte à puce. Cette dernière est protégée par un code PIN et peut contenir si on le souhaite toutes les traces de connexions de l’utilisateur. Plusieurs certificats numériques peuvent être déposés dans la même carte à puce. La plate-forme réalisée permet de cacher la difficulté à utilisateur final et d’assurer une sécurité maximale.

Conclusion


La prolifération des mots de passe et de login, en plus des innombrables cartes à puce que nous possédons pose à chacun de nous un réel problème de gestion et de mémorisation. Cette problématique peut être résolue par l’utilisation d’une plate-forme sécurisée basée sur des certificats numériques faisant office de cartes d’identité virtuelles stockées dans des cartes à puce. L’avantage de cette plate-forme est qu’elle se base seulement sur des logiciels libres. Une évolution de cette plate-forme est d’utiliser de la biométrie [7,11] pour effectuer une authentification forte pour l’accès à la carte à puce. Cette solution fera l’objet d’une prochaine publication.

Références

[1] Digital Signature Standard (DSS), Federal Information Processing Standards, Publication 186, 1994 May 19, www.itl.nist.gov/fipspubs/fip186.htm
[2] R.L. Rivest, RFC 1321 : The MD5 Message-Digest Algorithm, Internet Activities Board, 1992, www.ietf.org/rfc/rfc1321.txt ?number=1321
[3] Ludovic Casset, Construction Correcte de Logiciels pour Carte à Puce, thèse de doctorat, Université de Marseille, octobre 2002
[4] X. Huang, A. Acero, and H.W. Hon, Spoken Language Processing - A Guide to Theory, Algorithm, and System Development, Prentice Hall, Upper Saddle River, New Jersey, USA, ISBN : 0-13-022616-5, 2001.
[5] www.biometrics.org/resources.htm
[6] RFC2459 : Internet X.509 Public Key Infrastructure Certificate
[7] Z. Chen, Java Card TM Technology for Smart Cards : Architecture and Programmer’s Guide, Addison Wesley, June 2000.
[8] www-306.ibm.com/software/wireless/wecos/features.html
[9] G. Barthe, G. Dufay, L. Jakubiec, and S. Melo de Sousa, Jakarta : a toolset for reasonning about Java Card, In I. Attali and T. Jensen Eds, Smart card programming and security, Proceedings of E-Smart 2001, LNCS 2140, pp 2-18, Cannes, France, 2001.
[10] www.eutron.com- clé USB combinée avec une carte à puce et une SIM card.
[11] BESACIER Laurent, PhD Thesis. erakles.imag.fr/besacier/, Un modèle Parallèle pour la Reconnaissance Automatique du Locuteur. 1998.
[12] A. Galland, D. Deville, G. Grimaud, B. Folliot. Contrôle des ressources dans les cartes à microprocesseur, 1er congrès Logiciel Temps Réel Embarqué (LTRE’02). Toulouse, France, January 2002.
[13] www.apache.org/dist
[14] www.openssl.org/source
[15] www.engelschall.com/sw//mod_ssl//distrib



Cherchez ...

- dans tous les Flash informatique
(entre 1986 et 2001: seulement sur les titres et auteurs)
- par mot-clé

Avertissement

Cette page est un article d'une publication de l'EPFL.
Le contenu et certains liens ne sont peut-être plus d'actualité.

Responsabilité

Les articles n'engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d'autres entités). Toute reproduction, même partielle, n'est autorisée qu'avec l'accord de la rédaction et des auteurs.


Archives sur clé USB

Le Flash informatique ne paraîtra plus. Le dernier numéro est daté de décembre 2013.

Taguage des articles

Depuis 2010, pour aider le lecteur, les articles sont taggués:
  •   tout public
    que vous soyiez utilisateur occasionnel du PC familial, ou bien simplement propriétaire d'un iPhone, lisez l'article marqué tout public, vous y apprendrez plein de choses qui vous permettront de mieux appréhender ces technologies qui envahissent votre quotidien
  •   public averti
    l'article parle de concepts techniques, mais à la portée de toute personne intéressée par les dessous des nouvelles technologies
  •   expert
    le sujet abordé n'intéresse que peu de lecteurs, mais ceux-là seront ravis d'approfondir un thème, d'en savoir plus sur un nouveau langage.