OVH Cloud OVH Cloud

Cryptage Simple ? (MD5, DES, DSA, ........)

12 réponses
Avatar
TroXsA
Bonjour,

Exist-il pas un mode de cryptage simple ?
exemple :
Criptage(TypeDeCryptage, Mode-Decrypt ou Cryptage, ClefDeCryptageStr,
Fichier ou ChaineStr)
Criptage(MD5, Decrypt, "maclef", TextBox1.text)
ou encore Criptage(DES, Cryptage, "maclef", "c:\monfichier.txt")

Faut-il faire sa class ? ou, il existe une methode simple ? (c'est domage si
cela n'existe pas)


Cordialement,

Site : http://www.troxsa.info
Mail : http://cerbermail.com/?rIXgaw9Xsl

2 réponses

1 2
Avatar
Mehdi
On Mon, 13 Mar 2006 15:48:35 +0100, TroXsA wrote:

Ce que je recherche a faire c'est simplement de faire un cryptage de mot de
passe qui sera ré-utiliser dans le programme
c'est un peux comme le fait certain programme comme Outlook Express, Outlook
ou encore Internet Explorer, et bien d'autre programme ...



OK. C'est plus clair maintenant. 3 cas:

1) le mot de passe est utilisé uniquement pour ton appli. Par exemple, tu
veux protéger ton appli par un mot de passe que l'utilisateur devra rentrer
a chaque lancement. Dans ce cas, il est completement inutile de stocker le
mot de passe. Stocke uniquement un hash du mot de passe "salté" avec
d'autre donnée (comme par exemple le nom de login) afin de ralentir les
"dictionnary attacks". Un hash est un algorithme de cryptage "one-way": une
fois cryptées, il est impossible de décrypter les données. La particularité
des algorithmes de hashage est qu'étant donné 2 sets de données identiques,
l'algorithme garanti que leur valeur de hash sera également identique.
Grace a cette propriété, tu pourra vérifier que l'utilisateur aura rentré
le bon mot de passe sans jamais avair a le stocker (seul son hash sera
stocké). Pour générer un hash, tu peux utiliser par exemple MD5 ou SHA1.

2) le mot de passe est destiné a etre fourni a une autre application qui a
besoin d'avoir le mot de passe en clair (cas d'Outlook par exemple: le mot
de passe doit etre fourni en clair au serveurs SMTP, IMAP et POP3). Dans ce
cas, si ton appli ne va tourner que sous Windows 2000 et XP, utilise la
Data Protection API (DPAPI) fournie par Windows pour stocker les mots de
passe. Cette API a été concue spécifiquement pour ce genre de cas et
utilise l'algorithme Triple-DES et une clé dérivée du compte utilisateur
Windows depuis laquelle elle est appelée ce qui garanti que personne en
dehors de l'utilisateur de ton appli ne pourra décrypter ces données. DPAPI
sur MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsecure/html/windataprotection-dpapi.asp

Un exemple (pas testé) d'utilisation de la DPAPI en C# et VB .NET:
http://www.obviex.com/samples/dpapi.aspx

3) Tu n'entre dans aucun des cas précédent. Dans ce cas, tu va devoir
crypter les données toi-meme. Quelques conseils:

- Oublie le cryptage asymétrique comme RSA. Ce n'a pas du tout été concu
pour résoudre ce genre de probleme. Utilise un algorithme de cryptage
symétrique comme Triple-DES ou AES (Rijndael).
- Pour la clé de cryptage, une solution triviale est d'utiliser une clé
hardcodée dans ton code. Faire cela rendra le code de cryptage et de
décryptage trivial a déveloper mais sera malheureusement aussi sur que de
ne pas crypter du tout. N'importe quel gamin de 10 ans sera capable d'aller
récuperer les donnée "cryptées" ou tu les aura stockée et pourra utiliser
ton appli sur son propre PC en utilisant ces données recupérées sur un
autre PC pour accéder a je ne sais quelles ressource ton appli permet
d'accéder. Et n'importe quel developeur non-débutant ou wannabe-hacker
pourra extraire la clé de ton code. Donc tu ne découragera absoluement
personne, a part les personnes qui n'auraient de toute maniere jamais tenté
de craquer ton appli. Essaie de dériver la clé de cryptage a partir
d'informations spécifique a l'environement de l'utilisateur. Cela n'est pas
forcément trivial mais Google et les groupe dédiés a la sécurité pourront
d'aider plus que moi la dessus.

En gros je stocke tous un tas de paramètres dans le registre qui n'ont pas
besoin de cryptage, mais le mot de passe est le login reste des données
sensible je les cryptes pour déjà ne pas les données en clair et facilité la
tache, et le cryptage en soit reste un bon moyen de décourager de nombreuse
personnes.



Fait gaffe, mal utilisé, le cryptage est une perte de temps qui ne donne
qu'une illusion de sécurité. Soit les données sont réelement sensibles et
dans ce cas, il te faut utiliser une solution qui les protege réelement,
soit ces données ne pas si sensible que ca apres tout et dans ce cas, ne
pert pas ton temps avec le cryptage. Le cryptage n'est pas "un bon moyen de
décourager de nombreuse personnes". Soit il est bien utilisé et décourage
tout le monde sauf les hardcore crackers , soit il est mal utilisé et ne
décourage personne.
Avatar
TroXsA
re Bonjour,

J'ai trouvé ce que je recherchais
Merci pour tes lumieres ... et d'avoir pris du temps pour m'aider :) a
bientot ..


Cordialement,

Site : http://www.troxsa.info
Mail : http://cerbermail.com/?rIXgaw9Xsl




"Mehdi" a écrit dans le message de news:
1kuvtjtha2rcz$.1qcldcwcbivhh$
On Mon, 13 Mar 2006 15:48:35 +0100, TroXsA wrote:

Ce que je recherche a faire c'est simplement de faire un cryptage de mot
de
passe qui sera ré-utiliser dans le programme
c'est un peux comme le fait certain programme comme Outlook Express,
Outlook
ou encore Internet Explorer, et bien d'autre programme ...



OK. C'est plus clair maintenant. 3 cas:

1) le mot de passe est utilisé uniquement pour ton appli. Par exemple, tu
veux protéger ton appli par un mot de passe que l'utilisateur devra
rentrer
a chaque lancement. Dans ce cas, il est completement inutile de stocker le
mot de passe. Stocke uniquement un hash du mot de passe "salté" avec
d'autre donnée (comme par exemple le nom de login) afin de ralentir les
"dictionnary attacks". Un hash est un algorithme de cryptage "one-way":
une
fois cryptées, il est impossible de décrypter les données. La
particularité
des algorithmes de hashage est qu'étant donné 2 sets de données
identiques,
l'algorithme garanti que leur valeur de hash sera également identique.
Grace a cette propriété, tu pourra vérifier que l'utilisateur aura rentré
le bon mot de passe sans jamais avair a le stocker (seul son hash sera
stocké). Pour générer un hash, tu peux utiliser par exemple MD5 ou SHA1.

2) le mot de passe est destiné a etre fourni a une autre application qui a
besoin d'avoir le mot de passe en clair (cas d'Outlook par exemple: le mot
de passe doit etre fourni en clair au serveurs SMTP, IMAP et POP3). Dans
ce
cas, si ton appli ne va tourner que sous Windows 2000 et XP, utilise la
Data Protection API (DPAPI) fournie par Windows pour stocker les mots de
passe. Cette API a été concue spécifiquement pour ce genre de cas et
utilise l'algorithme Triple-DES et une clé dérivée du compte utilisateur
Windows depuis laquelle elle est appelée ce qui garanti que personne en
dehors de l'utilisateur de ton appli ne pourra décrypter ces données.
DPAPI
sur MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsecure/html/windataprotection-dpapi.asp

Un exemple (pas testé) d'utilisation de la DPAPI en C# et VB .NET:
http://www.obviex.com/samples/dpapi.aspx

3) Tu n'entre dans aucun des cas précédent. Dans ce cas, tu va devoir
crypter les données toi-meme. Quelques conseils:

- Oublie le cryptage asymétrique comme RSA. Ce n'a pas du tout été concu
pour résoudre ce genre de probleme. Utilise un algorithme de cryptage
symétrique comme Triple-DES ou AES (Rijndael).
- Pour la clé de cryptage, une solution triviale est d'utiliser une clé
hardcodée dans ton code. Faire cela rendra le code de cryptage et de
décryptage trivial a déveloper mais sera malheureusement aussi sur que de
ne pas crypter du tout. N'importe quel gamin de 10 ans sera capable
d'aller
récuperer les donnée "cryptées" ou tu les aura stockée et pourra utiliser
ton appli sur son propre PC en utilisant ces données recupérées sur un
autre PC pour accéder a je ne sais quelles ressource ton appli permet
d'accéder. Et n'importe quel developeur non-débutant ou wannabe-hacker
pourra extraire la clé de ton code. Donc tu ne découragera absoluement
personne, a part les personnes qui n'auraient de toute maniere jamais
tenté
de craquer ton appli. Essaie de dériver la clé de cryptage a partir
d'informations spécifique a l'environement de l'utilisateur. Cela n'est
pas
forcément trivial mais Google et les groupe dédiés a la sécurité pourront
d'aider plus que moi la dessus.

En gros je stocke tous un tas de paramètres dans le registre qui n'ont
pas
besoin de cryptage, mais le mot de passe est le login reste des données
sensible je les cryptes pour déjà ne pas les données en clair et facilité
la
tache, et le cryptage en soit reste un bon moyen de décourager de
nombreuse
personnes.



Fait gaffe, mal utilisé, le cryptage est une perte de temps qui ne donne
qu'une illusion de sécurité. Soit les données sont réelement sensibles et
dans ce cas, il te faut utiliser une solution qui les protege réelement,
soit ces données ne pas si sensible que ca apres tout et dans ce cas, ne
pert pas ton temps avec le cryptage. Le cryptage n'est pas "un bon moyen
de
décourager de nombreuse personnes". Soit il est bien utilisé et décourage
tout le monde sauf les hardcore crackers , soit il est mal utilisé et ne
décourage personne.


1 2