Thuật toán sinh số ngẫu nhiên CSPRNG

Chỉnh sửa lần cuối Jun 19, 2022
Thuật toán sinh số ngẫu nhiên CSPRNG

Một bộ sinh số giả ngẫu nhiên (pseudorandom number generator, hay PRNG) là một thuật toán tạo ra một chuỗi số có thuộc tính gần như là ngẫu nhiên. Tuy nhiên, các chuỗi số được sinh ra theo cách này không thực sự là ngẫu nhiên, vì chúng là kết quả đầu ra của một thuật toán cố định với dữ liệu đầu vào cố định, gọi là seed (mặc dù seed đầu vào có thể là hoàn toàn ngẫu nhiên).

Đại đa số các ứng dụng mật mã học yêu cầu phải có số ngẫu nhiên cho các việc như:

  • Sinh khóa.
  • Sinh số nonce.
  • Tạo salt cho các hệ thống chữ ký số và mã hóa khác.

Chất lượng của tính ngẫu nhiên của các số được sinh ảnh hưởng trực tiếp đến mức độ bảo mật của các nhiệm vụ này; do đó, bộ sinh số giả ngẫu nhiên được mở rộng thành bộ sinh số giả ngẫu nhiên an toàn (cryptographically secure pseudorandom number generator, hay CSPRNG). Một bộ sinh số giả ngẫu nhiên an toàn phải thỏa mãn hai yêu cầu sau:

  1. Chuỗi số được sinh ra phải đạt các phép thử tính ngẫu nhiên bằng thống kê (statistical randomness test)
  1. Chống chọi được việc để lộ trạng thái hay thuật toán cho kẻ tấn công: kẻ tấn công có thể biết được thuật toán của bộ sinh hay trạng thái và kết quả của nó, nhưng vẫn không thể dự đoán được chuỗi số tiếp theo.