Version imprimable      Envoyer     
Cliquez pour évaluer et commenter
MSDN
MSDN Library
Comparaison des performances : les choix de conception en matière de sécurité

Création d'applications distribuées avec .NET

Priya Dhawan
Microsoft Developer Network

S'applique à :
   Microsoft® ASP.NET
   Microsoft® .NET Framework SP1
   Microsoft ® Windows® 2000 Advanced Server SP2
   Microsoft® SQL Server™ 2000 et Édition Entreprise SP2
   Microsoft Application Center Test (ACT)

Résumé : Compare les performances relatives des différentes options de sécurité disponibles en matière d'authentification du client, d'algorithmes de hachage, de techniques de cryptage et de signature numérique.

Sommaire

Introduction
Outils et stratégie de test
Configuration matérielle
Résultats des tests de performances
Conclusion

Introduction

Les choix de conception pour sécuriser un système affectent les performances, la modularité et la facilité d'utilisation de votre système. Ce choix implique généralement un compromis entre la sécurité et les performances ou la simplicité d'emploi. Plus un système est sécurisé, plus les concessions en termes de performances et d'utilisation sont importantes. Lorsque vous concevez votre système sécurisé, vous devez analyser toutes les menaces, les vulnérabilités et les attaques auxquelles il peut être exposé et choisir les techniques de protection à mettre en oeuvre selon la résistance à ces menaces dans un premier temps et selon les performances dans un second temps.

Cet article compare les performances relatives des options de sécurité disponibles en matière d'authentification du client, de hachage des algorithmes, de techniques de cryptage et de signatures numériques. Dans un souci de simplification, nous avons isolé ces différentes catégories de protection et restreint la comparaison des performances aux options disponibles dans chaque catégorie. Il est évident que dans le cadre d'un véritable système sécurisé, la sécurité globale reposera sur la combinaison d'une ou plusieurs de ces catégories de protection.

Outils et stratégie de test

Pour nos tests, nous avons utilisé Microsoft Application Center Test (ACT), conçu pour soumettre les serveurs Web à des tests de contraintes et pour analyser les problèmes de performances et d'adaptabilité que posent les applications Web, notamment les pages ASPX et les composants qu'elles utilisent. Veuillez consulter la documentation ACT pour plus d'informations sur la façon de créer et d'exécuter des tests. Application Center Test peut simuler un grand groupe d'utilisateurs en ouvrant des connexions multiples au serveur et en envoyant rapidement des requêtes HTTP. Il permet également de créer des scénarios de test réalistes consistant à appeler la même méthode avec un jeu aléatoire de valeurs de paramètres. C'est une fonctionnalité intéressante : les utilisateurs ne sont pas censés appeler sans cesse la même méthode avec les mêmes valeurs de paramètres. Autre fonctionnalité majeure : Application Center Test enregistre les résultats des tests qui fournissent les informations les plus importantes sur les performances de l'application Web.

ACT prend en charge l'authentification Basic, Kerberos et Digest. Il ne traite pas automatiquement l'authentification par formulaires ASP.NET. Nous avons modifié de manière explicite le corps de la requête pour simuler une soumission de formulaire côté client.

En outre, le contrôleur de domaine était installé sur un ordinateur distinct. Active Directory contenait 10 000 comptes utilisateur. 10 000 utilisateurs ont été créés pour Application Center Test qui les sélectionnait de manière aléatoire lors de l'exécution d'un test.

Configuration matérielle

Les tableaux suivants font une brève présentation de la configuration du banc d'essai utilisé pour réaliser les tests.

Tableau 1. Configuration de l'ordinateur client

Nombre de clients Machine/UC Nombre d'UC Mémoire Disque Logiciels
1 Compaq Proliant 1130 MHz 2 1 Go 16,9 Go
  • Windows 2000 Advanced Server SP 2
  • Application Center Test

Tableau 2. Configuration du serveur Web

Nombre de serveurs Machine/UC Nombre d'UC Mémoire Disque Logiciels
1 Compaq Proliant 1000 MHz 2 1 Go 16,9 Go
  • Windows 2000 Advanced Server SP 2
  • .NET Framework SP1

Tableau 3. Configuration du serveur d'applications

Nombre de serveurs Machine/UC Nombre d'UC Mémoire Disque Logiciels
1 Compaq Proliant 1126 MHz 2 1 Go 16,9 Go
  • Windows 2000 Advanced Server SP 2
  • .NET Framework SP1

Tableau 4. Configuration du serveur de bases de données

Nombre de serveurs Machine/UC Nombre d'UC Mémoire Disque Logiciels
1 Compaq Proliant 700 MHz 4 4 Go 18 Go
  • Windows 2000 Advanced Server SP 2
  • SQL Server Édition Entreprise SP 2

Résultats des tests de performances

Le débit et la latence sont les principaux indicateurs de performances. Pour un volume fixe de données renvoyées, le débit est le nombre de requêtes client traitées pendant l'unité de temps spécifiée, généralement la seconde. Comme il est possible d'obtenir un débit maximal avec un temps de réponse inacceptable du point de vue de l'utilisation, nous avons examiné la latence (c'est-à-dire le temps de réponse mesuré à l'aide du rapport émis par ACT) de chaque test réalisé.

Remarque     Les valeurs de performances générées pour le débit et la latence doivent être uniquement considérées comme une base de comparaison des technologies concernées. Elles ne représentent pas des critères de performances absolus.

Authentification du client

Un serveur authentifie un client en acceptant ses informations d'identification et en les validant par rapport à une autorité désignée. Nous nous attacherons particulièrement aux modes d'authentification pris en charge par Microsoft® ASP.NET, qui incluent les modes d'authentification de Microsoft IIS 5.0 et l'authentification par formulaires ASP.NET. Pour davantage de détails, veuillez vous reporter à l'article ASP.NET Web Application Security ( leave-msdn france Site en anglais) du Guide du développeur .NET Framework.

Obtenir la page par défaut

Le test consistait à avoir un seul utilisateur ACT envoyant une seule requête au client. Lorsqu'il demandait la page, l'utilisateur était invité à s'identifier à l'aide d'un nom d'utilisateur et d'un mot de passe. Après avoir authentifié l'utilisateur était authentifié, la page était renvoyée avec une seule chaîne.

Remarque    Ce test ne prévoit pas de scénario dans lequel, après avoir été authentifié à la première requête, l'utilisateur envoie d'autres requêtes en présentant au serveur Web un ticket quelconque pour signifier qu'il a déjà été authentifié.

Modes d'authentification : RPS et temps de réponse

Figure 1. Modes d'authentification : RPS et temps de réponse

Remarque :

  • Anonymous : aucune authentification n'est effectuée.
  • Les comptes utilisateur étaient stockés dans Active Directory, installé sur une machine distincte de celle du serveur Web.
  • FormsAuth_AD utilise l'authentification par formulaires ASP.NET. Comptes utilisateur dans Active Directory.
  • FormsAuth_SQL utilise l'authentification par formulaires ASP.NET. Comptes utilisateur stockés dans SQL Server 2000. Pour des raisons de sécurité, le mot de passe ne doit pas être stocké en clair dans la base de données. Vous devez plutôt générer et stocker un hachage unidirectionnel du mot de passe de l'utilisateur qui sera associé à un salt (chiffre aléatoire généré par cryptage) pour accroître la sécurité et réduire les menaces liées aux attaques visant le dictionnaire. Cette approche est préférable à celle du stockage d'une version cryptée du mot de passe de l'utilisateur dans la mesure où elle évite les problèmes de gestion des clés associés aux techniques de cryptage.

Comme vous pouvez vous y attendre, le mode d'authentification « Anonymous », dans lequel aucune authentification n'est effectuée, présente les meilleures performances. Le serveur Web ne demande pas au client d'envoyer les informations d'identification de l'utilisateur avant de présenter la page Web au client. Ce mode d'authentification convient parfaitement si vous souhaitez que votre site soit mis à la disposition du public.

Dans tous les autres modes d'authentification, le client doit envoyer des messages d'authentification supplémentaires, ce qui nécessite des boucles supplémentaires vers le serveur Web. En authentification Basic, Digest et Kerberos, le flux des en-têtes HTTP est similaire à celui-ci :

Flux d'en-tête d'authentification

Figure 2. Flux d'en-tête d'authentification

Comme l'illustre la figure 1, les modes d'authentification Digest et Kerberos sont très proches l'un de l'autre en termes de performances. Et pourtant, les charges supplémentaires qui leur sont associées sont différentes. Dans le processus d'authentification de Digest, le serveur envoie une stimulation (NONCE) au client et lui demande le nom d'utilisateur et le mot de passe. Le cryptage du NONCE utilisé est un hachage unidirectionnel du mot de passe (incluant les ressources auxquelles le système accède et le nom de domaine Kerberos), qui est ensuite envoyé au serveur sur lequel le client est authentifié. Le mot de passe n'est pas envoyé en texte clair ce qui présente un avantage non négligeable par rapport à l'authentification Basic. Le plus gros défaut de l'authentification Digest, malgré son statut de standard de l'industrie, est que seuls quelques navigateurs et serveurs Web la prennent en charge, ce qui limite son utilisation. Microsoft® Internet Explorer 5.0 est le premier logiciel à l'avoir adoptée, avec IIS 5.0 et versions ultérieures. Cette authentification fonctionne uniquement avec les comptes de domaine Windows 2000 et nécessite que les comptes stockent les mots de passe en texte clair (ce qui n'est pas le cas avec Microsoft® .NET® Server).

Avec Kerberos, le navigateur tente d'utiliser les informations d'identification de l'utilisateur provenant de son ouverture de session de domaine. Si le serveur rejette ces informations d'identification, le client est invité à saisir un nom d'utilisateur et un mot de passe dans une boîte de dialogue. Les informations d'identification sont envoyées directement au serveur TGS (service d'émission de tickets) qui les authentifie et délivre au client un ticket Kerberos. Ce ticket est un certificat temporaire contenant les informations qui identifient l'utilisateur sur le serveur du réseau. Généralement, le client met le ticket en cache de manière à le réutiliser pour les requêtes suivantes adressées au serveur, jusqu'à son expiration.

Comme le montre la figure 1, les authentifications Basic et FormsAuth_SQL ont des performances identiques. Avec Basic, le client envoie les informations d'identification de l'utilisateur au serveur Web, qui fait un aller-retour vers le contrôleur de domaine pour obtenir l'authentification du client. N'oubliez pas que l'authentification Basic est très peu sécurisée car le mot de passe est transféré en texte clair sur le réseau (il s'agit en fait d'un codage en base64 qui peut être aisément décodé). Afin de renforcer la sécurisation Basic, vous pouvez utiliser SSL pour établir une session sécurisée. Cette méthode reste moins sûre que l'utilisation de vrais protocoles d'authentification réseau tels que Kerberos et Digest, qui n'envoient pas les informations confidentielles de l'utilisateur au serveur à distance.

Le flux des en-têtes HTTP de l'authentification par formulaires ASP.NET est similaire à celui-ci :

 Flux d'en-tête d'authentification

Figure 3. Flux d'en-tête d'authentification

Notez que l'authentification par formulaires ASP.NET est plus lente que tous les schémas d'authentification de Windows, ce qui s'explique en partie certainement par les redirections qu'elle implique avant l'affichage de la page. Dans le cas de FormsAuth_AD, le système a recours à un programme pour rechercher l'utilisateur dans Active Directory. Si le nom d'utilisateur associé au mot de passe fourni existe dans Active Directory, l'utilisateur est authentifié. De même, dans le cas de FormsAuth_SQL, le système appelle une procédure SQL stockée pour rechercher l'utilisateur dans la base de données. Si la requête aboutit, l'utilisateur est authentifié. Nous n'avons pas stocké les mots de passe en clair dans la base de données mais avons préféré stocker le hachage unidirectionnel du mot de passe de l'utilisateur, associé à un salt. Nous avons utilisé SHA1 pour générer le hachage. De ce fait, en mode FormsAuth_SQL, lorsqu'un utilisateur soumet ses informations d'identification, le système extrait tout d'abord de la base de données le hachage et le salt associés à l'utilisateur. Il génère ensuite le hachage du mot de passe fourni par l'utilisateur et celui du salt qu'il vient d'extraire de la base de données. Si les deux hachages correspondent, l'utilisateur est authentifié. Ce processus consomme des cycles supplémentaires dans la mesure où, lors de l'authentification d'un utilisateur, nous générons un hachage à l'aide d'un algorithme SHA1.

L'authentification par formulaires ASP.NET est aussi peu sécurisée que l'authentification Basic car le mot de passe est envoyé sur le réseau en clair. Il y a tout de même une différence entre ces deux modes : l'authentification par formulaires envoie une seule fois les informations d'identification, puis utilise un ticket crypté alors que l'authentification Basic envoie les informations d'identification à chaque requête. Pour améliorer la sécurisation de l'authentification par formulaires, vous pouvez utiliser SSL pour établir une session sécurisée, mais cela affectera alors les performances. L'utilisation de l'authentification par formulaires sans SSL peut fragiliser le système et ouvrir la voie à une attaque par réémission.

Nous vous conseillons de lire l'article Authentification dans ASP.NET : conseils de sécurité .NET leave-msdn france Site en anglais, qui présente les avantages et les inconvénients de ces schémas d'authentification et les environnements pour lesquels ils sont les mieux adaptés.

Techniques de cryptage

Les techniques de cryptage assurent la confidentialité des données personnelles, la détection des falsifications et l'authentification. Elles utilisent pour cela le cryptage des données transmises entre le serveur et le client, en supposant que le secret pré-partagé entre eux n'a pas été exposé. Nous nous concentrerons sur les algorithmes de hachage, comprenant SHA1 et MD5, les algorithmes symétriques, parmi lesquels DES, RC2, 3DES et Rijndael ainsi que sur les algorithmes asymétriques tels que RSA et DSA. Pour davantage de détails, reportez-vous à l'article Cryptography Overview ( leave-msdn france Site en anglais) dans le Guide du développeur .NET Framework.

Algorithmes de hachage

Les algorithmes de hachage mappent un ensemble de données de taille arbitraire vers une petite valeur unique de longueur fixe. Nous allons comparer les algorithmes SHA1 et MD5. Pour davantage de détails , reportez-vous à l'article Cryptography Overview ( leave-msdn france Site en anglais) dans le Guide du développeur .NET Framework.

ComputeHash

La méthode calcule le hachage des données stockées dans un fichier. Nous avons effectué les tests avec des données de 4 Ko, 135 Ko et 1 Mo afin de mesurer l'impact de la taille des données sur les performances.

Algorithmes de hachage (4 Ko) : RPS et temps de réponse

Figure 4. Algorithmes de hachage (4 Ko) : RPS et temps de réponse

Remarque :

  • .NET Framework prend en charge différents algorithmes de hachage, parmi lesquels MD5, SHA1, SHA256, SHA384 et SHA512. La seule différence entre les diverses versions de l'algorithme SHA réside dans la taille du hachage qu'ils produisent. Nous avons choisi de n'inclure que les algorithmes SHA1 et SHA512 dans nos essais.
  • Nous avons utilisé System.Security.Cryptography qui fournit différentes versions de SHA1 et MD5.
  • Il n'existe qu'une version du MD5 dans System.Security.Cryptography : il s'agit de MD5CryptoServiceProvider, qui enveloppe CAPI.
  • SHA256, SHA384 et SHA512 ne sont actuellement pas disponibles dans CryptoAPI. Ces algorithmes sont implémentés directement dans le code géré. Ils ont été ajoutés uniquement pour prendre en charge les exigences de génération des nouvelles clés de AES et non pour fournir des algorithmes plus puissants que SHA1. Nous pensons sincèrement que SHA1 est largement suffisant et adapté au hachage de données.
  • Pour SHA1 et SHA512, nous avons utilisé des implémentations gérées, SHA1Managed et SHA512Managed respectivement, disponibles dans System.Security.Cryptography.

Comme l'illustre la figure 4, tous les algorithmes sont similaires en termes de performances, SHA512 étant légèrement en retrait. MD5 produit un hachage de 128 bits. Le processus de calcul dans SHA s'inspire largement de MD5. Il produit un hachage de 160 bits.

Les tailles de hachage plus longues sont plus dures à attaquer avec des méthodes de force brute. SHA512 génère un hachage de 512 bits, SHA1 un hachage de 160 bits et MD5 un hachage de 128 bits. SHA1 est donc moins vulnérable que MD5, en supposant qu'il n'existe par ailleurs pas d'autres faiblesses dans les algorithmes.

Algorithmes de hachage (135 Ko): RPS et temps de réponse

Figure 5. Algorithmes de hachage (135 Ko) : RPS et temps de réponse

L'augmentation de la taille des données fait apparaître une différence de performances entre les divers algorithmes. Avec 5 utilisateurs simultanés, MD5 a une vitesse d'exécution supérieure d'environ 33 % à SHA1. Bien qu'il n'existe pas encore de méthode connue pour attaquer MD5, des collisions peuvent théoriquement être exploitées contre cet algorithme.

Les performances de SHA512 se sont dégradées avec l'accroissement des données. Sa vitesse est inférieure d'environ 55 % à celle de SHA1.

Gardez à l'esprit qu'une taille de hachage plus longue garantit une plus grande sécurité, au détriment des performances comme je l'ai mentionné précédemment.

Algorithmes de hachage (1 Mo) : RPS et temps de réponse

Figure 6. Algorithmes de hachage (1 Mo) : RPS et temps de réponse

La différence de performances entre les algorithmes s'accroît avec l'augmentation de la taille des données.

L'algorithme MD5 a une vitesse supérieure de 43 % à celle de SHA1 avec une charge de cinq utilisateurs simultanés (vitesse supérieure de 20 % pour une charge différente). SHA1 a une vitesse d'exécution de 72 % supérieure à celle de SHA512.

Algorithmes de clé symétrique

La méthode testée crypte tout d'abord les données, puis décrypte les octets cryptés. Nous avons effectué les tests avec des données de 4 Ko, 100 Ko et 500 Ko afin de mesurer l'impact de la taille des données sur les performances.

Algorithmes de clé symétrique (4 Ko) : RPS et temps de réponse

Figure 7. Algorithmes de clé symétrique (4 Ko) : RPS et temps de réponse

Remarque :

  • Nous avons utilisé les wrappers gérés pour DES, 3DES et RC2, disponibles dans System.Security.Cryptography, qui enveloppent les implémentations non gérées disponibles dans CryptoAPI. Il s'agit respectivement des wrappers DESCryptoServiceProvider, TripleDESCryptoServiceProvider et RC2CryptoServiceProvider. Il n'existe qu'une seule implémentation gérée, « pure » de Rijndael dans System.Security.Cryptography, et nous l'avons utilisée dans les tests.
  • Tailles de blocs et de clés utilisées par les algorithmes pour crypter et décrypter les données :
    Algorithme Taille de la clé

    (Bits)

    Taille du bloc

    (Bits)

    DES 64 64
    3DES 192 64
    RC2 128 64
    Rijndael 256 128
  • 3DES, RC2 et Rijndael prennent en charge d'autres longueurs de clé, mais nous avons choisi de crypter et de décrypter des données avec la longueur maximale des clés prise en charge dans chaque algorithme. Comme une clé plus longue nécessite plus d'efforts et plus de temps pour être attaquée, et qu'elle offre de ce fait une meilleure résistance, son utilisation nous permettait de mesurer les performances au moment où l'algorithme présentait une sécurité maximale.
  • Les clés plus longues fournissent une meilleure sécurité car elles réduisent les possibilités d'attaques par recherche de clé en augmentant le nombre de combinaisons de clé possibles.
  • Des algorithmes de même longueur de clé (128, par exemple) ne fourniront pas forcément le même niveau de sécurité.

Avec peu de données, nous avons constaté que Rijndael, un AES (standard de cryptage avancé), était l'algorithme le plus rapide. Il dispose de longueurs de clés et de blocs variables, qui peuvent être définies à 128, 192 ou 256 bits. En outre, il utilise un nombre variable de cycles pour produire le texte chiffré selon la longueur de la clé et celle du bloc.

DES crypte et décrypte les données en blocs de 64 bits, à l'aide d'une clé 64 bits. Chaque bloc de données est répété 16 fois pour produire le texte chiffré. Bien qu'il soit plus rapide que le 3DES et le RC2, la longueur réduite de sa clé le rend vulnérable aux attaques de force brute. Il devient plus vulnérable et plus facilement « démontable » avec l'utilisation d'ordinateurs toujours plus puissants.

Le triple DES (3DES) a été développé pour améliorer la sécurité de DES en appliquant le cryptage DES trois fois avec trois clés différentes (crypter les données trois fois avec la même clé n'apporterait rien). Il s'agit simplement d'un autre mode de DES, très sûr mais aux performances plus faibles. Pour sa procédure de cryptage, il utilise une clé de 192 bits qui est fragmentée en trois sous-clés de 64 bits. Cette procédure est identique à celle de DES, mais est répétée trois fois, la rendant ainsi plus fiable. Les données sont cryptées à l'aide de la première sous-clé, décryptées à l'aide de la seconde sous-clé, puis cryptées une nouvelle fois à l'aide de la troisième sous-clé.

RC2 s'avère être l'algorithme le plus lent lorsque les données à crypter sont peu volumineuses. Il effectue d'emblée des calculs lourds pour créer une table liée aux clés dont le coût est apparemment élevé pour le cryptage des données de petite taille. RC2 est un chiffrement de bloc symétrique à longueur de clé variable qui offre une alternative à l'algorithme DES.

Algorithmes de clé symétrique (100Ko) : RPS et temps de réponse

Figure 8. Algorithmes de clé symétrique (100 Ko) : RPS et temps de réponse

Lorsqu'on augmente la taille des données à crypter et à décrypter, on obtient une image des performances bien différente de celle obtenue au test précédent. DES est l'algorithme le plus rapide, suivi par RC2, dont la vitesse dépasse de 20 % celle de 3DES. Notez que les lourds calculs de RC2 pour créer la table liée aux clés, mentionnés précédemment, sont amortis lorsque l'on utilise des données plus volumineuses. Rijndael est ici l'algorithme le plus lent, avec une vitesse de 25 % inférieure à celle de 3DES. Nous utilisons ici une clé de 256 bits pour le cryptage Rijndael, ce qui le rend plus fiable que toutes les autres méthodes (bien que la presse fasse mention de possibilités d'attaque contre Rijndael, peut-être plus efficaces que l'attaque de force brute), mais en fait aussi la solution la plus lente. De même, nous avons utilisé une clé de 192 bits pour 3DES, plus longue que les clés utilisées pour le cryptage de DES et RC2.

Je souhaite préciser de nouveau que ce n'est pas parce qu'ils utilisent une clé de même longueur que les algorithmes sont aussi résistants. Ils ont chacun des caractéristiques propres et peuvent donc être plus ou moins puissants.

Comme je l'ai dit au début de cet article, il s'agit toujours de trouver un compromis entre sécurité et performances. Vous devez évaluer la valeur de vos données, le coût de déploiement et les conséquences en termes de facilité d'utilisation/performances avant de choisir l'algorithme adapté à la sécurisation de vos données. Si la valeur des données à protéger est élevée, vous devez envisager de réduire les performances pour sécuriser vos données. Dans le cas contraire, vous préférerez sans doute utiliser un algorithme moins sûr.

Algorithmes de clé symétrique (500 Ko) : RPS et temps de réponse

Figure 9. Algorithmes de clé symétrique (500 Ko) : RPS et temps de réponse

Avec l'accroissement de la taille des données cryptées et décryptées, nous voyons également se dégager la même tendance dans ce test, bien que la différence de performances se soit accrue entre les chiffrements, sauf entre 3DES et Rijndael.

Algorithmes de clé asymétrique

Le cryptage à l'aide d'algorithmes à clés asymétriques est très lent, notamment lorsque les données sont volumineuses. Ils ne sont donc pas utilisés pour le cryptage en bloc pour lequel il convient d'utiliser les algorithmes symétriques. En effet, les algorithmes asymétriques peuvent servir pour l'échange de clé.

Les deux algorithmes asymétriques les plus connus sont RSA et DSA. RSA peut être utilisé à la fois pour le cryptage et pour la génération de signature. En revanche, DSA sert uniquement à la génération de signature. Nous avons comparé les algorithmes RSA et DSA sur leur vitesse de génération de signature numérique ainsi que sur le temps qu'il leur est nécessaire pour vérifier une signature.

Création d'une signature

Création d'une signature (100 Ko): RPS et temps de réponse

Figure 10. Création d'une signature (100 Ko) : RPS et temps de réponse

Remarque :

  • Nous avons utilisé RSACryptoServiceProvider et DSACryptoServiceProvider proposés dans System.Security.Cryptography, qui sont des wrappers gérés autour des implémentations non gérées de RSA et de DSA, respectivement, fournies par CryptoAPI.
  • RSA utilisait une clé de 1024 bits.
  • DSA utilisait une clé de 512 bits.

Comme le montre la figure 10, la vitesse de DSA est supérieure d'environ 29 % à celle de RSA lors de la génération d'une signature numérique. Le processus de signature numérique de RSA utilise la clé privée pour crypter uniquement le résumé de message. La méthode cryptée devient la signature numérique.

Bien que similaire à RSA, DSA ne crypte pas les résumés de message à l'aide de la clé privée, et ne le décrypte pas avec la clé publique. DSA utilise en revanche des fonctions mathématiques spécifiques pour générer une signature numérique composée de deux nombres de 160 bits, dérivés du résumé de message et de la clé privée.

Création d'une signature (500 Ko): RPS et temps de réponse

Figure 11. Création d'une signature (500 Ko) : RPS et temps de réponse

Avec plus de données, DSA reste plus rapide que RSA.

Vérification de la signature

Vérification de la signature (100 Ko) : RPS et temps de réponse

Figure 12. Vérification de la signature (100 Ko) : RPS et temps de réponse

Les résultats s'inversent lorsqu'il s'agit de vérifier la signature. RSA a une vitesse supérieure d'environ 29 % à celle de DSA. RSA utilise une clé publique pour vérifier la signature. Il génère un nouveau résumé de message à partir des données reçues, décrypte le résumé de message d'origine à l'aide de la clé publique de l'initiateur et compare le résumé décrypté au nouveau résumé généré. Si les deux résumés correspondent, l'intégrité du message est vérifiée. L'identité de l'initiateur est également confirmée, car la clé publique ne peut décrypter que les données qui ont été cryptées avec la clé privée correspondante.

DSA utilise également la clé publique pour vérifier la signature mais le processus de vérification est plus complexe que celui de RSA.

Vérification de la signature (500 Ko) : RPS et temps de réponse

Figure 13. Vérification de la signature (500 Ko) : RPS et temps de réponse

Avec plus de données, la différence de performances entre les deux algorithmes est négligeable.

Conclusion

Comme le démontrent ces tests, les schémas d'authentification, les algorithmes de hachage et les techniques de cryptage impliquent des surcharges variables et présentent donc des caractéristiques de performances très différentes. La taille des données transmises aux algorithmes de hachage ainsi qu'aux techniques de cryptage joue également un grand rôle.

Lorsque vous concevez un système sécurisé, les techniques d'implémentation doivent être choisies en premier lieu en fonction de la résistance aux menaces et ensuite seulement en fonction des performances. Ainsi, une authentification de base sans SSL peut être utilisée pour obtenir de meilleures performances, mais quelle que soit sa vitesse d'exécution, elle ne sera pas adaptée aux systèmes vulnérables aux menaces qu'elle ne permet pas de combattre.

Cet article n'aborde pas les conséquences globales sur les performances d'une protection combinant authentification et confidentialité des données, ce qui correspondrait à la réalité de la sécurité d'un système. Les performances d'un système sécurisé varient en fonction de la combinaison des différents schémas de protection qui sont utilisés.



Dernière mise à jour le mercredi 11 décembre 2002



Pour en savoir plus
© 2008 Microsoft Corporation. Tous droits réservés. Conditions d'utilisation  |  Marques  |  Confidentialité
Page view tracker