urve25519 est le niveau le plus élevé de fonction Diffie-Hellman disponible pour une large gamme de scénarios, conçu par le professeur Daniel J. Bernstein. En cryptographie, Curve25519 est une courbe elliptique qui offre une sécurité sur 128 bits et est conçue pour être utilisée avec le schéma de négociation de clés Diffie-Hellman (ECDH) à courbe elliptique. C’est l’une des courbes ECC les plus rapides et elle n’est couverte par aucun brevet connu.
Étant donné la clé de 32 octets de l’utilisateur, curve25519 calcule la clé publique de 32 octets de l’utilisateur. Étant donné la clé de 32 octets de cet utilisateur et celle de 32 octets d’un autre, curve25519 calcule une clé partagée de 32 octets pour les deux utilisateurs. Ce secret peut ensuite être utilisé pour authentifier et chiffrer des informations pour les deux utilisateurs.
2. Télécharger et compiler Curve25519
La bibliothèque curve25519 calcule la fonction curve25519 à une très grande vitesse. La bibliothèque possède un large éventail d’applications. Vous pouvez et devez l’appliquer dans votre propre programme au lieu de lier à une bibliothèque partagée ; Le code compilé fait environ 16 Ko, selon le processeur.
Télécharger et compiler
Télécharger
compiler
3. Utiliser Curve25519
Pour tout programme C qui utilisera curve25519, modifiez le programme pour inclure curve25519.h, puis modifiez le makefile pour lier le programme à curve25519.a et indiquer que le programme dépend de curve25519.a et curve25519.h.
Clés de calcul
En interne, pour générer une clé curve25519 de 32 octets, générez d’abord un secret de 32 octets aléatoires à partir d’une source de sécurité cryptographique : mysecret[0], mysecret[1], ..., mysecret[31]. Faites alors comme suit : mysecret[0] &= 248 ; mysecret[31] &= 127 ; mysecret[31] |= 64 ; Générer une clé Curve25519 de 32 octets mysecret[0], mysecret[1], ..., mysecret[31].
À l’avenir, la version de la bibliothèque prendra en charge une fonction de compression curve25519_ qui compresse 128 octets de hachage en 32 octets, ajoutant une certaine protection contre l’insuffisance des générateurs de nombres aléatoires ; Une fonction de curve25519_ clamp qui convertit 32 octets en clé ; et une combinaison la plus facile à utiliser de curve25519_ fonctions de génération de clés, qui convertissent directement 128 octets en clés.
Calculer les clés publiques
Pour générer une clé publique de 32 octets correspondant à la clé de 32 octets mypublic[0], mypublic[1], ..., mypublic[31], appelez la fonction curve25519(monpublic, monsecret, basepoint) ; où le point de base constant est :
const point de base non signé char[32] = {9} ; Les futures versions de la bibliothèque permettront des fonctions publiques curve25519_ plus concises.
Générer une clé partagée
Étant donné la clé publique hispublic[0], hispublic[1], ..., hispublic[31], d’un autre utilisateur
curve25519 (partagé, monsecret, son public) ; Générer des clés partagées de 32 octets partagées[0], partagées[1], ..., partagées[31]. Une autre personne peut générer la même clé partagée à partir de sa propre clé privée ainsi que de votre clé publique. Ensuite, vous pouvez tous les deux hacher cette clé partagée et utiliser le résultat comme clé, par exemple pour Poly1305-AES. Les futures versions de la bibliothèque prendront en charge une fonction d’extension curve25519_ qui hache directement une clé de 32 octets pour générer 128 octets en tant que clé, et qui est la plus facile à utiliser, une combinaison curve25519_ fonction partagée.
4. Référence
[Ed25519 et Curve25519 expliqués]La connexion hyperlientérée est visible. [Curve25519 chiffrement, déchiffrement et utilisation ED25519 signatures]La connexion hyperlientérée est visible. [ED25519]La connexion hyperlientérée est visible. [Implémentation ED25519 Android]La connexion hyperlientérée est visible. [[ED25519 C]La connexion hyperlientérée est visible. [ed25519 Implémentation Java]La connexion hyperlientérée est visible.
Langue source:La connexion hyperlientérée est visible. |