一种加密数据结构claimchain的实现
claimchain的Python项目详细描述
索赔链核心
安装
您可以通过pip:
安装claimchain。pip install claimchain
要运行测试,请签出git存储库并运行tox:
git clone https://github.com/claimchain/claimchain-core cd claimchain-core tox
使用警告
本规范仅供研究之用。它不能用在现实系统中。 并不是所有的安全特性都实现了,而且一些加密实例 需要换成更安全的替代品。
使用量
claimchain的高级接口包含两个类,State用于构建claimchain,以及View用于分析和解释claimchain。
建筑链
索赔链用户的核心抽象是一个状态。状态包含有关该用户的信息,以及它们对其他用户或对象的声明。目前,这个包只支持私有声明,这意味着链的所有者需要显式地使每个声明都能被预期的读者阅读。一旦构造了状态,它就可以提交到链。
下面是用户如何准备状态:
from claimchain import State state = State() # Alice adds information about herself state.identity_info = "Hi, I'm Alice" # Alice adds private claims state['bob'] = 'Bob is a good lad'
使声明可访问需要知道每个授权读卡器的dh公钥。后面将描述获取其他用户的dh密钥的方法。假设alice拥有carol的dh公钥carol_dh_pk,她可以允许carol访问她关于bob的声明:
state.grant_access(carol_dh_pk, ['bob'])
注意,第二个参数必须是声明标签的iterable,而不是单个标签。
要提交状态,首先需要构建一个链,然后必须生成加密密钥:
from hippiehug import Chain from claimchain import LocalParams, State state = State() # Generate cryptographic keys params = LocalParams.generate() store = {} chain = Chain(store) with params.as_default(): head = state.commit(chain)
然后,通过发布store并传递链的head,可以将链发布或传输给其他用户。其他用户可以使用View接口解释链,如下所述。
解释链
有权访问包含其他用户链的存储(字典)和此用户链的头,就可以使用View接口。
下面是carol如何解释alice的索赔链,假设alice的商店是alice_store,她的链的头是alice_head,而params是carol的LocalParams对象:
from hippiehug import Chain from claimchain import View alice_chain = Chain(alice_store, root_hash=alice_head) with params.as_default(): alice_view = View(alice_chain) # Try to get claim with label 'bob' claim = alice_view['bob'] assert claim == b'Bob is a good lad'
最后,这是carol如何检索alice的dh公钥:
alice_dh_pk = alice_view.params.dh.pk
这个dh公钥可以稍后用于授予alice读取carol链上声明的权限。
此套餐
claimchain/state.py | High-level ClaimChain interface |
claimchain/core.py | Core operations of encoding claims and capabilities |
claimchain/crypto | Cryptographic utilities, and algorithm implementations |
确认
这项工作由欧洲的NEXTLEAP project资助。 欧盟地平线2020研究与创新框架计划 (H2020-ICT-2015,ICT-10-2015)根据赠款协议688722。