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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 最近在研究区块链的时候关注了一下加密技术,小有心得,于是设计了一款数据加密共享与签名的方案,希望能够为做电子合同,数据存证,数据共享的朋友有所帮助吧。 业务场景 一、电子合同 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程序员,待遇丰厚,坐标北京酒仙桥,希望有识之士加入!
目录
相关文章
|
6月前
|
JSON 小程序 数据安全/隐私保护
小程序动态调试-解密加密数据与签名校验
本文主要讲解微信小程序加密、验签的情况下如何进行动态调试已获取签名以及加密信息
|
6月前
|
算法 安全 Java
Java 实现 RSA 非对称加密算法-加解密和签名验签
Java 实现 RSA 非对称加密算法-加解密和签名验签
272 0
|
算法 前端开发 安全
API 数据加密方案
API 数据加密方案
|
2月前
|
存储 安全 数据库
双重防护,无懈可击!Python AES+RSA加密方案,构建最强数据安全堡垒
【9月更文挑战第11天】在数字时代,数据安全至关重要。AES与RSA加密技术相结合,构成了一道坚固防线。AES以其高效性保障数据加密,而RSA则确保密钥安全传输,二者相辅相成,提供双重保护。本文通过Python代码示例展示了这一加密方案的魅力,强调了其在实际应用中的重要性和安全性。使用HTTPS等安全协议传输加密密钥和密文,确保数据在数字世界中自由流通而无忧。
69 1
|
2月前
|
算法 安全 网络安全
概念区分:对称加密、非对称加密、公钥、私钥、签名、证书
概念区分:对称加密、非对称加密、公钥、私钥、签名、证书
131 0
|
3月前
|
自然语言处理 Go 数据安全/隐私保护
对 int 类型的数据加密,有哪些好的方案?
对 int 类型的数据加密,有哪些好的方案?
102 13
|
3月前
|
存储 安全 数据库
双重防护,无懈可击!Python AES+RSA加密方案,构建最强数据安全堡垒
【8月更文挑战第3天】在数字时代,数据安全至关重要。Python AES+RSA加密方案提供了一种强大且可靠的数据保护方式。AES以高效安全著称,适用于大量数据的快速加密;RSA作为非对称加密技术,确保了密钥传输的安全性。二者结合形成“内外兼修”的加密策略:AES加密数据内容,RSA保护AES密钥,共同构建起数据安全的双重保险。通过示例代码展示了这一加密流程,强调了加密后密钥与密文的安全传输和存储的重要性。在实际应用中,应采用HTTPS等安全协议进行传输,并将数据安全存储于加密的数据库或文件系统中。
81 12
|
6月前
|
机器学习/深度学习 安全 搜索推荐
【现代密码学】笔记3.4-3.7--构造安全加密方案、CPA安全、CCA安全 《introduction to modern cryphtography》
【现代密码学】笔记3.4-3.7--构造安全加密方案、CPA安全、CCA安全 《introduction to modern cryphtography》
277 0
|
6月前
|
移动开发 Linux 数据安全/隐私保护
【教程】cocos2dx资源加密混淆方案详解
【教程】cocos2dx资源加密混淆方案详解
71 1
|
6月前
|
存储 Kubernetes 安全
加密 K8s Secrets 的几种方案
加密 K8s Secrets 的几种方案