ClaimChain密码数据结构的实现
项目描述
claimchain-core
安装
您可以通过pip安装claimchain
pip install claimchain
要运行测试,请检出git存储库并运行tox
git clone https://github.com/claimchain/claimchain-core cd claimchain-core tox
使用警告
此代码是用于研究目的的。它不应用于现实世界系统。并非所有安全功能都已实现,某些密码实例需要更换为更安全的替代方案。
使用方法
ClaimChain的高级接口由两个类组成,分别为用于构建claimchains的State和用于解析和解释claimchains的View。
构建链
ClaimChain用户的核心抽象是状态。该状态包含有关用户及其对其他用户或对象所做的声明的信息。目前,此包仅支持私有声明,这意味着链的所有者需要明确使每个声明可供预期读者阅读。一旦构建了状态,就可以将其提交到链中。
以下是如何用户 Alice 准备她的 状态
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'])
请注意,第二个参数必须是一个声明标签的可迭代对象,而不是单个标签。
要提交状态,首先需要构建一个链,其次需要生成加密密钥
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)
然后可以通过发布存储和通信链的头来发布或传输链到其他用户。其他用户将能够使用下面的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 |
高级声明链接口 |
claimchain/core.py |
声明和能力的核心操作编码 |
claimchain/crypto |
加密工具和算法实现 |
模拟
ClaimChain的核心和实验性实现,是一种加密数据结构。有关ClaimChain的更多信息,请访问网页。
查看文档。
致谢
本工作由欧洲联盟的Horizon 2020研究与创新框架计划(H2020-ICT-2015, ICT-10-2015)下的NEXTLEAP项目资助,资助协议号688722。NEXTLEAP项目。
项目详情
下载文件
下载适用于您平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。