• 电话抛硬币问题


    原始论文:https://www.cs.cmu.edu/~mblum/research/pdf/coin/

    知乎讨论:https://www.zhihu.com/question/30824110

    假设 Alice 抛,Bob 猜,只要 Alice 无法捏造,Bob 无法破解,那么应当认为是一个可以用来抛硬币的协议。

    重点在于 Alice 和 Bob 要对抛硬币结果达成一致,不然就是「你猜正面是吧,我扔……诶,你输了」。

    同时概率要确保是 50/50。

    因此像同时向对方喊话、担心某人反悔之类的问题都是不被考虑进来的。

    例如,根据知乎高赞思路,Alice 可以选择两个大质数/三个大质数相乘,然后得到一个长度固定的数字。

    那么 Bob 基本上就无法破解这个数字到底是两个质数相乘还是三个质数相乘,他只能猜测这是前者还是后者。

    而 Bob 做出猜测后,Alice 要给出相乘的几个数字。Bob 很快就能验证 Alice 的答案是否正确。

    注意,我们要求的是对结果达成一致,所以不存在 Alice 说「我数字忘了,再来一局吧」这种反悔情形。

    但是有人也提出这个是不是概率不是 50/50,毕竟这和剪刀石头布一样,如果对对方的取样习惯有研究,例如 Alice 习惯选俩质数,那么 Bob 还是有可能利用这一点。

    不考虑缺陷,上面的做法也有更快的方式,例如 Alice 拿一个大数字求 sha256,然后让 Bob 猜测这个大数字是奇数/偶数。

    显然,Alice 几乎不可能在有限时间内,在 Bob 猜对之后,拿另一个不符合 Bob 猜测的大数字去碰撞出同一个 sha256 值。

    当然,高赞底下的一个答案就比较合理,因为这是 Alice 挑大质数 p, q,做乘积 = N 后给 Bob。

    Bob 从 0 ~ N-1 挑一个数字 x ,计算之后给 Alice。

    Alice 根据 Bob 的数字能解出两个结果,其中一个是 Bob 挑的数字 x,其中一个不是,记为 y。Alice 必须选一个发给 Bob。

    若挑的是 y,那么 Bob 就能根据 x 和 y 解出 p, q。如果是,那么 Bob 就依然无法解出p, q。

    这就去除了「根据对方习惯预判对方选择」的问题,因为 Bob 的选择空间太大,这是很难猜测出来的。

  • 相关阅读:
    常用JS判断正则
    Java中final修饰参数的作用
    hibernate实现动态表名
    java urlrewrite
    tomcat下,超链接下载出现乱码页面
    Hibernate 在MyEclipse中配置
    javamail command not implemented
    The Missing Piece
    十六进制颜色码【转载】
    【转载】关于:读写xls文件,提供下载的一个小例子(jxl 的简单运用) 创建文件
  • 原文地址:https://www.cnblogs.com/KakagouLT/p/15388680.html
Copyright © 2020-2023  润新知