urve25519 è il livello più alto di funzione Diffie-Hellman disponibile per una vasta gamma di scenari, progettato dal Professor Daniel J. Bernstein. In crittografia, Curve25519 è una curva ellittica che offre sicurezza a 128 bit ed è progettata per l'uso con lo schema di negoziazione delle chiavi a curva ellittica Diffie-Hellman (ECDH). È una delle curve ECC più veloci e non è coperta da alcun brevetto conosciuto.
Data la chiave di 32 byte dell'utente, curve25519 calcola la chiave pubblica di 32 byte dell'utente. Data la chiave pubblica da 32 byte di quell'utente e quella di 32 byte di un altro, curve25519 calcola una chiave condivisa da 32 byte per entrambi gli utenti. Questo segreto può poi essere utilizzato per autenticare e criptare le informazioni per entrambi gli utenti.
2. Scarica e compila Curve25519
La libreria curve25519 calcola la funzione curve25519 a velocità molto elevata. La biblioteca ha una vasta gamma di applicazioni. Puoi e dovresti applicarlo nel tuo programma invece di collegarlo a una libreria condivisa; Il codice compilato è di circa 16KB, a seconda della CPU.
Scarica e compila
Scaricare
compilare
3. Usa Curve25519
Per qualsiasi programma C che userà curve25519, modifica il programma includendo curve25519.h e modifica il makefile per collegare il programma a curve25519.a e dichiarare che il programma dipende da curve25519.a e curve25519.h.
Chiavi di calcolo
Internamente, per generare una chiave curve25519 da 32 byte, si genera prima un secret di 32 byte casuali da una fonte di sicurezza crittografica: mysecret[0], mysecret[1], ..., mysecret[31]. Poi fai come segue: mysecret[0] &= 248; il mio segreto[31] &= 127; mysecret[31] |= 64; Genera una chiave Curve25519 di 32 byte: mysecret[0], mysecret[1], ..., mysecret[31].
In futuro, la versione della libreria supporterà una funzione di compressione curve25519_ che comprime 128 byte di hashing in 32 byte, aggiungendo una certa protezione contro generatori di numeri casuali insufficienti; Una funzione di clamp curve25519_ che converte 32 byte in una chiave; e una combinazione più facile da usare di curve25519_ funzioni di generazione delle chiavi, che convertono direttamente 128 byte in chiavi.
Calcolo delle chiavi pubbliche
Per generare una chiave pubblica da 32 byte che corrisponda alla chiave da 32 byte mypublic[0], mypublic[1], ..., mypublic[31], chiama la funzione curve25519(mypublic, mysecret, basepoint); dove il punto base costante è:
const unsigned char basepoint[32] = {9}; Le future versioni della biblioteca supporteranno funzioni pubbliche curve25519_ più concise.
Genera una chiave condivisa
Dato il riferimento di un altro utente con la chiave pubblica di Curve25519 hispublic[0], hispublic[1], ..., hispublic[31], chiama
curve25519(condiviso, il mio segreto, il suo pubblico); Generare chiavi condivise da 32 byte condivise[0], condividete[1], ..., condividete[31]. Un'altra persona può generare la stessa chiave condivisa basandosi sulla propria chiave privata e sulla tua chiave pubblica. Poi entrambi potete hashare questa chiave condivisa e usare il risultato come chiave, ad esempio per Poly1305-AES. Le future versioni della libreria supporteranno una funzione di estensione curve25519_ che hasha direttamente una chiave da 32 byte per generare 128 byte come chiave, ed è la più semplice da usare, una combinazione curve25519_ funzione condivisa.
4. Riferimento
[Ed25519 e Curve25519 spiegate]Il login del link ipertestuale è visibile. [Curve25519 crittografia e decrittazione e ED25519 uso delle firme]Il login del link ipertestuale è visibile. [ED25519]Il login del link ipertestuale è visibile. [Implementazione ED25519 Android]Il login del link ipertestuale è visibile. [[ED25519 Implementazione C]Il login del link ipertestuale è visibile. [ed25519 Implementazione Java]Il login del link ipertestuale è visibile.
Originale:Il login del link ipertestuale è visibile. |