5.2 身份的零知识证明
在现实世界中,我们用物理信物作为身份证明:护照、驾驶执照、信用卡等等。这些信物包含了把它与一个人连系起来的东西:通常是照片或签名,但可能最方便的是一个指纹,一个视网膜扫描图或牙齿的X光片。用数字方式来做这件事难道不好吗?
使用零知识证明来作身份证明最先是由Uriel Feige, Amos Fiat 和 Adi Shamir提出的[566,567]。Alice的私钥成为她(的)“身份”的函数。通过使用零知识证明,她能够证明她知道她的私钥,并由此证明她的身份。这类算法在23.11节介绍。
这个想法是相当有用的,它使一个人不用任何实际信物便能证明他的身份。但是,它不是完美无缺的。它存在一些弊端。
国际象棋特级大师问题
Alice是一个甚至连国际象棋的规则也不知道的人,这里要介绍她怎样击败一个特级大师(有时叫做“国际象棋特级大师”问题。)。她在一场比赛中挑战加里·卡斯帕罗夫(Gary Kasparov)和安纳托利·卡尔波夫(Anatoly Karpov),选择同一时间和地点,但在不同的房间。她执白棋对卡斯帕罗夫而执黑棋对卡尔波夫,两个特级大师都不知道对方。
卡尔波夫执白先行,走了第一步,Alice记住这一步,并走进卡斯帕罗夫的房间。她执白对卡尔波夫走了同样一步。卡斯帕罗夫走了一步黑棋。Alice记下这一步,走进卡尔波夫的房间,走了同样一步。这样持续下去直到她赢了一盘比赛并输掉了另一盘,或两盘比赛都以平局告终。
实际上,卡斯帕罗夫是在同卡尔波夫对局,而Alice只是简单地扮作了中间人,模仿每一个特级大师在另一个的棋盘上行棋。然而,如果卡尔波夫和卡斯帕罗夫都不知道对方在场,他们都会对Alice的棋艺留下相当深刻的印象。
这种欺骗可以用于攻击身份的零知识证明[485,120]。在Alice向Mallory证明她的身份时,Mallory同时能向Bob证明他是Alice。
黑手党骗局
当讨论Adi Shamir的零知识识别协议时,他说[79]:“我可以去一个黑手党拥有的商店连续一百万次,而他们仍然不能冒充我。”
下面是黑手党如何能够做到的过程。Alice正在Bob的餐馆——一家黑手党拥有的餐馆吃饭,Carol正在一家高档珠宝店Dave商场买东西,Bob和Carol都是黑手党成员,并且他们正通过一条秘密的无线电线路通信。Alice和Dave都不知道这个骗局。
当Alice吃完饭,她准备付帐并对Bob证明她的身份时,Bob给Carol发信号通知她准备开始这场骗局。Carol买了一些贵重的钻石,并准备对Dave证明她的身份。现在,当Alice对Bob证明她的身份时,Bob用无线电告知Carol,Carol则同Dave执行相同协议。当Dave问协议中的一个问题时,Carol用无线电把问题回告Bob,然后Bob再问Alice这个问题。当Alice回答后,Bob又用无线电将正确答案告诉Carol。实际上,Alice只是在对Dave证明她的身份,而Bob和Carol只是简单地在协议中间来回传递消息。当协议完成时,Alice已对Dave证明了她的身份,并买了一些贵重的钻石(Carol随之消失)。
恐怖分子骗局
如果Alice愿意与Carol合作,她们也能欺骗Dave。在这个协议中,Carol是一个臭名昭著的恐怖分子。Alice帮助Carol进入这个国家。Dave是移民局的官员。Alice和Carol通过一条秘密的无线电路联系。
当Dave询问Carol零知识协议中的一部分问题时,Carol用无线电将它们发给Alice,Alice自己回答这些问题。Carol向Dave复述答案。实际上,是Alice在向Dave证明她的身份,Carol只是作为一条通信路径。当协议完成时,Dave认为Carol是Alice并让她进入这个国家。三天后,Carol同一辆装满炸药的微型车在某政府大楼出现。
建议的解决方法
黑手党和恐怖分子的骗局有可能成功,因为同谋者可以通过一条秘密的无线电线路通信。阻止这一切发生的一个办法是要求所有的识别在法拉第罩内发生,这样可以防止所有的电磁辐射。在恐怖分子的例子中,这将使移民局官员Dave确信Carol没有从Alice那里收到她的答案。在黑手党的例子中,Bob可以简单地在他的餐馆内建一个有缺陷的法拉第罩,但珠宝商Dave得有一个正常工作的法拉第罩,Bob和Carol仍不能通信。为了解决国际象棋特级大师问题,应强迫Alice坐在她的位置上,直到对弈结束。
Thomas Beth和Yvo Desmedt提出了另一种解决办法,这种办法使用了很精确的时钟[92]。如果协议中每一步都必须在一个给定的时间发生,同谋者就没有时间通信。在国际象棋特级大师问题中,如果每一局的每步棋都必须在时钟敲响一分钟时走,那么Alice就没时间从一个房间跑到另一个房间。在黑手党故事中Bob和Carol也没时间互相间传递问题和答案。
多重身份骗局
在[485,120]中还讨论了其他一些零知识身份证明的滥用问题。在一些实现中,当个人注册一个公开密钥时不作检验。因此,Alice可有几个私钥,因而有几个身份。如果她想搞税款骗局,这可能大有帮助。Alice也可以犯了罪然后消失。首先,她创造并公布几个身份,其中一个她没有使用,接着,她使用那个身份一次并进行犯罪,故对她进行身份验证的人就是证人。然后,她立即停止使用那个身份,证人知道犯罪人的身份,但如果Alice不再使用那个身份——她也就难以被发现。
为了防止这种欺骗,必须有某种机制来保证每个人只有一个身份。在[120]中,作者提出了防止掉包婴儿的“古怪”想法,这些婴儿都不能克隆,并都包含一个独一无二的编号作为他们遗传密码的一部分。他们还建议让每个婴儿在出生时都得到一个身份。(实际上,由于婴儿会被别人占有,所以父母须在孩子出生时就做这项工作,这可能很容易被滥用;父母可能在孩子出生时为他提供多重身份。归根结底,个体的唯一性仍基于信任。
出租护照
Alice想到扎伊尔去旅游,但该政府不给她签证。Carol提出把她的身份租给Alice。(Bob首先提议,但有一些明显的问题。)Carol把她的私钥卖给Alice,Alice伪装成Carol去扎伊尔。
Carol不但因为她的身份得到报酬,而且她还有一个完美的辩解。当Alice在扎伊尔期间Carol犯了罪。“Carol”已经在扎伊尔证明了她的身份;她怎么能回家作案呢?
当然,Alice也可以随意作案。她或者在离开前或者返回后在Carol家附近作案。首先,她证明自己是Carol(她有Carol的私钥,故她能轻易做到),然后作案潜逃,警察将会来找Carol,Carol宣称她把身份租给了Alice,但谁会相信这个荒谬的故事呢?
问题在于Alice并没有在真正地证明她的身份,她只是在证明她知道一部分秘密信息。正是那个属于信息和人之间的联系被滥用了。防止掉包婴儿的解决办法可防止这类骗局,如同在一个警察国家,那里所有的市民必须经常证明他们的身份(每天晚上,每个街道拐角处,等等)。
成员资格证明问题
Alice想向Bob证明她是某超级秘密组织的成员,但她不想暴露她的身份。这个问题类似于但又不同于身份证明问题,在[887,906,907,1201,1445]中也有研究。有些解决方法和分组签名问题有联系。