GPG không có đủ entropy


86

Tôi đã có rất nhiều quá trình đang chạy trong nền để thử và nhận đủ entropy, nhưng tôi vẫn thất bại.

**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)**

Tôi cần một phương pháp để tạo khóa hoạt động, vì những gì tôi đang cố gắng làm là thất bại rõ ràng.

Câu trả lời:


112

Bạn đã có một cái nhìn về RNG?

Các loại Fedora / Rh / Centos: sudo yum install rng-tools

Trên các loại deb: sudo apt-get install rng-toolsđể thiết lập nó.

Sau đó chạy sudo rngd -r /dev/urandomtrước khi tạo các phím.

Tham khảo: http://it.toolbox.com/bloss/lim/how-to-generate-enough-entropy-for-gpg-key-generation- Process-on-fedora-linux-38022


4
Ngoài ra, trên một lưu ý nghiêm trọng hơn, bạn có thể sử dụng sudo apt-get install rng-toolsnếu bạn sử dụng Ubuntu thay vì sudo yum install rng-utilsnhư họ có cho Fedora, vì không có rng-utilsgói nào tồn tại cho Ubuntu.
Jason Swett

4
Gói được đặt tên rng-toolstrên cả Fedora và EL6, vì vậy tôi nghi ngờ một lỗi đánh máy trong bài viết được liên kết. BTW, một ý tưởng tốt là cung cấp các phần thiết yếu của câu trả lời ở đây và liên kết để tham khảo, trong trường hợp liên kết bị chết trong tương lai.
Michael Hampton

11
Không có "entropy chất lượng thấp" hoặc "entropy giả" trong urandom. urandom gọi mã giống như / dev / ngẫu nhiên. Không cần phải cung cấp ngẫu nhiên bổ sung vào CSPRNG (ngoại trừ lúc khởi động, và ở đó phân phối của bạn sẽ chăm sóc nó). Đây là một huyền thoại và không nên được truyền bá. Xem ví dụ sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers hoặc video này: media.ccc.de/v/32c3-7441-the_plain_simple_reality_of_entropy
Sebastian Wiesinger


2
Hầu hết các bình luận được bình chọn cao là vô nghĩa; Thật không may, tôi thấy điều này rất nhiều trên SO. Cảnh báo (ngay cả khi hoàn toàn sai) sẽ nhận được rất nhiều phiếu bầu và không có cách nào để sửa chúng (không có tùy chọn downvote bình luận) có nghĩa là chúng ta không thể thoát khỏi những huyền thoại.
Stijn de Witt

28

Tôi đã có thể tạo khóa bằng cách

apt-get install rng-tools

Trong một cửa sổ SSH khác mở

 gpg --gen-key

Quay trở lại phiên SSH đầu tiên của bạn và chạy

sudo rngd -r /dev/urandom

Hãy để điều này chạy cho đến khi gpg tạo khóa của bạn!


9
Tôi chắc chắn sẽ khuyên bạn không bao giờ sử dụng /dev/urandomđể tạo khóa quan trọng.
Andrew Barber

12
@AndrewBarber Vô nghĩa. Đây là phương pháp được đề nghị.
David Schwartz

3
@AndrewBarber Nó được thiết kế rõ ràng cho mục đích đó. Về cơ bản, /dev/randomlà một lỗi thiết kế. Nó chỉ nên chặn trên lần gọi đầu tiên (bao giờ) (khi khởi động đầu tiên) khi chưa thu thập được entropy nào. Giống như nó làm trên hệ điều hành khác. Thay vào đó chúng tôi có hai hồ bơi bây giờ. Chỉ cần không bao giờ sử dụng /dev/randomnó không có lợi thế.
Stijn de Witt

@AndrewBarber bạn muốn giới thiệu cái gì thay thế?
qodeninja

13

Để kiểm tra số lượng byte của entropy hiện có, sử dụng

cat /proc/sys/kernel/random/entropy_avail

Nhóm entropy có kích thước lớn 4096 byte, có thể nhanh chóng cạn kiệt.

Sử dụng công cụ 'readspeed' nhỏ này ( http://1wt.eu/tools/readspeed/ ), bạn có thể đo tốc độ của thùng entropy được lấp đầy bằng các phương pháp khác nhau.

Ví dụ: khởi chạy:

$ ./readspeed < /dev/random

và di chuyển chuột của bạn xung quanh. Bạn sẽ thấy rằng 'tốc độ đọc' làm trống thùng entropy ngay khi nó được đổ đầy và khi bạn di chuyển chuột, nó sẽ lấp đầy một chút.

Thử các phương pháp khác nhau, có vẻ như đầu vào bàn phím và chuyển động chuột là hiệu quả nhất để bổ sung cho thùng đó. Chuyển mạng và bản sao ổ cứng không có nhiều ảnh hưởng.

Cuối cùng, có các thiết bị tạo entropy có sẵn, chẳng hạn như thiết bị này: http://www.entropykey.co.uk/ .


4
Không có "entropy chất lượng thấp" trong urandom. urandom gọi mã giống như / dev / ngẫu nhiên. Đây là một huyền thoại và không nên được truyền bá. Xem ví dụ sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers hoặc video này: media.ccc.de/v/32c3-7441-the_plain_simple_reality_of_entropy
Sebastian Wiesinger

Câu trả lời này là 5 tuổi. Chúng tôi nghĩ rằng urandom không an toàn như ngẫu nhiên, nhưng mọi thứ đã thay đổi kể từ đó và urandom được coi là an toàn.
Julien Vehent

1
Thực tế là nó đã an toàn ngay từ đầu. Các cảnh báo đã sai 7 năm trước là tốt.
Stijn de Witt

8

+1 cho công cụ rng

Trong trường hợp bạn bị kẹt trong tình huống như tôi - không có quyền cài đặt phần mềm mới (rng-tools) trên máy chủ không đầu mà hầu như không có phần cứng đầu vào (card âm thanh, bàn phím, chuột). Bạn có thể chạy mã đơn giản này từ một thiết bị đầu cuối khác kết nối với cùng một máy chủ, để thêm vào entropy. Nó không quan trọng nếu bạn bắt đầu chạy này trước hoặc sau khi bắt đầugpg --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

Dòng đầu tiên là bắt đầu một bash shell mới, với mức độ ưu tiên thấp hơn (tôi cần phải đẹp trên một máy chủ được nhiều người dùng chia sẻ). Vòng lặp Until là vô hạn, vì vậy hãy nhớ phá vỡ nó sau khi khóa được tạo. Tất cả những gì nó đang làm là khiến lưu lượng truy cập mạng tăng entropy. Nó cũng giám sát bộ đếm entropy_avail để hiển thị cách nó được điền và làm trống ở phía bên kia bằng gpg. Trong trường hợp của tôi, bộ đếm đã lấp đầy nhanh chóng đến 64 và được rút về 0 (đoán gpg nhặt lên trong đoạn 64). Tôi đã chờ tạo khóa 4096 bit trong hơn 3 giờ trên máy chủ. Sau khi bắt đầu chạy tập lệnh này, nó đã hoàn thành trong vòng dưới 5 phút.


Tôi cũng không có quyền truy cập root trên máy chủ từ xa và điều này đã làm việc trong việc tạo một số entropy. Tôi nghĩ rằng điều kiện nên được thay đổi để [ $COUNT -lt 0 ]. Bởi vì đối với một hệ thống có entropy thực sự ít hơn, đôi khi nó đạt đến 0 và dừng lại. GPG thực sự đói entropy.
Ajay Brahmakshatriya

Cảm ơn, điều này sẽ rất nhiều cho tôi để tạo ra một số thế hệ vướng víu trên một hộp không khí. Ngoại trừ tôi sẽ không sử dụng ngày kể từ ngày dự đoán
grepsedawk

7

Tôi đã bị ràng buộc và quyết tâm tạo entropy trên máy chủ Ubuntu 14.04 không đầu của tôi để tạo khóa 4096 với gpg --gen-key

Có một gói để tạo entropy được gọi là hasged. Ví dụ về cài đặt:

sudo apt-get install haveged

Tôi đã phải sudo apt-get install rng-toolsvì nó là một phụ thuộc trong bài kiểm tra sau.

Ví dụ về thử nghiệm để xem liệu entropy được tạo bởi hasged:

cat /dev/random | rngtest -c 1000

Một số lượng thất bại rất nhỏ có thể chấp nhận được trong bất kỳ trình tạo số ngẫu nhiên nào, nhưng bạn có thể thấy 998-1000 thành công rất thường xuyên khi sử dụng di chuột.

Tôi đã tìm hiểu về nó trong một hướng dẫn ở đây:

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

Bây giờ tôi có chìa khóa sau khi chạy gpg --gen-key


0

Tôi gặp vấn đề này khi chạy pacman-key --inittrong vòm. Các giải pháp khác ở đây không hoạt động tốt với tôi, nhưng tôi thấy rằng chỉ đơn giản là lũ lụt bộ định tuyến của tôi hoạt động tốt:ping -f ip.of.my.router



0

havegedlà cách tốt nhất, nhưng nếu bạn không thể cài đặt bất cứ thứ gì, thì bạn có thể tự tạo entropy. Phương pháp này cho phép gpg --gen-kenhoàn thành sau 1-2 phút trên máy của tôi (so với 10 giây với haveged). Vì vậy, nó chậm hơn khoảng 10 lần.

Chạy cái này trong một terminal khác trong khi gpg --gen-keyđang chạy:

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

Lót:

while true; do cat /proc/sys/kernel/random/entropy_avail; dd bs=1M count=1 if=/dev/zero of=/tmp/foo conv=fdatasync; done
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.