分布式密钥管理Nucypher

分布式密钥管理服务:nucypher演示

1.工作流程

在这里插入图片描述

  1. Alice: Alice有些想要共享的数据,通过为数据分类(label)生成非对称密钥(公钥发送给Enrico用于数据加密,私钥+bob的公钥配合用于生成重加密密钥),将重加密密钥切分成n个片段,放于Nucypher网络节点。
  2. Enrico:数据产生并且加密,Enrico产生一个随机的对称密钥,用对称密钥对数据进行加密,然后使用Alice提供的公钥对对称密钥进行加密,将加密的数据和加密的对称密钥,存放于分布式存储中。
  3. Bob:从分布式存储中拿到Alice存储的数据(加密的数据和加密的密钥);从n个Nucypher网络节点中取得m个代理重加密密钥片段,组合生成代理重加密密钥(阈值门限加密算法);Bob就可以用自己的私钥对加密的密钥进行解密,解密后拿到数据加密用的对称密钥,即可解密得到数据。
  4. Ursula: ursula节点是nucypher网络中的节点,通过多个ursula节点完成阈值代理重新加密操作。

本例使用四个节点分别模仿alice,bob,enrico和ursula。

2.本例目的

alice有一些数据,想要发送给一个或一些bob,这些数据可以假设是由enrico产生的。但是alice并不想直接使用bob的公钥对数据进行加密,因为下次alice想要把数据发送给另一个bob时,alice需要用另一个bob的公钥对数据再次进行加密,不仅浪费存储资源还浪费计算资源。所有引入了一个第三方代理重加密节点,即ursula。alice通过对bob进行授权,设置策略公钥(基于过期时间、标签分类等策略)。alice不用每次都用bob的公钥加密,但是bob可以通过自己私钥对数据进行解密。
本例中通过简单的一个ursula节点,对数据进行重加密,bob可以拿到alice的数据。

3.操作流程

3.1系统环境

ubuntu20.04
python3.8.2
nucypher 3.0.0-beta.0

3.2节点运行

分别打开四个终端,进入nucypher工作的虚拟环境。

3.2.1 运行ursula节点
(my_nucy_env) aha@aha:~/Desktop/nucypher$ nucypher ursula run --dev --federated-only --console-logs

这一步至关重要,因为后续的alice,bob,enrico的运行都要使用ursula提供的服务。
运行后可以看到如下界面

在这里插入图片描述
在这里插入图片描述

3.3.2 运行alice节点
(my_nucy_env) aha@aha:~/Desktop/nucypher$ nucypher alice run --dev --federated-only --teacher localhost:10151 --console-logs

运行后显示如下。在这里可以看到Alice_Verifying_Key。

在这里插入图片描述

3.3.3 运行enrico节点

在运行enrico之前,我们需要拿到alice给enrico分配的策略密钥。
在这里我们使用python+jupyter进行演示如何拿到策略加密密钥。

alice = "http://localhost:8151"
Alice_Verifying_Key = "03bebf3d9631d53c4797be3246c49dcc213b2cb3843abf35449430030e7c7339b6"
derivation_response =
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值