Hash
魔盒之謎:如何實現可驗證的自包含秘密系統?
想像一下,我們有一個魔法盒,只有當我們說出密語時才會打開。每個人在遊戲開始時都有一些可驗證的正確密語的證明。
在第一階段,所有參賽者都會說出他們對秘密單詞的猜測。
在第二階段,如果任何參賽者說出密語,魔法盒就會打開。並且使用提供的證明和遊戲開始時,您將能夠驗證密語是否相同,並且盒子並沒有試圖欺騙您。如果沒有參賽者猜出密語,盒子會告訴密語,遊戲將重新開始,重置密語並提供新的證明。
我自己的猜測
基於我有限的密碼學知識,我的實現將如下:遊戲開始時提供的證明將是加密秘密的雜湊。當秘密在第二階段被揭露時,還提供了一個密鑰和加密秘密的方法,因此參賽者將能夠自己加密秘密並將雜湊值與一開始提供的證明進行比較。我會使用簡單的對稱加密方法和 md5 雜湊作為證明。
請讓我知道您的想法以及您是否對問題有更好的方法。
HMAC 是您所需要的:
- 秘密的 HMAC 在回合開始時提供
- 盒子在回合結束時給出 HMAC 密鑰
- 如果有人在這一輪中猜對了這個詞,那麼盒子就會將 HMAC 密鑰發給所有參賽者,這樣每個人都可以驗證盒子說的是真話,即參賽者是正確的
- 如果在回合結束時沒有人得到答案,那麼盒子可以共享密鑰,然後參賽者可以驗證這個秘密確實是盒子聲稱的那樣,並且盒子沒有撒謊.
HMAC 是基於散列的,並且依賴於滿足您要求的對稱密鑰