Recherche d'algos de crypto implémentés en C++

Ici, on discute de l'anonymat et de la préservation des données personnelles sur le net. Il est également question de crypographie puisque ce domaine est étroitement liée au sujet.

Modérateur: modos Ixus

Recherche d'algos de crypto implémentés en C++

Messagepar F10 » 07 Fév 2006 16:43

Bonjour,

Je recherche du code en C++ (ou éventuellement en C) qui implémente des algorithmes cryptographiques. Ou puis-je trouver du code open ?
Je cherche en particulier des implémentations des mécanismes suivants : ECDSA (courbe elliptique), HMAC (Hashed MAC), SHA-256bits, AES-128bits (Rijndael) avec le mode CFB, ECDH (courbe elliptique Diffie-Hellman).

Autre question : je n'ai pas bien compris ce qu'est une KDF (Key Derivation Function) ?

Merci de votre aide
F10
Matelot
Matelot
 
Messages: 2
Inscrit le: 07 Fév 2006 16:40

Messagepar vanvan » 10 Fév 2006 13:52

Bonjour.

ça pourrait peut être t'aider :

http://csrc.nist.gov/CryptoToolkit/aes/

On y trouve aussi les spécifications aes.
"Conduire semble un peu compliqué mais après avoir essayé 271 fois d'avoir l'oral qu'ai-je à craindre?", a-t-il philosophé.
Fri April 15, 2005, Seo San-moon
Avatar de l’utilisateur
vanvan
Amiral
Amiral
 
Messages: 1270
Inscrit le: 14 Mars 2003 01:00
Localisation: la roche sur yon / nantes

Messagepar Athanase » 10 Fév 2006 19:17

Bonjour,

j'ai peut-être quelques éléments de réponse pour toi.

Pour commencer, le lien suivant:
http://www.homeport.org/~adam/crypto/
te donne une liste d'API crytpographiques libres. Pour ce qui est des algos suivants: HMAC, SHA et AES, tu devrais les trouver aisément dans les librairies qui sont proposées. En revanche, une librairie pour ACDSA et ACDH doit être plus dure à trouver en dehors des librairies commerciales.

Sinon, je peux t'éclairer un peu sur ce qu'est une "Key Derivation Function" ou fonction de dérivation de clé (je sais je parle super bien anglais ;-) ).
Les fonctions de dérivation de clés sont très utilisées dans le monde du chiffrement symétrique (le monde bancaire s'appuit beaucoup sur des fonctions de dérivation de clé). En effet, elles permettent de différencier une clé donnée (applée aussi clé initiale) en un certain nombre de clés dérivées. Chaque clé dérivée peut être recalculée à partir de la clé initiale, de la fonction de dérivation choisie et des informations utilisées par la fonction de dérivation (un n° de série par exemple).

Un des buts de ce système est de simplifier la gestion des clés installées sur un parc de terminaux de paiment par exemple. Si la clé installée sur chaque terminal correspond au numéro de série du terminal chiffré à l'aide de la "clé initiale", tu n'as pas besoin de garder une liste des clés de tes terminaux puisqu'il te suffit de la clé intiale et du numéro de série du terminal pour recalculer la clé dérivée. Ainsi, si tu dois chiffrer un message à destination de ton terminal, tu recalcule la clé dérivée à partir du n° de série du terminal plutôt que de chercher la clé à utiliser.

En fait, l'usage le plus courant est le changement de la clé de chiffrement pour chaque transaction bancaire (avec la méthode DUKPT - Derived Unique Ket Per Transaction). En effet, à partir d'une clé initiale, DUKPT fourni une méthode pour que chaque transaction réalisée par le terminal de paiment soit chiffrée avec une clé de session qui peut être recalculé par la banque à l'aide du n° de série du terminal et du n° de transaction. Du coup, au lieu de chiffrer toutes les transactions avec une clé symétrique qui pourrait finir par être attaquée, la dérivation des clés avec DUKPT permet de changer de clé de chiffrement pour chaque transaction sans que ce soit compliqué à gérer au niveau centrale parceque le serveur qui déchiffre le message peut toujours recalculer la clé utilisée à partir de la clé initiale, du n° de série du terminal et du n° de transaction.

Je ne sais pas si je suis très clair mais en gros c'est à ça que sert une fonction de dérivation de clé.
Avatar de l’utilisateur
Athanase
Aspirant
Aspirant
 
Messages: 130
Inscrit le: 28 Juin 2002 00:00

Messagepar Walkyrie_II » 11 Fév 2006 20:12

vanvan a écrit:Bonjour.

ça pourrait peut être t'aider :

http://csrc.nist.gov/CryptoToolkit/aes/

On y trouve aussi les spécifications aes.


nist.gov <== Sous reserve que les sources ne donne pas de porte... ouverte. vu la source...
Walkyrie_II
Enseigne de vaisseau
Enseigne de vaisseau
 
Messages: 179
Inscrit le: 04 Fév 2006 21:33
Localisation: Paris

Messagepar F10 » 14 Fév 2006 12:01

Merci pour vos réponses et pour cette explication claire de la KDF.
En continuant mes recherches, j'ai finalement trouvé ce qui me convenait donc je voudrais le faire partager si d'autres en ont besoin. Il s'agit de la bibliothèque OpenSSL. On y trouve la plupart des mécanismes de crypto en C, y compris ECDSA et ECDH dans la dernière version 0.9.8a. On peut la trouver sur www.openssl.org et l'utiliser à des fins commerciales ou non.
F10
Matelot
Matelot
 
Messages: 2
Inscrit le: 07 Fév 2006 16:40


Retour vers Confidentialité et Cryptographie

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité