数字签名在数字契约中包含不便公开的敏感信息时,如何进行有效的签名?签名时看不到信息明文,日后出现纠纷该如何追究维权?连签名者都看不到数据信息,如何支持有效的监管介入?其背后的盲签名技术和其他签名技术相比,有何过人之处?
在越来越重视隐私保护的数字化经济大背景下,对用户数据的隐私保护要求也日益提高。甚至在一些涉及敏感数据的场景中,用户向认证者提供待认证的数据,认证者都不能观其明文。
例如,关键事务决议相关的电子投票系统可能要求投票认证者在不知道每张选票意向的条件下,对每张选票进行认证,排除未授权投票者的选票。这需要保护选票意向的隐私性,又要验证选票意向明文的有效性,看起来是一项不可能的任务。
经典数字签名技术,需要获得数据明文,才能进行签名和验证,所以无法直接应用。为解决上述问题,盲签名技术应运而生。盲签名究竟如何在盲化数据明文之后,依旧保持数字签名的可验证性?盲签名可以支持哪些典型的应用场景,且看本文一一解析。
1. 盲签名的盲化性
盲签名技术设计的核心在于盲化待签名的数据,对应的机制在传统纸质签名中也有类似的存在。
最典型的示例便是保密信封,其大致原理如下:
-
第一步:将保护敏感数据的文件放进信封,在待签名区域上方放入一张复写纸,而后密封信封。这样一来,任何人不能透过信封观察信封内文件的具体内容。
-
第二步:将密封的信封提交给签名者签名,签名过程中,信封上的签名可以透过复写纸签到文件上。
-
第三步:使用者打开信封,取出的已签名文件,任意第三方可以认证其签名的有效性。
类似地,在使用盲签名中,用户通过技术手段对原始数据进行盲化,然后将盲化后的数据交给签名者签名,获得盲签名后再解盲,便得到了关于原始数据的有效数字签名。
盲签名技术的核心机制是盲化和解盲。盲化是指对原始数据添加随机性数据,隐匿原始数据明文。解盲是指移除随机性数据,将盲签名恢复为可验证的签名。
由此,盲签名在经典数字签名的基础上,新增了以下重要特性:
-
盲化性:签名者难以通过盲化后的待签数据,反推出原始数据的明文。
-
不可追踪性:签名者之前是对盲化后的待签数据签名,但使用者获取该盲签名后,会进行解盲处理,得到对应原始数据的另一个不同的签名,因此签名者无法对这一对签名进行关联和追踪。
回到之前提到的电子投票系统,上述特性可以很好地满足对应的隐私需求。具体操作时,投票者先对选票进行盲化,投票认证者仅能对盲化后的选票进行签名认证,无法知晓投票者选票的具体内容;后续投票者将盲签名解盲,投票认证者也无法追踪投票者的投票签名。据此,保护选票意向隐私性和验证选票意向明文有效性的需求得以同时满足。
值得注意的是,签名者对盲化后待签数据进行签名获得盲签名的过程,与对空白支票先进行签名,然后允许使用者任意改写支票内容的过程大不同。一般情况下,盲签名一旦签发,其认证的原始数据是不能任意改变的,即解盲之后获得的签名,仅对盲化前的原始数据有效。
由此可见,盲化和解盲的构造是盲签名有效性的关键,具体如何设计这两个关键过程,常用的扩展有哪些,我们在下一节中继续展开。
2. 盲签名的构造和扩展
盲签名的构造
盲签名的构造过程可以看作是经典数字签名流程的一类通用扩展,通过引入盲化因子和盲化算法,额外实现了签名的盲化和解盲步骤,其核心流程如下:
-
盲化数据:通过引入随机数作为盲化因子blinding_factor,将原始待签名的数据进行盲化处理。