2016-04-13 20 views
2

PHP ile asimetrik şifrelemeyi arıyorum. Benim ön testlerdeNeden openssl_pkey_new gpg'den çok daha hızlı?

Ben openssl_pkey_new komut satırında gpg --gen-keys daha çok daha hızlı tuşları üretir dikkat edin. Her durumda bu aynı uzunlukta RSA anahtarları içindir.

İlk tahminim, OpenSSL kitaplığındaki rasgele sayı nesli güvenli değil.

Sebep bu mu? Güçlü anahtarlar oluşturmak için openssl_pkey_new'a güvenebilir miyim?

+2

OpenSSL Rastgele Sayı Üreticisinin Analizi: http://eprint.iacr.org/2016/367 –

+0

Teşekkürler. Bunun yerine ne kullanmalıyım, ideal olarak PHP 7 içinde kalıyorum ve herhangi bir bağımlılık yüklememem gerekiyor. (ECC'ye açıkım ama kutudan çıkmış bir çözüm bulmayı başaramıyorum). – spraff

cevap

1

RSA anahtar çiftleri oluşturmak için farklı yöntemler vardır. Eğer sıkı ANSI X9.31 gereksinimlerine devam ederseniz anahtar üretimi oldukça yavaş olacaktır. Ayrıca, üstünlük testinin hızı, çok büyük tamsayılar üzerinde hızlı işlemlere bağlıdır. Bu işlemlerin hızı önemli ölçüde farklılık gösterebilir, örneğin Java 8'den Java 9'a yükseltme, 2048 bit anahtarlarının performansını iki katına çıkaracaktır. Rastgele sayı üretecinin tohumdan ayrılmaması halinde, rastgele sayı üretecinin çok fazla önemi olmamasına rağmen, bu sayı ile kıyaslanmamalıdır. /dev/random/'u doğrudan kullanmak da sorunlara neden olabilir. Ancak, ilkel testler muhtemelen RNG'den çok daha fazla zaman kullanır. Son olarak, RSA anahtar çifti oluşturma süresinin, anahtar boyutunun yaklaşık yarısı kadar iki prim bulmaya bağlı olduğuna dikkat edin. Asal buluntu, belirsiz bir zaman alır - temelde hemen onları hemen bulabilirsiniz ya da bir asal bulmak için biraz zaman harcayabilirsiniz. Asal sayılar oldukça iyi dağıtılır, ancak rastgele başlangıç ​​noktası bir asalına yakın ya da bir tanesinden çok uzak olabilir. Muhtemelen birkaç bin anahtar çift neslini ortalama bir şeylere test etmeniz gerekir.

Sonuç olarak, anahtar çifti oluşturucusunun hızı, rastgele sayıların veya ortaya çıkan anahtarların kalitesi hakkında çok fazla bilgi vermez. ANSI X9.31'deki ek testler artık pek fazla önemli değil.

İlgili konular