Tác giả VPN WireGuard đã phát hành bản cập nhật RDRAND mới

Jason A. Donenfeld , tác giả của WireGuard VPN, gần đây đã công bố một phiên bản cập nhật mới của bộ tạo số ngẫu nhiên RDRAND , chịu trách nhiệm cho hoạt động của các thiết bị /dev/random và /dev/urandom trong nhân Linux.

Vào cuối tháng XNUMX, Jason được liệt kê là người bảo trì bộ điều khiển ngẫu nhiên và hiện đã đăng kết quả đầu tiên về công việc làm lại của mình.

Thông báo đề cập rằng phiên bản mới này đáng chú ý vì đã chuyển sang sử dụng hàm băm BLAKE2s thay vì SHA1 cho các thao tác trộn entropy.

Bản thân BLAKE2s có đặc tính tốt là dựa trên nội bộ
Hoán vị ChaCha, mà RNG đã được sử dụng để mở rộng, vì vậy
sẽ không có vấn đề gì với tính mới, độc đáo hoặc CPU tuyệt vời
hành vi, vì nó dựa trên thứ gì đó đã được sử dụng.

Hơn nữa, cần lưu ý rằng sự thay đổi này cũng đã cải thiện tính bảo mật của bộ tạo số giả ngẫu nhiên bằng cách loại bỏ thuật toán SHA1 gây ra nhiều vấn đề và ngăn chặn việc ghi đè lên vectơ khởi tạo RNG. Vì thuật toán BLAKE2s hoạt động tốt hơn SHA1, việc sử dụng nó cũng có tác động tích cực đến hiệu suất của bộ tạo số giả ngẫu nhiên (các thử nghiệm trên hệ thống với bộ xử lý Intel i7-11850H cho thấy tốc độ tăng 131%).

Một ưu điểm khác được nhấn mạnh là việc chuyển đổi hỗn hợp entropy sang BLAKE2 giúp thống nhất các thuật toán được sử dụng: BLAKE2 được sử dụng trong thuật toán mã hóa ChaCha, vốn đã được sử dụng để trích xuất các chuỗi ngẫu nhiên.

BLAKE2s nhìn chung nhanh hơn và chắc chắn an toàn hơn, nhưng nó đã bị xâm phạm nghiêm trọng. Hơn nữa, cấu trúc RNG hiện tại không sử dụng đầy đủ chức năng SHA1 như đã quy định và cho phép ghi đè IV không được ghi chép bằng đầu ra của RDRAND , ngay cả khi RDRAND không được cấu hình là "đáng tin cậy", điều này ngụ ý các tùy chọn IV có khả năng độc hại.

Và độ dài ngắn của nó có nghĩa là việc chỉ giữ bí mật một nửa khi đưa nó trở lại bộ trộn chỉ cung cấp cho chúng ta 2^80 bit bảo mật chuyển tiếp. Nói cách khác, không chỉ lựa chọn hàm băm đã lỗi thời mà việc sử dụng nó cũng không thực sự tốt.

Ngoài ra, các cải tiến đã được thực hiện đối với trình tạo số giả ngẫu nhiên CRNG an toàn cho tiền điện tử được sử dụng trong lệnh gọi getrandom.

Người ta cũng đề cập rằng những cải tiến này chủ yếu đến từ việc hạn chế việc gọi đến bộ tạo RDRAND chậm khi trích xuất entropy, điều này có thể cải thiện hiệu suất lên gấp 3,7 lần. Jason đã chứng minh rằng việc gọi RDRAND chỉ có ý nghĩa trong trường hợp CRNG chưa được khởi tạo hoàn toàn, nhưng nếu quá trình khởi tạo CRNG đã hoàn tất, giá trị của nó không ảnh hưởng đến chất lượng của chuỗi được tạo ra, và trong trường hợp này, có thể thực hiện mà không cần gọi RDRAND.

Thỏa hiệp này nhằm giải quyết hai vấn đề này, đồng thời, duy trì cấu trúc chung và ngữ nghĩa càng gần với bản gốc càng tốt.
Đặc biệt:

a) Thay vì ghi đè hàm băm IV bằng RDRAND, chúng tôi đưa vào các trường "muối" và "cá nhân" BLAKE2 đã được ghi được tạo riêng cho loại hình sử dụng này.
b) Vì hàm này trả về kết quả của hàm băm hoàn chỉnh cho bộ thu entropy, chúng tôi chỉ trả về một nửa chiều dài của băm, giống như nó đã được thực hiện trước đây. Điều này làm tăng xây dựng bí mật trước từ 2 ^ 80 đến 2 ^ 128 thoải mái hơn nhiều.
c) Thay vì chỉ sử dụng hàm "sha1_transform" thô, thay vào đó, chúng tôi sử dụng hàm BLAKE2s đầy đủ và thích hợp, với sự hoàn thành.

Các thay đổi dự kiến ​​sẽ được đưa vào nhân kernel 5.17 và đã được các nhà phát triển Ted Ts'o (người thứ hai chịu trách nhiệm duy trì trình điều khiển ngẫu nhiên), Greg Kroah-Hartman (chịu trách nhiệm duy trì tính ổn định của nhân Linux) và Jean-Philippe Aumasson (tác giả của thuật toán BLAKE2/3) xem xét.

Cuối cùng, nếu bạn muốn tìm hiểu thêm, bạn có thể xem chi tiết tại liên kết sau.


Thêm vào danh sách nguồn ưu tiên trên Google.