Tôi khuyên bạn nên xem qua Entropy có thể quan sát Truestamp dự định. Gần đây, chúng tôi đã tạo mục này để giải quyết nhu cầu về loại ngẫu nhiên mà bạn đang hỏi.
Entropy có thể quan sát tự động thu thập tính ngẫu nhiên từ các nguồn có thể kiểm chứng công khai cứ sau 5 phút, lưu trữ và băm nội dung của dữ liệu được truy xuất đó. Hàm băm của mỗi tệp nguồn dữ liệu sau đó được kết hợp và băm một cách xác định dẫn đến hàm băm SHA2-256 được ký cuối cùng biểu thị tổng số entropy đã thu thập dưới dạng giá trị ngẫu nhiên công khai mới có thể kiểm chứng.
Hệ thống hiện đang thu thập dữ liệu từ các nguồn công khai sau tại mỗi khoảng thời gian:
- Tiêu đề khối mới nhất của chuỗi khối bitcoin
- Tiêu đề khối mới nhất của Stellar Blockchain
- Tiêu đề khối mới nhất của chuỗi khối Ethereum
- Đèn hiệu ngẫu nhiên Drand
- Báo hiệu ngẫu nhiên của NIST
- Hacker News, top 10 câu chuyện và liên kết nội dung
- Dấu thời gian UTC
Mỗi trong số này, ngoại trừ dấu thời gian để thuận tiện, được coi là một nguồn ngẫu nhiên mạnh mẽ. Đối với người thực sự hoang tưởng, bạn có thể cung cấp entropy của riêng mình để thêm vào hỗn hợp ở dạng chuỗi hex 32 byte đại diện cho ví dụ: một hàm băm hoặc byte ngẫu nhiên. Bạn có thể đóng góp sự ngẫu nhiên của riêng mình nếu bạn không hoàn toàn tin tưởng vào bất kỳ nguồn nào khác.
Tất cả dữ liệu được thu thập ở mỗi khoảng thời gian, cũng như các giá trị băm kết quả, được chuyển giao cho kho lưu trữ Github công khai. Nếu bạn sao chép repo, các tập lệnh được cung cấp cho phép bạn tự tạo lại hàm băm entropy từ dữ liệu được lưu trữ. Bạn cũng có thể xác minh chữ ký khóa công khai trên entropy để đảm bảo rằng nó được ký bởi Truestamp. Các hướng dẫn cũng được cung cấp về cách tự xác minh từng nguồn entropy công khai hoặc chữ ký.
Hầu hết mọi người đều dễ dàng duy trì và đồng bộ hóa bản sao của repo này, đảm bảo rằng mọi người đều có cùng dữ liệu hoặc có thể tham chiếu entropy tại một thời điểm. Ví dụ: bạn và một nhóm người khác có thể đồng ý sử dụng một giá trị ngẫu nhiên là giá trị mới nhất tại một thời điểm cụ thể trong tương lai. Vào thời điểm đó, tất cả các bạn sẽ xem xét dữ liệu được lưu trữ trong cùng một cam kết Git, dữ liệu này thường không quá năm phút. Bằng cách lưu trữ nó trong Git, bạn cũng nhận được tất cả các thuộc tính toàn vẹn mà Git cung cấp, chẳng hạn như băm cam kết theo chuỗi và phá vỡ các bản sao nếu ai đó đẩy một tập dữ liệu hoàn toàn mới vào Github, đây sẽ là dấu hiệu rõ ràng của kẻ xấu.
Ngoài ra, các giá trị entropy lịch sử và mới nhất có sẵn thông qua API công khai (đơn giản là một proxy được thiết kế để đọc dữ liệu thô mới nhất từ Github Repo và không có bộ đệm hoặc kho lưu trữ dữ liệu của riêng nó). Đây là một mẫu đầu ra từ https://entropy.truestamp.com/latest.
Tôi tin rằng điều này đáp ứng từng yêu cầu ban đầu của bạn:
- không bên nào kiểm soát nó (hoặc có quyền truy cập vào nó)
- nó không thể được dự đoán một cách đáng tin cậy
- nó cũng phải giống nhau đối với mỗi người truy cập nó
Tại Dấu xác thực chúng tôi sẽ sử dụng nguồn ngẫu nhiên có thể kiểm chứng này để giúp chứng minh rằng dữ liệu cam kết với hệ thống của chúng tôi đã được tạo một cách độc lập và có thể kiểm chứng được sau một thời điểm cụ thể.
Chúng tôi rất muốn nhận được phản hồi của bạn vì đây là một dịch vụ mới và có phần thử nghiệm, hiện đã hoạt động đáng tin cậy được khoảng hai tháng.
CẬP NHẬT ngày 25/08/2021 để giải quyết nhận xét của @fgrieu:
Cảm ơn vì nhận xét @fgrieu. Tôi sẽ cố gắng giải quyết mối lo ngại của bạn hoặc yêu cầu làm rõ thêm về các vấn đề tiềm ẩn mà bạn cảm thấy có thể có.
(1) người trong cuộc có thể biết kết quả trước người khác
Trong quá trình triển khai này, không có người trong cuộcâ nào có quyền truy cập vào dữ liệu cuối cùng được băm để tạo thành entropy cuối cùng. Việc thu thập dữ liệu được thực hiện bằng tự động hóa do quy trình công việc Github Actions cung cấp. Dữ liệu được thu thập, chẳng hạn như đèn hiệu Drand đã ký, không được công khai cho bất kỳ ai cho đến khi dữ liệu được thu thập (mọi người đều nhận được đèn hiệu ngẫu nhiên có chữ ký mới). Trong trường hợp này, người trong cuộc duy nhất sẽ là người nào đó tại Github có quyền truy cập vào cơ sở hạ tầng của họ và có thể trích xuất nội dung bộ nhớ cho tập lệnh này sau thời điểm tập lệnh chạy 500.000 vòng SHA-256. Ngay cả trong trường hợp khó xảy ra này, họ sẽ có quyền truy cập vào giá trị entropy cuối cùng trong vòng vài mili giây kể từ khi giá trị đó được cam kết và được cung cấp công khai cho tất cả mọi người trong kho lưu trữ Github. Dự án này, thu thập entropy cứ năm phút một lần, có thể không nhạy cảm với mức độ chi tiết của thời gian này.Có thể có những tình huống trong đó bản xem trước sớm (~1 giây) của giá trị cuối cùng sẽ đủ hữu ích để kẻ tấn công buộc phải thỏa hiệp Github. Tuy nhiên, tôi không nghĩ rằng các trường hợp sử dụng mà dự án này hướng đến lại bị ảnh hưởng bởi điều này.
Trong thực tế, không ai có quyền truy cập vào đầu ra cuối cùng cho đến khi tất cả họ làm như vậy khi một cam kết công khai được thực hiện. Tại thời điểm này, sẽ là một cuộc đua xem ai có thể lấy cam kết trước cho những người tìm kiếm lợi thế này. Tôi sẽ đề xuất rằng nếu nhu cầu về entropy của bạn nhạy cảm đến từng mili giây khi nói đến thời điểm đầu ra được tiết lộ, thì đây không phải là dự án dành cho bạn.
(2) người trong cuộc có thể biết thông tin đầu vào trước những người khác và sử dụng thông tin đó để gửi
một đầu vào bổ sung cuối cùng thao túng kết quả; ví dụ. làm cái
16 bit bậc thấp bất kỳ giá trị mong muốn nào.
Tôi đã đề cập đến khái niệm người trong cuộcâ ở trên. Có những nguồn mà Entropy có thể quan sát thu thập có thể biết được đối với những người bên ngoài muốn cố gắng thao túng đầu ra cuối cùng bằng cách gửi dữ liệu tấn công của chính họ, tuy nhiên điều này sẽ thất bại vì kẻ tấn công không thể biết tập lệnh đã thu thập các giá trị của báo hiệu Drand hoặc dấu thời gian khi tập lệnh chạy, cả hai chỉ được biết bởi chính tập lệnh tại thời điểm thực thi.
Tôi không biết về bất kỳ cuộc tấn công nào vào nhiều vòng SHA2-256 cho phép kẻ tấn công dự đoán bit nào của đầu ra sẽ được sửa đổi để phù hợp với kết quả mong muốn của chúng.
Khả năng chấp nhận và xuất bản, entropy do người dùng cung cấp, thậm chí cho đến những khoảnh khắc cuối cùng trước khi tập lệnh thu thập bắt đầu, là một lợi ích. Điều này cho phép mọi người gửi entropy sẽ được đưa vào và không yêu cầu người tiêu dùng phải hoàn toàn tin tưởng vào bất kỳ nguồn entropy nào cung cấp đầu ra cuối cùng. Họ chỉ cần tin tưởng vào dữ liệu của chính họ. Họ có thể xác minh rằng dữ liệu của họ đã được đưa vào bằng cách chạy tập lệnh cục bộ để xác nhận cùng một đầu ra entropy.
Trang 31 của Bài trình bày này (và những thứ liên quan báo cáo khoa học) cung cấp thêm thông tin về các khái niệm và lợi ích của việc bao gồm đầu vào công khai.
(3) sự phổ biến của kết quả không phải là tức thời, do đó thậm chí
những người không phải là người trong cuộc có thể dẫn đầu; và thao tác mạng có thể
trồng nhân tạo mà
Nếu tôi hiểu những gì bạn đang cố gắng diễn đạt, thì sự lan tỏa của kết quả trên thực tế là tức thời. Kết quả chỉ có thể được biết đối với tập lệnh tạo tại thời điểm nó đã thu thập tất cả các nguồn dữ liệu, một số trong số đó là không công khai nhưng có thể kiểm chứng được sau khi thực tế. Nếu không có toàn bộ thông tin này thì không thể đạt được hàm băm đầu ra cuối cùng. Cửa sổ cơ hội nằm trong khoảng thời gian khi e.g. giá trị đèn hiệu Drand được thu thập và vòng băm kết hợp và vòng băm cuối cùng đã bắt đầu.
Nhu cầu của người đăng ban đầu có thể được đáp ứng bằng cách chỉ sử dụng Đèn hiệu ngẫu nhiên của NIST hoặc Báo hiệu Drand một mình. Nhưng điều này đòi hỏi phải đặt một mức độ tin cậy nhất định vào cơ sở hạ tầng và chủ sở hữu của nó đối với mỗi cơ sở hạ tầng. Giải pháp này khuếch tán niềm tin đó qua nhiều nguồn công khai và có thể kiểm chứng (bao gồm cả chính bạn) với tất cả các nguồn có thể kiểm chứng sau thực tế. Đây là điểm khác biệt chính so với các hệ thống, ví dụ, quan sát hiện tượng tự nhiên không cho phép người khác xác minh sau khi quan sát.
Tôi rất vui khi nhận được thêm phản hồi về bất kỳ điểm yếu nào còn tồn tại trong các lập luận hoặc hệ thống của tôi cũng như các đề xuất để cải thiện.