# DKMS **Repository Path**: totora2019/DKMS ## Basic Information - **Project Name**: DKMS - **Description**: 分布式密钥管理系统,具有良好的密钥容错性和安全性,提供密钥管理,代理重加密等服务,为B端用户解决个人数据安全存储和共享问题 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 2 - **Created**: 2019-12-31 - **Last Updated**: 2022-03-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DKMS **项目背景** 由于密码学门槛高,客户端重,密钥管理复杂等原因,数据加解密和签名服务对C端用户不友好。 通常,与密码学相关的操作在B端进行,对普通用户透明。然而随着用户隐私的发声,现在的安全和加密做法受到质疑。 用户的痛点包括: 1.用户的所有数据由企业掌握(如视频,照片,业务数据等) 2.企业用唯一的对称密钥极爱数据,存储(此密钥丢失或泄露,影响所有的数据) 3.密钥不具有容错性(一把密钥决定所有) 4.用户分享数据时,必须基于企业提供的解密和共享服务 5.明文数据容易被篡改,不具备公信力 本项目提供一种分布式的密钥管理系统,为每个用户提供唯一的公司钥,使其能够以授权的方式指定可以访问的人,并具备时效特征。 基于非对称的加密方式,用户上传的密文绝对安全,不能被任何人静默访问,通过代理重加密,可以实现在不泄露用户私钥的情况下, 授权企业或三方进行解密。 **名词解释** DKMS(Distributed key manage system)分布式密钥管理系统 PRE(Proxy re-encryption)代理重加密,对密文的一种转化方式,用于特定授权访问 SS(Secret sharing)秘密共享,通常使用Shamir'SS,实现(t,n)门限共享 **架构图** ![输入图片说明](https://images.gitee.com/uploads/images/2019/1231/161317_732b438b_5584386.png "屏幕截图.png") # 预装说明 1. ipfs Ipfs is a distributed storage network. Setup a private network by configuration of swarm-keys (link: https://github.com/ipfs/go-ipfs) 2. pyUmbral lib Install pyUmbral lib by pip(pip3) is recommended. (link: https://github.com/nucypher/pyUmbral) # 执行DKMS 将restful.py作为后端服务运行,然后测试以下api。(事实上,这个repo提供了各种keygen算法,简单的enc/dec阶段可以忽略重新加密阶段。增强的密钥管理和更新是将在以后更新) 1. KeyGen POST /keygen { "type": "ECC", "account": "za", "role": "sender" or "receiver" } 2. Encrypt POST /encrypt { "account":"za", "plaintext": "Why do we have to work on Monday?", "public_key": "038651bf113e8c426867e08623aebd9d6c3e92d59ca7e6e84e04eff213e4e0fdc3" } 3. Kfrag_Gen POST /kfraggen { "account":"za", "delegatekey": "2c4327c627b261cb3732a496a852d9d53a9eececf5900e792501dbc44e43840f", "signersk": "2959b1718bd71bc36c2204def560b7a1708e74a6020410710ea191513928a291", "publickey": "028aaf62c8ae81054ebff5c70150a7a0cc0da43e1cec193f58da0929e62acfd584", "threshold": 3, "N": 5 } 4. Re-encrypt POST /reencrypt { "account":"za", "addresses": [ "QmdVj3LyMPyVHcJ3886HFs594kQsGbBcZG84qneNnhpuR7", "QmW5SLEA7Cj7mhhmgVSjpa5X1LFxjmhR3zMu3oBbpjWak4", "QmZcaBJhNALcxmDPcAozP24vg88iKEHXkBpmBV8tNK3fDd" ], "capsule": "QmYsX5L2xpPSpCm7uLtnmLsW8DonzPUPUq1RJQzeTrv214", "delegating":"038651bf113e8c426867e08623aebd9d6c3e92d59ca7e6e84e04eff213e4e0fdc3", "receiving":"028aaf62c8ae81054ebff5c70150a7a0cc0da43e1cec193f58da0929e62acfd584", "verifying":"03291282cfefb940505aa8edb17046c5accfb9f8ca480fec1467835287ddf3c152", "threshold": 3 } 5. Fetch POST /fetch { "account":"za", "capsule": "QmQgn1x3CQTBwzEXFYab6AYXH2XKKszmigt5CXgenPtZCg", "addresses": [ "QmTGF5YVxbSdmWhRxt8rDbKz3oX7DC7eQdGsaeF4g3BpoJ", "QmXuisb2meM4c2Ym3yAqSYFq9dMxS1szJoNk8SQPxRKizE", "QmdF7pvBMdHxJJmRgjiVm7gGg9cQtpDEwCVmD58Vhp3wVs" ] } 6. Decrypt POST /decrypt { "account":"za", "capsule": "QmVUJDyNpyG8CXGFzKq28D6sPPm9gRAnFtwTTFRmEX4xtj", "ciphertext":"3e2a157a015349b5c1986105e115f7b43d1b87a4427bb43d6a589c417959eafda678adb6dc6fe98d5fb67b3eef3861c5ec04cf8485da368c3f2c1ab02b", "decryptkey":"ac391782c1e4ead3d5646bb7c343b7a52fd7b486d6e578765da2f94a70f81774" } 基于这些服务,我们会随后提供将DKMS用于保护数据共享的应用。 有任何问题,欢迎微信添加小Ann ![输入图片说明](https://images.gitee.com/uploads/images/2019/1231/162028_e98b6d92_5584386.png "屏幕截图.png") QQ:785678579