|
Publicité ' | ||||||||||||||||||||||
|
|
#1 |
![]() ![]() Inscription : août 2006 Messages : 1 241 ![]() |
Bonjour,
Alors voilà, on vient de me demander d'encrypter / décrypter des mots de passe avec openssl. Je dispose d'un certificat "cert.pem" et de la clef publique "pkey.pem", sous forme de fichier. Le problème, c'est que c'est la toute première fois que je fais ça (usuellement, j'utilise md5(monPassword) et point barre, mais là, faut que ce soit réversible) je ne trouve aucun exemple un tant soit peu clair pour faire l'encryptage/décryptage. Intuitivement, je m'attendait à un truc du genre "char *encryptRsa(char *publicKey, char *stringToEncrypt)", mais visiblement, c'est bien plus complexe que ça... ![]() J'essaie depuis hier de torturer la maigre doc d'OpenSSL pour arriver à quelque chose, mais pour l'instant sans le moindre succès... Merci d'avance ! ps : pour info, c'est en c++/qt que je dois coder ça.
__________________
Rakken Oneira, un monde imaginaire d'Heroic Fantasy. Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/ |
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Marc Ingénieur sécurité Inscription : novembre 2009 Messages : 283 ![]() |
Salut,
que veux-tu faire exactement ? Des mots de passes réversible sont vraiment une très mauvaise pratique. Si tu dois le faire il faut que tu ailles des impératifs important et pas juste un password recovery. Sinon pourquoi utiliser du RSA ? Si c'est pour utiliser une autorité de certification, ou un certificat auto-signé entre deux équipements oui. Si c'est uniquement pour chiffrer utilise un algorithme symétrique, c'est plus simple. (l'avantage d'utiliser RSA, sur des systèmes linux c'est que la gestion des fichier .pem et cert est déjà implémenté.) [EDIT] Un code de test qui fait plus ou moins ce que tu veux je pense, par contre je n'ai ni regardé, ni testé son code. http://jeanrola.schuler.home.hefr.ch..._asymmetric%2F [/EDIT] p.s. Une petite remarque sur le fait de faire un md5(password) : 1. On utilise un sel (d'une certaine longueur) + password pour éviter les attaques par dictionnaire et/ou rainbow. 2. On change de graine pour chaque password, afin de forcer l'attaquant à refaire un dico/rainbow pour chaque password 3. On utilise pas md5, qui devient vieux 4. On effectue un hash en boucle hash(hash(...(sel + password))), je n'arrive malheureusement pas à remettre la main sur la recommandation du nombre d'itérations, mais sur du sha256 il faut en faire plusieurs milliers par exemple. Ceci afin de rendre le brute-force plus cher. Un papier de recommandation du NIST : http://csrc.nist.gov/publications/ni...-sp800-132.pdf |
|
|
00
|
|
|
#3 |
![]() ![]() Inscription : août 2006 Messages : 1 241 ![]() |
Ce n'est pas juste un password recovery, en fait, je bosse sur un équipement embarqué. En interne tous ses mots de passes sont actuellement stockés en clair dans une base sqlite et envoyé à divers webservices en clair.
Le but est que le stockage des mdp en local se fasse de manière crypté. Par contre, le problème est que les webservices ne vont pas évoluer avant plusieurs mois (au mieux). Donc pour assurer une continuité de service, il faut absolument que le mot de passe soit décrypté juste avant d'être envoyé (on est bien d'accord qu'au niveau sécurité, ça reste... perfectible, mais c'est toujours mieux que d'avoir l'intégralité en clair). Les équipements produits possèdent déjà chacun leur "cert.pem" et "pkey.pem" qui est unique à chaque fois. C'est aussi pour ça que cette méthode a été choisie. Bref, je vais regarder le code que tu m'as fournis et voir si j'arrive (enfin) à en tirer quelque chose. Merci beaucoup ! ps : Entièrement d'accord pour le md5, je n'avais pas parlé de grain de sable par simplification. Et pour la prochaine fois, j'irai voir du côté des autres solutions que tu as mentionnés ;-)
__________________
Rakken Oneira, un monde imaginaire d'Heroic Fantasy. Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/ |
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Marc Ingénieur sécurité Inscription : novembre 2009 Messages : 283 ![]() |
Code :
Le but est que le stockage des mdp en local se fasse de manière crypté. Par contre, le problème est que les webservices ne vont pas évoluer avant plusieurs mois (au mieux). Donc pour assurer une continuité de service, il faut absolument que le mot de passe soit décrypté juste avant d'être envoyé (on est bien d'accord qu'au niveau sécurité, ça reste... perfectible, mais c'est toujours mieux que d'avoir l'intégralité en clair). Donc ce que tu fais est mieux que rien, mais n'assure aucune protection contre un attaquant un peu sérieux. Maintenant avec tes contraintes de développement, j'ai rien de mieux à te proposer, mise à part de faire en sorte que cela soit facilement évolutif vers une solution qui protège au moins le mot de passe de tes clients. p.s. Redis moi ce que vaux le code, j'en aurai peut-être besoin dans un avenir proche |
|
|
00
|
|
|
#5 | ||
|
Membre habitué
![]() ![]() Inscription : février 2004 Messages : 342 ![]() |
ce n'est pas du code C, mais ca permet de faire des essais
Code :
tu decryptes avec la clé privée (seul ta clé peut récupérer le message) Note: comme l'a tres bien mentionné manticore, puisque la clé est à coté de la data cryptée, tu ajoutes de la complexité (donc du cout) mais aucune sécurité. |
||
|
|
00
|
|
|
#6 | |
![]() ![]() Inscription : août 2006 Messages : 1 241 ![]() |
Citation:
Résolu. Merci ;-))
__________________
Rakken Oneira, un monde imaginaire d'Heroic Fantasy. Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/ |
|
|
00
|
|
|
#7 | ||
![]() ![]() Inscription : août 2006 Messages : 1 241 ![]() |
Bon, le cryptage et le décryptage fonctionnent bien, mais en passant par des fichiers.
J'ai notamment ce morceau de code : Code c++ :
Je sais que ma valeur est bonne parce que le contenu du fichier est correct, mais pas moyen de convertir cette valeur... Quelqu'un aurait une idée ?
__________________
Rakken Oneira, un monde imaginaire d'Heroic Fantasy. Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/ |
||
|
00
|
Copyright © 2000-2013 - www.developpez.com