一种加密数据结构claimchain的实现

claimchain的Python项目详细描述


ClaimChain

索赔链核心

Build StatusDocumentation StatusZenodo Citation

安装

您可以通过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.pyHigh-level ClaimChain interface
claimchain/core.pyCore operations of encoding claims and capabilities
claimchain/cryptoCryptographic utilities, and algorithm implementations

模拟

密码数据claimchain的核心和实验实现 结构。查看web page了解 索赔链。

查看documentation

确认

这项工作由欧洲的NEXTLEAP project资助。 欧盟地平线2020研究与创新框架计划 (H2020-ICT-2015,ICT-10-2015)根据赠款协议688722。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java IllegalStateException:在onBackPressed()上的onSaveInstanceState之后无法执行此操作;   java处理巨大的JSON响应   指向易趣时出现java fileNotFoundException。来自手机的com   java从数组填充GridView   两个三维向量之间的角度   java无法运行程序“cf”:错误=2,没有这样的文件或目录,错误=2   java如何使用DOCX4J从<a href到MS word bookmark/hyperlink创建内部超链接。使用DOCX4J为word文档中的TOC创建超链接   设计模式java的目标是什么。尼奥。文件CopyOption接口?   java从SQLiteDB获取选择信息?   Java引用错误   使用函数作为参数的java   tic-tac-toe似乎无法正确编译我的方法(Java)   使用泛型作为方法参数的java   java类'OIDCtenatConfig'无法解析,为什么?   如果Java中有两个同名的方法,如何告诉编译器我将使用什么方法?   java hazelcast flake id返回不同的数据   java如何按值对树集排序?   java为什么泛型类型信息在类文件中可见?   JavaSpringDataJPA+SpringProjections使用@Query(native和JPQL)为相关实体返回null