SlideShare une entreprise Scribd logo
1  sur  55
Télécharger pour lire hors ligne
République Algérienne Démocratique et Populaire
              Ministère de l’Enseignement Supérieur et de la Recherche Scientifique
               Université des Sciences et de la Technologie Houari Boumediene

                   Faculté d’Electronique et d’Informatique



                     Mémoire de Master
                     Domaine Mathématiques et Informatique


                            Filière Informatique


                                    Spécialité
                    Réseaux et Systèmes Distribués (RSD)


                                      Thème



                   LA CARTE D’IDENTITÉ
                    ÉLECTRONIQUE (eID)


Proposé par :                                             Présenté par : MM.
Dr. A.BELKHIR                                             OUADJAOUT Lamine
                                                          ZERGOUG Salim

Devant le jury :

                    M. A.AISSANI                      Président
                    Mme. N.HADDOUCHE                  Examinateur
                    Mlle. L.ALIOUANE                  Examinateur




                                                        Projet n°. 55/10/RSD
Remerciements



 Nous tenons à remercier nos familles respectives (nos chers parents,
frères, cousins, etc.) pour leurs soutien, conseils et aide indéfectible, ainsi
que tous nos amis (Mohamed, Brahim, Rachid, Abdelkader, Zaki, Halim,
Kamel, Sofiane, Meziane, Nabil et beaucoup d'autres) avec qui nous
avons partagé le bon et le moins bon, les hauts et les bas de notre cursus
universitaire.


 Nous exprimons notre reconnaissance aux professeurs, et en premier
lieu à notre promoteur Dr. BELKHIR, qui nous ont apporté beaucoup de
connaissances dans ce vaste domaine des « Réseaux et Système
Distribués».


 Nous voulons également exprimer notre profonde gratitude à Mr.
ZERROUR AKLI, Mr. Ali ABDI, Mr. Mehdi NEDDAF, Mr.
BENSALEH Mustapha, Mr. BENHAMOUDA Hocine, ainsi qu’a tous
ceux qui nous ont soutenus de prés ou de loin.
SOMMAIRE


Introduction générale -------------------------------------------------------------------------------------------- 1


CHAPITRE I – Etat de l’art ---------------------------------------------------------------------------------- 2

 I.1 - Introduction ----------------------------------------------------------------------------------------------------- 3
 I.2 – Carte d’identité électronique en Algérie ------------------------------------------------------------------ 3
 I.3 – Norme de cartes d’identités électroniques---------------------------------------------------------------- 3
 I.4 – Outils d’une carte d’identité électronique ---------------------------------------------------------------- 6
 I.5 - Conclusion ---------------------------------------------------------------------------------------------------- 11


CHAPITRE II – Signature électronique---------------------------------------------------------------- 12

  II.1 – Rappels et définitions ------------------------------------------------------------------------------------ 13
  II.2 – Quelque normes et standards --------------------------------------------------------------------------- 15
  II.3 – Principe de fonctionnement de la signature électronique ----------------------------------------- 17
  II.4 – Cadre technologique et organisationnel de la signature électronique --------------------------- 18
  II.5 – Types de signatures --------------------------------------------------------------------------------------- 26
  II.6 – Cadre juridique de la signature électronique en Algérie ------------------------------------------- 28
  II.7 - Conclusion -------------------------------------------------------------------------------------------------- 29


CHAPITRE III – Implémentation d’une carte d’identité électronique -------------------- 30

  III.1 – Introduction ----------------------------------------------------------------------------------------------- 31
  III.2 – Création d’une autorité de certification -------------------------------------------------------------- 31
  III.3 – Installation des SDK------------------------------------------------------------------------------------- 36
  III.4 – Réalisation d’une application DZeID ---------------------------------------------------------------- 37
  III.5 – Introduction des lettres arabes ------------------------------------------------------------------------- 42
  III.6 - Proposition d’un modèle de carte d’identité électronique Algérienne-------------------------- 48
  III.7 - Conclusion ------------------------------------------------------------------------------------------------- 48



Conclusion générale -------------------------------------------------------------------------------------------- 49


Références bibliographiques -------------------------------------------------------------------------------- 50
Introduction générale




  La communication électronique est devenue très importante ces
dernières années. D’où le besoin de pouvoir identifier les personnes via
un système électronique. La carte d’identité électronique: eID contient
une puce électronique qui protège les données personnelles de manière
optimale.

   L’eID nous permet de régler de nombreuses questions administratives
depuis votre ordinateur. En outre, l’eID nous offre une foule d’autres
possibilités: envoyer des documents électroniques et des e-mails
recommandés, sécuriser les séances de chat des enfants, accéder au parc
à conteneurs ou même vous identifier sur le réseau informatique de votre
entreprise.

  Pour l’implémentation d’une carte identité électronique on passe par
plusieurs étapes:
         Création des autorité de certifications
         Installation du SDK
         Réalisation d'une application DZeID
         Introduction des lettres arabes

  Nous avons organisé notre travail de la manière suivante:

    1er Chapitre: Etat de l’art.
    2ème Chapitre: Signature électronique.
    3ème Chapitre: Implémentation d’une carte d’identité électronique.




                                  1
er
1 Chapitre


Etat de l’art
1erChapitre                                                                            Etat de l’art




    1. Introduction:
 La carte d'identité électronique, appelée aussi «electronic IDentity» [eID 08], est un nouveau
type de carte d'identité qui a vu le jour dans de nombreux pays, elle permet à l'utilisateur de
posséder un moyen sûr pour accéder à de nombreuses applications d’institutions publiques ou
privées et d’entreprises. L’eID est constituée d’une carte à puce contenant toutes les
informations personnelles imprimées (sur la carte) tel que ; la photo du propriétaire, nom et
prénom, sexe, nationalité, date et lieu de naissance, signature, période de validité, etc... .Mais
aussi des informations électronique (se trouvant dans la puce) tel que : l’adresse, le statut
spécial (handicapé mental, handicapé physique, etc.), un algorithme de type RSA (de 1024-
bit) pour l'authentification, une infrastructure à clés publiques (Public key infrastructure, PKI)
du type X.509, une photo sous norme [JPEG 99].




                         figure1.1: exemple d'une eID au royaume belge

    2. La carte d'identité électronique en Algérie:
Dans le cadre des efforts de l'état algérien de mettre en place un gouvernement électronique,
l'Algérie tente la numérisation de la carte d’identité nationale au cours de l’année 2011, on
espère mettre en place cette CNIBE (Carte Nationale d’Identité Biométrique et Electronique)
grâce à la complexité du système utilisé sous des codes de sécurité difficiles à décrypter.
L’autre nouveauté de ce système inédit, réside dans le fait que désormais, le citoyen n’aura à
fournir qu’un seul dossier dans sa vie. Ainsi la création d’un registre national de l’état civil
avec l’institution d’un numéro d’identification national unique NIN (National Identity
Number) pour chaque citoyen [MICL 09].

    3. Normes de cartes d'identité électronique:
Les cartes doivent être conformes a plusieurs standards réunis sous la norme [ISO/IEC 7816]

ISO/IEC 7816
L’ISO/IEC 7816 fait partie d'une série de normes qui décrivent les paramètres des cartes
d'identification, tels qu'ils sont définis dans l'ISO/IEC 7810, et l'utilisation de ces cartes pour
les échanges internationaux. La présente partie de l'ISO/IEC 7816 spécifie directement ou par
référence les éléments de données (DE), qui comprennent les DE composites, utilisés dans
l'échange intersectoriel et basés sur les cartes à circuits intégrés (ICC). Elle identifie les
caractéristiques ci-dessous de chaque DE :


                                                3
1erChapitre                                                                           Etat de l’art


    •   Identificateur ;
    •   Nom ;
    •   Description et référence ISO ;
    •   Format et codage (s'il n'est pas disponible dans d'autres normes ISO ou dans les autres
        parties de l'ISO/IEC 7816).
La disposition de chaque DE est décrite telle qu'elle apparaît à l'interface entre le dispositif
d'interface (IFD) et le ICC. La présente partie de l'ISO/IEC 7816 définit les moyens
d'extraction des DE dans la carte (octets historiques, remise à zéro, commandes à exécuter et
commandes définies dans cette norme internationale). La présente partie de l'ISO/IEC 7816
donne la définition des DE sans considération des restrictions faites sur l'utilisation des DE. Il
est prévu d'incorporer de nouveaux objets de données intersectoriels dans la présente norme,
de nombreuses révisions, rectificatifs techniques et amendements ont étés apportées à ce
standard :

        ISO/IEC 7816-6:2004                   ISO/IEC 7816-6:2004/Cor 1:2006
        ISO/IEC 7816-1:1998                   ISO/IEC 7816-2:2007
        ISO/IEC 7816-3:2006                   ISO/IEC 7816-4:2005
        ISO/IEC 7816-5:2004                   ISO/IEC 7816-7:1999
        ISO/IEC 7816-8:2004                   ISO/IEC 7816-9:2004
        ISO/IEC 7816-10:1999                  ISO/IEC 7816-11:2004
        ISO/IEC 7816-12:2005                  ISO/IEC 7816-13:2007
        ISO/IEC 7816-15:2004

L'ISO/IEC 7816 comprend des parties, présentées sous le titre général Cartes
d’identification— Cartes à circuit(s) intégré(s) à contacts, voici ces parties:
        Partie 1: Caractéristiques physiques; Cette norme définit les caractéristiques
        physiques des cartes à puce : la géométrie, la résistance, les contacts, etc.

        Partie 2: Dimensions et emplacements des contacts; Cette norme spécifie le
        dimensionnement physique (extérieur) des contacts de la puce.

        Partie 3: Signaux électroniques et protocoles de transmission;
        Cette norme définit :
          - les protocoles de transmission
          - la sélection d’un type de protocole,
          - la réponse à un reset qui correspond aux données envoyées par la carte
               immédiatement après la mise sous tension,
          - les signaux électriques, tels que le voltage, la fréquence d’horloge et la vitesse
               de communication.

        Partie 4: Commandes intersectorielles pour les échanges; Cette norme vise à assurer
        l’interopérabilité des échanges. Elle définit les messages APDU (Application Protocol
        Data Units), par lesquels les cartes à puce communiquent avec le lecteur. Les
        échanges s’effectuent en mode client-serveur, le terminal ayant toujours l’initiative de
        communication.

        Partie 5: Système de numérotation et procédure d’enregistrement d’identificateurs
        d’applications;
        Définit le système de numérotation et les procédures d’enregistrement et d’attribution


                                                4
1erChapitre                                                                            Etat de l’art


         des identifiants des applications. Un unique identifiant est associé à chaque
         application et à certains fichiers sur la carte. Ils sont représentés par des tableaux
         d’octets de taille allant de cinq à seize.

         Partie 6: Éléments de données intersectoriels; Cette norme spécifie des éléments de
         données inter-industrie pour les échanges, tels que le numéro du porteur de carte, sa
         photo, sa langue, la date d’expiration, etc.

         Partie 7: Commandes intersectorielles pour langage d’interrogation de carte
         structurée; Cette norme définit les commandes de langage d’interrogation de carte
         structurée via un langage spécifique SCQL (Structured Card Query Language).

         Partie 8: Commandes intersectorielles de sécurité; il spécifie les commandes utilisés
         pour les opérations cryptographiques. Ces commandes sont complémentaires et
         basées sur des commandes répertoriées dans la norme 4.

         Partie 10: Signaux électroniques et réponse à la mise à zéro des cartes synchrones;
         Cette partie spécifie les structures de signalisation, et la structure de la réponse entre
         une carte à circuit intégré (s) avec transmission synchrone et un dispositif d'interface
         tel qu'un terminal.

         Partie 11: Vérification personnelle par méthodes biométriques; il spécifie l'utilisation
         des commandes interindustrielles et des objets de données personnelles liées à la
         vérification par des méthodes biométriques dans les cartes à circuits intégrés. Les
         commandes utilisées sont définies dans la norme ISO / CEI 7816-4. Cette partie est
         utilise pour des usages de vérification et de sécurité

         Partie 12: Cartes à contacts - Interface électrique USB et procédures de
         fonctionnement; précise les conditions de fonctionnement d'une carte à circuit intégré,
         ce type de carte est nommé USB-CPI, elle définie :
             Les conditions électriques afin d'exploiter l'interface USB-CPI.
             Les descripteurs USB standard et le descripteur de la classe USB spécifiques;
             Le transfert de données entre l'hôte
             Les transferts de contrôle permettent l'utilisation de deux protocoles différents
             Les transferts optionnels d'interruption pour indiquer des événements asynchrones
             L'état et les conditions d'erreur

         Partie 13: Commandes pour la gestion d'application dans un environnement de
         plusieurs applications;

         Partie 15: Application des informations cryptographiques; Cette partie spécifie les
         informations de chiffrement présentées sous format ASN.1 (Abstract Syntax Notation
         One) [ISO/IEC et ITU-T 84], elle supporte les fonctionnalités suivantes:
     •   le stockage de plusieurs instances d'information de cryptographie dans une carte;
     •   l'utilisation des informations cryptographiques;
     •   récupération des informations de chiffrement;
     •   différents mécanismes d'authentification et plusieurs algorithmes de chiffrement.




                                                 5
1erChapitre                                                                           Etat de l’art



    4. Outils d’une carte d'identité électronique
L’utilisation d'une carte d'identité électronique nécessite un certain nombre d'outils :
    4.1. Les lecteurs de carte:
Une carte à puce: faite en matière plastique, ou en papier ou en carton, de quelques
centimètres de côté et moins d'un millimètre d'épaisseur, portant au moins un circuit intégré
capable de contenir de l'information. Le circuit intégré (la puce) peut contenir un
microprocesseur capable de traiter cette information, ou être limité à des circuits de mémoire
non volatile et, éventuellement, un composant de sécurité (carte mémoire). Les cartes à puce
fournissent des moyens d'effectuer des transactions d'une manière flexible, bloquée, standard
avec une intervention humaine minimale.




        Figure1.2: Carte à microcalculateur CP8 (Première carte à puce commercialisée)

    4.2. Les lecteurs de carte:
Un lecteur de carte est un petit appareil spécial permettant de relier la carte au PC. Le
principal objectif de ce lecteur de carte est d’établir un canal de communication entre les
programmes sur l’ordinateur et la puce de la carte d’identité, la plupart des nouveaux
ordinateurs portables et des nouveaux claviers ont un lecteur de carte à puce intégré
cependant il existe plusieurs types de cartes:
     Les lecteurs de cartes à puce simples: ils permettent
de lire les informations contenues sur la puce de la carte
d'identité électronique en introduisant le code PIN par le biais
d'un clavier de PC.


     Les lecteurs de cartes à puce avec PIN-pad: Améliorent
le niveau de sécurité en introduisant un code PIN encodé sur l'appareil
ne sort pas du lecteur et peut dès lors difficilement être intercepté par un
hacker. Deux modèles existent, dont un permet de lire uniquement les cartes
d’identité électroniques.


     lecteur de cartes pour ordinateur portable: Ce type de lecteurs
s’insèrent dans une fente PC-CARD (ou PCMCIA pour Personal
Computer Memory Card International Association), ils sont donc



                                                6
1erChapitre                                                                             Etat de l’art


totalement incorporés dans l’ordinateur.
Voici un tableau comparatif entre type de lecteurs:
 Type de lecteur de                   Avantage                                Inconvenient
      cartes
Lecteur simples         -   Compatible avec presque toutes        -   Le niveau de sécurité; code PIN
                            les applications                          peut être intercepte car il doit
                                                                      être entré via le clavier de PC
                        -   Le prix: Bon marché
Lecteur avec PIN-       -   Le niveau de sécurité: plus élevé     -   Certaines applications (entre
pad                         qu'un lecteur simple car le code          autres Netscape et Mozilla) ne
                            PIN ne sort pas de lecteur                sont pas compatibles à 100%
                                                                  -   La plupart du temps uniquement
                        -   Facilité d’utilisation                    sous Windows
                                                                  -   Certains modèles exigent des
                        -   Facilité d’utilisation                    batteries et/ou une alimentation
                                                                      électrique séparée
Lecteur pour            -  Compatible avec presque toutes      - Le prix: Un peu plus cher qu'un
ordinateur portable        les applications                        lecteur de cartes simple.
                       - Certaines marques proposent
                           également des pilotes pour Linux
              Tab1.1: Tableau comparatif des différents types de lecteurs de cartes


Les informations de la carte d'identité électronique sont privées, on doit garder leur
confidentialité à tout prix, et pour cela on emploie la cryptographie afin de chiffrer ces
informations et les rendre incompréhensibles.


    4.3. La cryptographie:
Le mot cryptographie vient du grec cryptos (signifiant "caché") et graphein (pour "écrire"), la
cryptographie est l’art et la science qui vise à garder un secret visant à protéger un échange
d’informations par un codage du message.
Le général spartiate [BER] était le premier à utiliser la cryptographie depuis 400 ans avant
notre ère, en se servant d'un bâton (appelé scytale).
Le Romain Jules César employait une substitution simple de lettres pour communiquer avec
ses généraux.
Pour crypter (chiffrer, coder) un message on doit utiliser un algorithme de cryptographie qui
contient quatre entités ; le plaintext ou texte en clair, la clé de chiffrage (ces deux entités sont
utilise pour chiffrer le message), le cyphertext ou texte chiffre et la clé de déchiffrage
La carte d'identité électronique utilise un algorithme de cryptage asymétrique, plus
précisément l'algorithme RSA (Rivest Shamir Adleman).
RSA est considère comme un algorithme de cryptage probablement assez sûr puisque il y a
très certainement plus de risques liés à une mauvaise utilisation qu'à une attaque mais il faut
toujours garder en esprit que le risque zéro en sécurité n'existe pas, comme pour la NSA
(Naional Security Agency) le décryptage du RSA n'est qu'un jeu d'enfant!


                                                 7
1erChapitre                                                                            Etat de l’art




    4.4. Signature électronique:
La signature électronique est un autre outil utilisé par les cartes d'identités électronique afin
d'assurer l’authenticité et l’intégrité indépendamment de la cryptographie, la signature
électronique fournit un nombre à partir d'un document en entrée et ce nombre doit être
unique. S’il est impossible de garantir l’unicité de la signature, il est néanmoins possible de
diminuer fortement la possibilité que deux documents produisent le même résultat, comme
c’est le cas dans une fonction de hachage classique.
Le titulaire d'une carte d'identité électronique dispose d'une signature électronique unique qui
a la même valeur qu'une signature manuscrite.
La signature électronique sera traitée en détail dans le chapitre 2.


    4.5. Certificat électronique:
Un certificat électronique est un autre outil de sécurité qui vise la validation des clés
publiques puisque rien ne garantit que la clé publique est bien celle de l'utilisateur à qui elle
est associée. Une autorité de certification est chargée de délivrer les certificats et de leurs
assigner une période de validité (date d'expiration), les eID utilisent un certificat
d'authentification et un certificat de signature .Les certificats sont des petits fichiers composés
de deux parties :
 Une partie contenant les informations et une deuxième partie contenant la signature de
l'autorité de certification.
Les certificats sont normalisés par le standard X.509 de l'Union Internationale des
Télécommunications [ITU 88], qui définit les informations contenues dans cette dernière
comme suit :
     •   Version
     •   Numéro de série
     •   Nom du signataire du certificat
     •   Validité (dates limite)
     •   Nom du propriétaire du certificat
     •   Informations sur la clé publique
     •   Algorithme de chiffrement utilisé
     •   Clé publique du propriétaire
     •   Identifiant unique du signataire (optionnel, à partir de X.509 version 2)
     •   Identifiant unique du détenteur du certificat (optionnel, à partir de X.509 version 2)
     •   Extensions (optionnel, à partir de X.509 version 3)

Ces informations seront validées (signées) par une autorité de certification, par application
d’une fonction de hachage pour ces informations. Le condensé résultant est chiffré à l'aide de
la clé privé de l'autorité de certification. Le certificat peut être préalablement signée par une
autorité de niveau supérieur.
Donc pour communiquer avec une personne, il suffit qu'il possède le certificat du
destinataire. Ce certificat contient le nom du récepteur ainsi que sa clé publique et est signé
par l'autorité de certification et par la suite on peut vérifier la validité du message en
appliquant d'une part la fonction de hachage aux informations contenues dans le certificat, en
déchiffrant d'autre part la signature de l'autorité de certification avec la clé publique de cette

                                                 8
1erChapitre                                                                           Etat de l’art


dernière et en comparant ces deux résultats.


Voici un une image qui illustre la signature du certificat :




                       figure1.3: Création et signature d’un certificat


    4.6. Autorité de certification PKI (Public Key Infrastructure) :
Comme on l'avait cité précédemment une autorité de certification PKI vise à signer et valider
un certificat numérique. Une autorité de certification PKI est composée de plusieurs entités,
ces entités sont physiquement représentées par des serveurs WEB, par exemple sur UNIX ils
sont de type Apache, sous Windows ils utilisent IIS. ces serveurs contiennent différents
scripts CGI (Common Gateway Interface), qui permettent d’administrer, de gérer et
d’archiver les certificats. Dans le cas de UNIX la génération proprement dite des certificats
est assurée par l’OpenSSL, qui offre la puissance de calcul cryptographique de la PKI.
    Architecture de la PKI
L'architecture PKI admet plusieurs entités qui sont:


a) Un Serveur Public :
   La connexion à ce serveur est sécurisée via l'utilisation du protocole SSL (Socket Secure
   layer) afin de garder les échanges de données confidentiels. Ce serveur est considéré
   comme l'interface entre l'architecture PKI et le client, par la suite elle lui permet la partie
   de transmettre des requêtes de certificats, mais également de recevoir toutes les
   informations fournies par la PKI c’est-à-dire :
 • Recevoir un certificat de l’autorité de certification
 • Recevoir un certificat numérique sollicité
 • Recevoir une liste de révocation CRL (Certificate revocation List)
 • Consulter des certificats numériques de tous les clients

b) Un Serveur RA (Registration Authority) :
Ce serveur utilise également SSL lors des échanges, et seulement un administrateur aura

                                                9
1erChapitre                                                                           Etat de l’art


l'accès à ce serveur RA après avoir être authentifié. Le serveur RA permet de recevoir les
demandes de certificats CSR (Certificate Signing Request) émises par les clients. Ces
requêtes seront émises à l’administrateur de la CA (Certificate Authority) en suivant un
format standardisé PCKS#10, ce serveur permet aussi de publier les certificats signés par la
CA. La publication est faite de deux façons :
• Soit publier des certificats sur le serveur public.
• Ou bien publier des certificats dans un annuaire LDAP (Lightweight Directory Access
Protocol)
c) Serveur CA (Certificate Authority) :
Ce serveur est considéré comme une autorité de confiance, c’est lui le responsable de la
création des certificats pour les utilisateurs, ces certificats contiennent entre autre le nom du
demandeur Distinguished Name (DN), sa clé publique et une date d’expiration ainsi que la
fonction du certificat. Enfin le certificat sera signée par la clé privée du CA, cette clé qui est
considéré comme vital pour la sécurité de toute l'architecture PKI d'ou la nécessité d'isoler le
serveur CA.
        Service de révocation CRL (Certificate revocation List) :
Un certificat numérique doit pouvoir être révoquée si un changement d’identité du
propriétaire a lieu, ou si la clé privée de l’utilisateur est perdue ou divulguée on émet une
demande de révocation et vérifier son authenticité. L’auteur de la demande est-il bien la
personne titulaire de la clé publique? Une fois la vérification terminée, la liste des certificats
révoqués est publiée. La révocation est un élément du service de publication.
L’accès aux listes de révocation peut être spécifié dans le certificat sous forme d’une URL.
Les clients peuvent alors téléchargés la liste de révocation CRL. Mais étant donné que cette
liste est générée périodiquement par la CA, son utilisation n’est pas optimale car les
utilisateurs doivent mettre à jour constamment cette liste. De plus, si une CA met à jour sa
liste CRL et révoque un certificat juste après, les utilisateurs ne verront cette modification
qu’après la prochaine mise à jour de la liste, cette à dire le lendemain dans certain cas, cette
politique n’est pas sans risque en terme de sécurité.

Pour contrer cet inconvénient les utilisateurs doivent disposer de la liste de révocation en
temps réel, en vérifiant ces informations directement dans la base de données de la CA, cette
vérification est possible par l’intermédiaire d’un élément OCSP (Online Certificate Status
Protocol) [MYE 99] qui se chargera d’interroger la CA sur la validité d’un certificat.
De ce fait, la liste de révocation de la PKI est le seul élément devant disposer d’un service
d’annuaire obligatoirement connecté à Internet.

        Service de publication :
Le service de publication permet l’accès des utilisateurs aux certificats des correspondants
afin d’en extraire la clé publique.

L’utilisation du service de publication n’est pas requise pour toutes les applications de
chiffrement asymétrique. En particulier, l’accès à un serveur HTTPS dans le but de chiffrer
les échanges ou d’authentifier le serveur ne requiert pas un accès au service de publication
car le serveur HTTPS communique lui- même son certificat lors de la connexion SSL. De
même, il est possible d’échanger des messages S/MIME (Secure / Multipurpose Internet Mail
Extensions) sans utiliser le service de publication (l’envoi d’un message signé permet de faire


                                                10
1erChapitre                                                                        Etat de l’art


parvenir automatiquement au correspondant son certificat). Toutefois, l’utilisation du service
de publication est un élément déterminant dès que le nombre d’utilisateurs augmente.


L’identité de la personne certifiée est définie dans un Distinguished Name, elle constitue donc
une clé d’accès dans l’annuaire LDAP. Par ailleurs LDAP est la seule API (Application
Programming Interface) normalisée et donc utilisable dans le contexte hétérogène d’Internet.




                           figure1.4: Fonctionnement d'une PKI



    5. Conclusion:
Les outils de la sécurité informatique (cryptographie, signature électronique, etc.…) jouent un
rôle indispensable dans le fonctionnement des cartes d'identité électronique, qui atteignent un
niveau d'authenticité et de confidentialité sans précédent grâce à ces outils, ce qui rend ce
type de cartes d'identité un moyen sûre d'identification qui peut être utilisé aux différentes
transactions quotidienne du citoyen algérien sans avoir peur d'être falsifiées.



                                              11
ème
    2         Chapitre


Signature électronique
2ème Chapitre                                                                     Signature électronique




1. Rappels / Définition:
 L’ISO (International Organization for Standardization) [ISO 89] définit la signature numérique
comme étant des « données ajoutées à une unité de données ou une sorte de transformation
cryptographique d’une unité de données permettant de prouver la source et l’intégrité de l’unité de
données et la protégeant contre la contrefaçon ». Cette définition recouvre deux principes
fondamentaux qui sont l’authentification et l’intégrité des données. Donc la signature électronique
est un moyen de sécurité qui permet de valider un écrit créé et émis sous forme électronique, elle
peut être considérée comme l'équivalent d’une signature manuscrite seulement appliquée pour des
documents numériques, elle permet :
    • D’authentifier les échanges de données, de garantir la source (émetteur) des documents de
        façon fiable.
    • D'assurer l’intégrité des données reçus par le biais de vérifier que les informations n'ont pas
        été altérées.
    • De garantir le non répudiation. Puisque un signataire ne peut nier être l’auteur de la
        signature considérée être sous sa possession exclusif.
    • D'offrir une confidentialité des données grâce au chiffrement.




                             figure2.1: L'authentification via signature

1.1. Définition de la signature électronique selon la loi algérienne [ARPT 07]:
 « Signature électronique sécurisée » signature électronique qui satisfait aux exigences suivantes:
- être propre au signataire;
- être créée par des moyens que le signataire puisse garder sous son contrôle exclusif;



                                                 13
2ème Chapitre                                                                       Signature électronique

- garantir avec l'acte auquel elle s'attache un lien tel que toute modification ultérieure de l'acte soit
détectable.




                figure2.2: Fonctionnement de signature électronique dans une carte à puce

La signature électronique utilise deux familles d’algorithmes, qui sont utilisés de manière
complémentaire :
   - des algorithmes de chiffrement dit « asymétriques » ou à « clef publique ».
   - des fonctions de hachages: L’intérêt de la fonction de hachage est de permettre de signer une
      quantité de données beaucoup plus petite que le message entier (et de longueur fixe).

     1.2. Algorithmes asymétriques:
Leurs principe est simple et repose sur l'existence d'un couple de deux clés l'une appelée publique,
utilisée pendant le processus de chiffrement et l'autre dite privée intervient lors le déchiffrement des
données. L’authenticité du document peut être ainsi garantie.




                                  figure2.3: Algorithmes asymétriques

    1.3. Fonction de hachage
Les fonctions de hachages sont des fonctions à sens unique et « sans collision », donnant comme
résultat après l'avoir appliquée aux données un condensé de taille fixe (appelée condensat ou
empreinte), elle est dite de sens unique a cause l'impossibilité de retrouver les données initiales a
partir du condensé. Elle est dite aussi sans collision ou injective car il est très difficile de trouver
un résultat (condensé) identique de deux données différentes ainsi l’intégrité d’un document est
contrôler via la comparaison du condensé calculé avec sa valeur initiale (le condensée
reçu).fonctions de hachage les plus souventes sont le MD5 et le SHA.


                                                   14
2ème Chapitre                                                                     Signature électronique

    -   MD5 (MD pour Message Digest): MD5 crée une empreinte de 128 bits. MD5 était un très
        bon algorithme, mais l'augmentation de la puissance de calcul des ordinateurs et la
        progression des techniques de cryptanalyse le rendent aujourd'hui moins sûr.
    -   SHA-1 (Secure Hash Algorithm): SHA-1 crée des empreintes de 160 bits. Il est considéré
        plus fiable que MD5.
    -   SHA-256 / SHA-512, beaucoup plus sûrs mais moins répandus, créent respectivement des




        empreintes de 256 et 512 bits.
                                  figure2.4: Fonction de hachage

2. Quelques normes et standards
Il existe un nombre considérable de normes et de standards qui englobe les certificats, la signature
électronique, l’identification des algorithmes cryptographiques, les messages signés, etc.
Avant de commencer il faut savoir qu'il existe un langage évolué ASN.1 (Abstract Syntax Notation
One) [ISO/IEC et ITU-T 84] conçu pour décrire des structures de données. Des mécanismes (BER,
Basic Encoding Rules) ont été définis pour encoder de façon standard ces structures de données afin
qu’elle puisse être décodées et reconstituées sur n’importe quelle plateforme. Les mécanismes de
codage de BER produisent des données binaires. Le codage Base64 permet de transformer un
document binaire en une suite de caractères ASCII. La partie Base64 est entourée d’une balise de
début et d’une balise de fin caractéristique du contenu. Toute chaîne de caractères qui se trouve en
dehors de ces balises est considérée comme du commentaire. Ce format est communément appelé le
format PEM (Privacy Enhanced Mail), du nom des standards de l’Internet relatifs à
l’authentification et à la confidentialité dans la messagerie électronique.
Le format DER (Distinguished Encoding Rules) correspond aux données binaires contenues dans
un fichier PEM, c’est donc le résultat du décodage Base64 des données contenues entre la balise de
début et la balise de fin et c'est l'ASN1 qui joue le rôle d'un interpréteur et un afficheur et même un
manipulateur,
Les PKCS (Public-Key Cryptography Standards) définissent douze standards (de PKCS#1 à
PKCS#12) pour spécifier l’utilisation d’algorithmes de chiffrement ou d’échanges de clés, les
interfaces avec des modules cryptographiques, les certificats, les requêtes de certificats, les
conteneurs de diverses natures. Par exemple, PKCS#6 décrit les certificats. C’est un sur-ensemble
des certificats X.509.
Les deux PKCS les plus courants sont le 7 et le 12 :
    • Le PKCS#7 décrit les conteneurs de données. Il peut s’agir de données signées, chiffrées,
        signées et chiffrées ou bien d’une liste de certificats d’autorités de certification, etc.



                                                  15
2ème Chapitre                                                                     Signature électronique

    • Le PKCS#12, également connu sous le nom de PFX, décrit les mécanismes qui permettent
      de garantir l’intégrité et la confidentialité de données comme des clés privées, des certificats
      d’utilisateurs ou d’autorités de certification. C’est le format utilisé pour sauvegarder ou pour
      transporter des certificats d’utilisateurs et les clés privées correspondantes. Les données
      contenues dans un fichier au format PKCS#12 sont protégées par un certain nombre de clés.
      L’une sert au contrôle d’intégrité des données, les autres servent à chiffrer/déchiffrer des
      données confidentielles comme les clés privées. En pratique, les outils usuels comme les
      navigateurs n’utilisent qu’une seule clé pour toutes ces opérations. Cette clé est définie par
      l’utilisateur au moment où il exporte son certificat et sa clé privée et elle est demandée au
      moment où il importe son certificat.

Le format S/MIME11 définit une collection de types MIME permettant d’envoyer et de recevoir des
données signées, chiffrées ou les deux à la fois via la messagerie électronique. Les données en
question peuvent être elles mêmes des parties MIME, comme dans le cas où on signe un message
électronique contenant un document attaché. S/MIME décrit notamment les types «
multipart/signed », « application/pkcs7-signature » et « application/pkcs7-mime ».
A ces standards « historiques » peuvent être ajouté plusieurs nouveaux standards mieux adaptés à
nos besoins fonctionnels, en provenance notamment du monde XML.

   2.1. XML Signature
Ce premier standard est le résultat du groupe de travail « XML Signature WG » qui est un groupe
conjoint du W3C et de l’IETF. De ces travaux sont issus une « Recommandation » du W3C et une «
Standard track » de l’IETF, « XML-Signature Syntax and Processing12 » / RFC327513.




                               figure2.5: Exemple de signature XML




                                                 16
2ème Chapitre                                                                      Signature électronique

XML Signature a été conçu pour permettre la signature des échanges XML. Pour cela, l’essentiel
des fonctionnalités offertes par les signatures de type PKCS ont été reprises, avec un certain nombre
d’apports propres à XML, dont le principal est sans doute la possibilité offerte de pouvoir ne signer
qu’une partie de l’arbre XML, autrement dit d’un document. La signature d’un document va
consister à construire une liste de références (URI), puis de calculer pour chacune d’entres elles un
condensat. Cette liste de condensat fera à son tour l’objet d’un hachage, qui sera signé. On pourra
alors ajouter divers éléments, tels que le certificat du signataire qui peuvent être internes ou externe
au document, concerner tout ou partie de celui-ci, etc.
La figure 2.5 offre un exemple de signature XML.

Plusieurs implémentations de XML Signature sont actuellement disponibles, on peut citer :
   - XMLsec [W3C 08]: diffusé sous licence MIT et qui peut appuyer sur les couches
       cryptographiques d’OpenSSL, Mozilla (NSS), GnuTLS ou Microsoft MSCryptoAPI.
       XMLsec propose une API C++.
   - Apache XML Security : du groupe Apache, diffusé sous licence Apache Software Licence,
       qui propose une double API, Java et C++.


    2.2. XML Advanced Electronic Signatures (XAdES) [W3C 03]
XAdES est une extension de XML Signature. Les extensions concernent notamment le domaine de
la non répudiation, en définissant des formats XML pour les « Signatures électroniques avancées »
susceptibles de rester valides pendant de grandes périodes, conformément à la « Directive
Européenne 1999/93/EC ».
XAdES est le résultat des travaux de la section STF de l’ETSI.
Une « note W3C » reprend ces spécifications, en vue d’une recommandation W3C.
Concernant la mise en œuvre de XAdES, si les implémentations ne sont pas extrêmement
nombreuses, il est néanmoins incontournable de citer l’initiative OpenXAdES, qui, comme le nom
l’indique, est une initiative ouverte autour de XAdES.

3. Principe de fonctionnement de la signature numérique
On peut résumer le fonctionnement d’une signature comme suit : on possède d’un algorithme de
chiffrement à clé publique, soit CA la fonction de chiffrement et DA celle de déchiffrement. On sait
que la fonction CA est connue de tous, par la clé publique associée à l’algorithme, tandis que DA
n’est pas connue que par le possesseur et soit par exemple Alice le possesseur de la clé privée.
Lorsque Alice souhaite signer un message M, elle applique une fonction de signature S talque
S=CA (M). Toute personne ayant le message M et la signature S peut vérifier qu’Alice est à
l’origine de la signature en calculant DA (S). Si cette quantité est bien égale à M, alors on peut être
certain qu’Alice est l’auteur de la signature, car seule elle peut produire DA (M), puisqu’elle est la
seule à connaître DA. On peut également vérifier l'intégrité du message, puisque altérer le message,
il faudrait également altérer la signature de manière cohérente, ce qui n’est possible que si l’on
dispose de DA.
    En définitive, on ne signe pas le message M, mais seulement l’empreinte (le hash) de M par une
Fonction de hachage. La sûreté de la signature réside alors dans le choix de la fonction de hachage.
Il faut que la fabrication d’un message ayant une empreinte étant donné un message et son
empreinte, il soit très difficile de fabriquer un message ayant une empreinte (et donc une signature)
égaux a un autre message et empreinte soit le plus difficile possible.
    La signature numérique nécessite l’utilisation de certificats électroniques. Ces dernières sont
générées par des autorités de certification, qui permettent d’identifier de façon unique la personne
(ou l’entité) qui possèdent les clés publique et privée : les certificats peuvent être vus comme la
carte d’identité numérique de cette personne ou de cette entité.


                                                  17
2ème Chapitre                                                                      Signature électronique



4. Cadre technologique et organisationnel de la signature électronique
La signature électronique utilise la technologie d’infrastructure de gestion de clé publique (IGC ou
PKI pour Public Key Infrastructure). Une infrastructure de gestion de clé (IGC) désigne un cadre
organisationnel ainsi qu’une infrastructure technique. Elle met en œuvre les opérations
d’authentification, de création de la signature électronique et le chiffrement. L’IGC est donc une
Structure à la fois technique et administrative. Un pourcentage de 80 % d’organisation structurelle
et humaine et de 20 % de technique est nécessaire pour la mise en œuvre et la maintenance d’une
IGC.
Une IGC est basée sur le cadre technologique suivant :
    • un certificat numérique qui est l’équivalent d’un passeport numérique ;
    • le chiffrement à clé asymétrique qui comprend deux clés : une clé publique et une clé privée.
Ces technologies sont employées dans un cadre formalisé :
    • des acteurs identifiés : autorité de certification, d’enregistrement ;
    • une politique de certification.
Enfin l’IGC est mise en œuvre en fonction :
    • des services offerts : signature, chiffrement, horodatage, archivage ;
    • du périmètre couvert : procédure à usage interne ou à destination de publics externes ;
    • du mode d’industrialisation : réalisé en interne ou externalisé.

    4.1. L’IGC (Infrastructure de Gestion de Clés) :
Définition : appelée aussi PKI (Public key Infrastructure) ou encore IGP (Infrastructure de Gestion
de clés Public), c’est une autorité de certification qui a pour but d’authentifier les clés publiques et
cela en fournissant des pièces numériques aux usagers appelées certificats numériques, ces
certificats doivent être largement publiées mais aussi signées par cette autorité afin de garantir leurs
crédibilités aux yeux des usagers.
Pour obtenir un certificat le client doit faire transmettre une requête avec sa clé publique à une
autorité connue, cette dernière va construire un certificat incorporant la clé publique du client et ce
certificat sera signé par sa clé privée




                          figure2.6: Principe de fonctionnement d'une PKI


                                                  18
2ème Chapitre                                                                      Signature électronique


Par la suite l’organisme de certification publiera le certificat avec la clé publique et l’identité de
l’usage et quiquonque peut la consulter et de cette façon la clé publique de l’usage est authentifiée
car on a confiance dans l’autorité de certification
        4.1.1. Gestion des clés:
La gestion des clés est garantie en appliquant les étapes suivantes
        Génération
        Distribution
        Stockage
        Suppression.
        Archivage
        Recouvrement


        Génération des clés
On peut générer deux types de clés :
        Symétriques: elles sont générées via un générateur de nombres aléatoires ou pseudo
        aléatoires mais il faut surtout savoir choisir le domaine de valeurs dans lequel les clés seront
        définies car choisir un domaine faible signifie avoir des clés plus vulnérables
        Asymétriques: elles sont générées selon des processus complexe et suivant un nombre
        premier et certains paramètres suivant l’algorithme
        Distribution des clés
Cette opération désigne le déplacement de clé de cryptage. Il existe deux étapes distinctes pour la
distribution de clés; création de la clé initiale et la création des clés ultérieures.
 Avant tout, on génère la clé initiale appelée aussi clé maitraisse ensuite en utilise cette clé afin de
pourvoir distribuer les clés ultérieures.
        Stockage des clés
Apre la distribution on doit stocker la clé c’est à dire la garder et la protéger tout en assurant son
intégrité et sa confidentialité à tout prix. L’intégrité et l’authenticité pourront être assure par le
contrôle d’accès, mais la confidentialité de la clé ne peut être garantie qu’avec son stockage sur
support hardware.
        Suppression de clés
On passe a ce niveau seulement si la clé expire c'est-à-dire elle perd sa validité ou bien si on l’a
soupçonne d’avoir perdu sa confidentialité parla suite la clé et ses copies symétriques seront
détruites pour le cas symétrique ou bien de clés publique pour le cas asymétrique.
L’archivage est une exception pour cette règle.
        Archivage des clés
L’archivage des clés permet de conserver une copie des clés même si elles ne sont plus utilisées,
        Recouvrement des clés (Key Recovery)
Cette opération intervient quand le client perd sa clés ou bien pendant l’absence de celui-ci (par
exemple la mort), elle permet d’avoir un double de la clé prive, cette clé qui était stockée et cryptée
dans un emplacement spécial

         4.1.2. Annuaire et PKI
Les annuaires contiennent les informations concernant les systèmes, les services réseau et les
utilisateurs. De ce fait, un service d'annuaire peut être très simple, mais également devenir d'une
grande complexité suivant la nature des informations contenues.
Les composants d’une PKI doivent avoir un stockage organisé et un accès facile. Le service
d’annuaire peut participer à cette tâche en assurant une organisation adéquate des données de la PKI
est permettre son accès de façon simple.
Le service d’annuaire est utile dans le cas d’une PKI pour différentes raisons :

                                                  19
2ème Chapitre                                                                           Signature électronique

        Les certificats générés par une PKI peuvent être stockés dans l’annuaire et récupérés
        facilement par les utilisateurs et les applications.
        L’annuaire peut stocker également la liste de révocation CRL, permettant ainsi aux
        utilisateurs de vérifier la validité d’un certificat de façon simple.
        Les organisations PKI qui permettent de gérer le recouvrement de clé, peuvent utiliser
        l’annuaire pour stocker les clés privées, cryptées bien évidemment. Les PKI mettant en
        œuvre un service de recouvrement de clé privée disponible dans un annuaire permettent un
        déploiement vraiment mobile des applications
Pour être compatible avec la PKI, l’annuaire doit répondre à deux critères :
1. L’annuaire doit supporter le protocole LDAP (Lightweight Directory Access Protocol) le standard
pour l’accès aux données par annuaire.
2. L’annuaire doit supporter le standard X.509v3 et permettre de stocker des CRL.

    4.2. Signature électronique, PKI et certificat :
   De même qu’une carte d’identité ou un passeport, un certificat est délivré par une autorité, que
l’on qualifie de certification, il est utilisé pour assurer la validité de la clé publique, ainsi la
signature électronique est calculée sur les informations contenues dans le certificat, cette signature
est l’empreinte de ces informations chiffrée avec la clé privée de l’autorité de certification. Le
format reconnu actuellement pour le certificat est le formatX509v3.
        4.2.1. Certificat électronique:
Sans un certificat électronique un système de sécurité informatique aura une grande lacune, car c'est
le garant des clés publiques des usagers puisque le tout fonctionne de manière électronique sur
internet, sans contact direct donc sans moyen visuel de reconnaissance d’une personne.
Sans certificat un pirate par exemple qui a pu pénétrer dans un serveur d'annuaire pourra modifier
les clés des utilisateurs et par la suite il pourra lire les messages confidentiels ainsi signer des
document en faisant passer par les usagers de cet annuaire.
Pour récapituler, un certificat électronique est utilisé dans le cadre d’une infrastructure à clé
publique. Cette technologie d’authentification, dite forte, peut être combinée à deux autres
techniques d’authentification que sont le mot de passe ou la biométrie pour atteindre un niveau de
sécurité supplémentaire (authentification à deux facteurs), comme une carte d'identité ou un
passeport, elle contient les informations sur son propriétaire.




                figure2.7 : Analogie entre certificat électronique et carte d'identité nationale

                                                      20
2ème Chapitre                                                                          Signature électronique


    -   Généralement le monde informatique possède deux types de certificats: des certificats de
        chiffrement (utilise lors de cryptage), et les certificats de signature (utilisés par les signatures
        électroniques).


      4.2.1.1. Un fonctionnement sécurisé des certificats:
Un certificat permet d'authentifier de manière sure la personne ou l'entité avec laquelle on souhaite
échanger des données, la transmission de ces dernières sera sécurisée via le chiffrement en utilisant
le protocole SSL (Socket Secure Layer), ces certificats sont également employés pour différent
opérations sur le réseau informatique par exemple pour les transactions commerciale (commande
d’un billet d'avion par exemple) ou bancaire (consultation d’un compte, virement, etc...).

       4.2.1.2. Classes de certificats:
On désigne par classe de certificat le niveau de contrôle offert par ceci, on se basant sur cette
définition on distingue trois classes:
Classe1: Cette classe n'a pas de valeur juridique puisque elle est obtenu en ligne sans aucune
vérification d'identité, la seule validation se fera sur l'adresse électroniques de l'usager, ces
certificats sont généralement utilisés par des particuliers à des fins de cryptage de message sur le
net.
Classe2: Dans cette classe la demande de certificat doit être faite par une personne physique
uniquement et c'est l'autorité de certification qui se chargera de la vérification des informations
fournies par le demandeur avant la livraison du certificat.
Classe3: Cette classe se diffère de la précédente par le type des demandeurs de certificats qui
peuvent être physiques ou morals, ainsi par le contrôle de l'identité qui sera une vérification
physique dite aussi contrôle face à face ou rapport facial.

     4.2.1.3. Certificats et services de sécurité:
Le certificat électronique est employé dans les différents domaines de l'informatique afin d'assurer
les différents services de sécurité:

                  Service de sécurité                                 Utilisation du certificat
Confidentialité                                          -   Les certificats permettent de chiffrer et
                                                             déchiffrer les messages.
Intégrité                                                -   Les certificats permettent de vérifier l'intégrité
                                                             d'un message,      grâce à une fonction de
                                                             hachage permet de s'assurer que le message n'a
                                                             pas été altéré.

Authentification                                         -   L’utilisation de certificats permet d’établir
                                                             l'identité de l'expéditeur,

Non-répudiation                                          - Le certificat permet d'identifier les participants
                                                           à l’échange d’informations : Le dépôt du
                                                           message signé et éventuellement chiffré chez
                                                           un tiers de confiance permet la non-
                                                           répudiation.
                  tab 2.1 : Services de sécurité offerts par un certificat électroniques


                                                    21
2ème Chapitre                                                                         Signature électronique

      4.2.1.4. Support physique
Un certificat prend la forme d'un fichier qui peut être gardé soit sur le pc (certificat logiciel), ou
bien sur un moyen physique plus sûr comme les cartes à puce ou les clés USB.
Certificat logiciel: ce cas nécessite l'installation de logiciel dans les divers navigateurs web afin de
pouvoir utiliser le certificat.
Certificat sur clé USB: c'est une clé USB cryptée qui doit être utilise par le biais d'un logiciel
spécifique qui jouera le rôle d'une interface avec le pc. Ce cas a pour avantage de pouvoir garantir la
mobilité du certificat qui sera donc maniable.
Certificat sur cartes à puce: dans ce cas on doit avoir un lecteur de carte et un logiciel spécial afin
de pouvoir garantir la bonne exploitation du certificat numérique.

Il existe plusieurs critères selon les quelles on pourra choisir le support approprié pour notre
certificat numérique parmi eux on trouve; le coût, la facilité d'utilisation, déploiement et la mobilité
du support:

    Support du                    Avantages                       Inconvénients               Niveau de
     certificat                                                                                sécurité

Logiciel              o Logiciel installé directement     o la procédure                 o Moyen
                        sur le poste client                d’installation varie d’un
                                                           navigateur à l’autre

                                                           o Incompatibilité   pour
                                                             certains    OS   (Mac,
                                                             Linux) et de certaines
                                                             versions d’OS
                                                           o la mobilité dépend du
                                                             poste de travail
Clé USB               o mobilité                      o Le support est encore o Fort avec mot
                      o simplicité d’utilisation        peu       connu   des   de passe
                      o port USB présent sur tous les   utilisateurs     non
                        ordinateurs récents             informaticiens
Carte                o support connu des utilisateurs o il faut installer un o                Fort avec mot
                     o support personnalisable             lecteur avec ou sans               de passe ou
                     o support utilisé pour les projets    contact                            reconnaissance
                        gouvernementaux d’IGC.          o le coût de l’équipement             biométrique
                                                           est élevé
                   tab 2.2 : Comparaison entre support de certificats électroniques

     4.2.1.5. Certificats et rèvocation:
les certificats sont généralement stockes sur des annuaire LDAP, ces annuaire doivent être sécurisés
a tout prix afin d'assurer la validité des certificat et donc la validité des clés publique, mais il existe
certain cas ou on doit révoque un certificat par exemple le cas d'un stagiaire ou une personne qui se
fait dérober sa clé secrète et pour cela une liste de révocation appelée CLR (Certificat Revocation
List) est mise en place, elle a pour but d'éviter l'utilisation de toute certificat frauduleuse périmée, a
cause la fin de sa validite ou la perte de sa confidentialité. L'accès a cette liste doit être garantit a
tout moment. La révocation a pour résultat de supprimer la caution de l’autorité de certification sur
un certificat donné avant la fin de sa période de validité.



                                                    22
2ème Chapitre                                                                         Signature électronique


    4.3. Répartition des CA (Certification Authority):
Un nombre important d'usagers ne peut pas avoir ses certificats d'un seul CA, pour cela le travail est
reparti à travers plusieurs CA qui fonctionnent selon une même PKI et suivant un modèle précis.

        4.3.1. Modèle hiérarchique
             Dans ce modèle les CA appelées CA subordonnées sont reparties selon un arbre
             hiérarchique, sous le contrôle d'une autorité supérieure (le plus haut niveau d'autorité)
             constituant la racine de l'arbre appelée CA root qui est la seul a posséder un certificat
             auto signé et qui génère des certificats pour les CA subordonnées mais qui définit
             aussi des relation(des règles) avec eux, ces relations sont dites la chaine de confiance,
             un utilisateur qui a confiance en CA root doit avoir confiance dans leur CA
             subordonnées a cause de cette chaine de confiance.




                                    figure2.8: Modèle hiérarchique

        4.3.2. Modèle peer to peer ou maillé:
Dans ce modèle tout les CA fonctionnent au même niveau et chaque deux CA doivent échanger
leurs clé publique mutuellement ainsi chacune d'elles vois l'autre comme étant sa racine et par la
suite chacune d’eux peut générer un certificat pour son homologue




                                       figure2.9: Modèle maillé

        4.3.3. Modèle en pont ou bridge:
Dans ce modèle les CA changent leurs clés publiques à travers une CA intermédiaire appelé CA
bridge, ce modèle possède un avantage par rapport au modèle maillé qui consiste à diminuer le
nombre de certificats générés pour un nombre important de CA tel que ; pour N autorités de
certification il suffit de générer N certificats tandis qu'il fallait créer N-N2/2 pour le maillé, ainsi il
offert une structure stable par rapport au modèle hiérarchique.


                                                    23
2ème Chapitre                                                                        Signature électronique




                                      figure2.10: Modèle bridge




          Modéle                       Avantage                                inconvenient
Hiérarchique                -   Evolutif                    -      très rigide nécessitant un
                            -   Sécurisé
                            -   Offrant un contrôle total   -      contrôle très intensif
                            -    Offre      un       chemin
                                de certification unique et -       sécurité: CA root le point faible
                                simple
Maillé                      -   Modèle plus ouvert, plus -         Absence de contrôle
                                flexible que le modèle -           sécurité: tout les CA sont des points
                                hiérarchique                       faibles
                                                         -         nécessite n-n2/2 pour n CA
                                                         -         La politique de certification des CA
                                                                   doit être similaire afin d’assurer la
                                                                   compatibilité du modèle
Bridge                      -   Diminue le nombre de -        sécurité: CA root le point faible
                                reconnaissances      -        La politique de certification des CA
                                mutuelles                     doit être similaire afin d’assurer la
                                                              compatibilité du modèle
                            tab 2.1 : Comparaison entre modèles de la CA

     4.4. Politique de certification:
Une politique de certification comme par exemple thawte personnal freemail, thawte personnal
basic [THAWTE 95] ou swisskey, désigne les règles mis en place par l'autorité de certification pour
la demande, la délivrance, l’utilisation et la gestion des certificats. Une autorité de certification peut
utiliser différentes politiques selon les utilisateurs et les usages concernés [IETF 99].

    4.5. Services associés à la signature électronique:
Une PKI peut offrir autres services, afin de garantir le bon fonctionnement d'une signature
électronique:

        4.5.1. L’horodatage (timestamping):
Ce service fait inscrire une signature composée de date et heure infalsifiables sur un document
numérique, donc il offre une garantie de date certaine (comme cachet de la Poste), ce service est
fréquemment employé dans les journaux d'événements. Il est représenté généralement sous forme
d'une séquence de caractères représentant la date et l'heure dans lesquelles est survenu l'événement.


                                                   24
2ème Chapitre                                                                        Signature électronique


       4.5.2. L’archivage
L'archivage est l'action consistant à conserver les signatures électroniques et cela pour des buts de
gestion et d'administration, de justification de droit des entités mais aussi en cas de vérification et de
contrôle (par exemple le cas d'une enquête). La durée légale d’archivage varie en fonction des
signatures de 5 à 30 ans et plus.




   4.6. Schéma d’architecture générale
    Une infrastructure de gestion de clé a pour rôle de garantir aux usagers (personne, serveur ou
application informatique) trois grandes catégories de services :
   • la signature électronique pour garantir l’authentification des auteurs et l’intégrité des
       données
   • le chiffrement, pour garantir la confidentialité des données
   • le contrôle de l’accès aux données ou aux applications pour garantir la sécurité des systèmes
       d’information.

Des services complémentaires d’archivage et d’horodatage peuvent être ajoutés.
 L'IGC utilise différents protocoles dans un but de sécuriser les échanges de données. Le principe
est comme suit ; il est possible d’envoyer des données en utilisant le chiffrement via un canal
sécurisé sur Internet avec l’utilisation de technologies VPN (Virtual Private Network) ou de
sessions HTTP sécurisées par le protocole SSL (HTTPS). Puisque grâce à sa capacité à fournir des
certificats numériques, l'IGC peut permettre aussi d'utiliser les outils de chiffrement qui traitent les
données elles-mêmes et par la suite la confidentialité des donnes est garantie par le chiffrement du
message, mais aussi avec l’emploi de certificats numériques.




        figure2.7: Schema général de couches intervenant dans le fonctionnement d'une PKI




                                                   25
2ème Chapitre                                                                     Signature électronique

5. Types de signatures ;
   5.1. Selon la fiabilité
   A. La signature électronique simple : Elle n’est pas considérée fiable jusqu’à qu’on prouve le
       contraire. En cas de contestation, c’est donc à celui qui veut se prévaloir des effets
       juridiques de cette signature d'apporter la preuve de la fiabilité du système mis en œuvre.
   B. La signature électronique présumée fiable : Elle ne peut être contestée qu’en apportant la
       preuve de sa non fiabilité.
Pour être considérée comme fiable, la signature électronique doit garantir trois propriétés :
   − La signature électronique doit être sécurisée
   − La signature électronique doit être établir grâce à un dispositif sécurisé de création de
       signature La vérification de la signature électronique doit utiliser un certificat électronique
       qualifiée, émise par un prestataire de service de certification électronique.




                                                 26
2ème Chapitre                                                                         Signature électronique




                figure2.7: exemple de critères de signatures fiable selon la loi française




                                                   27
2ème Chapitre                                                                      Signature électronique

    5.2. Selon le type de service offert:
    • Intégrité seule
    • Intégrité + confidentialité
    • Intégrité + confidentialité + authentification (garantie d'origine)
    1) Signature avec intégrité seule
            Appliquer une fonction de hachage H(M) pour le message M, par exemple MD5
            Ensuite envoyer M+H(M) ne suffit pas car un intrus peut intercepter M, changer M en
            M2, calculer H(M2), et renvoyer M2+H(M2)
            Donc il faut avoir une clé secrète K partagée entre les usagers A et B
            A concatène M, L (longueur de M) et K et calcule D = H (M, L, K) ensuite A envoie à B
            M+D
            B recalcule H (M, L, K) à partir du message M reçu (il connaît K)
            B vérifie que H (M, L, K) = D
    2) Signature avec intégrité et authentification
    • A chiffre le message avec sa clé privée MC
    • A envoie à B : (M, {M} MC)
    • B déchiffre {M} MC avec KP (publique)
    • B compare [{M} MC] KP avec M
    • Si différents, le message (ou la signature) a été altéré
    • Propriétés : vérification d'intégrité, authentification, non dénégation
    3) Signature avec intégrité, confidentialité et authentification
    • A et B s'accordent sur une clé secrète KS
    • A calcule H(M), par exemple avec MD5
    • A envoie à B {M} KS, {H(M)} KSA
    • B déchiffre {M} KS avec KS, {H(M)} KSA avec KPA (donne comme résultat DM)
    • B calcule H(M) (avec le même H () que A) et le compare avec DM.
    • test d'intégrité (OK si H(M) = DM, violation sinon)
    • confidentialité grâce à KS, authentification et non dénégation (car seul A a pu chiffrer H(M))
        - interception et modification de M “difficiles” car il faut à la fois KS et KSA


6. Cadre juridique de la signature électronique en Algérie:
• loi n° 05‐10 modifiant et complétant l’ordonnance n° 75‐58
− "Art. 323 ter. — L'écrit sous forme électronique est admis en tant que preuve au même titre que
l'écrit sur support papier, à la condition que puisse être dûment identifiée la personne ont il émane et
qu'il soit établi et conservé dans des conditions de nature à en garantir l'intégrité".
• Décret exécutif n° 07‐162 modifiant et complétant le décret exécutif n° 01‐123

– Art. 3. ‐ Sont subordonnés à l'octroi d'une autorisation délivrée par l'autorité de régulation de
La poste et des télécommunications, l'établissement et l'exploitation:
•des services de certification électronique.
L'autorisation des services de certification électronique est, toutefois, assortie d'un cahier des
charges fixant les droits et les obligations du prestataire du service et de l'utilisateur.

– Art. 3 bis. ‐ Pour l'application du présent décret, il est entendu, par:
   • signature électronique: donnée qui résulte de l'usage d'un procédé répondant aux conditions
        définies aux articles 323 bis et 323 bis 1 de l'ordonnance n° 75‐58 du 26 septembre 1975,
        susvisée;
   • signature électronique sécurisée: signature électronique


                                                  28
2ème Chapitre                                                                       Signature électronique

    • qui satisfait aux exigences suivantes :
– être propre au signataire;
– être créée par des moyens que le signataire puisse garder sous son contrôle exclusif; l'acte soit
détectable;
– signataire: personne physique...

– Art. 3 ter. ‐ Les certificats délivrés par un prestataire de services de certification électronique
établi dans un pays étranger ont même valeur que ceux qui sont délivrés en vertu des dispositions
du présent décret lorsque ce prestataire étranger agit dans le cadre d'une convention de
reconnaissance mutuelle conclue par l'autorité de régulation de la poste et des télécommunications".



7. Conclusion :
    La signature électronique est un élément substantiel dans une carte d’identité électronique car
    c’est une empreinte protégée par un certificat permettant la reconnaissance, la confidentialité, la
    sécurité, l'authenticité des données de l’usager, et elle dérive son importance de ses qualités :

        Elle n'est pas imitable.
        Elle n'est pas répudiable.
        Elle protégé le contenu contre les modifications.
        Elle permet de signer directement tout ce qui est numérisable.

Mais malgré ces qualités, il faut toujours garder en esprit que le risque zéro n’existe pas en sécurité
informatique.




                                                  29
ème
      3         Chapitre


Implémentation d’une carte
  d’identité électronique
3ème Chapitre                                                    Implémentation d’une carte d’identité électronique


1    Introduction:
L’implémentation de carte identité électronique passe par plusieurs étapes:
    1- Création d'une autorité de certification
    2- Installation des SDK
    3- Réalisation d'une application DZeID (avec le langage C#)
    4- Introduction des lettres arabe.

2    Création d'une autorité de certification:
     Afin de créer une autorité de certification sur Windows serveur 2008 on doit installer ce qu’on
     appelle l’ADCS (Active Directory Certificate Service) qui fournit des services personnalisables
     pour l’émission et la gestion de certificats dans des systèmes de sécurité logicielle employant des
     technologies de clé publique. Pour obtenir des informations techniques d’ordre général à propos du
     chiffrement par clé publique et des avantages offerts par une infrastructure à clé publique (PKI),
     voir Infrastructures à clé publique. Vous pouvez utiliser les services AD CS pour créer une ou
     plusieurs autorités de certification pour recevoir les demandes de certificat, vérifier les
     informations contenues dans la demande et l’identité du demandeur, émettre des certificats,
     révoquer des certificats et publier des données de révocation de certificat.
    - Pour installer une autorité de certification racine il nous faut
     • Ouvrir Gestionnaire du serveur, cliquer sur Ajouter des rôles, sur Suivant, puis sur Services
        de certificats Active Directory. Cliquer sur Suivant à deux reprises.




                    Figure3.1 : Ajouter de Services de certificats Active Directory


                                                       31
3ème Chapitre                                             Implémentation d’une carte d’identité électronique

     • Dans la page Sélectionner les services de rôle, on clique sur Autorité de certification. et sur
        Suivant.

     • Dans la page Spécifier le type d’installation, on clique sur Autonome ou Entreprise. puis sur
        Suivant.




                                Figure3.2 : Spécification de type de CA




                                                  32
3ème Chapitre                                               Implémentation d’une carte d’identité électronique

Dans la page Configurer la clé privée, on clique sur Créer une nouvelle clé privée, ensuite sur
Suivant.
   1. Dans la page Configurer le chiffrement, on sélectionne le fournisseur de services de
        chiffrement, la longueur de la clé et l’algorithme de hachage.et on clique sur Suivant.




                           Figure3.3 : Spécification de période de validité




                                                   33
3ème Chapitre                                                 Implémentation d’une carte d’identité électronique


    2. Dans la page Configurer le nom de l’autorité de certification, on crée un nom unique pour
       identifier l’autorité de certification et on clique sur Suivant.




                                      Figure3.4 : Nommage de CA

    3. Dans la page Période de validité du certificat, on spécifie le nombre d’années ou de mois de
        validité de l’autorité de certification racine et on clique sur Suivant.

    4. Dans la page Configurer la base de données de certificats, on accepte les emplacements par
        défaut, à moins qu’on ne voulait spécifier un emplacement spécifique pour la base de données
        de certificats et pour le journal de base de données de certificats et on clique sur Suivant.

    5. Dans la page Confirmer les options d’installation, on vérifie les paramètres de configuration
        que nous avons sélectionnés. Pour accepter toutes ces options, on doit cliquer sur Installer et on
        doit patienter jusqu’à la fin du processus d’installation.




                                                     34
3ème Chapitre                                                Implémentation d’une carte d’identité électronique




                                      figure3.5 : CA après création

        Remarque: la procédure de création d'autorité de certification doit être précéder par l'installation
         et la configuration des services d’annuaire Microsoft Active Directory et le service IIS.




                                                    35
3ème Chapitre                                               Implémentation d’une carte d’identité électronique


3 Installation des SDK:
- Installation des SDK [BEID 3.5]: Un kit de développement ou trousse de développement logiciel ou
appelé parfois Middleware ou encore RunTime est un ensemble d'outils permettant aux développeurs
de créer des applications de type défini. Les kits de développement logiciels sont souvent désignés par
le sigle anglais SDK (Software Developpent Kit) ou devkit.
Le middleware de la carte d’identité électronique est un programme qui permet d’établir la liaison entre
l’application qui gère les caractéristiques de sécurité (signature digitale) et le lecteur de cartes à puce
qui réalise les opérations de cryptographie.




    figure3.6 : Etablissement de liaison entre l’application et lecteur de carte via le middleware




                                                    36
3ème Chapitre                                             Implémentation d’une carte d’identité électronique

4    Réalisation d'une application DzeID
      Ajout de librairie beid35libCS.dll : Après avoir installé les SDK, on trouve leur répertoire dans
      C:Documents and Settings<user>My Documents, et qui va contenir une librairie
      beid35libCS.dll indispensable pour la réalisation de l'application DzeID, puisque après elle doit
      être ajouté comme référence dans notre projet du visual studio.




                                    figure3.6 : Ajout de référence




                                  figure3.6 : Sélection de référence

                                                  37
3ème Chapitre                                                Implémentation d’une carte d’identité électronique




4.1 Initialisation / Libération du SDK :
La librairie eID est initialisée en appelant la méthode initSDK (), tandis que la libération du SDK doit
être fait en utilisant releaseSDK (). Il est important que le dernier appel à la librairie est releaseSDK ()
avant l'application se ferme. Cet appel fera en sorte que tous les processus d'arrière-plan sont arrêtés et
la mémoire est nettoyée. Une application doit avoir un seul initSDK () et un releaseSDK ().
Code c#:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Collections.ObjectModel;
using System.Text;
using be.belgium.eid;
namespace DZeID
{
    class Program
    {
        void main(int argc, string[] argv)
        {
            BEID_ReaderSet.initSDK();
            // acces a la carte DZeID


                BEID_ReaderSet.releaseSDK();
         }
    }
}




                                                    38
3ème Chapitre                                                         Implémentation d’une carte d’identité électronique


4.2     Accès à la carte eID
        Après l'initialisation de la librairie eID, le système est prêt à être utilisé. Pour accéder à une carte d'identité
        électronique, la séquence suivante doit être suivie:
           - Obtenir la liste des lecteurs de cartes
           - Sélectionnez un lecteur de carte
           - Tester si une carte est présente dans le lecteur de carte
           - Selon le type de carte, obtenir l'objet de cartes(Pour utilisation futur)
           - Obtenir les données objet nécessaires
           - Lire les champs de données

4.2.1    Liste de lecteurs
         La classe BEID_ReaderSet représente la liste des lecteurs de carte connectés à la machine ainsi une
         variété de fonctions pour obtenir des informations sur les lecteurs de carte connectés. A partir de cette
         liste de lecteurs,un lecteur de cartes peut être sélectionné et l'e contexte de lecteur BEID_ReaderContext
         peut être utilisé pour accéder à la carte dans le lecteur de carte.
Code c#:

                . . .
                long nrReaders = BEID_ReaderSet.instance().readerCount();
                string[] readerList = BEID_ReaderSet.instance().readerList();
                for (int readerIdx = 0; readerIdx < nrReaders; readerIdx++)
                {
                    BEID_ReaderContext readerContext =
                    BEID_ReaderSet.instance().getReaderByName(readerList[readerIdx]);
                    bool bCardPresent = readerContext.isCardPresent();
                . . .
                }
                . . .



4.2.2    Obtention de l'objet carte
         Le contexte de lecteur permet d'accéder à la carte (si présente). Une fois le type de carte est déterminé
         par le contexte lecteur (getCardType ( )), l'objet de cartes correspondantes peuvent être obtenues
         (GetEIDCard ( )). L’obtention de l'objet carte peut être utilisé pour le future c'est-à-dire en cas
         d’apparition d’autres types de carte autre que l’eID.
Code c#:        . . .
                switch (readerContext.getCardType())
                {
                    case BEID_CardType.BEID_CARDTYPE_EID:
                        {
                             BEID_EIDCard card = readerContext.getEIDCard();
                             string name = card.getID().getSurname();
                         . . .
                        }
                        break;
                    default:
                        // unknown card type
                         . . .
                        break;
                }
                . . .


                                                            39
3ème Chapitre                                                   Implémentation d’une carte d’identité électronique

4.2.3   La lecture des données
        Les données sur une carte eID utilise l'encodage UTF-8 et sont stockées dans de multiples «documents»:
        - Document ID: contient les données des personnes
        - Document Image: contient l'image des personnes
        - Document VersionInfo: contient les informations de version de la carte
Pour obtenir les données d'identification d'objet, la méthode getId () peut être utilisé. Cet objet peut
ensuite être utilisé pour accéder aux différents champs de données comme le nom, adresse, etc...
Code c#:
              ...
                BEID_EIDCard card;
                card = Reader.getEIDCard();
                BEID_EId doc;
                doc = card.getID();
                string sText;
                sText = "";
                sText += "First Name = " + doc.getFirstName() + "rn";
                sText += "Last Name = " + doc.getSurname() + "rn";
                sText += "Gender = " + doc.getGender() + "rn";
                sText += "DateOfBirth = " + doc.getDateOfBirth() + "rn";
                sText += "LocationOfBirth = " + doc.getLocationOfBirth() + "rn";
                sText += "NationalNumber = " + doc.getNationalNumber() + "rn";
                        Le national number est un matricule unique pour chaque citoyen, on propose sa structure
                comme suit :
                WWDDCCIIIIII tel que :
                   WW : numéro de wilaya
                   DD : numéro de daïra
                   CC : numéro de commune
                   IIIIII: identifiant du citoyen dans la commune
                sText   +=   "Nationality = " + doc.getNationality() + "rn";
                sText   +=   "SpecialOrganization = " + doc.getSpecialOrganization() + "rn";
                sText   +=   "MemberOfFamily = " + doc.getMemberOfFamily() + "rn";
                sText   +=   "AddressVersion = " + doc.getAddressVersion() + "rn";
                sText   +=   "Street = " + doc.getStreet() + "rn";
                sText   +=   "ZipCode = " + doc.getZipCode() + "rn";
                sText   +=   "Municipality = " + doc.getMunicipality() + "rn";
                sText   +=   "Country = " + doc.getCountry() + "rn";
                sText   +=   "SpecialStatus = " + doc.getSpecialStatus() + "rn";
                ...


4.2.4   Les données d'image
        L'objet image contient les données d'image du propriétaire de la carte eID. Cette image est un fichier en
        format JPG. Pour obtenir l'objet image, la méthode getPicture () peut être utilisé.
Code c#:
                ...
                BEID_Picture picture;
                picture = card.getPicture();
                byte[] bytearray;
                bytearray = picture.getData().GetBytes();
                // Maintenant les données peuvent être sauvegarder sur un fichier si on veut



                                                       40
3ème Chapitre                                                    Implémentation d’une carte d’identité électronique




4.2.5   Codes PIN
        Une carte d'identité électronique contient un code PIN. Ce code PIN peut être vérifiée ou modifiée.
        Les méthodes les plus importantes pour accéder à la PIN sont:
        - VerifyPin (): vérifier le code PIN donné
        - ChangePin (): modifier le code PIN par un nouveau code
        Chaque tentative échouée d'accés au code PIN se traduira par une réduction du nombre d'essais .
        Après 3 tentatives infructueuses, la carte sera bloquée.
Code c#:
                ...
                BEID_ReaderSet ReaderSet;
                ReaderSet = BEID_ReaderSet.instance();
                BEID_ReaderContext Reader;
                Reader = ReaderSet.getReader();
                uint lRemaining = 0;
                if (Reader.getEIDCard().getPins().getPinByNumber(0).verifyPin("", ref lRemaining))
                {
                     // success
                }
                else
                {
                     if (ulRemaining == -1)
                         // verify pin canceled
                     else
                         //verify pin failed
                }
                ...



4.2.6 Certificats
        Les certificats sur la carte peuvent être obtenu en utilisant getCertificates ( ). Cette méthode renvoie un
        certificat BEID_Certificates par la suite tous les certificats peuvent être consultées et les données
        associées peuvent être récupérées comme:
           - Numéro de série
           - Titulaire du certificat
           - L'émetteur du certificat
           - Dates de validité du certificat
           - ...
        Les certificats peuvent être ajoutés au conteneur de certificat via addCertificate ().
        Code c#:
            ...
                BEID_EIDCard Card = readerContext.getEIDCard();
                BEID_Certificates certificates = Card.getCertificates();
                for (uint CertIdx = 0; CertIdx < Card.certificateCount(); CertIdx++)
                {
                    BEID_Certificate cert = certificates.getCertFromCard(CertIdx);

                }
                ...


                                                       41
3ème Chapitre                                                    Implémentation d’une carte d’identité électronique




4.2.7 Validation de certificat
        Les certificats sont stockés sur la carte eID. Ces certificats ont une validité qui peut être vérifiée de 3
        façons:
           - Validé: la signature du certificat est vérifiée et le certificat racine doit être valide.
           - Via CRL: La CRL est téléchargée et on vérifie si le certificat est présente sur la liste de révocation
        ou pas, ce qui signifie révoqué ou en cours de validité.
           - Via le protocole OCSP (Online Certificate Status Protocol): Une demande est envoyée au serveur
        OCSP qui répond le certificat est valide, révoqué ou inconnus.
        La validation via OCSP a besoin d'une connexion permanente à Internet, tandis que la validation CRL a
        besoin d'une connexion quand une nouvelle CRL est demandée.
        Code c#:
            BEID_ReaderSet ReaderSet = BEID_ReaderSet.instance();
            BEID_ReaderContext Reader = ReaderSet.getReader();
            BEID_EIDCard card = Reader.getEIDCard();
            BEID_Certificates store = card.getCertificates();
            BEID_Certificate certAuth = store.getAuthentication();
            BEID_CertifStatus status = certAuth.getStatus();
            string textStatus;
            if (status == BEID_CertifStatus.BEID_CERTIF_STATUS_VALID)
                 textStatus = "The authentication certificate is issued from a trusted root";
            else if (status == BEID_CertifStatus.BEID_CERTIF_STATUS_VALID_CRL)
                 textStatus = "The authentication certificate has been succesfully verify
through CRL validation";
            else if (status == BEID_CertifStatus.BEID_CERTIF_STATUS_VALID_OCSP)
                 textStatus = "The authentication certificate has been succesfully verify
through OCSP validation";
            else if (status == BEID_CertifStatus.BEID_CERTIF_STATUS_REVOKED)
                 textStatus = "The authentication certificate is revoked";
            else
                 textStatus = "The authentication certificate could not be validated";




5    Introduction des lettres arabes

L’introduction de lettres arabes se fait via la signature électronique, plus précisément la signature xml,
et avec l’utilisation du codage ISO-8859-6 dans la déclaration du fichier xml ainsi dans le codage de la
signature :

Voici la déclaration du fichier xml :

     <? xml version="1.0" encoding="ISO-8859-6" standalone="yes" ?>

L’utilité des lettre arabes c’est d’ajouter et augmenter la robustesse du codage, car il va y avoir plus de
lettre dans les combinaisons des lettres ce qui rend le cryptage plus difficile à casser.

Les espaces de noms utilisés pour la signature sont les suivants :


                                                       42
3ème Chapitre                                                Implémentation d’une carte d’identité électronique


    -    System.Security.Cryptography.Xml
    -    System.Security.Cryptography.X509Certificates

Il faut également référencer l' assembly System.Security dans votre projet.

Pour commencer il nous faut un certificat. Voyons comment accéder à nos certificats avec .Net.
Pour accéder au magasin de l'utilisateur courant il suffit donc de faire.
X509Store store = new X509Store("teststore", StoreLocation.CurrentUser);

Maintenant que nous avons accès à notre magasin, il faut l'ouvrir en indiquant la façon de l'ouvrir avec
l'énumération OpenFlags.
                store.Open(OpenFlags.ReadWrite);

Après cela on doit sélectionner le certificat signataire en spécifiant son emplacement via l’instruction ;
X509Certificate2 certificate = new X509Certificate2("c:UsersuserDesktopcertAdmin.cer");

Maintenant que nous avons sélectionné un certificat on doit l’ajouter au magasin pour pouvoir l’utiliser
plus tard dans le processus de signature il suffit de faire ;
store.Add(certificate);
store.AddRange(collection);

Après avoir récupérer le certificat, on attaque la signature XML.

Tout d'abord, il faut commencer par charger notre fichier à signer (ici ce ficher est le certificat
user.cer) et on doit le convertir en base64.
XmlDocument xmlDoc = new XmlDocument();
XmlElement element = xmlDoc.CreateElement("‫_ دة‬Certificate", xmlDsigUrl);
            element.InnerText                                                                                 =
Convert.ToBase64String(File.ReadAllBytes("c:UsersuserDesktopuser.cer"));
            xmlDoc.AppendChild(element);

Maintenant nous allons créer un objet SignedXml portant sur le document XML que l'on veut signer ;
                SignedXml signedXml = new SignedXml();

Création de l'élément XML contenant les données à signer ;
XmlElement element = xmlDoc.CreateElement("‫_ دة‬Certificate", xmlDsigUrl);
            element.InnerText                                                                                 =
Convert.ToBase64String(File.ReadAllBytes("c:UsersuserDesktopuser.cer"));
            xmlDoc.AppendChild(element);

On récupère la clé utilisée à la signature du certificat signataire(certAdmin.cer) ;
signedXml.SigningKey = certificate.PrivateKey;

Enfin on doit créé la référence des données à signer, générer et sauvegarder la signature dans un fichier
appelé enveloping.xml .
Le code source c# complet doit être comme suit ;

                //Creation d'un nouveau X509 store appellé teststore à partir du local certificate
store.
                X509Store store = new X509Store("teststore", StoreLocation.CurrentUser);


                                                    43
3ème Chapitre                                             Implémentation d’une carte d’identité électronique

                store.Open(OpenFlags.ReadWrite);


                // X509Certificate2 certificate = new X509Certificate2();

            //Creation des certificats à partir du fichier du certificat.
            X509Certificate2                 certificate                  =                             new
X509Certificate2("c:UsersuserDesktopcertAdmin.cer");


                //création d'une collection et l'ajout des deux certificat.
                X509Certificate2Collection collection = new X509Certificate2Collection();
                collection.Add(certificate);

                //Ajout des certificats dans le store.
                store.Add(certificate);
                store.AddRange(collection);


            X509Certificate2Collection                     storecollection                                 =
(X509Certificate2Collection)store.Certificates;
            Console.WriteLine("Store name: {0}", store.Name);
            Console.WriteLine("Store location: {0}", store.Location);
            foreach (X509Certificate2 x509 in storecollection)
            {
                Console.WriteLine("certificate name: {0}", x509.Subject);
            }

                string xmlDsigUrl = SignedXml.XmlDsigNamespaceUrl;


                // Création de l'élément XML contenant les données à signer
                XmlDocument xmlDoc = new XmlDocument();

            XmlElement element = xmlDoc.CreateElement("‫_ دة‬Certificate", xmlDsigUrl);
            element.InnerText =
Convert.ToBase64String(File.ReadAllBytes("c:UsersuserDesktopuser.cer"));

            //insertion de la photo
            XmlElement element_photos = xmlDoc.CreateElement("‫_ رة‬Picture", xmlDsigUrl);
            element_photos.InnerText =
Convert.ToBase64String(File.ReadAllBytes("c:UsersuserDesktopPhotos.jpg"));
            element.AppendChild(element_photos);

                //insertion du nom
                XmlElement element_Nom = xmlDoc.CreateElement("   ‫_ا‬FirstName", xmlDsigUrl);
                element_Nom.InnerText = " ";
                element.AppendChild(element_Nom);

                //insertion du prénom
                XmlElement element_PreNom = xmlDoc.CreateElement("    ‫_ا‬LastName", xmlDsigUrl);
                element_PreNom.InnerText = "‫;"وا ط‬
                element.AppendChild(element_PreNom);
                xmlDoc.AppendChild(element);

                // Instanciation de l'objet SignedXml
                SignedXml signedXml = new SignedXml();


                                                   44
La carte d'identité electronique (e id)
La carte d'identité electronique (e id)
La carte d'identité electronique (e id)
La carte d'identité electronique (e id)
La carte d'identité electronique (e id)
La carte d'identité electronique (e id)
La carte d'identité electronique (e id)

Contenu connexe

En vedette

Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Riadh K.
 
Domiciliation presentation tsp
Domiciliation presentation  tspDomiciliation presentation  tsp
Domiciliation presentation tsp
renicoh
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Riadh K.
 

En vedette (11)

Memoire Management interculturel France Mexique
Memoire Management interculturel France Mexique Memoire Management interculturel France Mexique
Memoire Management interculturel France Mexique
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
 
Gemalto Marketing - Case study
Gemalto Marketing - Case studyGemalto Marketing - Case study
Gemalto Marketing - Case study
 
Rapport De PFE
Rapport De PFERapport De PFE
Rapport De PFE
 
Pfe: ETUDE DU MARKETING A L’EXPORTATION:Cas des produits agroalimentaires a...
Pfe:  ETUDE DU MARKETING  A L’EXPORTATION:Cas des produits agroalimentaires a...Pfe:  ETUDE DU MARKETING  A L’EXPORTATION:Cas des produits agroalimentaires a...
Pfe: ETUDE DU MARKETING A L’EXPORTATION:Cas des produits agroalimentaires a...
 
Rapport de stage (promoteur immobilier )
Rapport de stage (promoteur immobilier )Rapport de stage (promoteur immobilier )
Rapport de stage (promoteur immobilier )
 
Swiss Microtech Enterprise Network
Swiss Microtech Enterprise NetworkSwiss Microtech Enterprise Network
Swiss Microtech Enterprise Network
 
Domiciliation presentation tsp
Domiciliation presentation  tspDomiciliation presentation  tsp
Domiciliation presentation tsp
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
 
Memoire final
Memoire finalMemoire final
Memoire final
 
Abc rapport de-stage
Abc rapport de-stageAbc rapport de-stage
Abc rapport de-stage
 

Similaire à La carte d'identité electronique (e id)

Cyres1 formation-les-bases-du-reseau-preparation-aux-cursus-reseaux-microsoft...
Cyres1 formation-les-bases-du-reseau-preparation-aux-cursus-reseaux-microsoft...Cyres1 formation-les-bases-du-reseau-preparation-aux-cursus-reseaux-microsoft...
Cyres1 formation-les-bases-du-reseau-preparation-aux-cursus-reseaux-microsoft...
CERTyou Formation
 
Cyres1 formation-les-bases-du-reseau-preparation-aux-cursus-reseaux-microsoft...
Cyres1 formation-les-bases-du-reseau-preparation-aux-cursus-reseaux-microsoft...Cyres1 formation-les-bases-du-reseau-preparation-aux-cursus-reseaux-microsoft...
Cyres1 formation-les-bases-du-reseau-preparation-aux-cursus-reseaux-microsoft...
CERTyou Formation
 

Similaire à La carte d'identité electronique (e id) (20)

E Id Card
E Id CardE Id Card
E Id Card
 
Projet de la carte chifa algérien de l'idée à la rélisation
Projet de la carte chifa algérien de l'idée à la rélisationProjet de la carte chifa algérien de l'idée à la rélisation
Projet de la carte chifa algérien de l'idée à la rélisation
 
Semlex documents fiduciaires
Semlex documents fiduciairesSemlex documents fiduciaires
Semlex documents fiduciaires
 
Rapport version finale kouakou aboua pokou alexis
Rapport version finale kouakou aboua pokou alexis Rapport version finale kouakou aboua pokou alexis
Rapport version finale kouakou aboua pokou alexis
 
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...
 
NV-chapitre-3 (2).doc
NV-chapitre-3 (2).docNV-chapitre-3 (2).doc
NV-chapitre-3 (2).doc
 
Analyse trafic-urbain-temps-reel
Analyse trafic-urbain-temps-reelAnalyse trafic-urbain-temps-reel
Analyse trafic-urbain-temps-reel
 
Mrnc n7 2019
Mrnc n7 2019Mrnc n7 2019
Mrnc n7 2019
 
Système de supervision des réseaux de capteurs sans fil
Système de supervision des réseaux de capteurs sans filSystème de supervision des réseaux de capteurs sans fil
Système de supervision des réseaux de capteurs sans fil
 
ETUDE ET MISE EN PLACE D'UNE SOLUTION DE CLOUD COMPUTING PRIVÉ BASÉE SUR UN ...
ETUDE ET MISE EN PLACE D'UNE SOLUTION DE CLOUD COMPUTING  PRIVÉ BASÉE SUR UN ...ETUDE ET MISE EN PLACE D'UNE SOLUTION DE CLOUD COMPUTING  PRIVÉ BASÉE SUR UN ...
ETUDE ET MISE EN PLACE D'UNE SOLUTION DE CLOUD COMPUTING PRIVÉ BASÉE SUR UN ...
 
Crypto camer
Crypto camerCrypto camer
Crypto camer
 
Cyres1 formation-les-bases-du-reseau-preparation-aux-cursus-reseaux-microsoft...
Cyres1 formation-les-bases-du-reseau-preparation-aux-cursus-reseaux-microsoft...Cyres1 formation-les-bases-du-reseau-preparation-aux-cursus-reseaux-microsoft...
Cyres1 formation-les-bases-du-reseau-preparation-aux-cursus-reseaux-microsoft...
 
Cyres1 formation-les-bases-du-reseau-preparation-aux-cursus-reseaux-microsoft...
Cyres1 formation-les-bases-du-reseau-preparation-aux-cursus-reseaux-microsoft...Cyres1 formation-les-bases-du-reseau-preparation-aux-cursus-reseaux-microsoft...
Cyres1 formation-les-bases-du-reseau-preparation-aux-cursus-reseaux-microsoft...
 
Système de personnalisation et d'édition de Cartes Biométriques - Semlex FR
Système de personnalisation et d'édition de Cartes Biométriques - Semlex FRSystème de personnalisation et d'édition de Cartes Biométriques - Semlex FR
Système de personnalisation et d'édition de Cartes Biométriques - Semlex FR
 
TFC_KATSHINDA_MBEMBA_GRACE_2017_2018
TFC_KATSHINDA_MBEMBA_GRACE_2017_2018TFC_KATSHINDA_MBEMBA_GRACE_2017_2018
TFC_KATSHINDA_MBEMBA_GRACE_2017_2018
 
Conception et réalisation d’un MINI SMART HOME
Conception et réalisation  d’un MINI SMART HOMEConception et réalisation  d’un MINI SMART HOME
Conception et réalisation d’un MINI SMART HOME
 
Déportation d'une connexion Internet via WiFi
Déportation d'une connexion Internet via WiFiDéportation d'une connexion Internet via WiFi
Déportation d'une connexion Internet via WiFi
 
Internet des objets : quels défis pour la protection des données personnelles ?
Internet des objets : quels défis pour la protection des données personnelles ?Internet des objets : quels défis pour la protection des données personnelles ?
Internet des objets : quels défis pour la protection des données personnelles ?
 
Chris memoire fin WORD
Chris memoire fin WORDChris memoire fin WORD
Chris memoire fin WORD
 
MUKENGE KANKONDE Zack mise en place d'un système de stockage et sauvegarde d...
MUKENGE KANKONDE  Zack mise en place d'un système de stockage et sauvegarde d...MUKENGE KANKONDE  Zack mise en place d'un système de stockage et sauvegarde d...
MUKENGE KANKONDE Zack mise en place d'un système de stockage et sauvegarde d...
 

La carte d'identité electronique (e id)

  • 1. République Algérienne Démocratique et Populaire Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université des Sciences et de la Technologie Houari Boumediene Faculté d’Electronique et d’Informatique Mémoire de Master Domaine Mathématiques et Informatique Filière Informatique Spécialité Réseaux et Systèmes Distribués (RSD) Thème LA CARTE D’IDENTITÉ ÉLECTRONIQUE (eID) Proposé par : Présenté par : MM. Dr. A.BELKHIR OUADJAOUT Lamine ZERGOUG Salim Devant le jury : M. A.AISSANI Président Mme. N.HADDOUCHE Examinateur Mlle. L.ALIOUANE Examinateur Projet n°. 55/10/RSD
  • 2.
  • 3. Remerciements Nous tenons à remercier nos familles respectives (nos chers parents, frères, cousins, etc.) pour leurs soutien, conseils et aide indéfectible, ainsi que tous nos amis (Mohamed, Brahim, Rachid, Abdelkader, Zaki, Halim, Kamel, Sofiane, Meziane, Nabil et beaucoup d'autres) avec qui nous avons partagé le bon et le moins bon, les hauts et les bas de notre cursus universitaire. Nous exprimons notre reconnaissance aux professeurs, et en premier lieu à notre promoteur Dr. BELKHIR, qui nous ont apporté beaucoup de connaissances dans ce vaste domaine des « Réseaux et Système Distribués». Nous voulons également exprimer notre profonde gratitude à Mr. ZERROUR AKLI, Mr. Ali ABDI, Mr. Mehdi NEDDAF, Mr. BENSALEH Mustapha, Mr. BENHAMOUDA Hocine, ainsi qu’a tous ceux qui nous ont soutenus de prés ou de loin.
  • 4. SOMMAIRE Introduction générale -------------------------------------------------------------------------------------------- 1 CHAPITRE I – Etat de l’art ---------------------------------------------------------------------------------- 2 I.1 - Introduction ----------------------------------------------------------------------------------------------------- 3 I.2 – Carte d’identité électronique en Algérie ------------------------------------------------------------------ 3 I.3 – Norme de cartes d’identités électroniques---------------------------------------------------------------- 3 I.4 – Outils d’une carte d’identité électronique ---------------------------------------------------------------- 6 I.5 - Conclusion ---------------------------------------------------------------------------------------------------- 11 CHAPITRE II – Signature électronique---------------------------------------------------------------- 12 II.1 – Rappels et définitions ------------------------------------------------------------------------------------ 13 II.2 – Quelque normes et standards --------------------------------------------------------------------------- 15 II.3 – Principe de fonctionnement de la signature électronique ----------------------------------------- 17 II.4 – Cadre technologique et organisationnel de la signature électronique --------------------------- 18 II.5 – Types de signatures --------------------------------------------------------------------------------------- 26 II.6 – Cadre juridique de la signature électronique en Algérie ------------------------------------------- 28 II.7 - Conclusion -------------------------------------------------------------------------------------------------- 29 CHAPITRE III – Implémentation d’une carte d’identité électronique -------------------- 30 III.1 – Introduction ----------------------------------------------------------------------------------------------- 31 III.2 – Création d’une autorité de certification -------------------------------------------------------------- 31 III.3 – Installation des SDK------------------------------------------------------------------------------------- 36 III.4 – Réalisation d’une application DZeID ---------------------------------------------------------------- 37 III.5 – Introduction des lettres arabes ------------------------------------------------------------------------- 42 III.6 - Proposition d’un modèle de carte d’identité électronique Algérienne-------------------------- 48 III.7 - Conclusion ------------------------------------------------------------------------------------------------- 48 Conclusion générale -------------------------------------------------------------------------------------------- 49 Références bibliographiques -------------------------------------------------------------------------------- 50
  • 5. Introduction générale La communication électronique est devenue très importante ces dernières années. D’où le besoin de pouvoir identifier les personnes via un système électronique. La carte d’identité électronique: eID contient une puce électronique qui protège les données personnelles de manière optimale. L’eID nous permet de régler de nombreuses questions administratives depuis votre ordinateur. En outre, l’eID nous offre une foule d’autres possibilités: envoyer des documents électroniques et des e-mails recommandés, sécuriser les séances de chat des enfants, accéder au parc à conteneurs ou même vous identifier sur le réseau informatique de votre entreprise. Pour l’implémentation d’une carte identité électronique on passe par plusieurs étapes: Création des autorité de certifications Installation du SDK Réalisation d'une application DZeID Introduction des lettres arabes Nous avons organisé notre travail de la manière suivante: 1er Chapitre: Etat de l’art. 2ème Chapitre: Signature électronique. 3ème Chapitre: Implémentation d’une carte d’identité électronique. 1
  • 7. 1erChapitre Etat de l’art 1. Introduction: La carte d'identité électronique, appelée aussi «electronic IDentity» [eID 08], est un nouveau type de carte d'identité qui a vu le jour dans de nombreux pays, elle permet à l'utilisateur de posséder un moyen sûr pour accéder à de nombreuses applications d’institutions publiques ou privées et d’entreprises. L’eID est constituée d’une carte à puce contenant toutes les informations personnelles imprimées (sur la carte) tel que ; la photo du propriétaire, nom et prénom, sexe, nationalité, date et lieu de naissance, signature, période de validité, etc... .Mais aussi des informations électronique (se trouvant dans la puce) tel que : l’adresse, le statut spécial (handicapé mental, handicapé physique, etc.), un algorithme de type RSA (de 1024- bit) pour l'authentification, une infrastructure à clés publiques (Public key infrastructure, PKI) du type X.509, une photo sous norme [JPEG 99]. figure1.1: exemple d'une eID au royaume belge 2. La carte d'identité électronique en Algérie: Dans le cadre des efforts de l'état algérien de mettre en place un gouvernement électronique, l'Algérie tente la numérisation de la carte d’identité nationale au cours de l’année 2011, on espère mettre en place cette CNIBE (Carte Nationale d’Identité Biométrique et Electronique) grâce à la complexité du système utilisé sous des codes de sécurité difficiles à décrypter. L’autre nouveauté de ce système inédit, réside dans le fait que désormais, le citoyen n’aura à fournir qu’un seul dossier dans sa vie. Ainsi la création d’un registre national de l’état civil avec l’institution d’un numéro d’identification national unique NIN (National Identity Number) pour chaque citoyen [MICL 09]. 3. Normes de cartes d'identité électronique: Les cartes doivent être conformes a plusieurs standards réunis sous la norme [ISO/IEC 7816] ISO/IEC 7816 L’ISO/IEC 7816 fait partie d'une série de normes qui décrivent les paramètres des cartes d'identification, tels qu'ils sont définis dans l'ISO/IEC 7810, et l'utilisation de ces cartes pour les échanges internationaux. La présente partie de l'ISO/IEC 7816 spécifie directement ou par référence les éléments de données (DE), qui comprennent les DE composites, utilisés dans l'échange intersectoriel et basés sur les cartes à circuits intégrés (ICC). Elle identifie les caractéristiques ci-dessous de chaque DE : 3
  • 8. 1erChapitre Etat de l’art • Identificateur ; • Nom ; • Description et référence ISO ; • Format et codage (s'il n'est pas disponible dans d'autres normes ISO ou dans les autres parties de l'ISO/IEC 7816). La disposition de chaque DE est décrite telle qu'elle apparaît à l'interface entre le dispositif d'interface (IFD) et le ICC. La présente partie de l'ISO/IEC 7816 définit les moyens d'extraction des DE dans la carte (octets historiques, remise à zéro, commandes à exécuter et commandes définies dans cette norme internationale). La présente partie de l'ISO/IEC 7816 donne la définition des DE sans considération des restrictions faites sur l'utilisation des DE. Il est prévu d'incorporer de nouveaux objets de données intersectoriels dans la présente norme, de nombreuses révisions, rectificatifs techniques et amendements ont étés apportées à ce standard : ISO/IEC 7816-6:2004 ISO/IEC 7816-6:2004/Cor 1:2006 ISO/IEC 7816-1:1998 ISO/IEC 7816-2:2007 ISO/IEC 7816-3:2006 ISO/IEC 7816-4:2005 ISO/IEC 7816-5:2004 ISO/IEC 7816-7:1999 ISO/IEC 7816-8:2004 ISO/IEC 7816-9:2004 ISO/IEC 7816-10:1999 ISO/IEC 7816-11:2004 ISO/IEC 7816-12:2005 ISO/IEC 7816-13:2007 ISO/IEC 7816-15:2004 L'ISO/IEC 7816 comprend des parties, présentées sous le titre général Cartes d’identification— Cartes à circuit(s) intégré(s) à contacts, voici ces parties: Partie 1: Caractéristiques physiques; Cette norme définit les caractéristiques physiques des cartes à puce : la géométrie, la résistance, les contacts, etc. Partie 2: Dimensions et emplacements des contacts; Cette norme spécifie le dimensionnement physique (extérieur) des contacts de la puce. Partie 3: Signaux électroniques et protocoles de transmission; Cette norme définit : - les protocoles de transmission - la sélection d’un type de protocole, - la réponse à un reset qui correspond aux données envoyées par la carte immédiatement après la mise sous tension, - les signaux électriques, tels que le voltage, la fréquence d’horloge et la vitesse de communication. Partie 4: Commandes intersectorielles pour les échanges; Cette norme vise à assurer l’interopérabilité des échanges. Elle définit les messages APDU (Application Protocol Data Units), par lesquels les cartes à puce communiquent avec le lecteur. Les échanges s’effectuent en mode client-serveur, le terminal ayant toujours l’initiative de communication. Partie 5: Système de numérotation et procédure d’enregistrement d’identificateurs d’applications; Définit le système de numérotation et les procédures d’enregistrement et d’attribution 4
  • 9. 1erChapitre Etat de l’art des identifiants des applications. Un unique identifiant est associé à chaque application et à certains fichiers sur la carte. Ils sont représentés par des tableaux d’octets de taille allant de cinq à seize. Partie 6: Éléments de données intersectoriels; Cette norme spécifie des éléments de données inter-industrie pour les échanges, tels que le numéro du porteur de carte, sa photo, sa langue, la date d’expiration, etc. Partie 7: Commandes intersectorielles pour langage d’interrogation de carte structurée; Cette norme définit les commandes de langage d’interrogation de carte structurée via un langage spécifique SCQL (Structured Card Query Language). Partie 8: Commandes intersectorielles de sécurité; il spécifie les commandes utilisés pour les opérations cryptographiques. Ces commandes sont complémentaires et basées sur des commandes répertoriées dans la norme 4. Partie 10: Signaux électroniques et réponse à la mise à zéro des cartes synchrones; Cette partie spécifie les structures de signalisation, et la structure de la réponse entre une carte à circuit intégré (s) avec transmission synchrone et un dispositif d'interface tel qu'un terminal. Partie 11: Vérification personnelle par méthodes biométriques; il spécifie l'utilisation des commandes interindustrielles et des objets de données personnelles liées à la vérification par des méthodes biométriques dans les cartes à circuits intégrés. Les commandes utilisées sont définies dans la norme ISO / CEI 7816-4. Cette partie est utilise pour des usages de vérification et de sécurité Partie 12: Cartes à contacts - Interface électrique USB et procédures de fonctionnement; précise les conditions de fonctionnement d'une carte à circuit intégré, ce type de carte est nommé USB-CPI, elle définie : Les conditions électriques afin d'exploiter l'interface USB-CPI. Les descripteurs USB standard et le descripteur de la classe USB spécifiques; Le transfert de données entre l'hôte Les transferts de contrôle permettent l'utilisation de deux protocoles différents Les transferts optionnels d'interruption pour indiquer des événements asynchrones L'état et les conditions d'erreur Partie 13: Commandes pour la gestion d'application dans un environnement de plusieurs applications; Partie 15: Application des informations cryptographiques; Cette partie spécifie les informations de chiffrement présentées sous format ASN.1 (Abstract Syntax Notation One) [ISO/IEC et ITU-T 84], elle supporte les fonctionnalités suivantes: • le stockage de plusieurs instances d'information de cryptographie dans une carte; • l'utilisation des informations cryptographiques; • récupération des informations de chiffrement; • différents mécanismes d'authentification et plusieurs algorithmes de chiffrement. 5
  • 10. 1erChapitre Etat de l’art 4. Outils d’une carte d'identité électronique L’utilisation d'une carte d'identité électronique nécessite un certain nombre d'outils : 4.1. Les lecteurs de carte: Une carte à puce: faite en matière plastique, ou en papier ou en carton, de quelques centimètres de côté et moins d'un millimètre d'épaisseur, portant au moins un circuit intégré capable de contenir de l'information. Le circuit intégré (la puce) peut contenir un microprocesseur capable de traiter cette information, ou être limité à des circuits de mémoire non volatile et, éventuellement, un composant de sécurité (carte mémoire). Les cartes à puce fournissent des moyens d'effectuer des transactions d'une manière flexible, bloquée, standard avec une intervention humaine minimale. Figure1.2: Carte à microcalculateur CP8 (Première carte à puce commercialisée) 4.2. Les lecteurs de carte: Un lecteur de carte est un petit appareil spécial permettant de relier la carte au PC. Le principal objectif de ce lecteur de carte est d’établir un canal de communication entre les programmes sur l’ordinateur et la puce de la carte d’identité, la plupart des nouveaux ordinateurs portables et des nouveaux claviers ont un lecteur de carte à puce intégré cependant il existe plusieurs types de cartes: Les lecteurs de cartes à puce simples: ils permettent de lire les informations contenues sur la puce de la carte d'identité électronique en introduisant le code PIN par le biais d'un clavier de PC. Les lecteurs de cartes à puce avec PIN-pad: Améliorent le niveau de sécurité en introduisant un code PIN encodé sur l'appareil ne sort pas du lecteur et peut dès lors difficilement être intercepté par un hacker. Deux modèles existent, dont un permet de lire uniquement les cartes d’identité électroniques. lecteur de cartes pour ordinateur portable: Ce type de lecteurs s’insèrent dans une fente PC-CARD (ou PCMCIA pour Personal Computer Memory Card International Association), ils sont donc 6
  • 11. 1erChapitre Etat de l’art totalement incorporés dans l’ordinateur. Voici un tableau comparatif entre type de lecteurs: Type de lecteur de Avantage Inconvenient cartes Lecteur simples - Compatible avec presque toutes - Le niveau de sécurité; code PIN les applications peut être intercepte car il doit être entré via le clavier de PC - Le prix: Bon marché Lecteur avec PIN- - Le niveau de sécurité: plus élevé - Certaines applications (entre pad qu'un lecteur simple car le code autres Netscape et Mozilla) ne PIN ne sort pas de lecteur sont pas compatibles à 100% - La plupart du temps uniquement - Facilité d’utilisation sous Windows - Certains modèles exigent des - Facilité d’utilisation batteries et/ou une alimentation électrique séparée Lecteur pour - Compatible avec presque toutes - Le prix: Un peu plus cher qu'un ordinateur portable les applications lecteur de cartes simple. - Certaines marques proposent également des pilotes pour Linux Tab1.1: Tableau comparatif des différents types de lecteurs de cartes Les informations de la carte d'identité électronique sont privées, on doit garder leur confidentialité à tout prix, et pour cela on emploie la cryptographie afin de chiffrer ces informations et les rendre incompréhensibles. 4.3. La cryptographie: Le mot cryptographie vient du grec cryptos (signifiant "caché") et graphein (pour "écrire"), la cryptographie est l’art et la science qui vise à garder un secret visant à protéger un échange d’informations par un codage du message. Le général spartiate [BER] était le premier à utiliser la cryptographie depuis 400 ans avant notre ère, en se servant d'un bâton (appelé scytale). Le Romain Jules César employait une substitution simple de lettres pour communiquer avec ses généraux. Pour crypter (chiffrer, coder) un message on doit utiliser un algorithme de cryptographie qui contient quatre entités ; le plaintext ou texte en clair, la clé de chiffrage (ces deux entités sont utilise pour chiffrer le message), le cyphertext ou texte chiffre et la clé de déchiffrage La carte d'identité électronique utilise un algorithme de cryptage asymétrique, plus précisément l'algorithme RSA (Rivest Shamir Adleman). RSA est considère comme un algorithme de cryptage probablement assez sûr puisque il y a très certainement plus de risques liés à une mauvaise utilisation qu'à une attaque mais il faut toujours garder en esprit que le risque zéro en sécurité n'existe pas, comme pour la NSA (Naional Security Agency) le décryptage du RSA n'est qu'un jeu d'enfant! 7
  • 12. 1erChapitre Etat de l’art 4.4. Signature électronique: La signature électronique est un autre outil utilisé par les cartes d'identités électronique afin d'assurer l’authenticité et l’intégrité indépendamment de la cryptographie, la signature électronique fournit un nombre à partir d'un document en entrée et ce nombre doit être unique. S’il est impossible de garantir l’unicité de la signature, il est néanmoins possible de diminuer fortement la possibilité que deux documents produisent le même résultat, comme c’est le cas dans une fonction de hachage classique. Le titulaire d'une carte d'identité électronique dispose d'une signature électronique unique qui a la même valeur qu'une signature manuscrite. La signature électronique sera traitée en détail dans le chapitre 2. 4.5. Certificat électronique: Un certificat électronique est un autre outil de sécurité qui vise la validation des clés publiques puisque rien ne garantit que la clé publique est bien celle de l'utilisateur à qui elle est associée. Une autorité de certification est chargée de délivrer les certificats et de leurs assigner une période de validité (date d'expiration), les eID utilisent un certificat d'authentification et un certificat de signature .Les certificats sont des petits fichiers composés de deux parties : Une partie contenant les informations et une deuxième partie contenant la signature de l'autorité de certification. Les certificats sont normalisés par le standard X.509 de l'Union Internationale des Télécommunications [ITU 88], qui définit les informations contenues dans cette dernière comme suit : • Version • Numéro de série • Nom du signataire du certificat • Validité (dates limite) • Nom du propriétaire du certificat • Informations sur la clé publique • Algorithme de chiffrement utilisé • Clé publique du propriétaire • Identifiant unique du signataire (optionnel, à partir de X.509 version 2) • Identifiant unique du détenteur du certificat (optionnel, à partir de X.509 version 2) • Extensions (optionnel, à partir de X.509 version 3) Ces informations seront validées (signées) par une autorité de certification, par application d’une fonction de hachage pour ces informations. Le condensé résultant est chiffré à l'aide de la clé privé de l'autorité de certification. Le certificat peut être préalablement signée par une autorité de niveau supérieur. Donc pour communiquer avec une personne, il suffit qu'il possède le certificat du destinataire. Ce certificat contient le nom du récepteur ainsi que sa clé publique et est signé par l'autorité de certification et par la suite on peut vérifier la validité du message en appliquant d'une part la fonction de hachage aux informations contenues dans le certificat, en déchiffrant d'autre part la signature de l'autorité de certification avec la clé publique de cette 8
  • 13. 1erChapitre Etat de l’art dernière et en comparant ces deux résultats. Voici un une image qui illustre la signature du certificat : figure1.3: Création et signature d’un certificat 4.6. Autorité de certification PKI (Public Key Infrastructure) : Comme on l'avait cité précédemment une autorité de certification PKI vise à signer et valider un certificat numérique. Une autorité de certification PKI est composée de plusieurs entités, ces entités sont physiquement représentées par des serveurs WEB, par exemple sur UNIX ils sont de type Apache, sous Windows ils utilisent IIS. ces serveurs contiennent différents scripts CGI (Common Gateway Interface), qui permettent d’administrer, de gérer et d’archiver les certificats. Dans le cas de UNIX la génération proprement dite des certificats est assurée par l’OpenSSL, qui offre la puissance de calcul cryptographique de la PKI. Architecture de la PKI L'architecture PKI admet plusieurs entités qui sont: a) Un Serveur Public : La connexion à ce serveur est sécurisée via l'utilisation du protocole SSL (Socket Secure layer) afin de garder les échanges de données confidentiels. Ce serveur est considéré comme l'interface entre l'architecture PKI et le client, par la suite elle lui permet la partie de transmettre des requêtes de certificats, mais également de recevoir toutes les informations fournies par la PKI c’est-à-dire : • Recevoir un certificat de l’autorité de certification • Recevoir un certificat numérique sollicité • Recevoir une liste de révocation CRL (Certificate revocation List) • Consulter des certificats numériques de tous les clients b) Un Serveur RA (Registration Authority) : Ce serveur utilise également SSL lors des échanges, et seulement un administrateur aura 9
  • 14. 1erChapitre Etat de l’art l'accès à ce serveur RA après avoir être authentifié. Le serveur RA permet de recevoir les demandes de certificats CSR (Certificate Signing Request) émises par les clients. Ces requêtes seront émises à l’administrateur de la CA (Certificate Authority) en suivant un format standardisé PCKS#10, ce serveur permet aussi de publier les certificats signés par la CA. La publication est faite de deux façons : • Soit publier des certificats sur le serveur public. • Ou bien publier des certificats dans un annuaire LDAP (Lightweight Directory Access Protocol) c) Serveur CA (Certificate Authority) : Ce serveur est considéré comme une autorité de confiance, c’est lui le responsable de la création des certificats pour les utilisateurs, ces certificats contiennent entre autre le nom du demandeur Distinguished Name (DN), sa clé publique et une date d’expiration ainsi que la fonction du certificat. Enfin le certificat sera signée par la clé privée du CA, cette clé qui est considéré comme vital pour la sécurité de toute l'architecture PKI d'ou la nécessité d'isoler le serveur CA. Service de révocation CRL (Certificate revocation List) : Un certificat numérique doit pouvoir être révoquée si un changement d’identité du propriétaire a lieu, ou si la clé privée de l’utilisateur est perdue ou divulguée on émet une demande de révocation et vérifier son authenticité. L’auteur de la demande est-il bien la personne titulaire de la clé publique? Une fois la vérification terminée, la liste des certificats révoqués est publiée. La révocation est un élément du service de publication. L’accès aux listes de révocation peut être spécifié dans le certificat sous forme d’une URL. Les clients peuvent alors téléchargés la liste de révocation CRL. Mais étant donné que cette liste est générée périodiquement par la CA, son utilisation n’est pas optimale car les utilisateurs doivent mettre à jour constamment cette liste. De plus, si une CA met à jour sa liste CRL et révoque un certificat juste après, les utilisateurs ne verront cette modification qu’après la prochaine mise à jour de la liste, cette à dire le lendemain dans certain cas, cette politique n’est pas sans risque en terme de sécurité. Pour contrer cet inconvénient les utilisateurs doivent disposer de la liste de révocation en temps réel, en vérifiant ces informations directement dans la base de données de la CA, cette vérification est possible par l’intermédiaire d’un élément OCSP (Online Certificate Status Protocol) [MYE 99] qui se chargera d’interroger la CA sur la validité d’un certificat. De ce fait, la liste de révocation de la PKI est le seul élément devant disposer d’un service d’annuaire obligatoirement connecté à Internet. Service de publication : Le service de publication permet l’accès des utilisateurs aux certificats des correspondants afin d’en extraire la clé publique. L’utilisation du service de publication n’est pas requise pour toutes les applications de chiffrement asymétrique. En particulier, l’accès à un serveur HTTPS dans le but de chiffrer les échanges ou d’authentifier le serveur ne requiert pas un accès au service de publication car le serveur HTTPS communique lui- même son certificat lors de la connexion SSL. De même, il est possible d’échanger des messages S/MIME (Secure / Multipurpose Internet Mail Extensions) sans utiliser le service de publication (l’envoi d’un message signé permet de faire 10
  • 15. 1erChapitre Etat de l’art parvenir automatiquement au correspondant son certificat). Toutefois, l’utilisation du service de publication est un élément déterminant dès que le nombre d’utilisateurs augmente. L’identité de la personne certifiée est définie dans un Distinguished Name, elle constitue donc une clé d’accès dans l’annuaire LDAP. Par ailleurs LDAP est la seule API (Application Programming Interface) normalisée et donc utilisable dans le contexte hétérogène d’Internet. figure1.4: Fonctionnement d'une PKI 5. Conclusion: Les outils de la sécurité informatique (cryptographie, signature électronique, etc.…) jouent un rôle indispensable dans le fonctionnement des cartes d'identité électronique, qui atteignent un niveau d'authenticité et de confidentialité sans précédent grâce à ces outils, ce qui rend ce type de cartes d'identité un moyen sûre d'identification qui peut être utilisé aux différentes transactions quotidienne du citoyen algérien sans avoir peur d'être falsifiées. 11
  • 16. ème 2 Chapitre Signature électronique
  • 17. 2ème Chapitre Signature électronique 1. Rappels / Définition: L’ISO (International Organization for Standardization) [ISO 89] définit la signature numérique comme étant des « données ajoutées à une unité de données ou une sorte de transformation cryptographique d’une unité de données permettant de prouver la source et l’intégrité de l’unité de données et la protégeant contre la contrefaçon ». Cette définition recouvre deux principes fondamentaux qui sont l’authentification et l’intégrité des données. Donc la signature électronique est un moyen de sécurité qui permet de valider un écrit créé et émis sous forme électronique, elle peut être considérée comme l'équivalent d’une signature manuscrite seulement appliquée pour des documents numériques, elle permet : • D’authentifier les échanges de données, de garantir la source (émetteur) des documents de façon fiable. • D'assurer l’intégrité des données reçus par le biais de vérifier que les informations n'ont pas été altérées. • De garantir le non répudiation. Puisque un signataire ne peut nier être l’auteur de la signature considérée être sous sa possession exclusif. • D'offrir une confidentialité des données grâce au chiffrement. figure2.1: L'authentification via signature 1.1. Définition de la signature électronique selon la loi algérienne [ARPT 07]: « Signature électronique sécurisée » signature électronique qui satisfait aux exigences suivantes: - être propre au signataire; - être créée par des moyens que le signataire puisse garder sous son contrôle exclusif; 13
  • 18. 2ème Chapitre Signature électronique - garantir avec l'acte auquel elle s'attache un lien tel que toute modification ultérieure de l'acte soit détectable. figure2.2: Fonctionnement de signature électronique dans une carte à puce La signature électronique utilise deux familles d’algorithmes, qui sont utilisés de manière complémentaire : - des algorithmes de chiffrement dit « asymétriques » ou à « clef publique ». - des fonctions de hachages: L’intérêt de la fonction de hachage est de permettre de signer une quantité de données beaucoup plus petite que le message entier (et de longueur fixe). 1.2. Algorithmes asymétriques: Leurs principe est simple et repose sur l'existence d'un couple de deux clés l'une appelée publique, utilisée pendant le processus de chiffrement et l'autre dite privée intervient lors le déchiffrement des données. L’authenticité du document peut être ainsi garantie. figure2.3: Algorithmes asymétriques 1.3. Fonction de hachage Les fonctions de hachages sont des fonctions à sens unique et « sans collision », donnant comme résultat après l'avoir appliquée aux données un condensé de taille fixe (appelée condensat ou empreinte), elle est dite de sens unique a cause l'impossibilité de retrouver les données initiales a partir du condensé. Elle est dite aussi sans collision ou injective car il est très difficile de trouver un résultat (condensé) identique de deux données différentes ainsi l’intégrité d’un document est contrôler via la comparaison du condensé calculé avec sa valeur initiale (le condensée reçu).fonctions de hachage les plus souventes sont le MD5 et le SHA. 14
  • 19. 2ème Chapitre Signature électronique - MD5 (MD pour Message Digest): MD5 crée une empreinte de 128 bits. MD5 était un très bon algorithme, mais l'augmentation de la puissance de calcul des ordinateurs et la progression des techniques de cryptanalyse le rendent aujourd'hui moins sûr. - SHA-1 (Secure Hash Algorithm): SHA-1 crée des empreintes de 160 bits. Il est considéré plus fiable que MD5. - SHA-256 / SHA-512, beaucoup plus sûrs mais moins répandus, créent respectivement des empreintes de 256 et 512 bits. figure2.4: Fonction de hachage 2. Quelques normes et standards Il existe un nombre considérable de normes et de standards qui englobe les certificats, la signature électronique, l’identification des algorithmes cryptographiques, les messages signés, etc. Avant de commencer il faut savoir qu'il existe un langage évolué ASN.1 (Abstract Syntax Notation One) [ISO/IEC et ITU-T 84] conçu pour décrire des structures de données. Des mécanismes (BER, Basic Encoding Rules) ont été définis pour encoder de façon standard ces structures de données afin qu’elle puisse être décodées et reconstituées sur n’importe quelle plateforme. Les mécanismes de codage de BER produisent des données binaires. Le codage Base64 permet de transformer un document binaire en une suite de caractères ASCII. La partie Base64 est entourée d’une balise de début et d’une balise de fin caractéristique du contenu. Toute chaîne de caractères qui se trouve en dehors de ces balises est considérée comme du commentaire. Ce format est communément appelé le format PEM (Privacy Enhanced Mail), du nom des standards de l’Internet relatifs à l’authentification et à la confidentialité dans la messagerie électronique. Le format DER (Distinguished Encoding Rules) correspond aux données binaires contenues dans un fichier PEM, c’est donc le résultat du décodage Base64 des données contenues entre la balise de début et la balise de fin et c'est l'ASN1 qui joue le rôle d'un interpréteur et un afficheur et même un manipulateur, Les PKCS (Public-Key Cryptography Standards) définissent douze standards (de PKCS#1 à PKCS#12) pour spécifier l’utilisation d’algorithmes de chiffrement ou d’échanges de clés, les interfaces avec des modules cryptographiques, les certificats, les requêtes de certificats, les conteneurs de diverses natures. Par exemple, PKCS#6 décrit les certificats. C’est un sur-ensemble des certificats X.509. Les deux PKCS les plus courants sont le 7 et le 12 : • Le PKCS#7 décrit les conteneurs de données. Il peut s’agir de données signées, chiffrées, signées et chiffrées ou bien d’une liste de certificats d’autorités de certification, etc. 15
  • 20. 2ème Chapitre Signature électronique • Le PKCS#12, également connu sous le nom de PFX, décrit les mécanismes qui permettent de garantir l’intégrité et la confidentialité de données comme des clés privées, des certificats d’utilisateurs ou d’autorités de certification. C’est le format utilisé pour sauvegarder ou pour transporter des certificats d’utilisateurs et les clés privées correspondantes. Les données contenues dans un fichier au format PKCS#12 sont protégées par un certain nombre de clés. L’une sert au contrôle d’intégrité des données, les autres servent à chiffrer/déchiffrer des données confidentielles comme les clés privées. En pratique, les outils usuels comme les navigateurs n’utilisent qu’une seule clé pour toutes ces opérations. Cette clé est définie par l’utilisateur au moment où il exporte son certificat et sa clé privée et elle est demandée au moment où il importe son certificat. Le format S/MIME11 définit une collection de types MIME permettant d’envoyer et de recevoir des données signées, chiffrées ou les deux à la fois via la messagerie électronique. Les données en question peuvent être elles mêmes des parties MIME, comme dans le cas où on signe un message électronique contenant un document attaché. S/MIME décrit notamment les types « multipart/signed », « application/pkcs7-signature » et « application/pkcs7-mime ». A ces standards « historiques » peuvent être ajouté plusieurs nouveaux standards mieux adaptés à nos besoins fonctionnels, en provenance notamment du monde XML. 2.1. XML Signature Ce premier standard est le résultat du groupe de travail « XML Signature WG » qui est un groupe conjoint du W3C et de l’IETF. De ces travaux sont issus une « Recommandation » du W3C et une « Standard track » de l’IETF, « XML-Signature Syntax and Processing12 » / RFC327513. figure2.5: Exemple de signature XML 16
  • 21. 2ème Chapitre Signature électronique XML Signature a été conçu pour permettre la signature des échanges XML. Pour cela, l’essentiel des fonctionnalités offertes par les signatures de type PKCS ont été reprises, avec un certain nombre d’apports propres à XML, dont le principal est sans doute la possibilité offerte de pouvoir ne signer qu’une partie de l’arbre XML, autrement dit d’un document. La signature d’un document va consister à construire une liste de références (URI), puis de calculer pour chacune d’entres elles un condensat. Cette liste de condensat fera à son tour l’objet d’un hachage, qui sera signé. On pourra alors ajouter divers éléments, tels que le certificat du signataire qui peuvent être internes ou externe au document, concerner tout ou partie de celui-ci, etc. La figure 2.5 offre un exemple de signature XML. Plusieurs implémentations de XML Signature sont actuellement disponibles, on peut citer : - XMLsec [W3C 08]: diffusé sous licence MIT et qui peut appuyer sur les couches cryptographiques d’OpenSSL, Mozilla (NSS), GnuTLS ou Microsoft MSCryptoAPI. XMLsec propose une API C++. - Apache XML Security : du groupe Apache, diffusé sous licence Apache Software Licence, qui propose une double API, Java et C++. 2.2. XML Advanced Electronic Signatures (XAdES) [W3C 03] XAdES est une extension de XML Signature. Les extensions concernent notamment le domaine de la non répudiation, en définissant des formats XML pour les « Signatures électroniques avancées » susceptibles de rester valides pendant de grandes périodes, conformément à la « Directive Européenne 1999/93/EC ». XAdES est le résultat des travaux de la section STF de l’ETSI. Une « note W3C » reprend ces spécifications, en vue d’une recommandation W3C. Concernant la mise en œuvre de XAdES, si les implémentations ne sont pas extrêmement nombreuses, il est néanmoins incontournable de citer l’initiative OpenXAdES, qui, comme le nom l’indique, est une initiative ouverte autour de XAdES. 3. Principe de fonctionnement de la signature numérique On peut résumer le fonctionnement d’une signature comme suit : on possède d’un algorithme de chiffrement à clé publique, soit CA la fonction de chiffrement et DA celle de déchiffrement. On sait que la fonction CA est connue de tous, par la clé publique associée à l’algorithme, tandis que DA n’est pas connue que par le possesseur et soit par exemple Alice le possesseur de la clé privée. Lorsque Alice souhaite signer un message M, elle applique une fonction de signature S talque S=CA (M). Toute personne ayant le message M et la signature S peut vérifier qu’Alice est à l’origine de la signature en calculant DA (S). Si cette quantité est bien égale à M, alors on peut être certain qu’Alice est l’auteur de la signature, car seule elle peut produire DA (M), puisqu’elle est la seule à connaître DA. On peut également vérifier l'intégrité du message, puisque altérer le message, il faudrait également altérer la signature de manière cohérente, ce qui n’est possible que si l’on dispose de DA. En définitive, on ne signe pas le message M, mais seulement l’empreinte (le hash) de M par une Fonction de hachage. La sûreté de la signature réside alors dans le choix de la fonction de hachage. Il faut que la fabrication d’un message ayant une empreinte étant donné un message et son empreinte, il soit très difficile de fabriquer un message ayant une empreinte (et donc une signature) égaux a un autre message et empreinte soit le plus difficile possible. La signature numérique nécessite l’utilisation de certificats électroniques. Ces dernières sont générées par des autorités de certification, qui permettent d’identifier de façon unique la personne (ou l’entité) qui possèdent les clés publique et privée : les certificats peuvent être vus comme la carte d’identité numérique de cette personne ou de cette entité. 17
  • 22. 2ème Chapitre Signature électronique 4. Cadre technologique et organisationnel de la signature électronique La signature électronique utilise la technologie d’infrastructure de gestion de clé publique (IGC ou PKI pour Public Key Infrastructure). Une infrastructure de gestion de clé (IGC) désigne un cadre organisationnel ainsi qu’une infrastructure technique. Elle met en œuvre les opérations d’authentification, de création de la signature électronique et le chiffrement. L’IGC est donc une Structure à la fois technique et administrative. Un pourcentage de 80 % d’organisation structurelle et humaine et de 20 % de technique est nécessaire pour la mise en œuvre et la maintenance d’une IGC. Une IGC est basée sur le cadre technologique suivant : • un certificat numérique qui est l’équivalent d’un passeport numérique ; • le chiffrement à clé asymétrique qui comprend deux clés : une clé publique et une clé privée. Ces technologies sont employées dans un cadre formalisé : • des acteurs identifiés : autorité de certification, d’enregistrement ; • une politique de certification. Enfin l’IGC est mise en œuvre en fonction : • des services offerts : signature, chiffrement, horodatage, archivage ; • du périmètre couvert : procédure à usage interne ou à destination de publics externes ; • du mode d’industrialisation : réalisé en interne ou externalisé. 4.1. L’IGC (Infrastructure de Gestion de Clés) : Définition : appelée aussi PKI (Public key Infrastructure) ou encore IGP (Infrastructure de Gestion de clés Public), c’est une autorité de certification qui a pour but d’authentifier les clés publiques et cela en fournissant des pièces numériques aux usagers appelées certificats numériques, ces certificats doivent être largement publiées mais aussi signées par cette autorité afin de garantir leurs crédibilités aux yeux des usagers. Pour obtenir un certificat le client doit faire transmettre une requête avec sa clé publique à une autorité connue, cette dernière va construire un certificat incorporant la clé publique du client et ce certificat sera signé par sa clé privée figure2.6: Principe de fonctionnement d'une PKI 18
  • 23. 2ème Chapitre Signature électronique Par la suite l’organisme de certification publiera le certificat avec la clé publique et l’identité de l’usage et quiquonque peut la consulter et de cette façon la clé publique de l’usage est authentifiée car on a confiance dans l’autorité de certification 4.1.1. Gestion des clés: La gestion des clés est garantie en appliquant les étapes suivantes Génération Distribution Stockage Suppression. Archivage Recouvrement Génération des clés On peut générer deux types de clés : Symétriques: elles sont générées via un générateur de nombres aléatoires ou pseudo aléatoires mais il faut surtout savoir choisir le domaine de valeurs dans lequel les clés seront définies car choisir un domaine faible signifie avoir des clés plus vulnérables Asymétriques: elles sont générées selon des processus complexe et suivant un nombre premier et certains paramètres suivant l’algorithme Distribution des clés Cette opération désigne le déplacement de clé de cryptage. Il existe deux étapes distinctes pour la distribution de clés; création de la clé initiale et la création des clés ultérieures. Avant tout, on génère la clé initiale appelée aussi clé maitraisse ensuite en utilise cette clé afin de pourvoir distribuer les clés ultérieures. Stockage des clés Apre la distribution on doit stocker la clé c’est à dire la garder et la protéger tout en assurant son intégrité et sa confidentialité à tout prix. L’intégrité et l’authenticité pourront être assure par le contrôle d’accès, mais la confidentialité de la clé ne peut être garantie qu’avec son stockage sur support hardware. Suppression de clés On passe a ce niveau seulement si la clé expire c'est-à-dire elle perd sa validité ou bien si on l’a soupçonne d’avoir perdu sa confidentialité parla suite la clé et ses copies symétriques seront détruites pour le cas symétrique ou bien de clés publique pour le cas asymétrique. L’archivage est une exception pour cette règle. Archivage des clés L’archivage des clés permet de conserver une copie des clés même si elles ne sont plus utilisées, Recouvrement des clés (Key Recovery) Cette opération intervient quand le client perd sa clés ou bien pendant l’absence de celui-ci (par exemple la mort), elle permet d’avoir un double de la clé prive, cette clé qui était stockée et cryptée dans un emplacement spécial 4.1.2. Annuaire et PKI Les annuaires contiennent les informations concernant les systèmes, les services réseau et les utilisateurs. De ce fait, un service d'annuaire peut être très simple, mais également devenir d'une grande complexité suivant la nature des informations contenues. Les composants d’une PKI doivent avoir un stockage organisé et un accès facile. Le service d’annuaire peut participer à cette tâche en assurant une organisation adéquate des données de la PKI est permettre son accès de façon simple. Le service d’annuaire est utile dans le cas d’une PKI pour différentes raisons : 19
  • 24. 2ème Chapitre Signature électronique Les certificats générés par une PKI peuvent être stockés dans l’annuaire et récupérés facilement par les utilisateurs et les applications. L’annuaire peut stocker également la liste de révocation CRL, permettant ainsi aux utilisateurs de vérifier la validité d’un certificat de façon simple. Les organisations PKI qui permettent de gérer le recouvrement de clé, peuvent utiliser l’annuaire pour stocker les clés privées, cryptées bien évidemment. Les PKI mettant en œuvre un service de recouvrement de clé privée disponible dans un annuaire permettent un déploiement vraiment mobile des applications Pour être compatible avec la PKI, l’annuaire doit répondre à deux critères : 1. L’annuaire doit supporter le protocole LDAP (Lightweight Directory Access Protocol) le standard pour l’accès aux données par annuaire. 2. L’annuaire doit supporter le standard X.509v3 et permettre de stocker des CRL. 4.2. Signature électronique, PKI et certificat : De même qu’une carte d’identité ou un passeport, un certificat est délivré par une autorité, que l’on qualifie de certification, il est utilisé pour assurer la validité de la clé publique, ainsi la signature électronique est calculée sur les informations contenues dans le certificat, cette signature est l’empreinte de ces informations chiffrée avec la clé privée de l’autorité de certification. Le format reconnu actuellement pour le certificat est le formatX509v3. 4.2.1. Certificat électronique: Sans un certificat électronique un système de sécurité informatique aura une grande lacune, car c'est le garant des clés publiques des usagers puisque le tout fonctionne de manière électronique sur internet, sans contact direct donc sans moyen visuel de reconnaissance d’une personne. Sans certificat un pirate par exemple qui a pu pénétrer dans un serveur d'annuaire pourra modifier les clés des utilisateurs et par la suite il pourra lire les messages confidentiels ainsi signer des document en faisant passer par les usagers de cet annuaire. Pour récapituler, un certificat électronique est utilisé dans le cadre d’une infrastructure à clé publique. Cette technologie d’authentification, dite forte, peut être combinée à deux autres techniques d’authentification que sont le mot de passe ou la biométrie pour atteindre un niveau de sécurité supplémentaire (authentification à deux facteurs), comme une carte d'identité ou un passeport, elle contient les informations sur son propriétaire. figure2.7 : Analogie entre certificat électronique et carte d'identité nationale 20
  • 25. 2ème Chapitre Signature électronique - Généralement le monde informatique possède deux types de certificats: des certificats de chiffrement (utilise lors de cryptage), et les certificats de signature (utilisés par les signatures électroniques). 4.2.1.1. Un fonctionnement sécurisé des certificats: Un certificat permet d'authentifier de manière sure la personne ou l'entité avec laquelle on souhaite échanger des données, la transmission de ces dernières sera sécurisée via le chiffrement en utilisant le protocole SSL (Socket Secure Layer), ces certificats sont également employés pour différent opérations sur le réseau informatique par exemple pour les transactions commerciale (commande d’un billet d'avion par exemple) ou bancaire (consultation d’un compte, virement, etc...). 4.2.1.2. Classes de certificats: On désigne par classe de certificat le niveau de contrôle offert par ceci, on se basant sur cette définition on distingue trois classes: Classe1: Cette classe n'a pas de valeur juridique puisque elle est obtenu en ligne sans aucune vérification d'identité, la seule validation se fera sur l'adresse électroniques de l'usager, ces certificats sont généralement utilisés par des particuliers à des fins de cryptage de message sur le net. Classe2: Dans cette classe la demande de certificat doit être faite par une personne physique uniquement et c'est l'autorité de certification qui se chargera de la vérification des informations fournies par le demandeur avant la livraison du certificat. Classe3: Cette classe se diffère de la précédente par le type des demandeurs de certificats qui peuvent être physiques ou morals, ainsi par le contrôle de l'identité qui sera une vérification physique dite aussi contrôle face à face ou rapport facial. 4.2.1.3. Certificats et services de sécurité: Le certificat électronique est employé dans les différents domaines de l'informatique afin d'assurer les différents services de sécurité: Service de sécurité Utilisation du certificat Confidentialité - Les certificats permettent de chiffrer et déchiffrer les messages. Intégrité - Les certificats permettent de vérifier l'intégrité d'un message, grâce à une fonction de hachage permet de s'assurer que le message n'a pas été altéré. Authentification - L’utilisation de certificats permet d’établir l'identité de l'expéditeur, Non-répudiation - Le certificat permet d'identifier les participants à l’échange d’informations : Le dépôt du message signé et éventuellement chiffré chez un tiers de confiance permet la non- répudiation. tab 2.1 : Services de sécurité offerts par un certificat électroniques 21
  • 26. 2ème Chapitre Signature électronique 4.2.1.4. Support physique Un certificat prend la forme d'un fichier qui peut être gardé soit sur le pc (certificat logiciel), ou bien sur un moyen physique plus sûr comme les cartes à puce ou les clés USB. Certificat logiciel: ce cas nécessite l'installation de logiciel dans les divers navigateurs web afin de pouvoir utiliser le certificat. Certificat sur clé USB: c'est une clé USB cryptée qui doit être utilise par le biais d'un logiciel spécifique qui jouera le rôle d'une interface avec le pc. Ce cas a pour avantage de pouvoir garantir la mobilité du certificat qui sera donc maniable. Certificat sur cartes à puce: dans ce cas on doit avoir un lecteur de carte et un logiciel spécial afin de pouvoir garantir la bonne exploitation du certificat numérique. Il existe plusieurs critères selon les quelles on pourra choisir le support approprié pour notre certificat numérique parmi eux on trouve; le coût, la facilité d'utilisation, déploiement et la mobilité du support: Support du Avantages Inconvénients Niveau de certificat sécurité Logiciel o Logiciel installé directement o la procédure o Moyen sur le poste client d’installation varie d’un navigateur à l’autre o Incompatibilité pour certains OS (Mac, Linux) et de certaines versions d’OS o la mobilité dépend du poste de travail Clé USB o mobilité o Le support est encore o Fort avec mot o simplicité d’utilisation peu connu des de passe o port USB présent sur tous les utilisateurs non ordinateurs récents informaticiens Carte o support connu des utilisateurs o il faut installer un o Fort avec mot o support personnalisable lecteur avec ou sans de passe ou o support utilisé pour les projets contact reconnaissance gouvernementaux d’IGC. o le coût de l’équipement biométrique est élevé tab 2.2 : Comparaison entre support de certificats électroniques 4.2.1.5. Certificats et rèvocation: les certificats sont généralement stockes sur des annuaire LDAP, ces annuaire doivent être sécurisés a tout prix afin d'assurer la validité des certificat et donc la validité des clés publique, mais il existe certain cas ou on doit révoque un certificat par exemple le cas d'un stagiaire ou une personne qui se fait dérober sa clé secrète et pour cela une liste de révocation appelée CLR (Certificat Revocation List) est mise en place, elle a pour but d'éviter l'utilisation de toute certificat frauduleuse périmée, a cause la fin de sa validite ou la perte de sa confidentialité. L'accès a cette liste doit être garantit a tout moment. La révocation a pour résultat de supprimer la caution de l’autorité de certification sur un certificat donné avant la fin de sa période de validité. 22
  • 27. 2ème Chapitre Signature électronique 4.3. Répartition des CA (Certification Authority): Un nombre important d'usagers ne peut pas avoir ses certificats d'un seul CA, pour cela le travail est reparti à travers plusieurs CA qui fonctionnent selon une même PKI et suivant un modèle précis. 4.3.1. Modèle hiérarchique Dans ce modèle les CA appelées CA subordonnées sont reparties selon un arbre hiérarchique, sous le contrôle d'une autorité supérieure (le plus haut niveau d'autorité) constituant la racine de l'arbre appelée CA root qui est la seul a posséder un certificat auto signé et qui génère des certificats pour les CA subordonnées mais qui définit aussi des relation(des règles) avec eux, ces relations sont dites la chaine de confiance, un utilisateur qui a confiance en CA root doit avoir confiance dans leur CA subordonnées a cause de cette chaine de confiance. figure2.8: Modèle hiérarchique 4.3.2. Modèle peer to peer ou maillé: Dans ce modèle tout les CA fonctionnent au même niveau et chaque deux CA doivent échanger leurs clé publique mutuellement ainsi chacune d'elles vois l'autre comme étant sa racine et par la suite chacune d’eux peut générer un certificat pour son homologue figure2.9: Modèle maillé 4.3.3. Modèle en pont ou bridge: Dans ce modèle les CA changent leurs clés publiques à travers une CA intermédiaire appelé CA bridge, ce modèle possède un avantage par rapport au modèle maillé qui consiste à diminuer le nombre de certificats générés pour un nombre important de CA tel que ; pour N autorités de certification il suffit de générer N certificats tandis qu'il fallait créer N-N2/2 pour le maillé, ainsi il offert une structure stable par rapport au modèle hiérarchique. 23
  • 28. 2ème Chapitre Signature électronique figure2.10: Modèle bridge Modéle Avantage inconvenient Hiérarchique - Evolutif - très rigide nécessitant un - Sécurisé - Offrant un contrôle total - contrôle très intensif - Offre un chemin de certification unique et - sécurité: CA root le point faible simple Maillé - Modèle plus ouvert, plus - Absence de contrôle flexible que le modèle - sécurité: tout les CA sont des points hiérarchique faibles - nécessite n-n2/2 pour n CA - La politique de certification des CA doit être similaire afin d’assurer la compatibilité du modèle Bridge - Diminue le nombre de - sécurité: CA root le point faible reconnaissances - La politique de certification des CA mutuelles doit être similaire afin d’assurer la compatibilité du modèle tab 2.1 : Comparaison entre modèles de la CA 4.4. Politique de certification: Une politique de certification comme par exemple thawte personnal freemail, thawte personnal basic [THAWTE 95] ou swisskey, désigne les règles mis en place par l'autorité de certification pour la demande, la délivrance, l’utilisation et la gestion des certificats. Une autorité de certification peut utiliser différentes politiques selon les utilisateurs et les usages concernés [IETF 99]. 4.5. Services associés à la signature électronique: Une PKI peut offrir autres services, afin de garantir le bon fonctionnement d'une signature électronique: 4.5.1. L’horodatage (timestamping): Ce service fait inscrire une signature composée de date et heure infalsifiables sur un document numérique, donc il offre une garantie de date certaine (comme cachet de la Poste), ce service est fréquemment employé dans les journaux d'événements. Il est représenté généralement sous forme d'une séquence de caractères représentant la date et l'heure dans lesquelles est survenu l'événement. 24
  • 29. 2ème Chapitre Signature électronique 4.5.2. L’archivage L'archivage est l'action consistant à conserver les signatures électroniques et cela pour des buts de gestion et d'administration, de justification de droit des entités mais aussi en cas de vérification et de contrôle (par exemple le cas d'une enquête). La durée légale d’archivage varie en fonction des signatures de 5 à 30 ans et plus. 4.6. Schéma d’architecture générale Une infrastructure de gestion de clé a pour rôle de garantir aux usagers (personne, serveur ou application informatique) trois grandes catégories de services : • la signature électronique pour garantir l’authentification des auteurs et l’intégrité des données • le chiffrement, pour garantir la confidentialité des données • le contrôle de l’accès aux données ou aux applications pour garantir la sécurité des systèmes d’information. Des services complémentaires d’archivage et d’horodatage peuvent être ajoutés. L'IGC utilise différents protocoles dans un but de sécuriser les échanges de données. Le principe est comme suit ; il est possible d’envoyer des données en utilisant le chiffrement via un canal sécurisé sur Internet avec l’utilisation de technologies VPN (Virtual Private Network) ou de sessions HTTP sécurisées par le protocole SSL (HTTPS). Puisque grâce à sa capacité à fournir des certificats numériques, l'IGC peut permettre aussi d'utiliser les outils de chiffrement qui traitent les données elles-mêmes et par la suite la confidentialité des donnes est garantie par le chiffrement du message, mais aussi avec l’emploi de certificats numériques. figure2.7: Schema général de couches intervenant dans le fonctionnement d'une PKI 25
  • 30. 2ème Chapitre Signature électronique 5. Types de signatures ; 5.1. Selon la fiabilité A. La signature électronique simple : Elle n’est pas considérée fiable jusqu’à qu’on prouve le contraire. En cas de contestation, c’est donc à celui qui veut se prévaloir des effets juridiques de cette signature d'apporter la preuve de la fiabilité du système mis en œuvre. B. La signature électronique présumée fiable : Elle ne peut être contestée qu’en apportant la preuve de sa non fiabilité. Pour être considérée comme fiable, la signature électronique doit garantir trois propriétés : − La signature électronique doit être sécurisée − La signature électronique doit être établir grâce à un dispositif sécurisé de création de signature La vérification de la signature électronique doit utiliser un certificat électronique qualifiée, émise par un prestataire de service de certification électronique. 26
  • 31. 2ème Chapitre Signature électronique figure2.7: exemple de critères de signatures fiable selon la loi française 27
  • 32. 2ème Chapitre Signature électronique 5.2. Selon le type de service offert: • Intégrité seule • Intégrité + confidentialité • Intégrité + confidentialité + authentification (garantie d'origine) 1) Signature avec intégrité seule Appliquer une fonction de hachage H(M) pour le message M, par exemple MD5 Ensuite envoyer M+H(M) ne suffit pas car un intrus peut intercepter M, changer M en M2, calculer H(M2), et renvoyer M2+H(M2) Donc il faut avoir une clé secrète K partagée entre les usagers A et B A concatène M, L (longueur de M) et K et calcule D = H (M, L, K) ensuite A envoie à B M+D B recalcule H (M, L, K) à partir du message M reçu (il connaît K) B vérifie que H (M, L, K) = D 2) Signature avec intégrité et authentification • A chiffre le message avec sa clé privée MC • A envoie à B : (M, {M} MC) • B déchiffre {M} MC avec KP (publique) • B compare [{M} MC] KP avec M • Si différents, le message (ou la signature) a été altéré • Propriétés : vérification d'intégrité, authentification, non dénégation 3) Signature avec intégrité, confidentialité et authentification • A et B s'accordent sur une clé secrète KS • A calcule H(M), par exemple avec MD5 • A envoie à B {M} KS, {H(M)} KSA • B déchiffre {M} KS avec KS, {H(M)} KSA avec KPA (donne comme résultat DM) • B calcule H(M) (avec le même H () que A) et le compare avec DM. • test d'intégrité (OK si H(M) = DM, violation sinon) • confidentialité grâce à KS, authentification et non dénégation (car seul A a pu chiffrer H(M)) - interception et modification de M “difficiles” car il faut à la fois KS et KSA 6. Cadre juridique de la signature électronique en Algérie: • loi n° 05‐10 modifiant et complétant l’ordonnance n° 75‐58 − "Art. 323 ter. — L'écrit sous forme électronique est admis en tant que preuve au même titre que l'écrit sur support papier, à la condition que puisse être dûment identifiée la personne ont il émane et qu'il soit établi et conservé dans des conditions de nature à en garantir l'intégrité". • Décret exécutif n° 07‐162 modifiant et complétant le décret exécutif n° 01‐123 – Art. 3. ‐ Sont subordonnés à l'octroi d'une autorisation délivrée par l'autorité de régulation de La poste et des télécommunications, l'établissement et l'exploitation: •des services de certification électronique. L'autorisation des services de certification électronique est, toutefois, assortie d'un cahier des charges fixant les droits et les obligations du prestataire du service et de l'utilisateur. – Art. 3 bis. ‐ Pour l'application du présent décret, il est entendu, par: • signature électronique: donnée qui résulte de l'usage d'un procédé répondant aux conditions définies aux articles 323 bis et 323 bis 1 de l'ordonnance n° 75‐58 du 26 septembre 1975, susvisée; • signature électronique sécurisée: signature électronique 28
  • 33. 2ème Chapitre Signature électronique • qui satisfait aux exigences suivantes : – être propre au signataire; – être créée par des moyens que le signataire puisse garder sous son contrôle exclusif; l'acte soit détectable; – signataire: personne physique... – Art. 3 ter. ‐ Les certificats délivrés par un prestataire de services de certification électronique établi dans un pays étranger ont même valeur que ceux qui sont délivrés en vertu des dispositions du présent décret lorsque ce prestataire étranger agit dans le cadre d'une convention de reconnaissance mutuelle conclue par l'autorité de régulation de la poste et des télécommunications". 7. Conclusion : La signature électronique est un élément substantiel dans une carte d’identité électronique car c’est une empreinte protégée par un certificat permettant la reconnaissance, la confidentialité, la sécurité, l'authenticité des données de l’usager, et elle dérive son importance de ses qualités : Elle n'est pas imitable. Elle n'est pas répudiable. Elle protégé le contenu contre les modifications. Elle permet de signer directement tout ce qui est numérisable. Mais malgré ces qualités, il faut toujours garder en esprit que le risque zéro n’existe pas en sécurité informatique. 29
  • 34. ème 3 Chapitre Implémentation d’une carte d’identité électronique
  • 35. 3ème Chapitre Implémentation d’une carte d’identité électronique 1 Introduction: L’implémentation de carte identité électronique passe par plusieurs étapes: 1- Création d'une autorité de certification 2- Installation des SDK 3- Réalisation d'une application DZeID (avec le langage C#) 4- Introduction des lettres arabe. 2 Création d'une autorité de certification: Afin de créer une autorité de certification sur Windows serveur 2008 on doit installer ce qu’on appelle l’ADCS (Active Directory Certificate Service) qui fournit des services personnalisables pour l’émission et la gestion de certificats dans des systèmes de sécurité logicielle employant des technologies de clé publique. Pour obtenir des informations techniques d’ordre général à propos du chiffrement par clé publique et des avantages offerts par une infrastructure à clé publique (PKI), voir Infrastructures à clé publique. Vous pouvez utiliser les services AD CS pour créer une ou plusieurs autorités de certification pour recevoir les demandes de certificat, vérifier les informations contenues dans la demande et l’identité du demandeur, émettre des certificats, révoquer des certificats et publier des données de révocation de certificat. - Pour installer une autorité de certification racine il nous faut • Ouvrir Gestionnaire du serveur, cliquer sur Ajouter des rôles, sur Suivant, puis sur Services de certificats Active Directory. Cliquer sur Suivant à deux reprises. Figure3.1 : Ajouter de Services de certificats Active Directory 31
  • 36. 3ème Chapitre Implémentation d’une carte d’identité électronique • Dans la page Sélectionner les services de rôle, on clique sur Autorité de certification. et sur Suivant. • Dans la page Spécifier le type d’installation, on clique sur Autonome ou Entreprise. puis sur Suivant. Figure3.2 : Spécification de type de CA 32
  • 37. 3ème Chapitre Implémentation d’une carte d’identité électronique Dans la page Configurer la clé privée, on clique sur Créer une nouvelle clé privée, ensuite sur Suivant. 1. Dans la page Configurer le chiffrement, on sélectionne le fournisseur de services de chiffrement, la longueur de la clé et l’algorithme de hachage.et on clique sur Suivant. Figure3.3 : Spécification de période de validité 33
  • 38. 3ème Chapitre Implémentation d’une carte d’identité électronique 2. Dans la page Configurer le nom de l’autorité de certification, on crée un nom unique pour identifier l’autorité de certification et on clique sur Suivant. Figure3.4 : Nommage de CA 3. Dans la page Période de validité du certificat, on spécifie le nombre d’années ou de mois de validité de l’autorité de certification racine et on clique sur Suivant. 4. Dans la page Configurer la base de données de certificats, on accepte les emplacements par défaut, à moins qu’on ne voulait spécifier un emplacement spécifique pour la base de données de certificats et pour le journal de base de données de certificats et on clique sur Suivant. 5. Dans la page Confirmer les options d’installation, on vérifie les paramètres de configuration que nous avons sélectionnés. Pour accepter toutes ces options, on doit cliquer sur Installer et on doit patienter jusqu’à la fin du processus d’installation. 34
  • 39. 3ème Chapitre Implémentation d’une carte d’identité électronique figure3.5 : CA après création Remarque: la procédure de création d'autorité de certification doit être précéder par l'installation et la configuration des services d’annuaire Microsoft Active Directory et le service IIS. 35
  • 40. 3ème Chapitre Implémentation d’une carte d’identité électronique 3 Installation des SDK: - Installation des SDK [BEID 3.5]: Un kit de développement ou trousse de développement logiciel ou appelé parfois Middleware ou encore RunTime est un ensemble d'outils permettant aux développeurs de créer des applications de type défini. Les kits de développement logiciels sont souvent désignés par le sigle anglais SDK (Software Developpent Kit) ou devkit. Le middleware de la carte d’identité électronique est un programme qui permet d’établir la liaison entre l’application qui gère les caractéristiques de sécurité (signature digitale) et le lecteur de cartes à puce qui réalise les opérations de cryptographie. figure3.6 : Etablissement de liaison entre l’application et lecteur de carte via le middleware 36
  • 41. 3ème Chapitre Implémentation d’une carte d’identité électronique 4 Réalisation d'une application DzeID Ajout de librairie beid35libCS.dll : Après avoir installé les SDK, on trouve leur répertoire dans C:Documents and Settings<user>My Documents, et qui va contenir une librairie beid35libCS.dll indispensable pour la réalisation de l'application DzeID, puisque après elle doit être ajouté comme référence dans notre projet du visual studio. figure3.6 : Ajout de référence figure3.6 : Sélection de référence 37
  • 42. 3ème Chapitre Implémentation d’une carte d’identité électronique 4.1 Initialisation / Libération du SDK : La librairie eID est initialisée en appelant la méthode initSDK (), tandis que la libération du SDK doit être fait en utilisant releaseSDK (). Il est important que le dernier appel à la librairie est releaseSDK () avant l'application se ferme. Cet appel fera en sorte que tous les processus d'arrière-plan sont arrêtés et la mémoire est nettoyée. Une application doit avoir un seul initSDK () et un releaseSDK (). Code c#: using System; using System.Collections.Generic; using System.Linq; using System.Collections.ObjectModel; using System.Text; using be.belgium.eid; namespace DZeID { class Program { void main(int argc, string[] argv) { BEID_ReaderSet.initSDK(); // acces a la carte DZeID BEID_ReaderSet.releaseSDK(); } } } 38
  • 43. 3ème Chapitre Implémentation d’une carte d’identité électronique 4.2 Accès à la carte eID Après l'initialisation de la librairie eID, le système est prêt à être utilisé. Pour accéder à une carte d'identité électronique, la séquence suivante doit être suivie: - Obtenir la liste des lecteurs de cartes - Sélectionnez un lecteur de carte - Tester si une carte est présente dans le lecteur de carte - Selon le type de carte, obtenir l'objet de cartes(Pour utilisation futur) - Obtenir les données objet nécessaires - Lire les champs de données 4.2.1 Liste de lecteurs La classe BEID_ReaderSet représente la liste des lecteurs de carte connectés à la machine ainsi une variété de fonctions pour obtenir des informations sur les lecteurs de carte connectés. A partir de cette liste de lecteurs,un lecteur de cartes peut être sélectionné et l'e contexte de lecteur BEID_ReaderContext peut être utilisé pour accéder à la carte dans le lecteur de carte. Code c#: . . . long nrReaders = BEID_ReaderSet.instance().readerCount(); string[] readerList = BEID_ReaderSet.instance().readerList(); for (int readerIdx = 0; readerIdx < nrReaders; readerIdx++) { BEID_ReaderContext readerContext = BEID_ReaderSet.instance().getReaderByName(readerList[readerIdx]); bool bCardPresent = readerContext.isCardPresent(); . . . } . . . 4.2.2 Obtention de l'objet carte Le contexte de lecteur permet d'accéder à la carte (si présente). Une fois le type de carte est déterminé par le contexte lecteur (getCardType ( )), l'objet de cartes correspondantes peuvent être obtenues (GetEIDCard ( )). L’obtention de l'objet carte peut être utilisé pour le future c'est-à-dire en cas d’apparition d’autres types de carte autre que l’eID. Code c#: . . . switch (readerContext.getCardType()) { case BEID_CardType.BEID_CARDTYPE_EID: { BEID_EIDCard card = readerContext.getEIDCard(); string name = card.getID().getSurname(); . . . } break; default: // unknown card type . . . break; } . . . 39
  • 44. 3ème Chapitre Implémentation d’une carte d’identité électronique 4.2.3 La lecture des données Les données sur une carte eID utilise l'encodage UTF-8 et sont stockées dans de multiples «documents»: - Document ID: contient les données des personnes - Document Image: contient l'image des personnes - Document VersionInfo: contient les informations de version de la carte Pour obtenir les données d'identification d'objet, la méthode getId () peut être utilisé. Cet objet peut ensuite être utilisé pour accéder aux différents champs de données comme le nom, adresse, etc... Code c#: ... BEID_EIDCard card; card = Reader.getEIDCard(); BEID_EId doc; doc = card.getID(); string sText; sText = ""; sText += "First Name = " + doc.getFirstName() + "rn"; sText += "Last Name = " + doc.getSurname() + "rn"; sText += "Gender = " + doc.getGender() + "rn"; sText += "DateOfBirth = " + doc.getDateOfBirth() + "rn"; sText += "LocationOfBirth = " + doc.getLocationOfBirth() + "rn"; sText += "NationalNumber = " + doc.getNationalNumber() + "rn"; Le national number est un matricule unique pour chaque citoyen, on propose sa structure comme suit : WWDDCCIIIIII tel que : WW : numéro de wilaya DD : numéro de daïra CC : numéro de commune IIIIII: identifiant du citoyen dans la commune sText += "Nationality = " + doc.getNationality() + "rn"; sText += "SpecialOrganization = " + doc.getSpecialOrganization() + "rn"; sText += "MemberOfFamily = " + doc.getMemberOfFamily() + "rn"; sText += "AddressVersion = " + doc.getAddressVersion() + "rn"; sText += "Street = " + doc.getStreet() + "rn"; sText += "ZipCode = " + doc.getZipCode() + "rn"; sText += "Municipality = " + doc.getMunicipality() + "rn"; sText += "Country = " + doc.getCountry() + "rn"; sText += "SpecialStatus = " + doc.getSpecialStatus() + "rn"; ... 4.2.4 Les données d'image L'objet image contient les données d'image du propriétaire de la carte eID. Cette image est un fichier en format JPG. Pour obtenir l'objet image, la méthode getPicture () peut être utilisé. Code c#: ... BEID_Picture picture; picture = card.getPicture(); byte[] bytearray; bytearray = picture.getData().GetBytes(); // Maintenant les données peuvent être sauvegarder sur un fichier si on veut 40
  • 45. 3ème Chapitre Implémentation d’une carte d’identité électronique 4.2.5 Codes PIN Une carte d'identité électronique contient un code PIN. Ce code PIN peut être vérifiée ou modifiée. Les méthodes les plus importantes pour accéder à la PIN sont: - VerifyPin (): vérifier le code PIN donné - ChangePin (): modifier le code PIN par un nouveau code Chaque tentative échouée d'accés au code PIN se traduira par une réduction du nombre d'essais . Après 3 tentatives infructueuses, la carte sera bloquée. Code c#: ... BEID_ReaderSet ReaderSet; ReaderSet = BEID_ReaderSet.instance(); BEID_ReaderContext Reader; Reader = ReaderSet.getReader(); uint lRemaining = 0; if (Reader.getEIDCard().getPins().getPinByNumber(0).verifyPin("", ref lRemaining)) { // success } else { if (ulRemaining == -1) // verify pin canceled else //verify pin failed } ... 4.2.6 Certificats Les certificats sur la carte peuvent être obtenu en utilisant getCertificates ( ). Cette méthode renvoie un certificat BEID_Certificates par la suite tous les certificats peuvent être consultées et les données associées peuvent être récupérées comme: - Numéro de série - Titulaire du certificat - L'émetteur du certificat - Dates de validité du certificat - ... Les certificats peuvent être ajoutés au conteneur de certificat via addCertificate (). Code c#: ... BEID_EIDCard Card = readerContext.getEIDCard(); BEID_Certificates certificates = Card.getCertificates(); for (uint CertIdx = 0; CertIdx < Card.certificateCount(); CertIdx++) { BEID_Certificate cert = certificates.getCertFromCard(CertIdx); } ... 41
  • 46. 3ème Chapitre Implémentation d’une carte d’identité électronique 4.2.7 Validation de certificat Les certificats sont stockés sur la carte eID. Ces certificats ont une validité qui peut être vérifiée de 3 façons: - Validé: la signature du certificat est vérifiée et le certificat racine doit être valide. - Via CRL: La CRL est téléchargée et on vérifie si le certificat est présente sur la liste de révocation ou pas, ce qui signifie révoqué ou en cours de validité. - Via le protocole OCSP (Online Certificate Status Protocol): Une demande est envoyée au serveur OCSP qui répond le certificat est valide, révoqué ou inconnus. La validation via OCSP a besoin d'une connexion permanente à Internet, tandis que la validation CRL a besoin d'une connexion quand une nouvelle CRL est demandée. Code c#: BEID_ReaderSet ReaderSet = BEID_ReaderSet.instance(); BEID_ReaderContext Reader = ReaderSet.getReader(); BEID_EIDCard card = Reader.getEIDCard(); BEID_Certificates store = card.getCertificates(); BEID_Certificate certAuth = store.getAuthentication(); BEID_CertifStatus status = certAuth.getStatus(); string textStatus; if (status == BEID_CertifStatus.BEID_CERTIF_STATUS_VALID) textStatus = "The authentication certificate is issued from a trusted root"; else if (status == BEID_CertifStatus.BEID_CERTIF_STATUS_VALID_CRL) textStatus = "The authentication certificate has been succesfully verify through CRL validation"; else if (status == BEID_CertifStatus.BEID_CERTIF_STATUS_VALID_OCSP) textStatus = "The authentication certificate has been succesfully verify through OCSP validation"; else if (status == BEID_CertifStatus.BEID_CERTIF_STATUS_REVOKED) textStatus = "The authentication certificate is revoked"; else textStatus = "The authentication certificate could not be validated"; 5 Introduction des lettres arabes L’introduction de lettres arabes se fait via la signature électronique, plus précisément la signature xml, et avec l’utilisation du codage ISO-8859-6 dans la déclaration du fichier xml ainsi dans le codage de la signature : Voici la déclaration du fichier xml : <? xml version="1.0" encoding="ISO-8859-6" standalone="yes" ?> L’utilité des lettre arabes c’est d’ajouter et augmenter la robustesse du codage, car il va y avoir plus de lettre dans les combinaisons des lettres ce qui rend le cryptage plus difficile à casser. Les espaces de noms utilisés pour la signature sont les suivants : 42
  • 47. 3ème Chapitre Implémentation d’une carte d’identité électronique - System.Security.Cryptography.Xml - System.Security.Cryptography.X509Certificates Il faut également référencer l' assembly System.Security dans votre projet. Pour commencer il nous faut un certificat. Voyons comment accéder à nos certificats avec .Net. Pour accéder au magasin de l'utilisateur courant il suffit donc de faire. X509Store store = new X509Store("teststore", StoreLocation.CurrentUser); Maintenant que nous avons accès à notre magasin, il faut l'ouvrir en indiquant la façon de l'ouvrir avec l'énumération OpenFlags. store.Open(OpenFlags.ReadWrite); Après cela on doit sélectionner le certificat signataire en spécifiant son emplacement via l’instruction ; X509Certificate2 certificate = new X509Certificate2("c:UsersuserDesktopcertAdmin.cer"); Maintenant que nous avons sélectionné un certificat on doit l’ajouter au magasin pour pouvoir l’utiliser plus tard dans le processus de signature il suffit de faire ; store.Add(certificate); store.AddRange(collection); Après avoir récupérer le certificat, on attaque la signature XML. Tout d'abord, il faut commencer par charger notre fichier à signer (ici ce ficher est le certificat user.cer) et on doit le convertir en base64. XmlDocument xmlDoc = new XmlDocument(); XmlElement element = xmlDoc.CreateElement("‫_ دة‬Certificate", xmlDsigUrl); element.InnerText = Convert.ToBase64String(File.ReadAllBytes("c:UsersuserDesktopuser.cer")); xmlDoc.AppendChild(element); Maintenant nous allons créer un objet SignedXml portant sur le document XML que l'on veut signer ; SignedXml signedXml = new SignedXml(); Création de l'élément XML contenant les données à signer ; XmlElement element = xmlDoc.CreateElement("‫_ دة‬Certificate", xmlDsigUrl); element.InnerText = Convert.ToBase64String(File.ReadAllBytes("c:UsersuserDesktopuser.cer")); xmlDoc.AppendChild(element); On récupère la clé utilisée à la signature du certificat signataire(certAdmin.cer) ; signedXml.SigningKey = certificate.PrivateKey; Enfin on doit créé la référence des données à signer, générer et sauvegarder la signature dans un fichier appelé enveloping.xml . Le code source c# complet doit être comme suit ; //Creation d'un nouveau X509 store appellé teststore à partir du local certificate store. X509Store store = new X509Store("teststore", StoreLocation.CurrentUser); 43
  • 48. 3ème Chapitre Implémentation d’une carte d’identité électronique store.Open(OpenFlags.ReadWrite); // X509Certificate2 certificate = new X509Certificate2(); //Creation des certificats à partir du fichier du certificat. X509Certificate2 certificate = new X509Certificate2("c:UsersuserDesktopcertAdmin.cer"); //création d'une collection et l'ajout des deux certificat. X509Certificate2Collection collection = new X509Certificate2Collection(); collection.Add(certificate); //Ajout des certificats dans le store. store.Add(certificate); store.AddRange(collection); X509Certificate2Collection storecollection = (X509Certificate2Collection)store.Certificates; Console.WriteLine("Store name: {0}", store.Name); Console.WriteLine("Store location: {0}", store.Location); foreach (X509Certificate2 x509 in storecollection) { Console.WriteLine("certificate name: {0}", x509.Subject); } string xmlDsigUrl = SignedXml.XmlDsigNamespaceUrl; // Création de l'élément XML contenant les données à signer XmlDocument xmlDoc = new XmlDocument(); XmlElement element = xmlDoc.CreateElement("‫_ دة‬Certificate", xmlDsigUrl); element.InnerText = Convert.ToBase64String(File.ReadAllBytes("c:UsersuserDesktopuser.cer")); //insertion de la photo XmlElement element_photos = xmlDoc.CreateElement("‫_ رة‬Picture", xmlDsigUrl); element_photos.InnerText = Convert.ToBase64String(File.ReadAllBytes("c:UsersuserDesktopPhotos.jpg")); element.AppendChild(element_photos); //insertion du nom XmlElement element_Nom = xmlDoc.CreateElement(" ‫_ا‬FirstName", xmlDsigUrl); element_Nom.InnerText = " "; element.AppendChild(element_Nom); //insertion du prénom XmlElement element_PreNom = xmlDoc.CreateElement(" ‫_ا‬LastName", xmlDsigUrl); element_PreNom.InnerText = "‫;"وا ط‬ element.AppendChild(element_PreNom); xmlDoc.AppendChild(element); // Instanciation de l'objet SignedXml SignedXml signedXml = new SignedXml(); 44