(이것이 잘 알려진 경우 죄송합니다.) 에이전트 중 하나에 일부 항목을 제공하고 싶습니다. 그래서 에이전트 j 는 p i 확률로 항목을 가져옵니다 . 모든 요원 (및 모든 관찰자)이 무작위 추첨이 실제로 공정하다는 것을 확신 할 수 있도록 암호화 도구 (또는 다른 도구)가 있습니까?
(이것이 잘 알려진 경우 죄송합니다.) 에이전트 중 하나에 일부 항목을 제공하고 싶습니다. 그래서 에이전트 j 는 p i 확률로 항목을 가져옵니다 . 모든 요원 (및 모든 관찰자)이 무작위 추첨이 실제로 공정하다는 것을 확신 할 수 있도록 암호화 도구 (또는 다른 도구)가 있습니까?
답변:
내가 문제를 올바르게 이해하고 있다면 동전 을 공개적으로 뒤집는 것 같습니다 . 비트 커밋을 가정하면이 작업을 수행하는 방법이 많이있는 것 같습니다. 한 가지 예는 각 당사자 가 비트 커밋을 사용하여 해당 비트 문자열에 공개 커밋을 사용하여 0에서 k - 1 사이의 임의의 정수를 생성하게하는 것 입니다. 그런 다음 각 에이전트가 커밋 한 후 모두 공개적으로 자신의 비밀 정수를 공개합니다. 그 다음에이기는 에이전트는 정수 modulo k 의 합으로 인덱스 된 것 입니다. 한 명의 상담원이라도 정직하면 플립은 무작위 여야합니다.
물론 이것의 한 가지 문제는 약간의 노력이 필요하다는 것입니다. 비트 커밋에 대한 정보 이론 체계는 고전 및 양자 컴퓨팅 모두에서 불가능하다 (아드리안 켄트는 최근 상대성을 활용하는 체계를 제안했지만). 그러나 계산적 가정을 통해 안전한 비트 확약을 달성 할 수 있습니다.
다른 사용자가 암시했듯이 이것은 암호화에서 잘 연구 된 문제입니다. 이를 "코인-플 래핑 (coin-flipping)"이라고하며 다자간 계산의 특수한 경우입니다.
실제로 어떤 프로토콜이 작업을 수행하는지는 상황에 따라 크게 다릅니다.
그것이 얼마나 미묘한 지에 대한 아이디어를 제공하기 위해, 사용하는 확약 체계 가 가변적 이라면 다른 응답자가 제안한 "모두가 임의의 값에 확약"프로토콜이 안전하지 않습니다. 적용 할 수없는 확약 방식은 안전한 프로토콜을 제공하지만 설계하기에는 약간 복잡합니다.
참고 : 아래 의견을 읽으십시오. 이 프로토콜에는 문제가있는 것 같습니다.
임의의 에이전트는 자신의 벡터를 무작위로 균일하게 선택함으로써 선택된 임의의 숫자가 무작위로 균일하게 나왔음을 확신 할 수 있습니다. 모든 관찰자가 확신하기 위해서는 적어도 한 명의 요원이 그 프로토콜을 따랐다는 것을 믿어야하지만, 아무도 그렇게하지 않았다면 누구도 공정한 복권을 원치 않았다고 생각합니다.
수동 관찰자는 도면이 준비되지 않았 음을 확인할 수 없습니다. 의사 랜덤 프로세스로의 입력은 원하는 결과를 제공하도록 선택 될 수 있습니다.
그러나 관찰자가 임의의 숫자를 제공 할 수 있고 임의의 입력으로 효과를 보상 할 수 있기 때문에 다른 에이전트가 나중에 입력을 변경하지 않도록하려면 결과가 실제로 임의임을 확신 할 수 있습니다. .
이를 위해서는 수학적으로 안전한 것으로 입증 된 사실을 모르지만 실제로 SHA3와 같은 안전한 해시를 사용하여 실현할 수있는 확약 체계 가 필요합니다 .
이 예제를 고려하십시오.
구현 예제를 만들었습니다. : 당신은 여기 살고 볼 수 있습니다 https://mrogalski.eu/cl/ 또는 체크 소스에 GitHub의 .