Les articles de ESSI# - Chiffrement avec .NET

RACINE
 

Chiffrement avec .NET

Voir dans une fenêtre à part Cliquez ici pour voir la page dans un explorateur séparé.

Index Rapide

Introduction

Le chiffrement (ou la cryptographie, à une subtilité qui m'échappe) permet de protéger vos données. De qui ? De personnes qui ne devraient pas y accéder ou pouvoir les altérer. Vous allez voir comment c'est facile avec .NET !

Nota Bene : je ne vais pas expliquer ici les principes du chiffrement ou expliquer le fonctionnement d'un des nombreux algorithmes présents dans le Framework. D'autres très bon articles s'en chargent, et ceci est complètement hors du propos de cet article.

Pour utiliser .NET framework, vous devez avoir installé sur votre poste AU MOINS :
  1. Windows XP Pro ou 2000 avec SP2 ou NT4 avec SP6a
  2. Internet Explorer 5.01
  3. IIS (mais pas dans tout les cas)
  4. .NET Framework SDK (evidemment !!) + ses patches (recommandé)
  5. un éditeur de votre choix (emacs ou VS.NET suivant les courants de pensée et les moyens)

Je prends pour pré-requis que mon lecteur a un niveau même faible en C# (voir de Java au vues de ressemblances syntaxiques).



Voici la liste des différents styles visuels utilisés dans ce cours (et les suivants) :
Si vous voyez ceci ... ...ça veut dire cela.
IDisposable Interface C'est un lien vers une page d'aide du .NET Framework SDK. Ce lien ne fonctionnera que si le .NET framework SDK ANGLAIS est installé sur votre poste courant.
Si vous avez la version française, modifiez les liens comme suit :
ms-help://MS.NETFrameworkSDK/... en
ms-help://MS.NETFrameworkSDK.Fr/...

Ok, c'est pas forcément une bonne idée de Microsoft, mais c'est ainsi ... :(
--> téléchargez le source
C'est un lien vers un fichier téléchargeable hosté sur le même site.

retour à l'index

Tour d'Horizon

La crypto dans .NET

Je rappellerais à mon aimable lecteur que la notion d'imperçabilité des algorithmes de compression est subjective. En effet, certains algorithmes on démontré avec le temps des failles mathématiques les rendant moins "sûres" qu'il n'y parraissait. De même, les techniques mathématiques et la puissance des machines allant crescendo, rien n'est à fortiori inviolable. La clé est dans le fait qu'il faudra tellement de temps pour retrouver la donnée non chiffrée, que ce jour là elle n'aura plus lieu d'être secrète.

Un namespace complet lui est dédié dans .NET et c'est System.Security.Cryptography. Vous trouverez dans ce namespace deux grands type de classes (en omettant les abstraites et interfaces). Les algorithmes symetriques et les asymetriques. Lesquels utiliser ? Ben ça depend de ce que vous voulez faire !
  • Asymetriques : vous pouvez crypter de la donnée, mais pas faire l'opération inverse. C'est à dire qu'à partir de la donnée cryptée, vous ne pouvez pas retrouver la donnée originale.
    On les utilises pour signer des données, où crypter des mots de passes et les stocker. Les deux stars sont MD5 et son remplaçant SHA1. Pour la cryptographie à clé publique, on a notamment RSA et DSA.
  • Symetriques : vous pouvez crypter la donnée ET faire l'opération inverse. Là il s'agit de crypter un fichier au moyen d'une clé, et de le stocker sans trop de soucis.
    Les stars sont DES, triple DES, RC2 et (le top!) AES (Rijndael).

Vous trouverez aussi dans ce namespace un générateur de nombre pseudo aléatoire System.Security.Cryptography.RNGCryptoServiceProvider, bien plus aléatoire que celui fournit par ailleur dans le .NET Framework (System.Random qui est en fait TRES prévisible).

Les classes (en partie) que vous utilisez utiliseront des services COM pour fonctionner.

retour à l'index

Les classes

Dans le namespace System.Security.Cryptography :
  • DESCryptoServiceProvider : l'implémentation du DES [symétrique].
  • TripleDESCryptoServiceProvider : l'implémentation du triple DES [symétrique].
  • RC2CryptoServiceProvider : l'implementation de RC2 [symétrique].
  • RijndaelManaged : l'implémentation de AES (Rijndael) [symétrique].
  • DSACryptoServiceProvider : l'implémentation de DSA [asymétrique].
  • RSACryptoServiceProvider :l'implémentation de RSA [asymétrique].
  • :.
  • :.
  • :.
  • :.
  • :.

retour à l'index

Reconnaissance avancée

Expressions régulières

retour à l'index

Le mot de la fin

Conclusion

Si vous avez des remarques concernant cet article ((im)précisions, remarques, ...) faites moi signe ;)!!

retour à l'index

Remerciements

Monsieur Laurent ELLERBACH, responsable relation études supérieures chez Microsoft France, pour ses idées et son soutien logistique.
Merci à M. Bruno MARTIN, professeur à l'ESSI Nice-Sophia Antipolis pour ses cours sur le chiffrement (cours DESS).

retour à l'index

Sources

Sur le Web :
  • Vue d'ensemble de la cryptographie dans l'aide du .NET Framework (plus complet que cet article, dont il fut un source)
Bibliographie :

retour à l'index

 




par Alain Vizzini (vizzini@essi.fr )
pour l'ESSI & Microsoft, création 19-10-2003, dernière màj 19-10-2003


+ 17.000 pages vues depuis le 14 oct. 2002