现代密码学之电子货币的加密

本文探讨了旧式电子现金系统的双重消费问题和用户隐私问题,并介绍了RSA盲签名技术来解决这些问题。通过盲签名,银行可以在不知道具体交易信息的情况下进行签名,确保支付者的匿名性。同时,通过特定的验证机制,防止用户在盲签名上作弊,从而保障电子货币的安全使用。

旧式的电子现金系统

在这里插入图片描述

电子货币是如何产生的呢?

应该由受信任的当局(即银行)生成。
银行可以为现金签署数字字符串,使其成为电子货币,数字字符串包含:
钱的值,序列号,银行ID
每个电子货币对应着唯一的序列号和银行ID,这样可以有效的防止伪造。
每一个 e-coin 都必须是银行认证过的。

然而这个系统有两个个致命的问题:
1。 用户可以复制数字字符串(带有银行签名)使一个电子货币多次重复使用。
2。 无法保证用户隐私。
因为每个数字货币银行都可以通过序列号查到签署时的拥有者,这意味着无论用户在哪里消费,只要商家收到电子货币,向银行求证其真实有效的时候,银行就可以知道这个用户在什么时间什么地方使用了这个电子货币。

因此引出了这两个问题的解决办法。

如何防止双重消费?

如果银行保持24小时在线

收款人收到电子硬币时与银行核对。
如果之前没有消费,受款人接受电子硬币和并将电子货币存到银行。
如果电子货币已经被使用过,则拒绝付款

如果银行离线
需要借助其他相应的算法和技术,这里不做介绍。

如何实现支付者匿名?

可以使用盲签名。
在这里插入图片描述
盲签名的基本思想是:
Alice想要Bob在他的m上签名,同时又不想让Bob知道m的相关内容信息。
所以Alice把m放在信封里加密,将加密后的信封给Bob。
Bob收到信封后不用打开信封。他在信封上用一个颜色特别深的笔签名,笔水不只签到了信封上,还透过了信封签到了m上。
最后Bob把签过名的信封还给Alice,这样Alice就获得了Bob在m上的签名。

盲签名的算法实现:

RSA盲签名

如果不清楚RSA算法的可以回顾下我这篇文章:
https://blog.csdn.net/Jifu_M/article/details/112237697.

Sign:
• Input a message M, compute m = H(M)
• Compute S = m^d mod N

• Verify:
• Input a message M and a signature S
• Check S^e = H(M) mod N

盲签:
选择一个随机值r
计算m = H(m)
计算B = (r^e m) mod N
将B发送给签名者

签名者计算C = B^d mod N.
签名者将C返回给用户.
用户计算S = C/r mod N.

//为什么S = C/r mod N?
该公式由数学公式换算得到。
在这里插入图片描述

盲签名的使用

付款人生成电子货币M =(价值,序列号,银行ID)
付款方将货币价值和隐藏后的M发送给银行。
银行从付款人的帐户中扣除价值,并在隐藏后的M上盲签。
付款人解除隐藏以获得银行在M上的正常签名。

这存在一个问题就是,银行如何确保用户给出的值与M中的值相同?
如果付款人说签一个10块钱的电子货币,结果里面隐藏的M是100块怎么办?

如何防止用户在盲签名上作弊?

通常使用的方法是让用户准备 N 个诶同样价值的盲币,之后银行让用户去打开其中 N-1 个,如果那 N-1 都没问题,那么就给剩下的一个签字。

举个例子:准备 100 个加密后的盲币,银行准备签名第 83 个,所以银行让用户用 r 解
开其他 99 个,如果这 99 个都没问题,那就签第 83个。

这算是一种概率论的方法,这样用户在盲签名上作弊的概率只有百分之一。

Reference

  1. Wenbo Mao, Modern Cryptography, Prentice-Hall, 2003.
  2. Jonathan Katz and Yehuda Lindell, Introduction to Modern Cryptography, 2nd Edition, CRC Press, 2015.
  3. W Stallings, Cryptography and Network Security, Fourth (or later) Edition, Prentice Hall, 2006.
  4. J. Pieprzyk, T, Hardjono and J. Seberry, Cryptography: an introduction to computer security,
    Springer Verlag, 2003.
  5. Guo, F., Susilo, W., Mu, Y. Introduction to Security Reduction, Springer, 2018.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值