最近在学习密码学, 有一个师弟问了我一个问题,我觉得挺有趣,写一下自己的思考吧。
问题:
如何利用密码学原理设计一个在线斗地主游戏,保证尽可能地公平,安全?
公平保证:
- 可以使用固定密钥AES,保证了随机性,并且速度非常快。第一次,随机选择一个随机数,然后将密文对应于斗地主使用的扑克,然后将密文与开头的随机数作为明文进行异或,以生成密文。
因为分组密码AES可以在双方都有对称密钥的情况下,使用计算机快速高效计算出结果。效率很高。同时,我们根据ECB模式的启发,在后面加上一个异或操作,可以使得结果更具有随机性。保证了随机数生成过程中的公平性。
安全保证:
- 针对在线网络斗地主游戏这一场景,我们可以使用TLS网络协议,利用HTTPS协议加密传输,保证了网络信道中的信息的安全性。同时如果有更高的安全需要,还可以引入同态计算进行保证所有过程均在安全加密过程中进行。
因为在网络信道信息传输过程中,存在信息被监听到的风险,所以经常使用TLS协议进行加密传输,身份认证,这里的设计,我们同样采取此策略。
同时,受安全多方计算的启发,我们还可以引入同台计算等级技术,满足更复杂的安全场景需求。
但是,我们并没有进行身份认证,可能导致中间人攻击?
2022/07/01修改:
安全保证那一部分,我发现,并不会导致中间人攻击,因为TLS协议使用公钥进行证书的身份认证,因此会避免中间人攻击的出现。