Điểm:4

Java: SecureRandom.getInstanceStrong() so với SecureRandom() mới

lá cờ ht

Được cho Bảo mật Ngẫu nhiên lớp được coi là phù hợp để sử dụng trong mật mã, tôi cho rằng SecureRandom mới() để được an toàn (thuật ngữ buồn cười, phải không?).

Nếu SecureRandom mới() đã được bảo mật, lợi ích của việc sử dụng là gì SecureRandom.getInstanceStrong() thay thế?

Đây có phải là loại khác biệt giống như giữa /dev/urandom/dev/ngẫu nhiên?

Tôi đang tranh luận về vấn đề này trong trường hợp sau, trong đó tôi chủ yếu quan tâm đến việc tạo IV ngẫu nhiên (để sử dụng với AES-GCM):

riêng tư cuối cùng SecureRandom secureRandom = new SecureRandom();

[…]

byte riêng [] getIv() {
    int ivLength = 12;
    byte[] iv = byte mới[ivLength];
    safeRandom.nextBytes(iv);
    trở lại iv;
}
kelalaka avatar
lá cờ in
[Xem chú thích: Tùy thuộc vào HĐH, trong IOS, chúng giống nhau](https://crypto.stackexchange.com/a/85545/18298)
kelalaka avatar
lá cờ in
Đây là lệnh gọi thư viện để lấy phiên bản... [SecureRandom.getInstanceStrong()](https://docs.oracle.com/javase/8/docs/api/java/security/SecureRandom.html) Xem [Maarten trả lời về điều đó ](https://stackoverflow.com/a/37256739/1820553)
Paul Uszak avatar
lá cờ cn
Lại. ngẫu nhiên: Không (đối với các phiên bản nhân ex.NSA cũ.) `\dev\random` là TRNG trong khi `dev\urandom` là PRNG.
Gilles 'SO- stop being evil' avatar
lá cờ cn
GCM IV không cần phải ngẫu nhiên. Nó chỉ cần là duy nhất. Vì vậy, đối với trường hợp cụ thể này, nó không thành vấn đề. Lý do duy nhất để sử dụng IV ngẫu nhiên cho GCM là nếu bạn không thể nhớ tất cả các IV đã được sử dụng trước đó, vì vậy, thay vào đó, bạn dựa vào tính duy nhất của thống kê. Đối với điều đó, chỉ cần có một giá trị ngẫu nhiên theo thống kê là đủ, nó thậm chí không cần phải ngẫu nhiên về mặt mật mã (là một thuộc tính mạnh hơn, bao gồm tính không thể đoán trước và độc lập với tất cả các giá trị ngẫu nhiên khác).
Paul Uszak avatar
lá cờ cn
@kelalaka Đây thực sự là một mớ hỗn độn Java. Tất nhiên, `securerandom.source=file:/dev/random` sẽ chặn (ed) cái nào.Vì vậy, nếu bạn mở một máy chủ ứng dụng, sẽ mất khoảng năm phút để trả lại yêu cầu http. Ngay cả một trang web không phải https như trang web của tôi cũng khá ngạc nhiên (có thể là tạo cookie).
kelalaka avatar
lá cờ in
Những gì @Gilles nói là đúng, Nếu có thể, hãy sử dụng [AES-GCM-SIV](https://crypto.stackexchange.com/q/82105/18298) để giảm thiểu sự cố này...
Điểm:2
lá cờ in

SecureRandom.getInstanceStrong() sẽ đảm bảo rằng thuật toán mạnh (securerandom.strongAlgorithms) sẽ được sử dụng.

  • Nó có sẵn từ Java phiên bản 8. Kiểm tra phiên bản của bạn trước khi bắt đầu sử dụng.

  • Nếu không có thuật toán như vậy có sẵn khi chạy VM, nó sẽ ném NoSuchAlgorithmException.

  • Lỗi này là một cách thực hành tốt hơn thay vì mặc định là bảo mật yếu.

kelalaka avatar
lá cờ in
Chào mừng đến với Mật mã học. Một liên kết đến yêu cầu này hoặc dòng mã từ nguồn sẽ làm cho câu trả lời này tốt hơn nhiều. Mặt khác, đây là một tuyên bố tự. Ví dụ, người ta cũng có thể nói, không có thuật toán mạnh (ý nghĩa của thuật toán mạnh) thì nó sẽ sử dụng thuật toán mặc định; java.util.Random. Cần có tài liệu tham khảo và trong trường hợp Java, thậm chí cả các phiên bản..
lá cờ in
Cảm ơn bạn đã phản hồi kelalaka, tôi đã thêm một chút làm rõ hơn, như bạn đã đề xuất.
kelalaka avatar
lá cờ in
Có danh sách thuật toán mạnh không?
Paul Uszak avatar
lá cờ cn
@kelalaka 'Mạnh' là một thuật ngữ phổ biến được sử dụng bởi các nhà mật mã học, cơ quan và chính phủ toàn trị để gắn nhãn mã hóa không thể bị đánh bại trong thời gian thực. Có một danh sách [tại đây](https://crypto.stackexchange.com/a/62515/23115). Tôi không biết có nên thêm AES hay không vì không có bằng chứng toán học nào cho thấy nó vẫn an toàn.
kelalaka avatar
lá cờ in
@PaulUszak Tôi đang nói về ngữ cảnh của Bảo mật Java và đặc biệt là về các thế hệ số ngẫu nhiên.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.