不可否认数字签名是不可否认技术中的一个非常有代表性的技术,它加强了签名后的不可否认性。介绍数字签名技术时曾经提到,由于只有私钥拥有者才能产生数字签名,因此具有不可否认性。但是实际上,私钥可能会由于管理不善等问题而泄露,因此一个签名者可以声称自己的私钥泄露而否认该签名,因此普通数字签名并不具有最强的不可否认性。在不可否认签名中,签名的验证需要与原签名者的交互,当交互消息发送给他时,他并不知道需要验证的签名到底是哪条消息的签名,因此他不敢随便否认,因为他不能确定正在验证签名的消息对他有利还是不利。不可否认签名包括以下几部分内容
(1)系统参数
p:系统选定的一个大素数
g:一个正整数(通常要求不存在x<p-1使得gxmod p=1)。
(2)密钥产生
私钥:在1-p-1之间随机选择一个正整数x为私钥。
公钥:由私钥x计算公钥y=gxmod p
(3)签名(签名消息为m)
对m的签名SIG=mxmod p
(4)签名验证
验证者随机选取两个1~p-1之间的正整数a和b,计算c=(SIG)a(gx)mod p,然后将c发送给签名方。
签名方接收到c后,由于a、b两个随机数的掩盖,他完全无法得知要验证的签名是哪条消息的签名,因此他只能够老老实实地执行以下操作(因为不能判断消息对他有利还是不利):计算d=C mod p并发送给验证者。
验证者检查=m2gmod p是否成立。若成立,则验证成功,否则失败。