Khôi phục mô tả PRNG từ các đầu ra liên tiếp


7

Đưa ra các kết quả đầu ra của trình tạo số giả ngẫu nhiên, làm thế nào người ta có thể xác định loại (ví dụ: Thanh ghi thay đổi phản hồi tuyến tính), Multiply-With-Carry, linear Congruential Generator, v.v.) và phục hồi chức năng và hạt giống?

Mảng số đã cho chắc chắn được tạo bởi PRNG (không phải bảo mật bằng mật mã) - điều này được biết trước. Các đầu ra sạch sẽ, PRNG là một hộp đen trả về các số liên tiếp (không sửa đổi, không bỏ qua các giá trị. Bây giờ nhiệm vụ là tìm hàm và seed từ các giá trị.

Ý tưởng đơn giản là thử tất cả các sơ đồ cho đến khi tìm thấy kết quả khớp, nhưng tôi quan tâm đến cách tiếp cận thuật toán hơn.

Câu trả lời:


10

Không có phương pháp duy nhất để xác định loại PRNG. Thật vậy, đối với PRNG cường độ mã hóa, bạn không thể phân biệt đầu ra của nó với thực sự ngẫu nhiên, vì vậy bạn không thể xác định loại PRNG đó chỉ bằng cách nhìn vào đầu ra của chúng.

Thay vào đó, đối với mỗi chương trình mà bạn liệt kê, có một cách để khôi phục lại giống và dự đoán tương lai bit từ đầu ra của nó. Cách để làm điều đó là khác nhau đối với từng loại PRNG. Vì vậy, cách tiếp cận tự nhiên là: đối với từng loại ứng cử viên, hãy thử phương pháp khôi phục hạt giống hoạt động cho loại PRNG đó và xem bạn có thành công không. Nếu là bạn, bạn đã tìm ra loại PRNG.

Tôi không nghĩ rằng có một kỹ thuật hiệu quả hơn hoặc chung hơn. Và thành thật mà nói, tôi không nghĩ rằng cần một cái hiệu quả hơn. Đối với các loại bạn liệt kê, có các thuật toán rất hiệu quả để mã hóa chúng, cho đầu ra đủ. Vì vậy, tôi nghi ngờ rằng sẽ rất khó để vượt qua phương pháp "thử tất cả các kế hoạch".

Điều này hoạt động nếu tập hợp các loại PRNG của bạn chỉ chứa các PRNG yếu về mặt mật mã, tức là có thể dự đoán các đầu ra trong tương lai được cung cấp đủ các đầu ra trong quá khứ.

Để biết chi tiết về cách thực hiện việc này đối với bất kỳ loại PRNG cụ thể nào, tôi khuyên bạn nên hỏi một câu hỏi riêng tập trung vào một loại PRNG đó. Dưới đây là một số tài nguyên về một số loại PRNG mà bạn đã liệt kê:


1
Bạn có thể thêm một lời giới thiệu về đầu ra của LCG được tổ chức cao trong siêu máy bay khi được vẽ . Các lô như thế này có thể được sử dụng để xác định rằng một người đang giao dịch với LCG và các loại khác.
Idillotexist Idillotexist

2
@IwillnotexistIdonotexist, những lô đó thực sự kém hiệu quả hơn phương pháp tôi liên kết, vì vậy tôi không có lý do gì để sử dụng chúng nếu mục tiêu của bạn là xác định việc sử dụng LCG: các lô yêu cầu nhiều đầu ra hơn và yêu cầu ai đó kiểm tra lô. Cách tiếp cận tôi liên kết chỉ yêu cầu một số ít đầu ra và tính toán rất ít.
DW

Thật; Toán học là vững chắc và sẽ xác định rất nhanh cho dù một người đang đối phó với một gia đình nhất định. Nhưng thật tuyệt khi có một minh chứng ít toán học hơn, trực quan hơn rằng các PRNG không phải là tất cả được tạo ra bằng nhau, và đây là một trong những ví dụ sáng chói.
Idillotexist Idonotexist
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.