Làm thế nào tôi có thể kiểm tra entropy có sẵn?


14

Trên các hệ thống linux, người ta có thể kiểm tra entropy có sẵn (hữu ích để biết nếu bạn khai thác /dev/randomcho bất kỳ mục đích PRNG nào) với

cat /proc/sys/kernel/random/entropy_avail

Tuy nhiên, không có tương đương với /proctrên máy Mac (AFAIK). Làm cách nào tôi có thể kiểm tra entropy hệ thống có sẵn trên máy Mac? Tôi đang chạy OS X 10.7.3 (Lion)


Để cập nhật một số nhận xét của tôi theo câu trả lời của Kyle - Một trong những lý do khiến máy Mac không hiển thị thông tin này là không cần thiết (trong hầu hết các trường hợp). Các hệ thống Linux sẽ chặn các cuộc gọi đến /dev/randomnếu không có đủ entropy trong nhóm. Trên máy Mac, nó định kỳ tiếp tục thêm vào nhóm entropy bằng SecurityServerdaemon.

Tuy nhiên, nó cũng lưu ý rằng nếu trình nền bị lỗi vì một số lý do, chất lượng đầu ra sẽ giảm mà không có bất kỳ dấu hiệu nào cho thấy lỗi :

Chất lượng đầu ra của nó tuy nhiên phụ thuộc vào việc bổ sung thường xuyên entropy thích hợp. Nếu SecurityServerdaemon hệ thống không thành công vì bất kỳ lý do nào, chất lượng đầu ra sẽ bị ảnh hưởng theo thời gian mà không có bất kỳ dấu hiệu rõ ràng nào từ chính thiết bị ngẫu nhiên.

Vì vậy, mặc dù số lượng entropy không được cung cấp dễ dàng, điều đó không có nghĩa là nó không có ở đó và có thể có những trường hợp kiến ​​thức của nó có thể hữu ích.


Bạn có thực sự cần phải kiểm tra, hoặc chỉ cần đảm bảo có đủ thứ trong đó để sử dụng? Xem developer.apple.com/library/mac/#documentation/Darwin/Reference/... Trích: "lập trình viên Paranoid có thể chống lại nguy cơ này phần nào bằng cách thu thập dữ liệu ngẫu nhiên của sự lựa chọn của họ (ví dụ như từ tổ hợp phím hoặc chuột timings) và gieo hạt nó vào randomtrực tiếp trước khi có được số ngẫu nhiên quan trọng. "
Chris W. Rea

Tôi chỉ cần đảm bảo có đủ để sử dụng.
rm -rf

Câu trả lời:


6

Đây không phải là một giải pháp, mà là một sự làm rõ về cách thu thập và sử dụng entropy trong Linux.

Linux thực sự có hai nhóm entropy khác nhau:

/dev/random/dev/urandom.

Cái trước là một nhóm ngẫu nhiên thực sự, được cung cấp bởi các nguồn entropy hệ thống.
Cái sau là một PRNG, chẳng hạn như những thứ được tìm thấy trên BSD và OS X.

Tuy nhiên, ngay cả urandom cũng yêu cầu một hạt entropy ngẫu nhiên 'thực' để tạo ra dữ liệu giả ngẫu nhiên chất lượng. Trên các hạt nhân gần đây, việc thiếu hoàn toàn entropy trong / dev / ngẫu nhiên sẽ vẫn không chặn urandom, nhưng urandom sẽ sử dụng lại hạt giống hợp lệ cuối cùng cho đến khi có thêm entropy. Vì urandom không chặn, nên hầu hết các dịch vụ yêu cầu dòng entropy đều đặn sử dụng nó thay vì dựa vào / dev / ngẫu nhiên.

Tuy nhiên, vẫn còn một số dịch vụ, chẳng hạn như các bộ SSL khác nhau, không thể thực hiện được với entropy giả ngẫu nhiên, nhưng yêu cầu một nguồn entropy thực sự không thể đoán trước. Trong trường hợp này, urandom (hoặc bất kỳ PRNG nào khác) không thể được sử dụng và / dev / ngẫu nhiên xuất hiện.


2

Mac OS X chỉ đơn giản là sử dụng Yarrow . Ngay cả FreeBSD đã đi xa hơn và chuyển sang phiên bản cải tiến của nó được gọi là "Fortuna".

Sức mạnh của Yarrow bị giới hạn bởi kích thước của chìa khóa. Ví dụ, Yarrow-160 có kích thước khóa hiệu quả là 160 bit. Nếu bảo mật yêu cầu 256 bit, thì Yarrow-160 không có khả năng thực hiện công việc.

Tất cả trong tất cả điều này là một lời nhắc nhở khác Các ưu tiên của Apple không bao gồm bảo mật / sự mạnh mẽ hoặc bất cứ điều gì như thế này.


1

Mac OS X, như FreeBSD, không dựa vào các nguồn entropy bên ngoài. Thay vào đó, nó sử dụng một trình tạo số giả ngẫu nhiên dựa trên thuật toán Yarrow . Vì nó sử dụng thuật toán chứ không phải nhóm entropy, nên không cần đảm bảo có entropy "đủ" - bạn sẽ luôn có thể đọc từ / dev / ngẫu nhiên mà không bị chặn .

Vì vậy, để trả lời câu hỏi của bạn, trừ khi bạn "hoang tưởng" và cần căn cứ vào entropy của bạn dựa trên các nguồn bên ngoài (tổ hợp phím / chuyển động chuột / v.v.), trong trường hợp đó bạn phải tự làm, số lượng entropy có sẵn cho / dev / sử dụng ngẫu nhiên luôn là vô hạn.


4
Đây không phải là hoàn toàn chính xác. Sử dụng một thuật toán không làm cho nó entropy vô hạn. Điều họ muốn nói là trên Linux, nó chặn khi nhóm entropy ở mức thấp, trong khi đó trên mac: "entropy bổ sung được đưa vào trình tạo thường xuyên bởi trình nền SecurityServer từ các thay đổi jitter ngẫu nhiên của kernel." Vì vậy, về cơ bản, nó chăm sóc nó và cũng lưu một số entropy vào đĩa để sử dụng ngay sau khi khởi động. Nó cũng nói rằng trong khi Yarrow có khả năng phục hồi, chất lượng phụ thuộc vào việc bổ sung entropy thường xuyên - điều không cần thiết nếu nó thực sự là entropy vô hạn
rm -rf

1
Nó cũng nói thêm rằng: "Nếu trình nền hệ thống SecurityServer không thành công vì bất kỳ lý do gì, chất lượng đầu ra sẽ bị ảnh hưởng theo thời gian mà không có bất kỳ dấu hiệu rõ ràng nào từ chính thiết bị ngẫu nhiên" Tôi sẽ thừa nhận rằng OSX đã giúp bạn không phải lo lắng về thực tế giá trị entropy, nhưng không có nghĩa là không có ... Btw, tôi đã đề cập đến trang người đàn ông này trong phần trích dẫn của tôi ở trên
rm -rf

@RM Đúng, tôi đã suy nghĩ nhiều hơn về việc có hay không một cuộc gọi đến / dev / ngẫu nhiên sẽ chặn hơn chất lượng của entropy
Kyle Cronin

> trừ khi bạn "hoang tưởng" - Mac OS X đơn giản là không có bất kỳ số lượng ngẫu nhiên hợp lý nào để thậm chí được coi là an toàn
poige
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.