Le rôle principal d'un fournisseur d'identité est
de fournir une preuve d'authenticité de ses abonnés. Dans la
solution proposée et après l'authentification d'un utilisateur,
le FI génère un jeton qui contient trois informations
principales :
· la validité : un champ
qui indique si un utilisateur est correctement authentifié (OK),
ou non (NO)
· Le pseudonyme : ce champ
contient le pseudonyme choisi par l'utilisateur comme identifiant au niveau du
fournisseur de service.
· Le temps : ce champ contient le
temps de création du
jeton. au moment de signature
numérique des donnés, sera en GMT et convertit en secondes.
Après sa création, le jeton sera signé et
crypté avant d'être transmis à l'utilisateur, le processus
de signature et de cryptage des données se déroule comme suit
:
Dans notre système la signature électronique fait
appel à deux familles d'algorithmes afin de pouvoir garantir
l'authenticité et l'intégrité d'un document.
Les algorithmes asymétriques usuellement utilisés
sont RSA et DSA1, les fonctions de hachages les plus courantes dont
MD52 et SHA3.
Figure III.6 représente les différentes
étapes du processus de signature et de vérification des
données :
59
1 DIGITAL SIGNATURE STANDARD (DSS), Federal Information
Processing Standards, Publication 186, 1994 May 19,
http://www.itl.nist.gov/fipspubs/fip186.htm
2 R.L. Rivest, RFC 1321: The MD5 Message-Digest
Algorithm, Internet Activities Board, 1992,
http://www.ietf.org/rfc/rfc1321.txt?number=1321
3 SECURE HASH STANDARD, Federal Information Processing
Standards, Publication 180-1, 1995 April 17,
http://www.itl.nist.gov/fipspubs/fip180-1.htm
Chapitre III Conception et
implémentation
60
Figure III.6 : Principe de l'algorithme de
signature électronique.
Pour l'implémentation des signatures nous avons
utilisé la bibliothèque PHP « OpenSSL », la suite de ce
paragraphe décrit quelques fonctions utilisées dans
l'implémentation de notre système.
· la fonction de signature: «
openssl_sing » dont la signature et comme suit :
bool openssl_sign ( string $data , string
&$signature , mixed $priv_key_id [, int $signature_alg =
OPENSSL_ALGO_MD5 ] )
openssl_sign() calcule la signature des
données data en utilisant l'algorithme MD5 (hashing) suivi du
chiffrage avec la clé privée priv_key_id. Cette fonction
retourne TRUE en cas de succès, ou
FALSE si une erreur survient.
· la fonction de vérification des signatures
électronique : nous avons utilisé la fonction
« openssl_verify » , cette fonction est
utilisée au niveau de fournisseur des services , les paramètres
de cette fonction sont comme suit
bool openssl_verify('tampered'.$data, $binary_signature,
$public_key, OPENSSL_ALGO_MD5);
Cette fonction retourne TRUE si les deux
signatures (celle de l'émetteur et celle de l'information de
récepteur) sont identiques, et FALSE en cas d'un
changement dans la signature.
La variable $data signifie l'information qu'on veut signer,
Chapitre III Conception et
implémentation
$binary_signateur : est la variable qui contient la signature
numérique des informations, $private_key : c'est la variable qui
contient la clé privée du fournisseur d'identité, et
OPENSSL_ALGO_MD5 : c'est l'algorithme d'hachage.