零知识证明是指证明者能够在不向验证者提供信息本身内容的情况下,使验证者相信某个论断是真实可信的一种技术。也就是说,它既能充分证明自己是某种权益的合法拥有者,又不把有关的信息泄露出去,即给外界的“知识”为“零”。
在有必要证明一个命题是否正确,又不需要提示与这个命题相关的任何信息时,零知识证明系统是不可或缺的。所以零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。
大量事实证明,零知识证明在密码学中非常有用。如果能够将零知识证明用于验证,将可以有效解决许多问题。
举个例子:A要向B证明自己拥有某个房间的钥匙,假设该房间只能用钥匙打开锁,而其他任何方法都打不开。这时候,A可以选择把钥匙交给B,B用这把钥匙打开房间的锁,从而证明A拥有该房间的正确的钥匙或者A自己用钥匙打开房间。从房间里拿出一个物体出示给B,B知道这个物体确实只有房间有。方法二的原理就是零知识证明。
零知识证明的过程是这样的:
零知识证明过程中,有两个参与者,一个是证明者,一个是验证者。证明者拥有某个秘密,想让验证者相信他真的拥有着某个秘密,却不想让他知道这个秘密是什么。因此双方需要通过一个协议进行一系列的交互,最后验证者会获得一个结果,根据这个结果可以确定证明者是否拥有个秘密,而不需要确认秘密的内容是什么。
零知识证明图解
生活中,我们入住酒店都需要使用居民身份证进行登记,以方便酒店开展服务和管理。当有关部门人员对酒店进行安全检查时,他们只需验证身份证号码是否有效,就可以证明我们是不是合法公民,而对于职业、住址等涉及个人隐私的信息,他们并不会去查询。这也是一个典型的零知识证明案例。
零知识证明具有以下性质:
(1)完备性。如果证明方和验证方都是诚实的,并遵循证明过程的每一步,进行正确的计算,那么这个证明一定是成功的,验证方一定能够接受证明方。
(2)合理性。没有人能够假冒证明方,使这个证明成功。即打开房间的钥匙是唯一的。
(3)零知识性。证明过程执行完之后,验证方只获得了“证明方拥有这个知识”这条信息,而没有获得关于这个知识本身的任何一点信息。
零知识证明可以在不泄露信息本身内容的情况下,证明我知道这个秘密,可以有效解决许多验证问题。