|
Chiffrement avec .NET
|
Cliquez ici pour voir la page dans un explorateur séparé. |
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 :
- Windows XP Pro ou 2000 avec SP2 ou NT4 avec SP6a
- Internet Explorer 5.01
- IIS (mais pas dans tout les cas)
- .NET Framework SDK (evidemment !!) + ses patches (recommandé)
- 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
|
|