urve25519, Profesör Daniel J. Bernstein tarafından tasarlanmış çok çeşitli senaryolar için mevcut olan en yüksek Diffie-Hellman fonksiyonu seviyesidir. Kriptografide, Curve25519, 128-bit güvenlik sağlayan eliptik bir eğridir ve eliptik eğri Diffie-Hellman (ECDH) anahtar müzakere şemasıyla kullanılmak üzere tasarlanmıştır. En hızlı ECC eğrilerinden biridir ve bilinen herhangi bir patent tarafından kapsamamıştır.
Bir kullanıcının 32 baytlık anahtarı verildiğinde, curve25519 kullanıcının 32 baytlık açık anahtarını hesaplar. O kullanıcının 32 baytlık anahtarı ve başka bir kullanıcının 32 baytlık açık anahtarı göz önüne alındığında, curve25519 her iki kullanıcının kullanabileceği 32 baytlık paylaşılan anahtar hesaplar. Bu sır, her iki kullanıcı için de bilgileri doğrulamak ve şifrelemek için kullanılabilir.
2. Curve25519'u indirin ve derleyin
curve25519 kütüphanesi, curve25519 fonksiyonunu çok yüksek bir hızda hesaplar. Kütüphanenin geniş bir uygulama yelpazesi vardır. Bunu ortak bir kütüphaneye bağlantı vermek yerine kendi programınızda uygulayabilirsiniz ve uygulamalısınız; Derlenmiş kod, CPU'ya bağlı olarak yaklaşık 16KB'dir.
İndir ve derle
İndirmek
derlemek
3. Curve25519'u kullanın
curve25519 kullanacak herhangi bir C programı için, programı curve25519.h dahil edecek şekilde değiştirin ve makefile'i programı curve25519.a ile bağlayacak şekilde değiştirin ve programın curve25519.a ile curve25519.h'ye bağlı olduğunu belirtin.
Hesaplama anahtarları
İç olarak, 32 baytlık curve25519 anahtarı oluşturmak için önce bir kriptografik güvenlik kaynağından 32 rastgele baytlık bir sır oluşturun: mysecret[0], mysecret[1], ..., mysecret[31]. Sonra şöyle yap: mysecret[0] &= 248; mysecret[31] &= 127; mysecret[31] |= 64; 32 baytlık bir Curve25519 anahtarı oluşturuldu mysecret[0], mysecret[1], ..., mysecret[31].
Gelecekte, kütüphane sürümü 128 baytlık hash işlemini 32 bayta sıkıştıran curve25519_ sıkıştırma fonksiyonunu destekleyecek ve yetersiz rastgele sayı üreteçlerine karşı bazı korumalar sağlayacak; 32 baytı bir anahtara dönüştüren curve25519_ bir kelepçe fonksiyonu; ve 128 baytı doğrudan anahtara dönüştüren en kolay curve25519_ anahtar üretim fonksiyonlarının kombinasyonu.
Hesapla açık anahtarlar
32 Baytlık mypublic[0], mypublic[1], ..., mypublic[31] anahtarıyla eşleşen 32 Byte bir açık anahtar oluşturmak için fonksiyonu çağırın curve25519(mypublic,mysecret,basepoint); burada sabit baz noktası şudur:
const unsigned char basepoint[32] = {9}; Kütüphanenin gelecekteki sürümleri daha özlü curve25519_ kamu işlevlerini destekleyecektir.
Paylaşılan bir anahtar oluşturun
Başka bir kullanıcının Curve25519 açık anahtarı verdiğinde hispublic[0], hispublic[1], ..., hispublic[31], call
curve25519 (paylaşılan, gizli, halka açık bir kişi); 32 baytlık paylaşılan anahtarlar paylaşılan[0], paylaşılan[1], ..., paylaşılan[31] oluşturulu. Başka bir kişi ise kendi özel anahtarı ve sizin açık anahtarınızı oluşturarak aynı paylaşılan anahtarı oluşturabilir. Sonra ikiniz de bu paylaşılan anahtarı hash edip sonucu anahtar olarak kullanabilirsiniz, örneğin Poly1305-AES için. Kütüphanenin gelecekteki sürümleri, 32 Baytlık bir anahtarı doğrudan hash ederek 128 bayt anahtar oluşturan curve25519_ bir uzantı fonksiyonunu destekleyecek ve kullanımı en kolay olan, curve25519_ paylaşılan bir kombinasyon olan bir fonksiyondur.
4. Referans
[Ed25519 ve Curve25519 açıklandı]Bağlantı girişi görünür. [Curve25519 şifreleme ve şifre çözme ile ED25519 imza kullanımı]Bağlantı girişi görünür. [ED25519]Bağlantı girişi görünür. [Android ED25519 uygulaması]Bağlantı girişi görünür. [[ED25519 C uygulaması]Bağlantı girişi görünür. [ed25519 Java uygulaması]Bağlantı girişi görünür.
Özgün:Bağlantı girişi görünür. |