urve25519 adalah tingkat tertinggi fungsi Diffie-Hellman yang tersedia untuk berbagai skenario, yang dirancang oleh Profesor Daniel J. Bernstein. Dalam kriptografi, Curve25519 adalah kurva elips yang memberikan keamanan 128-bit dan dirancang untuk digunakan dengan skema negosiasi kunci kurva elips Diffie-Hellman (ECDH). Ini adalah salah satu kurva ECC tercepat dan tidak tercakup dalam paten yang diketahui.
Mengingat kunci 32 byte pengguna, curve25519 menghitung kunci publik 32 byte pengguna. Mengingat kunci 32 byte pengguna dan kunci publik 32 byte pengguna lain, curve25519 menghitung kunci bersama 32 byte untuk digunakan kedua pengguna. Rahasia ini kemudian dapat digunakan untuk mengautentikasi dan mengenkripsi informasi untuk kedua pengguna.
2. Unduh dan kompilasi Curve25519
Perpustakaan curve25519 menghitung fungsi curve25519 dengan kecepatan yang sangat tinggi. Perpustakaan memiliki berbagai aplikasi. Anda dapat dan harus menerapkannya dalam program Anda sendiri alih-alih menautkan ke perpustakaan bersama; Kode yang dikompilasi adalah sekitar 16KB, tergantung pada CPU.
Unduh dan kompilasi
Mengunduh
Mengkompilasi
3. Gunakan Curve25519
Untuk program C apa pun yang akan menggunakan curve25519, ubah program untuk menyertakan curve25519.h, dan ubah makefile untuk menautkan program dengan curve25519.a dan nyatakan bahwa program bergantung pada curve25519.a dan curve25519.h.
Kunci komputasi
Secara internal, untuk menghasilkan kunci curve25519 32 byte, pertama-tama hasilkan rahasia 32 byte acak dari sumber keamanan kriptografi: mysecret[0], mysecret[1], ..., mysecret[31]. Kemudian lakukan sebagai berikut: mysecret[0] &= 248; mysecret[31] &= 127; mysecret[31] |= 64; Hasilkan kunci Curve25519 32 byte mysecret[0], mysecret[1], ..., mysecret[31].
Di masa mendatang, versi perpustakaan akan mendukung fungsi kompresi curve25519_ yang mengompresi 128 byte hashing menjadi 32 byte, menambahkan beberapa perlindungan terhadap generator angka acak yang tidak mencukupi; Fungsi penjepit curve25519_ yang mengubah 32 byte menjadi kunci; dan kombinasi yang paling mudah digunakan dari fungsi pembuatan kunci curve25519_, yang secara langsung mengubah 128 byte menjadi kunci.
Menghitung kunci publik
Untuk menghasilkan kunci publik 32Byte yang cocok dengan kunci 32Byte mypublic[0], mypublic[1], ..., mypublic[31], panggil fungsi kurva25519 (mypublic, mysecret, basepoint); di mana titik dasar konstan adalah:
const unsigned char basepoint[32] = {9}; Versi perpustakaan di masa depan akan mendukung fungsi publik yang lebih ringkas curve25519_.
Membuat kunci bersama
Mengingat kunci publik Curve25519 pengguna lain hispublic[0], hispublic[1], ..., hispublic[31], call
kurva25519(dibagikan, rahasia saya, publiknya); Hasilkan kunci bersama 32 byte yang dibagikan[0], dibagikan[1], ..., dibagikan[31]. Orang lain dapat membuat kunci bersama yang sama berdasarkan kunci pribadi mereka sendiri serta kunci publik Anda. Kemudian Anda berdua dapat melakukan hash kunci bersama ini dan menggunakan hasilnya sebagai kunci, misalnya untuk Poly1305-AES. Versi perpustakaan mendatang akan mendukung fungsi ekstensi curve25519_ yang secara langsung men-hash kunci 32Byte untuk menghasilkan 128 byte sebagai kunci, dan merupakan yang paling mudah digunakan, kombinasi curve25519_ fungsi bersama.
4. Referensi
[Ed25519 dan Curve25519 dijelaskan]Login hyperlink terlihat. [Enkripsi dan dekripsi Curve25519 dan ED25519 penggunaan tanda tangan]Login hyperlink terlihat. [ED25519]Login hyperlink terlihat. [Implementasi ED25519 Android]Login hyperlink terlihat. [[ED25519 Implementasi C]Login hyperlink terlihat. [ed25519 Implementasi Java]Login hyperlink terlihat.
Asli:Login hyperlink terlihat. |