Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 1525|Risposta: 3

Algoritmo di crittografia Curve25519

[Copiato link]
Pubblicato il 2025-2-12 17:05:02 | | | |
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.




Precedente:Plugin di assistenza allo sviluppo di codice VS Angular 18 Series (Thirty-One)
Prossimo:Supercomputer personale AI del Progetto NVIDIA DIGITS
 Padrone di casa| Pubblicato il 12-02-2025 17:07:50 |
Codice di implementazione .NET/C#:


Test




Curve25519.cs (31 KB, Numero di download: 1, 售价: 10 粒MB)
Pubblicato il 13-02-2025 16:26:18 |
Sembra buono, supportalo.
Pubblicato il 14-2-2025 09:51:22 |
Sembra buono, supportalo
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com