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é.