盲签名
盲签名
随着互联网的普及,为在线支付营造了丰沃的土壤,支付宝、微信支付与各大银行App纷纷登上在线支付的头把交椅。有的人甚至说“只需要一部手机就可以走遍天下”。但是,在线支付虽然便捷且交易的是一串数字但并不是电子现金,在线支付并不具备匿名性,容易追踪到某笔交易金额的来源和购买的商品,而电子现金具备匿名性,无法追踪电子现金来源。其中技术用到了假名、零知识证明、环签名、盲签名等等。
电子现金
电子现金(Electronic Cash)其实是一种用电子形式模拟现金的技术。电子现金系统企图在多方面为在线交易复制现金的特性:方便、费用低(或者没有交易费用)。不记名以及其他性质。但不是所有的电子现金系统都满足这些特点,多数电子现金系统都能为小额在线交易提供快捷与方便。
电子现金优于真实现金之处在于它安全、超距、迅速、低成本、匿名性、精确性等,这大大强化了现金的可移动性。电子现金通过信息网络系统和公共信息平台实现流通、存取、支付。在电子现金的支付中有三方参与:银行、用户、商家。
电子现金在线交易一般需要以下三个基本阶段:
**取款阶段:**用户从自己的银行账户上提取数字现金
**支付阶段:**用户使用数字现金从商店中购买商品
**存款阶段:**用户及商家将数字现金存入到自己的银行账户上
在电子现金支付和使用的过程中,为了保护用户购买商品、服务时的隐私,接收方不应获得支付方的任何身份信息。
盲签名可以实现银行向合法用户发放有效的电子现金,使用户可以使用有效的电子现金进行交易,银行本身也无法通过电子现金追踪到该电子现金是属于哪个用户的。
盲签名的概念
盲签名的概念首先由 David Chaum 于1982年提出,盲签名实现了签名者对发送者的消息进行签名,却不能知道签名者消息的具体内容。
相当于将文件放入信封,签名者在信封上对文件进行签名,而不知道具体的文件内容。
性质
- 不可伪造性,除了签名者本人外,任何人不能以他的名义生成有效的盲签名
- 不可抵赖性,签名者一旦签署了某个消息,他无法否认自己对消息的签名
- 盲性,签名者虽然对某个消息进行了签名,但他不可能得到消息的具体内容。
- 不可跟踪性,一旦消息的签名公开后,签名者不能确定自己何时签署的这条消息。
模型
- 接收者首先将待签数据进行盲变换,把变换后的盲数据发给签名者。
- 经签名者签名后再发给接收者。
- 接收者对签名再作去盲变换,得出的便是签名者对原数据的盲签名。
基于RSA的盲签名
假设A是接收者,B是签名者,私钥,公开RSA公钥,A让B盲签名消息
-
选取盲引子,计算
-
B对进行签名
-
A去盲得到原始签名
正确性容易证明
java测试代码如下:
1 | import java.math.BigInteger; |
盲签名在区块链中的应用
区块链系统中地址是由用户自行生成,与用户的身份信息无关,用户创建和使用地址不需要第三方参与。因此,区块链地址具有较好的匿名性。
但是区块链交易之间的关联性可以被用于推测敏感信息。区块链所有数据都存储在公开的全局账本中,通过分析这些交易之间的关联关系(比如:同一交易的所有输入地址属于同一用户集合、找零地址和输入地址属于同一用户等等),再结合一些背景知识,能够逐步降低区块链地址的匿名性,甚至发现匿名地址对应用户的真实身份。
因此,在区块链网络中,为了保护隐私信息,出现了一些隐私保护机制,其中Blindcoin协议是其中一种中心化混币技术,是一个基于盲签名技术的隐藏机制。
如上图所示,Blindcoin协议是在Mixcoin 协议基础上,通过盲签名技术,使得混币用户的输入输出地址映射关系对混币服务商M不可见。