English | 中文
安装需要 Python 3.5
或更高版本的环境。
pip install ontology-ddxf-crypto
本体身份数字身份标识(简称为 ONT ID)是一个建立在 W3C 数字身份标识规范基础之上的分布式身份标识协议。ONT ID 为每个实体建立了一个以密码学为基础的数字身份,实现了数据授权的自主性以及所有权的确认,这使得身份和数据成为了用户真正可以控制的资产。
如果你对 ONT ID 感兴趣,你可以在这里找到更多的信息。
数据的加密有三个主要步骤:
- 获取公钥:访问本体区块链中的智能合约,基于数据请求方的
ONT ID
获取相应的公钥pk
。 - 随机采样:随机采样256比特数据,得到高级加密标准(AES)密钥
key
。 - 加密:将 AES256 密钥使用公钥加密算法(PKE)进行加密得到
ekey
,明文数据m
使用 AES256-GCM 加密得到密文数据c
。
- 获取私钥:根据
ONT ID
和PKIndex
,从私钥管理模块中找出对应私钥sk
。 - 解密对称密钥:使用私钥
sk
解密出加密后的密钥ekey
得到 AES 对称密钥key
。 - 解密数据: 使用 AES 对称密钥
key
解密密文数据c
得到明文数据m
。
在密码学中,基于口令的密钥派生函数 (PBKDF) 是一类具有滑动计算成本的密钥派生函数,旨在减少加密密钥在面对暴力攻击时的脆弱性。
在去中心化数据交易框架中,密钥派生算法使用的哈希函数是 SHA256
,算法如下:
- 输入:
seed
、派生密钥长度dkLen
(以bit作为计量单位)。 - 输出:长度为
dklen
的派生密钥key
。
def pbkdf2(seed: str or bytes, dk_len: int) -> bytes:
key = b''
index = 1
bytes_seed = str_to_bytes(seed)
while len(key) < dk_len:
key += sha256(b''.join([bytes_seed, int_to_little_bytes(index)]))
index += 1
return key[:dk_len]
基于椭圆曲线的整合加密方案是一种由 Victor Shoup 在2001年提出的混合加密体系。Shoup 的提案可以在这里找到。