产业气象站|数字化契约如何守护?解析盲签名的妙用( 二 )


盲化数据:通过引入随机数作为盲化因子blinding_factor , 将原始待签名的数据进行盲化处理 。

签名数据:利用私钥将盲化的数据进行签名 。
解盲签名:利用盲化数据阶段的盲化因子将盲签名解盲 。
验证签名:利用公钥验证签名 。
现有的大多数经典数字签名算法 , 都可以较为方便地构造出对应的盲签名实现 , 比较典型的实现有RSA盲签名、Schnorr盲签名、DSA盲签名等 。
相比上一论中介绍的门限签名(参见第17论) , 盲签名没有复杂的密钥生成和协商问题 , 也不需要多方协同才能完成签名 , 其性能与经典数字签名相比并无太大区别 。
盲签名的扩展
盲签名的不可追踪性使得签名者很大程度上失去了对签名的控制权 , 如果出现用户滥用签名的情况 , 签名者很难追究维权 , 这在不少业务场景中是难以接受的 , 因此时常需要对基础的算法流程进行扩展 。
在诸多扩展中 , 最常见的扩展之一便是公平盲签名方案 , 其主要设计目标是允许签名者在出现纠纷时 , 能够通过以监管为代表的可信第三方还原出请求签名的用户身份和其他相关信息 。

具体实现方式是引入一个可信第三方 , 通过可信第三方建立一种对签名的追踪机制 。 用户将待签名的原始数据和盲化后的数据首先发给可信第三方进行认证和登记 , 然后将盲化的数据和认证的数据发送给签名者进行验证 , 验证通过后进行盲签名 , 并保存盲化的数据 。
后续如果需要进行签名追踪 , 签名者发送盲化的数据给可信第三方进行查询 , 获取用户的原始签名数据和身份 。
产业气象站|数字化契约如何守护?解析盲签名的妙用
本文插图

相比直接使用会暴露待签名原始数据的经典数字签名 , 公平盲签名实现了一定程度上的隐私数据访问权限隔离:
签名者只能看到用户身份 , 不能看到待签名的原始数据明文 。
只有当可信第三方和签名者联合之后 , 才可以将原始数据明文和用户身份关联起来 。
除了公平盲签名之外 , 另一类常见的扩展是部分盲签名 , 即分离认证数据和隐私数据 , 只盲化需要保护的隐私数据 , 其典型的应用是网络流量的欺诈检测 。
总体而言 , 盲签名的构造支持较为通用的扩展需求 。 在实际业务应用中 , 根据具体的隐私保护需求 , 一般都可以自由选择数据进行定向盲化 , 并在必要时引入监管所需的解盲机制 , 控制盲签名被滥用的风险 。
盲签名的应用赏析

在盲签名的诸多应用中 , 较为知名的莫过于电子现金 。 现实的电子现金业务会涉及复杂的流程设计 , 不便于体现盲签名的作用 。 所以 , 下面以一个经典的教科书示例 , 来展示基于盲签名的应用设计和使用注意事项 。
在本例中 , 目标是构建一个与传统纸币功能相当的电子现金系统E-Cash , 其核心需求如下:
货币价值性:电子现金是代表一定价值的数字符号 , 需要具备银行的授权信用 , 并提供相关实体现金支持 。
可交换性:电子现金相比实体现金 , 其优势在于更方便交换、流动 。 电子现金与电子现金之间可以流动 , 电子现金与实体现金之间可以兑换 。
防伪与不可复制性:每一张电子现金均需要经过银行认证 , 不能任意生成 , 而且要求不能将已有的电子现金复制出多个可用的电子现金 , 防止重复使用 。
匿名性:电子现金不能与用户的身份进行绑定 , 保护用户使用电子现金的隐私性 。
针对E-Cash电子现金系统的各项业务流程 , 可以基于盲签名技术 , 给出以下应用设计:
用户开户:在运行E-Cash电子现金系统的银行 , 用户注册一个传统的银行资金账户和一个电子现金账户 , 并在银行资金账户中存入一定量的资金 。

电子现金发行:用户在银行的钱包客户端生成一个随机序列号 , 并设置申请的电子现金面额 , 这里为了简化描述 , 假定所有任意序列号所代表的的面额相同 。 而后用户将随机序列号进行盲化 , 再将电子现金发送给银行进行盲签名 。


推荐阅读