Nguồn của Entropy cho Linux


9

Giả sử tôi muốn có một gigabyte hoặc hơn dữ liệu ngẫu nhiên từ / dev / ngẫu nhiên, phù hợp với phần đệm một lần (vì vậy / dev / urandom đã hết.) Làm cách nào để tôi tạo hạt giống / dev / ngẫu nhiên với đủ entropy để làm điều này? Tôi đang tìm kiếm các lệnh và chương trình cụ thể cho việc này. Tôi không muốn mua bất cứ thứ gì. Tôi đang sử dụng Arch Linux, nếu điều đó tạo ra sự khác biệt.


Không phải một chương trình như vậy biến / dev / ngẫu nhiên thành một cái gì đó có cùng một vấn đề như / dev / urandom mà bạn không muốn sử dụng? Hoặc bạn đang đề cập đến một cái gì đó có thêm entropy từ một số thiết bị hoặc qua mạng?
Anthon

@Anthon Tôi đang nói về các chương trình cụ thể để trích xuất ngẫu nhiên từ một nguồn entropy, chẳng hạn như nhiễu bắn, nhiễu nhiệt, một số thiết bị, v.v ... Chương trình sẽ không tạo ra sự ngẫu nhiên.
PyRulez

... ví dụ, một lệnh hoặc chương trình nói Here — type something:, và sau đó đo các đồng hồ thời gian gõ phím đến độ chính xác cao hơn mức con người có thể kiểm soát?
G-Man nói 'Phục hồi Monica'


1
Nó đề cập đến một bộ đệm một lần là một trong hai trường hợp ngoại lệ để khẳng định rằng _'... gần như tất cả các thuật toán mã hóa ... chỉ có một số thuật toán cung cấp bảo mật tính toán '. Trừ khi bạn có thể trích dẫn điều gì đó mà tôi đã bỏ lỡ khi nói rằng các bảng đệm một lần không thể sử dụng urandom?
Vô dụng

Câu trả lời:


4

Hai chương trình có thể tăng nhóm entropy mà không yêu cầu thêm phần cứng là rng-toolshaveged. rng-toolssử dụng RNG có sẵn trong CPU và chipset havegedhiện đại , sử dụng tính ngẫu nhiên của CPU hiện đại (hành vi bộ đệm, v.v.). Cả hai đều có sẵn trong Arch và Arch wiki có một trang thú vị thảo luận về chúng. Tôi đã không thử sử dụng chúng để tạo ra một gigabyte dữ liệu nhưng có thể trong một khoảng thời gian hợp lý.

Bạn loại trừ rõ ràng việc mua bất cứ thứ gì, nhưng chỉ để hoàn thiện, vì có một bài viết thú vị trên LWN về entropy với NeuG , bao gồm thảo luận về havegedvà các phương pháp khác. Bạn có thể mua bảng STM8S có khả năng chạy NeuG với giá dưới 10 đô la hoặc FST-01 với giá 35 đô la.


4

Thật không may / dev / ngẫu nhiên cũng không phù hợp để sử dụng trong một lần, ít nhất không phải là loại đệm một lần (với các đảm bảo an ninh có thể chứng minh được) mà hầu hết mọi người tưởng tượng khi họ nghĩ hoặc thực hiện các miếng đệm một lần. Hầu hết các thông tin dưới đây được tóm tắt từ bài viết (rất dài) tại http://www.2uo.de/myths-about-urandom/

Vấn đề là / dev / ngẫu nhiên không thực sự ngẫu nhiên; nó sử dụng CSPRNG để tạo đầu ra của nó. Trong thực tế, / dev / ngẫu nhiên sử dụng chính xác CSPRNG như / dev / urandom. Sự khác biệt duy nhất là khối / dev / ngẫu nhiên nếu ước tính nội bộ của entropy là không đủ.

Từ "ước tính" trong câu trước là chìa khóa. Hầu hết mọi người nghĩ rằng ước tính này luôn chính xác và hoàn hảo, nhưng thực tế nó không hoàn toàn chính xác. Ngay lập tức ước tính là sai, bạn mất tất cả các bảo đảm bảo mật có thể chứng minh được của bộ đệm một lần và tất cả những gì bạn còn lại là bảo mật tính toán - không tốt hơn nếu bạn đã sử dụng / dev / urandom!

Lấy ước tính entropy chỉ một chút sai không làm cho phần đệm một lần của bạn chỉ hơi bất an. Đảm bảo an ninh có thể chứng minh của một lần một pad là tất cả hoặc không có gì.

Tiền đề của câu hỏi này là các vấn đề với / dev / ngẫu nhiên có thể được "sửa" bằng cách thêm entropy. Thật không may, tiền đề này là sai. Một nguồn entropy độc hại tệ hơn nhiều so với không có entropy, bởi vì các nguồn entropy thường có quyền truy cập vào dữ liệu nội bộ và có thể xuất dữ liệu này một cách tình cờ bằng đầu ra RNG - xem http://blog.cr.yp.to/20140205-entropy .html cho một cuộc thảo luận đầy đủ (quá dài để tóm tắt ở đây). Cụ thể, một nguồn entropy phần cứng (như được đề xuất bởi một số câu trả lời khác) là một lựa chọn rất tệ từ góc độ bảo mật, vì phần cứng đó ở vị trí chính để làm những việc độc hại và về cơ bản là không thể nghe được.


Tôi không nói rằng tôi đã sửa nó với nhiều entropy hơn, tôi chỉ cần nhiều hơn cho một khóa lớn hơn. Đó là một điểm tốt mặc dù về nó bị lỗi. Bạn có thể đề nghị bất kỳ lựa chọn thay thế?
PyRulez

1
Đây là một câu trả lời tốt ngoại trừ bit cuối cùng về nguồn phần cứng. Các nguồn phần cứng của entropy là cách duy nhất đáng tin cậy, có thể nghe được để có được entropy. Bạn (hoặc ai đó bạn tin tưởng) cần phải kiểm toán nguồn - yêu cầu phải có thông tin thiết kế và xác minh rằng quy trình sản xuất tôn trọng thông tin thiết kế. Bạn thậm chí có thể kết hợp các nguồn entropy để nếu ít nhất một trong số chúng ổn thì kết quả vẫn ổn (NB bạn cần kết hợp chúng một cách chính xác cho điều đó).
Gilles 'SO- ngừng trở nên xấu xa'

Gilles, đọc liên kết thứ hai tôi đã đăng. Hoàn toàn sai khi tuyên bố rằng nếu ít nhất một nguồn entropy ổn thì kết quả vẫn ổn. Toàn bộ mục đích của liên kết đó là để bác bỏ tuyên bố sai lầm này!
djao

Hơn nữa, nó không đủ để kiểm toán nguồn và quy trình sản xuất. Bạn cần kiểm tra thiết bị cá nhân của mình để đảm bảo rằng thiết bị của bạn được sản xuất theo quy trình sản xuất. Đây là một nhiệm vụ khó khăn hơn nhiều so với nhiệm vụ tương tự trong phần mềm, chỉ đơn giản là kiểm tra tổng kiểm tra.
djao

Đối với các lựa chọn thay thế: không có cách kỳ diệu nào khác để lấy 1GB dữ liệu ngẫu nhiên ra khỏi PC. Bạn sẽ cần một thiết bị phần cứng cho điều đó (nhưng sau đó chú ý đến những gì tôi đã nói về phần cứng khó kiểm toán). Nếu bạn sẵn sàng sử dụng / dev / ngẫu nhiên, thì / dev / urandom cũng tốt như vậy; nó không tệ hơn / dev / ngẫu nhiên cho tất cả các ứng dụng mã hóa.
djao

3

Có vẻ như một thành phần CTNH là ý tưởng tốt nhất. Có một số IC tạo CTNH ngoài kia, nhưng bạn phải tin tưởng chúng khi chúng đến.

Hai giải pháp có lẽ tốt là tạo ra thành phần để tạo ra tiếng ồn; hai giải pháp chính dường như là sai lệch nhiệt độ và tiếng ồn avanche được tạo ra bằng một diode (xem http://web.archive.org/web/20061117145903/http://willware.net:8080/hw-rng.html )

Vì các thành phần như con quay hồi chuyển và gia tốc kế đã trở nên hợp lý hơn, khiến chúng hoạt động ở độ nhạy cao nhất và sử dụng giá trị LSB của chúng cũng có thể là một giải pháp tốt, nhưng AFAIK không ai kiểm tra nó.

Thật buồn cười vì có rất nhiều bài viết về KHÔNG làm RNG, nhưng không phải là một triển khai CTNH được mở và xác minh


2

Bạn có thể sử dụng pycsprng.py . Mật mã học có an toàn không? Tôi không chắc lắm, nhưng tôi muốn một số đánh giá ngang hàng.

python pycsprng.py | pv | dd of=data.file bs=1024 count=1000

Đường ống đến pvlà tùy chọn và sẽ chỉ giúp bạn biết có bao nhiêu dữ liệu đã được chuyển.

Bạn có thể thấy rằng kích thước khối lớn hơn (bs) làm tăng độ hoàn hảo. Bạn sẽ phải điều chỉnh số lượng để không tạo quá lớn tệp nếu bạn tăng kích thước khối.


3
Điều đó chỉ sử dụng /dev/urandom...
Stephen Kitt

1
pycsprng.pynghĩa đen là một kịch bản 10 SLOC nhận được sự ngẫu nhiên từ os.urandom. Tài liệu nói rằng "Dữ liệu được trả về phải đủ khó đoán đối với các ứng dụng mã hóa [...] Trên một hệ thống giống như UNIX, điều này sẽ truy vấn /dev/urandom" . Nó thực sự làm (mặc dù nó đã lỗi thời) và Security.SE nói rằng nó ổn đối với tiền điện tử .
gronostaj

Không một lần tiền điện tử pad!
PyRulez

0

Những gì bạn nhận được từ một kênh micrô tương tự khi bạn không cắm micrô thường chỉ là tĩnh. Ví dụ, ống thông qua bzip2 để làm trắng, trộn nó với một nguồn ngẫu nhiên khác (urandom hoặc giắc micrô khác), có thể dẫn kết quả qua openssl để có biện pháp tốt và những gì bạn nhận được sẽ khá ngẫu nhiên.

Tuy nhiên, rất khó để chứng minh bất kỳ thuộc tính bảo mật cứng và nhanh nào về tính ngẫu nhiên của kết quả.


0

Nếu bạn đang sử dụng kernel linux 2.6.9 hoặc mới hơn trên bộ xử lý amd64 / x86_64, môi trường ảo hoặc vật lý, bạn có thể thử ncomputers.org/pandom một trình tạo số ngẫu nhiên thực sự, cung cấp entropy 8 KiB / s của 64 ubits / 64 bit thông qua/dev/random

đầu ra mẫu


Liên kết bị vỡ, không thể tìm thấy một bản sao lưu cho nó.
slm

0

Để tạo 100 MB dữ liệu ngẫu nhiên được tạo bằng phần cứng, bạn có thể:

  • Ghi lại 20 phút âm thanh (96khz 16 bit mono) bằng micrô tích hợp trong máy tính của bạn (có sẵn trên máy tính xách tay). Bạn sẽ nhận được tệp WAV ~ 220 MB.

  • Loại bỏ các bit không hữu ích và xáo trộn các bit của dữ liệu nhị phân (nhiều cách để làm điều này) với một số phép toán

  • Xuất các bit được xáo trộn dưới dạng tệp nhị phân ~ 100 MB

Đây là một bài viết về điều này: Một nỗ lực để tạo ra dữ liệu ngẫu nhiên và ngẫu nhiên thực sự với âm thanh (và micrô tích hợp trong máy tính của bạn) .

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.