GPG yeterli entropiye sahip değil


86

Yeterince entropi denemek ve almak için arka planda çalışan bir sürü işlem var, ancak hala başarısız oluyorum.

**We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 210 more bytes)**

Çalışan anahtarı üretmek için bir yönteme ihtiyacım var, çünkü yapmaya çalıştığım şey görünüşte başarısız oluyor.

Yanıtlar:


112

RNG'ye baktın mı?

Fedora / Rh / Centos türleri: sudo yum install rng-tools

Deb türlerinde: sudo apt-get install rng-toolsayarlamak için.

Sonra sudo rngd -r /dev/urandomanahtarları oluşturmadan önce çalıştırın .

Referans: http://it.toolbox.com/blogs/lim/how-to-generate-enough-entropy-for-gpg-key-generation-process-on-fedora-linux-38022


4
Ayrıca, daha ciddi bir notta, sudo apt-get install rng-toolsUbuntu sudo yum install rng-utilsiçin bir rng-utilspaket bulunmadığından, Fedora'da olduğu gibi Ubuntu'daysanız kullanabilirsiniz.
Jason Swett,

4
Paket rng-toolshem Fedora hem de EL6 olarak adlandırılıyor , bu yüzden bağlantılı makalede bir yazım hatası olduğundan şüpheleniyorum. BTW, cevabın temel kısımlarını ve referansın bağlantıyı gelecekte kopması durumunda referans için verilen bağlantıyı sağlamak iyi bir fikirdir.
Michael Hampton

11
Urandomda "düşük kaliteli entropi" veya "sahte entropi" yoktur. urandom, / dev / random ile aynı kodu çağırır. CSPRNG'ye ilave rastgelelik beslemeye gerek yoktur (çalışma süresi dışında ve orada dağıtımınız buna dikkat etmelidir). Bu bir efsanedir ve yayılmamalıdır. Örnek sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers veya bu videoya bakın: media.ccc.de/v/32c3-7441-the_plain_simple_reality_of_entropy
Sebastian Wiesinger


2
En yüksek oy alan yorum saçma; maalesef bunu SO üzerinde çok görüyorum. Uyarılar (tamamen yanlış olsa bile) çok oy alır ve bunları düzeltmenin bir yolu yoktur (yorum yok seçeneği), efsanelerden kurtulamayacağımız anlamına gelir.
Stijn de Witt

28

Tarafından anahtarı oluşturabildim

apt-get install rng-tools

Başka bir SSH penceresinde açık

 gpg --gen-key

İlk SSH oturumunuza geri dönün ve koşun

sudo rngd -r /dev/urandom

Bu sizin gpg anahtarlarınızı üretene kadar çalışsın!


9
/dev/urandomHerhangi bir öneme sahip anahtar üretmek için kullanmaya karşı kesinlikle tavsiye ediyorum .
Andrew Barber,

12
@AndrewBarber Saçmalama. Önerilen yöntemdir.
David Schwartz

3
@AndrewBarber Bu amaç için açıkça tasarlandı. Temel olarak, /dev/randombir tasarım hatasıdır. Henüz toplanmış hiçbir entropi olmadığı zaman, yalnızca ilk (hiç) başlatmayı (ilk açılışta) engelleyecektir. Diğer işletim sistemlerinde olduğu gibi. Bunun yerine şimdi iki havuzumuz var. Sadece asla kullanmayın /dev/random, avantajı yoktur.
Stijn de Witt

@AndrewBarber yerine ne önerirsiniz?
qodeninja,

13

Şu anda mevcut olan entropinin bayt miktarını kontrol etmek için

cat /proc/sys/kernel/random/entropy_avail

Entropi kovası 4096 byte büyüklüğündedir ve çok çabuk tüketilebilir.

Bu küçük 'okuma hızı' aracını ( http://1wt.eu/tools/readspeed/ ) kullanarak, entropi kovasının farklı yöntemlerle ne kadar hızlı dolduğunu ölçebilirsiniz.

Örneğin, başlat:

$ ./readspeed < /dev/random

ve farenizi hareket ettirin. 'Okur hızı' nın entropi kovasını doldurulur dolmaz boşaldığını göreceksiniz ve fareyi hareket ettirdiğinizde bir miktar dolar.

Farklı yöntemler denendiğinde, klavye girişinin ve farenin hareketlerinin bu kovayı doldurmada en etkili olduğu görünüyor. Ağ aktarımları ve sabit disk kopyalarının fazla etkisi yoktur.

Son olarak, bunun gibi entropi üretme cihazları mevcuttur: http://www.entropykey.co.uk/ .


4
Urandomda "düşük kaliteli entropi" yoktur. urandom, / dev / random ile aynı kodu çağırır. Bu bir efsanedir ve yayılmamalıdır. Bakınız örneğin sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers veya bu video: media.ccc.de/v/32c3-7441-the_plain_simple_reality_of_entropy
Sebastian Wiesinger

Bu cevap 5 yaşında. Urandom'un o zamanki kadar güvenli olmadığını düşündük, ancak o zamandan beri işler değişti ve urandom güvenli olarak kabul edildi.
Julien Vehent

1
Gerçek şu ki, baştan beri güvenliydi. Uyarılar 7 yıl önce de yanlıştı.
Stijn de Witt

8

Rng-tools için +1

Benim durumumda sıkışıp kalmanız durumunda, hemen hemen hiç giriş donanımı (ses kartı, klavye, fare) takılı olmayan başsız bir sunucuya yeni yazılım (rng-tools) kurma izniniz yok. Entropiye eklemek için bu basit kodu aynı sunucuya bağlanan başka bir terminalden çalıştırabilirsiniz. Başlamadan önce veya sonra çalıştırmaya başlamanız önemli değil.gpg --gen-key

$ nice -n 19 bash
$ until [ $COUNT -lt 1 ]; do
  let COUNT=`cat /proc/sys/kernel/random/entropy_avail`
  echo "`date` COUNTER $COUNT"
done

İlk satır, daha düşük önceliğe sahip yeni bir bash kabuğu başlatmaktır (birçok kullanıcı tarafından paylaşılan bir sunucuda iyi olmam gerekiyordu). Kadar döngü sonsuz, bu yüzden anahtar üretildikten sonra kırmayı unutmayın. Yaptığı tek şey ağ trafiğinin entropiyi arttırmasına neden olmak. Entropy_avail sayacını gpg tarafından nasıl doldurulduğunu ve boşaltıldığını göstermek için izler. Benim durumumda, sayaç hızlıca 64'e düştü ve 0'a geri boşaltıldı (tahminen gpg 64'ün yığınına girdi). Sunucuda 3 saatten fazla süredir 4096 bit anahtar üretimi bekliyordum. Bu betiği çalıştırmaya başladıktan sonra 5 dakikadan daha az bir sürede tamamlandı.


Ben de uzak sunucuya root erişimim yoktu ve bu biraz entropi yaratmaya çalıştı. Bence durumun değişmesi gerekiyor [ $COUNT -lt 0 ]. Çünkü gerçekten daha az entropisi olan bir sistem için , bazen 0'a ulaşır ve durur. GPG gerçekten entropi aç.
Ajay Brahmakshatriya 18:18

Teşekkürler, bu airgapped bir kutuya biraz entropi jenerasyonu yapmam için bol olmalı. Ancak bu öngörülebilir olduğundan tarih kullanmayacağım
grepsedawk

7

4096 anahtar üretmek için başsız Ubuntu 14.04 sunucumda entropi oluşturmaya karar verdim gpg --gen-key

Dont denilen entropi oluşturmak için bir paket var. Kurulum örneği:

sudo apt-get install haveged

Bunu yapmak zorundaydım sudo apt-get install rng-toolsçünkü bu testte bir bağımlılıktı.

Entropinin kuşkusuz üretilip üretilmediğini görmek için bir test örneği:

cat /dev/random | rngtest -c 1000

Herhangi bir rasgele sayı üretecinde çok az miktarda hata kabul edilebilir, ancak üzerine gelindiğinde 998-1000 başarılarının çok sık görmesini bekleyebilirsiniz.

Burada bir derste bunun hakkında öğrendim:

https://www.digitalocean.com/community/tutorials/how-to-setup-additional-entropy-for-cloud-servers-using-haveged

Artık çalıştırdıktan sonra anahtarlarım var gpg --gen-key


0

pacman-key --initArch ile çalışırken bu sorunla karşılaştım . Buradaki diğer çözümler benim için işe yaramadı, ancak yönlendiricimin taşkın uygulamasının iyi çalıştığını gördüm:ping -f ip.of.my.router



0

havegeden iyi yoldur, ancak bir şey yükleyemezseniz, el ile entropi oluşturabilirsiniz. Bu yöntem gpg --gen-kenmakinemde 1-2 dakika içerisinde tamamlanmasına izin verdi (10'lu yıllara kıyasla haveged). Yani yaklaşık 10 kat daha yavaş.

Çalışırken bunu başka bir terminalde gpg --gen-keyçalıştırın:

while true; do
    # print entropy available
    cat /proc/sys/kernel/random/entropy_avail
    # write a 1 MB stream of zeros to /tmp/foo
    # "conv=fdatasync" flushes the disk cache
    dd bs=1M count=1 if=/dev/zero of=/tmp/foo conv=fdatasync
done

Bir astar:

while true; do cat /proc/sys/kernel/random/entropy_avail; dd bs=1M count=1 if=/dev/zero of=/tmp/foo conv=fdatasync; done
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.