一款数据加密共享与签名方案

简介: 最近在研究区块链的时候关注了一下加密技术,小有心得,于是设计了一款数据加密共享与签名的方案,希望能够为做电子合同,数据存证,数据共享的朋友有所帮助吧。 业务场景 一、电子合同 Alice和Bob需要签订一个合同,而Charlie是中介,也需要在看到该合同上并签字,而Dave是外人,不参与这个合同的签订,所以不允许看到合同的内容。

最近在研究区块链的时候关注了一下加密技术,小有心得,于是设计了一款数据加密共享与签名的方案,希望能够为做电子合同,数据存证,数据共享的朋友有所帮助吧。

业务场景

一、电子合同

Alice和Bob需要签订一个合同,而Charlie是中介,也需要在看到该合同上并签字,而Dave是外人,不参与这个合同的签订,所以不允许看到合同的内容。

二、数据存证

Alice和Bob在网上玩剪刀石头布的游戏,由于没有第三方的参与,所以Alice必须告诉Bob她已经做出了选择,但是同时又不能告诉Bob她具体出的是什么,Bob同样也是要告诉Alice他已经做出了选择,而又告诉她具体选择是什么。在双方都确认对方做出了选择后,然后各自公布自己的选择,并且可以验证对方公布的结果是不是跟之前告之的一致。

三、数据共享

Alice、Bob和Charlie是同事,他们在使用同一个公司网盘共享文件。现在有一个机密项目只有Alice和Bob在参与,他们希望继续通过公司网盘共享文件,但是同时也不希望Charlie能够看到他们共享的文件中的内容。后来新同事Dave加入到了该机密项目中,又希望Dave能够看到共享的文件内容。

涉及的密码学

1.对称加密

也就是说用明文通过密钥的加密后得到密文,使用同样的密钥就可以把密文解密为明文。常用的对称加密算法是3DES。

2.非对称加密

密钥是有一对(2个,1个叫公钥,1个叫私钥),使用公钥加密的信息,只有对应的私钥才能解密;使用私钥加密的信息,只有对应的公钥才能解密。公钥是可以公开出来的,私钥需要自己保存,不能让其他人知道。目前主要的非对称加密算法有RSA和椭圆曲线加密算法ECC。

3.哈希

哈希算法是一种摘要算法,对于任意长度的输入,都输出相同长度的结果,并且输出结果对输入具有敏感性,也就是说输入只是一个小小的变化,就会引起输出巨大的不同。另外哈希算法还需要扛对撞,也就是说我们不能轻易找到两个不同的输入,使得他们的哈希输出相同。常用的哈希算法有MD5, SHA256

4.数字签名

数字签名就是将哈希算法与非对称加密算法结合的一个最好应用。对于一条明文消息M,我们需要对其进行签名,那么首先就是计算该消息的摘要,也就是哈希值,得到H(M),然后再用我们的私钥对这个哈希值进行加密,结果就是数字签名。任何人拿到消息M和数字签名后,都可以用我们的公钥对数字签名进行解密,将解密结果与消息M的哈希值进行对比,如果相同,就说明M没有被更改,同时该签名也是我们签署的,而不可能是别人伪造的签名。

电子合同的签名方案

1.准备

每个用户都有自己的私钥和公钥,私钥由于私密性,所以需要加密保存,用户只有输入自己设置的口令后才能解密出自己的私钥。而用户的公钥则公开在系统上,所有用户都可访问。

2.加密合同

Alice现在准备好合同文件M,由于隐私的考虑,所以需要对合同文件加密,而这里加密采用的是对称加密算法,密钥是随机生成的,加密后的合同文件为密文M。Alice希望合同的乙方Bob还有就是中介Charlie能够看到这个合同(当然Alice本人也需要能看到合同),所以她将这个随机密钥用各自的公钥进行加密,加密后生成了3个密文:密文A、密文B、密文C。现在Alice就可以将加密后的合同密文M以及密文A、密文B、密文C放到网上。

3.签名合同

Alice不需要对明文的合同M进行签名,她需要的是在密文M上进行签名,也就是说先计算出密文M的哈希值“H(密文M)”,然后用自己的私钥A对该哈希值进行加密,这样就能得到签名A。现在Alice把签名A也放在网上,因为Alice的公钥是公开的,所以任何人都可以用公钥A来解密签名A,从而验证密文M的哈希值是否和解密相同。

image

4.解密合同

Bob作为合同的乙方,在收到Alice上传并签名的合同后,他首先需要验证合同的签名A是否正确,如果正确则说明该合同确实是Alice签名的,而且没有被篡改过。但是网上存在的合同是密文M,那么Bob该怎么查看合同内容呢?因为Bob有自己的私钥,他可以解锁出解密文件的随机密钥,用这个密钥再去解密加密文件,就能够看到原始文件了。

image

5.加签合同

接下来Bob需要加签合同,那么他的做法和步骤3签名合同是类似的,只需要用自己的私钥对密文进行签名,然后把签名放到网络上即可。

【上面的文章是我在整理电脑时发现当年写了,没有发布的,现在稍作修改发布出来,希望对大家有所帮助。】

【本文章出自 博客园深蓝居,转载请注明作者出处,如果您觉得博主的文章对您有很大帮助,欢迎点击右侧打赏按钮对博主进行打赏。】
打个招聘广告,博主正在主导开发一个跨链区块链项目:PalletOne,一直在招Go程序员,待遇丰厚,坐标北京酒仙桥,希望有识之士加入!
目录
相关文章
|
2月前
|
JSON 小程序 数据安全/隐私保护
小程序动态调试-解密加密数据与签名校验
本文主要讲解微信小程序加密、验签的情况下如何进行动态调试已获取签名以及加密信息
|
2月前
|
算法 安全 Java
Java 实现 RSA 非对称加密算法-加解密和签名验签
Java 实现 RSA 非对称加密算法-加解密和签名验签
|
算法 前端开发 安全
API 数据加密方案
API 数据加密方案
|
2月前
|
机器学习/深度学习 安全 搜索推荐
【现代密码学】笔记3.4-3.7--构造安全加密方案、CPA安全、CCA安全 《introduction to modern cryphtography》
【现代密码学】笔记3.4-3.7--构造安全加密方案、CPA安全、CCA安全 《introduction to modern cryphtography》
41 0
|
2月前
|
存储 Kubernetes 安全
加密 K8s Secrets 的几种方案
加密 K8s Secrets 的几种方案
|
3月前
|
移动开发 Linux 数据安全/隐私保护
【教程】cocos2dx资源加密混淆方案详解
【教程】cocos2dx资源加密混淆方案详解
31 1
|
3月前
|
移动开发 前端开发 数据安全/隐私保护
【教程】Ipa Guard为iOS应用提供免费加密混淆方案
【教程】Ipa Guard为iOS应用提供免费加密混淆方案
24 0
|
4月前
|
移动开发 安全 数据安全/隐私保护
【教程】Ipa Guard为iOS应用提供免费加密混淆方案
概述:使用ios加固工具对ios代码保护,保护ios项目中的核心代码,
|
7月前
|
安全 vr&ar 数据安全/隐私保护
分享VR眼镜加密播放器OEM方案
如果只是做了内容,而没有针对VR设备的播放器团队,使用成熟的已有的VR播放器方案比自己找团队重新开发效率会更高。VR播放器方案也可提供OEM定制,短时间即可拥有自主品牌Logo的成熟稳定播放器,尤其是在pico眼镜中。加密方案是,在初次使用VR眼镜中的专用加密播放器时,做加密激活验证,后续用户可直接观看无需再次验证。要考虑用户的便捷性。随着科技的发展,电子成品更新换代很快,用户的娱乐工具也更加多样化,从电脑、手机、平板在到现在使用越来越多的。3、找到需要播放的VR加密后视频,通过点盾云专用VR播放器打开。
79 0
|
8月前
|
算法 Java 数据安全/隐私保护
Crack App | yrx App 对抗赛第二、第三题加密签名对抗
Crack App | yrx App 对抗赛第二、第三题加密签名对抗