Trang chủ » làm thế nào để » Cách máy tính tạo số ngẫu nhiên

    Cách máy tính tạo số ngẫu nhiên

    Máy tính tạo số ngẫu nhiên cho mọi thứ, từ mật mã đến trò chơi video và đánh bạc. Có hai loại số ngẫu nhiên - số ngẫu nhiên thật và số giả ngẫu nhiên - và sự khác biệt rất quan trọng đối với bảo mật của hệ thống mã hóa.

    Máy tính có thể tạo ra các số thực sự ngẫu nhiên bằng cách quan sát một số dữ liệu bên ngoài, như chuyển động của chuột hoặc tiếng ồn của quạt, không thể dự đoán được và tạo dữ liệu từ nó. Điều này được gọi là entropy. Những lần khác, họ tạo ra các số giả mạo của Wikipedia bằng cách sử dụng một thuật toán để kết quả xuất hiện ngẫu nhiên, mặc dù chúng không.

    Chủ đề này gần đây đã trở nên gây tranh cãi hơn, với nhiều người đặt câu hỏi liệu chip tạo số ngẫu nhiên phần cứng tích hợp của Intel có đáng tin hay không. Để hiểu lý do tại sao nó có thể không đáng tin cậy, bạn sẽ phải hiểu cách các số ngẫu nhiên được tạo ra ở nơi đầu tiên và chúng được sử dụng để làm gì.

    Số ngẫu nhiên được sử dụng để làm gì

    Số ngẫu nhiên đã được sử dụng trong nhiều ngàn năm. Cho dù đó là lật một đồng xu hay gieo xúc xắc, mục tiêu là để lại kết quả cuối cùng cho đến cơ hội ngẫu nhiên. Trình tạo số ngẫu nhiên trong máy tính tương tự nhau - chúng là một nỗ lực để đạt được kết quả ngẫu nhiên, không thể đoán trước.

    Máy tạo số ngẫu nhiên rất hữu ích cho nhiều mục đích khác nhau. Ngoài các ứng dụng rõ ràng như tạo số ngẫu nhiên cho mục đích đánh bạc hoặc tạo kết quả không thể đoán trước trong trò chơi trên máy tính, tính ngẫu nhiên rất quan trọng đối với mật mã.

    Mật mã học yêu cầu những con số mà những kẻ tấn công không thể đoán được. Chúng ta không thể chỉ sử dụng cùng một số nhiều lần. Chúng tôi muốn tạo ra những con số này theo một cách rất khó đoán để những kẻ tấn công không thể đoán chúng. Những số ngẫu nhiên này rất cần thiết để mã hóa an toàn, cho dù bạn đang mã hóa các tệp của riêng mình hay chỉ sử dụng trang web HTTPS trên Internet.

    Số ngẫu nhiên thật

    Bạn có thể tự hỏi làm thế nào một máy tính thực sự có thể tạo ra một số ngẫu nhiên. Nơi mà sự ngẫu nhiên của người Viking này đến từ đâu. Nếu đó chỉ là một đoạn mã máy tính, không phải con số mà máy tính tạo ra có thể dự đoán được?

    Chúng tôi thường nhóm các số ngẫu nhiên mà máy tính tạo thành hai loại, tùy thuộc vào cách chúng được tạo: Số ngẫu nhiên của True True và số giả ngẫu nhiên.

    Để tạo ra một số ngẫu nhiên thật sự, một máy tính đo một số loại hiện tượng vật lý xảy ra bên ngoài máy tính. Ví dụ, máy tính có thể đo được sự phân rã phóng xạ của nguyên tử. Theo lý thuyết lượng tử, không có cách nào để biết chắc chắn khi nào sự phân rã phóng xạ sẽ xảy ra, vì vậy đây thực chất là sự ngẫu nhiên thuần túy của Hồi giáo từ vũ trụ. Kẻ tấn công sẽ không thể dự đoán khi nào phân rã phóng xạ sẽ xảy ra, vì vậy chúng sẽ không biết giá trị ngẫu nhiên.

    Đối với một ví dụ hàng ngày hơn, máy tính có thể dựa vào tiếng ồn trong khí quyển hoặc đơn giản là sử dụng thời gian chính xác mà bạn nhấn phím trên bàn phím làm nguồn dữ liệu không thể đoán trước hoặc entropy. Ví dụ: máy tính của bạn có thể nhận thấy rằng bạn đã bấm một phím chính xác là 0,23423523 giây sau 2 giờ chiều Grab Lấy đủ số thời gian cụ thể được liên kết với các lần nhấn phím này và bạn sẽ có một nguồn entropy mà bạn có thể sử dụng để tạo ngẫu nhiên. con số. Bạn không phải là một cỗ máy có thể dự đoán được, vì vậy kẻ tấn công không thể đoán được thời điểm chính xác khi bạn nhấn các phím này. Thiết bị / dev / ngẫu nhiên trên Linux, tạo ra các số ngẫu nhiên, khối chặn và không trả về kết quả cho đến khi nó thu thập đủ entropy để trả về một số thực sự ngẫu nhiên.

    Số giả

    Các số giả ngẫu nhiên là một số thay thế cho các số ngẫu nhiên của Real thật. Một máy tính có thể sử dụng giá trị hạt giống và thuật toán để tạo ra các con số có vẻ ngẫu nhiên, nhưng thực tế đó là điều có thể dự đoán được. Máy tính không thu thập bất kỳ dữ liệu ngẫu nhiên nào từ môi trường.

    Đây không hẳn là một điều xấu trong mọi tình huống. Ví dụ: nếu bạn đang chơi một trò chơi video, điều đó không thực sự quan trọng cho dù các sự kiện xảy ra trong trò chơi đó được áp dụng bởi các số ngẫu nhiên hay số giả ngẫu nhiên. Mặt khác, nếu bạn đang sử dụng mã hóa, bạn không muốn sử dụng số giả danh mà kẻ tấn công có thể đoán được.

    Ví dụ: giả sử kẻ tấn công biết thuật toán và giá trị hạt giống mà trình tạo số giả ngẫu nhiên sử dụng. Và giả sử một thuật toán mã hóa lấy số giả từ thuật toán này và sử dụng nó để tạo khóa mã hóa mà không cần thêm bất kỳ sự ngẫu nhiên nào. Nếu kẻ tấn công biết đủ, chúng có thể hoạt động ngược và xác định số giả danh mà thuật toán mã hóa phải chọn trong trường hợp đó, phá vỡ mã hóa.

    Trình tạo số ngẫu nhiên phần cứng của NSA và Intel

    Để giúp các nhà phát triển dễ dàng hơn và giúp tạo ra các số ngẫu nhiên an toàn, các chip Intel bao gồm một trình tạo số ngẫu nhiên dựa trên phần cứng được gọi là RdRand. Con chip này sử dụng nguồn entropy trên bộ xử lý và cung cấp số ngẫu nhiên cho phần mềm khi phần mềm yêu cầu chúng.

    Vấn đề ở đây là trình tạo số ngẫu nhiên về cơ bản là một hộp đen và chúng ta không biết những gì đang diễn ra bên trong nó. Nếu RdRand chứa một cửa hậu NSA, chính phủ sẽ có thể phá vỡ các khóa mã hóa được tạo ra chỉ với dữ liệu được cung cấp bởi trình tạo số ngẫu nhiên đó.

    Đây là một mối quan tâm nghiêm trọng. Vào tháng 12 năm 2013, các nhà phát triển của FreeBSD đã loại bỏ hỗ trợ cho việc sử dụng trực tiếp RdRand như một nguồn ngẫu nhiên, nói rằng họ không thể tin tưởng vào điều đó. [Nguồn] Đầu ra của thiết bị RdRand sẽ được đưa vào một thuật toán khác có thêm entropy, đảm bảo rằng mọi backtime trong trình tạo số ngẫu nhiên sẽ không thành vấn đề. Linux đã hoạt động theo cách này, tiếp tục ngẫu nhiên hóa dữ liệu ngẫu nhiên đến từ RdRand để không thể dự đoán được ngay cả khi có cửa hậu. [Nguồn] Trong một AMA gần đây (Thời gian hỏi tôi bất cứ điều gì) trên Reddit, Giám đốc điều hành Intel Brian Krzanich đã không trả lời câu hỏi về những mối quan tâm này. [Nguồn]

    Tất nhiên, điều này có thể không chỉ là vấn đề với chip Intel. Các nhà phát triển của FreeBSD cũng gọi các chip của Via bằng tên. Cuộc tranh cãi này cho thấy tại sao việc tạo ra các số ngẫu nhiên thực sự ngẫu nhiên và không dự đoán được lại rất quan trọng.


    Để tạo ra các số ngẫu nhiên của Real thật, các bộ tạo số ngẫu nhiên thu thập dữ liệu entropy, trực tiếp hoặc dữ liệu dường như ngẫu nhiên từ thế giới vật lý xung quanh chúng. Đối với các số ngẫu nhiên không có thật không cần phải ngẫu nhiên, họ có thể chỉ cần sử dụng một thuật toán và giá trị hạt giống.

    Tín dụng hình ảnh: rekre89 trên Flickr, Lisa Brewster trên Flickr, Ryan Somma trên Flickr, huangjiahui trên Flickr