Tính ngẫu nhiên có nghĩa là giá trị tiếp theo bạn nhận được không phụ thuộc vào giá trị trước đó và không có cách nào để bạn dự đoán nó.
Điều này thực sự khó đối với một máy tính, vì máy tính gần như chỉ là một máy tính thực sự nhanh - vì vậy nó có thể làm toán, nhưng sẽ luôn nhận được câu trả lời chính xác mỗi lần. Bạn có thể làm một cái gì đó gần với sự ngẫu nhiên với toán học gọi là "giả ngẫu nhiên" - nhưng nó không đủ chất lượng để sử dụng cho mật mã.
Vì vậy, Linux thu thập "tính ngẫu nhiên" trong các nhóm từ nhiều nguồn khác nhau (chẳng hạn như thời gian giữa các sự kiện đầu vào). "Số lượng" ngẫu nhiên trong nhóm này là entropy. Ít entropy = ít thường xuyên hơn, lặp đi lặp lại, các mẫu có thể dự đoán được - bạn muốn có nhiều entropy nhất có thể. Nhân Linux sẽ "lấp đầy" nhóm của nó bằng entropy khi nó ở mức thấp, nhưng nó phụ thuộc vào những gì xảy ra trên hệ thống vì nó sử dụng thời gian giữa các sự kiện phần cứng không thể đoán trước để tạo ra nó.
Đây là một đoạn trích từ bài viết đó giải thích lý do tại sao nó không quan trọng:
Nhưng hãy giả sử rằng bạn đã có được những con số ngẫu nhiên thật sự. Là gì
bạn sẽ làm gì với họ?
Bạn in chúng ra, đóng khung chúng và treo chúng trên tường phòng khách của bạn,
để khám phá vẻ đẹp của vũ trụ lượng tử? Điều đó thật tuyệt, và tôi
chắc chắn hiểu.
Đợi đã, cái gì? Bạn đang sử dụng chúng? Vì mục đích mật mã? À, cái đó
Làm hỏng mọi thứ, bởi vì bây giờ mọi thứ trở nên hơi xấu xí.
Bạn thấy đấy, số lượng ngẫu nhiên thực sự ngẫu nhiên, hiệu ứng lượng tử của bạn là
đưa vào một số thuật toán mờ nhạt trong thế giới thực.
Bởi vì hầu hết tất cả các thuật toán mã hóa mà chúng tôi sử dụng không giữ
lên đến an ninh lý thuyết thông tin. Họ chỉ có thể cung cấp
bảo mật tính toán. Hai ngoại lệ xuất hiện trong tâm trí tôi là
Chia sẻ bí mật của Shamir và pad Một lần. Và trong khi cái đầu tiên
có thể là một đối trọng hợp lệ (nếu bạn thực sự có ý định sử dụng nó),
sau này là hoàn toàn không thực tế.
Nhưng tất cả những thuật toán mà bạn biết, aes, rsa, Diffie-Hellman,
Đường cong elip và tất cả các gói tiền điện tử mà bạn đang sử dụng, OpenSSL,
GnuTLS, Keyczar, API mật mã của hệ điều hành của bạn, đây chỉ là những
tính toán an toàn.
Có gì khác biệt? Trong khi an toàn về mặt lý thuyết
Các thuật toán được bảo mật, thời gian, các thuật toán khác không thể đảm bảo
bảo mật chống lại một kẻ thù với sức mạnh tính toán không giới hạn
thử tất cả các khả năng cho các phím. Chúng tôi vẫn sử dụng chúng vì nó sẽ
mang tất cả các máy tính trên thế giới cùng nhau lâu hơn
vũ trụ đã tồn tại, cho đến nay. Đó là mức độ không an toàn của chúng tôi
nói về đây
Trừ khi một số kẻ thông minh phá vỡ thuật toán, sử dụng ít hơn nhiều
khả năng tính toán. Ngay cả sức mạnh tính toán có thể đạt được ngày hôm nay. Đó là
giải thưởng lớn mà mọi nhà mật mã đều mơ ước: phá vỡ chính nó,
phá vỡ rsa chính nó và như vậy.
Vì vậy, bây giờ chúng tôi đang ở điểm mà bạn không tin tưởng vào tòa nhà bên trong
các khối của trình tạo số ngẫu nhiên, nhấn mạnh vào sự ngẫu nhiên thực sự
thay vì giả ngẫu nhiên. Nhưng sau đó bạn đang sử dụng chúng
Số thật ngẫu nhiên trong số các thuật toán mà bạn rất coi thường bạn
không muốn họ ở gần trình tạo số ngẫu nhiên của bạn ở nơi đầu tiên!
Sự thật là, khi các thuật toán băm hiện đại bị phá vỡ, hoặc khi
Mật mã khối hiện đại bị hỏng, không thành vấn đề với bạn
nhận được những số ngẫu nhiên về triết học của người Viking vì chúng. Bạn đã
không còn gì để sử dụng chúng một cách an toàn cho dù sao đi nữa.
Vì vậy, chỉ cần sử dụng những số ngẫu nhiên an toàn tính toán cho bạn
thuật toán tính toán an toàn. Nói cách khác: sử dụng / dev / urandom.