it-swarm-vi.com

Cho ăn / dev / ngẫu nhiên entropy pool?

Cách cho ăn bổ sung /dev/random entropy pool bạn có đề xuất để tạo mật khẩu ngẫu nhiên không? Hoặc, có lẽ có một cách tốt hơn để tạo cục bộ mật khẩu hoàn toàn ngẫu nhiên?

51
pootzko

Bạn có thể cung cấp cho nó với tiếng ồn trắng từ chip âm thanh của bạn, nếu có. Xem bài viết này: http://www.linuxfromscratch.org/hints/doads/files/entropy.txt

24
Henri

Bạn nên sử dụng /dev/urandom, không phải /dev/random. Hai sự khác biệt giữa /dev/random/dev/urandom are (Tôi đang nói về Linux ở đây):

  • /dev/random có thể tốt hơn về mặt lý thuyết trong bối cảnh thuật toán bảo mật lý thuyết thông tin . Đây là loại thuật toán an toàn đối với công nghệ ngày nay, cũng như công nghệ của ngày mai và công nghệ được sử dụng bởi người ngoài hành tinh và iPad của chính Chúa. Thuật toán bảo mật thông tin về mặt lý thuyết là an toàn trước khả năng tính toán vô hạn. Không cần phải nói, các thuật toán như vậy là khá hiếm và nếu bạn đang sử dụng một thuật toán, bạn sẽ biết nó. Ngoài ra, đây là "có thể": trong nội bộ, /dev/random sử dụng các hàm băm thông thường, vì vậy rất có thể nó sẽ có điểm yếu dù sao nếu bị tấn công với sức mạnh vô hạn (mặc dù không có gì phải lo lắng cho những kẻ tấn công trên Trái đất).

  • /dev/urandom sẽ không chặn, trong khi /dev/random có thể làm như vậy. /dev/random duy trì một bộ đếm "bao nhiêu entropy vẫn còn" theo giả định rằng bất kỳ bit nào nó tạo ra là một bit entropy bị mất. Chặn gây ra các vấn đề rất thực tế, ví dụ: một máy chủ không khởi động được sau khi cài đặt tự động vì nó bị đình trệ trong quá trình tạo khóa máy chủ SSH (vâng, tôi đã thấy điều đó). /dev/urandom sử dụng trình tạo số giả ngẫu nhiên mạnh về mật mã để nó không bị chặn, bao giờ hết.

Vì vậy, bạn muốn sử dụng /dev/urandom và dừng lại để lo lắng về việc kinh doanh entropy này.

Bây giờ bạn có thể muốn lo lắng về entropy nếu bạn đang viết trình cài đặt Linux. Bí quyết là /dev/urandom không bao giờ chặn, bao giờ, ngay cả khi cần: /dev/urandom được bảo mật miễn là nó đã nhận đủ byte "entropy ban đầu" kể từ lần khởi động cuối cùng (32 byte ngẫu nhiên là đủ). Một bản cài đặt Linux bình thường sẽ tạo ra một hạt giống ngẫu nhiên (từ /dev/random) khi cài đặt và lưu nó vào đĩa. Sau mỗi lần khởi động lại, hạt giống sẽ được đọc, đưa vào /dev/urandom và một hạt giống mới được tạo ngay lập tức (từ /dev/urandom) để thay thế nó. Do đó, điều này đảm bảo rằng /dev/urandom sẽ luôn có đủ entropy ban đầu để tạo ra alea mạnh về mật mã, hoàn toàn đủ cho bất kỳ công việc mã hóa trần tục nào, bao gồm cả việc tạo mật khẩu. Điểm quan trọng duy nhất là trong khi cài đặt: trình cài đặt phải nhận được một số entropy từ /dev/random, có thể chặn. Vấn đề này cũng xảy ra với CD trực tiếp và các biến thể khác không có vùng lưu trữ vĩnh viễn đọc-ghi. Trong những tình huống này, bạn có thể muốn tìm một số nguồn entropy để đảm bảo rằng /dev/random sẽ được nuôi dưỡng tốt và sẽ không chặn.

Bản thân hệ điều hành, và chính xác hơn là kernel, ở đúng nơi để thu thập entropy từ sự kiện phần cứng, vì nó xử lý phần cứng. Vì vậy, có rất ít mà bạn có thể sử dụng cho entropy mà kernel chưa sử dụng. Một trong những nguồn còn lại là dữ liệu webcam: webcam, thậm chí đối diện với một bức tường trống, sẽ xuất dữ liệu có nhiễu nhiệt và vì nó xuất ra rất nhiều dữ liệu , nó là một người thu thập entropy tốt. Vì vậy, chỉ cần lấy một vài khung hình từ webcam, băm chúng với chức năng băm an toàn (SHA-256) và viết nó vào /dev/urandom. Đây vẫn là quá mức cần thiết.

50
Thomas Pornin

Tôi biết về âm thanh entropy daemonhasge được sử dụng bởi daged daemon , hãy thử chúng.

13
krempita

Giá trị tốt nhất tôi từng thấy trong một thiết bị ngẫu nhiên CTNH là khóa entropy của simtec.
[.__.] Có một số biện pháp bảo vệ được xây dựng để bảo vệ chống lại thất bại và các cuộc tấn công. Ví dụ: nó chạy các thử nghiệm ngẫu nhiên FIPS 140-2 trên mỗi lô 20Kb, tự tắt nếu một số thử nghiệm có ý nghĩa thống kê thất bại. Tôi đã nhận được một khi tôi đang thực hiện nhiều khóa tạo ra cho nghiên cứu DNSSEC, và nó đã thúc đẩy công việc của tôi rất nhiều. Nó vượt qua tất cả các bài kiểm tra cực đoan. (lưu ý, luôn kiểm tra các luồng ngẫu nhiên của bạn theo định kỳ, bất kể nhà cung cấp nói gì với bạn ;-)

7
spinkham

1) Bạn không cần thêm entropy nữa vào /dev/random, để sử dụng nó cho mật khẩu. Hệ thống đã làm điều đó cho bạn.

2) Để tạo mật khẩu ngẫu nhiên, tốt hơn là sử dụng /dev/urandom, không phải /dev/random. (/dev/random có một số vấn đề: nó chặn, nó làm cạn kiệt nhóm entropy theo cách có thể khiến những người dùng khác của /dev/random để ngăn chặn. /dev/urandom là giao diện mục đích chung tốt hơn.)

3) Đây là một tập lệnh đơn giản tôi sử dụng để tạo mật khẩu ngẫu nhiên. Bạn được chào đón để sử dụng nó.

#!/bin/sh
# Make a 48-bit password (8 characters, 6 bits per char)
dd if=/dev/urandom count=1 2>/dev/null | base64 | head -1 | cut -c4-11 
7
D.W.

Tôi sử dụng kết hợp các nguồn dữ liệu và thuật toán băm tốt để tạo dữ liệu ngẫu nhiên.

Trên máy chủ web, bạn có thể kết hợp dữ liệu máy chủ (CTNH, SW, hiệu suất), dữ liệu khách hàng (tác nhân người dùng, thời gian yêu cầu, cookie, biến URL, bất cứ điều gì bạn có thể thu thập), một số dữ liệu bên ngoài (như Random.org), trộn tất cả mọi thứ với giả sử sha1 (hỗn hợp_data + thời gian + some_secret_key) và bạn nhận được các bit dữ liệu ngẫu nhiên khá khó đoán.

Bạn cũng có thể xem xét sử dụng P2PEG để dễ dàng thu thập entropy từ máy khách và máy chủ.

2
DUzun

Mật khẩu, nếu chúng ngắn, luôn bị bẻ khóa bởi lực lượng vũ phu nếu tốc độ hoặc số lần thử không bị giới hạn. Mặt khác, nếu các lần thử bị hạn chế (ví dụ: đăng nhập tương tác), thậm chí một lượng nhỏ entropy về cơ bản không thể bẻ khóa - số lượng thử cần thiết sẽ sớm bị cấm.

Vì vậy, không nên có trường hợp nhận được entropy thực sự tốt cho mật khẩu.

Vì vậy, chỉ cần sử dụng/dev/urandom, nó là quá đủ tốt.

Các câu trả lời khác được đưa ra ở đây là những nhận xét tốt về cách giữ/dev/ngẫu nhiên của bạn được cung cấp đủ entropy, tuy nhiên, nếu bạn cần nó.

1
Nakedible