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

Mục lục:

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

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

Video: Cách máy tính tạo số ngẫu nhiên
Video: Hướng dẫn cài đặt và sử dụng chi tiết Google Chromecast 4K - YouTube 2024, Tháng tư
Anonim
Máy vi tính tạo ra số ngẫu nhiên cho mọi thứ từ mật mã đến trò chơi điện tử và cờ bạc. Có hai loại số ngẫu nhiên - số ngẫu nhiên "đúng" và số giả ngẫu nhiên - và sự khác biệt là quan trọng đối với bảo mật của hệ thống mã hóa.
Máy vi tính tạo ra số ngẫu nhiên cho mọi thứ từ mật mã đến trò chơi điện tử và cờ bạc. Có hai loại số ngẫu nhiên - số ngẫu nhiên "đúng" và số giả ngẫu nhiên - và sự khác biệt là 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 con 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ừ đó. Điều này được gọi là entropy. Những lần khác, chúng tạo ra các số "giả ngẫu nhiên" 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 xuất hiện.

Gần đây, chủ đề 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 máy phát số ngẫu nhiên phần cứng tích hợp của Intel có đáng tin cậy hay không. Để hiểu 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à những gì chúng được sử dụng.

Số ngẫu nhiên nào được sử dụng cho

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

Trình 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 hiển nhiên như tạo ra các số ngẫu nhiên cho mục đích cờ bạc hoặc tạo ra kết quả không thể đoán trước trong trò chơi máy tính, tính ngẫu nhiên là quan trọng đối với mật mã.

Mật mã học đòi hỏi những con số mà những kẻ tấn công không thể đoán được. Chúng tôi không thể 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ó lường để kẻ tấn công không thể đoán được chúng. Những số ngẫu nhiên này rất cần thiết cho việc 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.

Image
Image

Số ngẫu nhiên thực

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. "Ngẫu nhiên" xuất phát từ đâu. Nếu nó chỉ là một phần của mã máy tính, không phải là nó có thể các con số máy tính tạo ra có thể được dự đoán?

Chúng tôi thường nhóm các máy tính số ngẫu nhiên 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 "Đúng" và số ngẫu nhiên giả.

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

Đối với một ví dụ ngày-to-ngày, máy tính có thể dựa vào tiếng ồn không khí hoặc chỉ đơn giản là sử dụng thời gian chính xác bạn nhấn phím trên bàn phím của bạn như là một 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 đã nhấn một phím ở chính xác 0.23423523 giây sau 2 giờ chiều. Lấy đủ thời gian cụ thể liên quan đến các lần nhấn phím này và bạn sẽ có nguồn entropy mà bạn có thể sử dụng để tạo ngẫu nhiên "true" 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 bấm 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, "chặn" và không trả lại kết quả cho đến khi nó thu thập đủ entropy để trả lại một số thực sự ngẫu nhiên.

Image
Image

Số giả ngẫu nhiên

Các số giả ngẫu nhiên là một thay thế cho các số ngẫu nhiên “đúng”. Một máy tính có thể sử dụng một giá trị hạt giống và một thuật toán để tạo ra các con số có vẻ là ngẫu nhiên, nhưng đó là trong thực tế 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.

Điều này không nhất thiết phải là một điều xấu trong mọi tình huống. Ví dụ: nếu bạn đang chơi trò chơi điện tử, việc các sự kiện xảy ra trong trò chơi đó có thực sự là do số ngẫu nhiên hoặc số giả ngẫu nhiên không. 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ả ngẫu nhiên mà kẻ tấn công có thể đoán.

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ả tạo sử dụng. Và giả sử thuật toán mã hóa nhận được số giả ngẫu nhiên từ thuật toán này và sử dụng nó để tạo khóa mã hóa mà không thêm bất kỳ sự ngẫu nhiên bổ sung nào. Nếu kẻ tấn công biết đủ, họ có thể làm việc ngược và xác định số giả ngẫu nhiên thuật toán mã hóa phải được chọn trong trường hợp đó, phá vỡ mã hóa.

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

Để làm cho mọi thứ dễ dàng hơn cho các nhà phát triể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. 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 điều gì đang xảy ra bên trong nó.Nếu RdRand chứa một backdoor 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 bộ 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 đã xóa hỗ trợ sử dụng RdRand trực tiếp như một nguồn ngẫu nhiên, nói rằng họ không thể tin tưởng đ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 bổ sung thêm entropy, đảm bảo rằng bất kỳ backdoors nào trong trình tạo số ngẫu nhiên sẽ không thành vấn đề. Linux đã làm việc theo cách này, tiếp tục ngẫu nhiên các dữ liệu ngẫu nhiên đến từ RdRand để nó không thể dự đoán được ngay cả khi có một cửa sau. [Nguồn] Trong một AMA gần đây (“Ask Me Anything”) trên Reddit, Giám đốc điều hành Intel Brian Krzanich đã không trả lời các câu hỏi về những lo ngại 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 tên chip của Via. Cuộc tranh cãi này cho thấy lý do tại sao tạo ra các số ngẫu nhiên thực sự ngẫu nhiên và không thể dự đoán được là rất quan trọng.

Image
Image

Để tạo ra các số ngẫu nhiên “đúng”, các trình tạo số ngẫu nhiên thu thập dữ liệu “entropy” 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ọ chỉ có thể sử dụng thuật toán và giá trị hạt giống.

Đề xuất: