Qu'est-ce qu'une signature numérique ?

Qu'est-ce qu'une signature numérique ?


Traduit de l'anglais par Charles Giguère.

(C) 2002 - Tous droits réservés par l'auteur


Qu’est-ce qu'une signature numérique ?

Une signature numérique permet de s’assurer qu’un document numérique (courrier électronique, feuille de calcul, fichier texte, etc.) est authentique.  Authentique signifie que vous connaissez la personne qui a produit le document et que vous êtes certain que ce document n’a pas été altéré depuis qu’il a été créé.

Les signatures numériques reposent sur certains types d’encryption pour garantir l’authenticité.  L’encryption est le procédé par lequel toutes les données transmises par un ordinateur à un autre sont encodées en une forme que seul l’ordinateur récepteur peut décoder.  L’authentification est le procédé par lequel on vérifie que l’information provient d’une source de confiance.  Ces deux procédés sont à la base de la signature numérique.

Pour authentifier une personne ou l’information emmagasinée dans un ordinateur, on peut utiliser plusieurs moyens :

Mot de passe : l’utilisation d’un mot de passe et d’un nom d’utilisateur est la forme la plus courante d’authentification.  Vous entrez votre nom et votre mot de passe lorsque l’ordinateur vous le demande, il vérifie cette paire d’informations en les comparant au contenu d’un fichier sécurisé.  Si le nom d’usager ou le mot de passe sont incorrects, l’accès sera refusé.

Somme de contrôle (checksum) : probablement la méthode la plus ancienne de vérifier l’intégrité des données, c’est également une forme d’authentification puisqu’une somme de contrôle invalide suggère que les données ont probablement été altérées. 

CRC  (Cyclic Redundancy Check) : similaire à la somme de contrôle, à la différence que la valeur du CRC se calcul par une division polynomiale, dont la longueur est de 16 ou 32 bits.  Le CRC est très précis, si un seul bit est incorrect, la valeur du CRC sera invalide.  Le CRC et la somme de contrôle sont tous deux excellents pour découvrir les erreurs aléatoires de transmission, mais offrent peu de protection contre une attaque intentionnelle sur les données.  Les méthodes d’encryption présentées ci-dessous offrent beaucoup plus de sécurité.

Encryption par une clé privée : chaque ordinateur possède une clé secrète (code) qu’il peut utiliser pour encrypter un morceau d’informations avant de le transmettre sur le réseau vers un autre ordinateur.  Une clé privée oblige de connaître les ordinateurs avec lesquels vous désirez communiquer afin d’installer la clé sur chacun.  L’encryption par clé privée est essentiellement la même chose qu’un code secret que les deux ordinateurs doivent connaître afin de décoder l’information.  Par exemple, vous créez un message codé en substituant chaque lettre par celle qui la suit de 2 positions; ainsi « A » devient « C » et « B » devient « D ».  Vous avez auparavant informé un ami de confiance du code secret, ce dernier peut facilement décoder votre message.  Les autres personnes ne peuvent décoder le message (ou avec difficulté) car ils ne connaissent pas le code secret.

Encryption par une clé publique : cette méthode utilise une combinaison de clés privée et publique.  La clé privée n’est connue que de votre ordinateur alors que la clé publique est donnée par votre ordinateur à tous les autres qui désirent communiquer de façon sécuritaire avec le vôtre.  Pour décoder un message encrypté, un ordinateur doit utiliser la clé publique (fournie par l’ordinateur d’où origine le message) et sa propre clé privée.  La clé est fabriquée à partir d’une valeur factice construite à partir d’une valeur d’entrée fournie à un algorithme.  Il est pratiquement impossible de trouver cette valeur d’entrée utilisée pour créer la valeur factice, par exemple :

Valeur d’entrée     Algorithme                                          Valeur factice
10667   valeur d’entrée X 143     1525381

Il est presque impossible de savoir que la valeur 1525381 provient de la multiplication de 10667 par 143.  Mais si vous saviez que le multiplicateur était 143, alors il serait facile de calculer la valeur de 10667.  L’encryption par une clé publique est beaucoup plus complexe que cet exemple, mais la base est semblable.  Les clés publiques se servent d’algorithmes complexes et des valeurs factices d’encryptage très grande : des nombres de 40 bits et même 128 bits.  Un nombre de 128 bits possède 2128 combinaisons différentes (c’est autant de combinaisons qu’il y a de molécules d’eau dans 2.7 millions de piscines olympiques).  Même la plus petite goutte d’eau imaginable possède des milliards et des milliards de molécules !

Certificat numérique : pour mettre en œuvre l’encryption par clé publique sur une large échelle, par exemple pour les besoins d’un serveur Web sécuritaire, il faut utiliser une approche différente.  Un certificat numérique est la garantie que le serveur Web est digne de confiance, cette garantie est offerte par une source indépendante appelée Autorité de certification.  Cette autorité agit comme un intermédiaire de confiance entre les 2 ordinateurs.  Elle confirme que les ordinateurs sont bien ceux qu’ils prétendent être et permet l’échange des clés publiques entre les deux ordinateurs.

 Le standard de signature numérique DSS (Digital Signature Standard) s’appuie sur une méthode d’encryption par clé publique appelée DSA (Digital Signature Algorithm).  DSS est le standard qui a été adopté par le gouvernement américain.  L’algorithme DSA est constitué d’une clé privée que seul le créateur du document  (le signataire) connaît et d’une clé publique.