fix directory and add en/cn readme
This commit is contained in:
61
cn/README.md
Normal file
61
cn/README.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# Sentinel Crypt Core
|
||||
|
||||
Sentinel 是一个用于数字资产继承(Digital Inheritance)的加密原型系统。它结合了 Shamir 秘密共享(SSS)、AES 对称加密和 RSA 非对称加密技术,旨在解决数字遗产的安全存储与条件触发传承问题。
|
||||
|
||||
## 核心功能
|
||||
|
||||
1. **密钥分片 (Trust Sharding)**:
|
||||
* 使用 Shamir's Secret Sharing (3-of-2) 算法将用户主密钥(BIP-39 助记词)拆分为三个分片:
|
||||
* **Device Share**: 存储于用户设备。
|
||||
* **Cloud Share**: 托管于 Sentinel 云端。
|
||||
* **Physical Share**: 物理传承卡,交由继承人保管。
|
||||
* 任意两个分片组合即可恢复原始密钥,单一分片无法获取任何信息。
|
||||
|
||||
2. **零知识金库 (Vault Layer)**:
|
||||
* 使用从助记词派生的 AES-256 密钥对用户隐私数据进行加密。
|
||||
* 采用 AES-GCM 模式,确保数据的机密性和完整性。
|
||||
* 系统在未获得足够分片前无法解密用户数据(零知识特性)。
|
||||
|
||||
3. **系统网关 (Gateway Layer)**:
|
||||
* 使用 RSA-4096 系统公钥对用户密文进行二次加密(加壳)。
|
||||
* 实现“被动验证”机制:只有在满足特定触发条件(如确认死亡或订阅失效)后,系统才使用私钥剥离外层加密,允许继承人尝试恢复。
|
||||
|
||||
## 环境依赖
|
||||
|
||||
本项目基于 Python 3 开发,依赖以下加密库:
|
||||
|
||||
* `pycryptodome`: 用于 AES 加密和 PBKDF2 密钥派生。
|
||||
* `cryptography`: 用于 RSA 加密和密钥序列化。
|
||||
* `mnemonic`: 用于 BIP-39 助记词生成与处理。
|
||||
|
||||
### 安装依赖
|
||||
|
||||
```bash
|
||||
pip install pycryptodome cryptography mnemonic
|
||||
```
|
||||
|
||||
## 快速开始
|
||||
|
||||
运行主演示脚本,查看完整的数字遗产传承流程模拟:
|
||||
|
||||
```bash
|
||||
python main_demo.py
|
||||
```
|
||||
|
||||
该脚本将演示以下全流程:
|
||||
1. **初始化**: 生成密钥并进行 SSS 分片。
|
||||
2. **加密**: 用户加密数据,系统进行二次加壳。
|
||||
3. **触发**: 模拟系统判定触发条件,剥离外层加密。
|
||||
4. **恢复**: 演示三种不同的分片组合(如“云端+传承卡”)恢复数据的场景。
|
||||
|
||||
## 项目结构
|
||||
|
||||
* `core/`: 核心加密模块
|
||||
* `sp_trust_sharding.py`: 密钥生成与 Shamir 分片算法实现(基于有限域 $GF(2^{521}-1)$)。
|
||||
* `sp_vault_aes.py`: 用户侧 AES-256-GCM 加密金库实现。
|
||||
* `sp_gateway_rsa.py`: 系统侧 RSA-4096 加密网关实现。
|
||||
* `main_demo.py`: 全流程演示脚本。
|
||||
* `data_flow.md`: 数据流与协议设计的详细文档。
|
||||
|
||||
---
|
||||
*注意:本项目为原型验证代码(PoC),生产环境使用需进一步进行安全审计和密钥管理强化。*
|
||||
49
cn/data_flow.md
Normal file
49
cn/data_flow.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# Sentinel 协议 Demo 数据流全景梳理
|
||||
## 1. 密钥拆解流:身份的碎裂化 (Initialization)
|
||||
这是系统的起点,通过 SSS (3,2) 门限算法,将用户的绝对控制权转化为分布式的信任。
|
||||
- 输入:系统随机生成 12 个 BIP-39 标准助记词。
|
||||
- 动作:将助记词对应的熵(Entropy)拆分为 3 个独立的数学分片:
|
||||
- 分片 A (Device):预设存放于用户手机安全芯片。
|
||||
- 分片 B (Cloud):预设存放于 Sentinel 服务器。
|
||||
- 分片 C (Physical):预设印制于物理传承卡,交给继承人。
|
||||
- 验证点:演示通过 (A+B)、(B+C)、(A+C) 三种组合均能重新拼凑出原始的 12 个助记词。
|
||||
|
||||
## 2. 用户内层加密流:建立私密金库 (Vault Layer)
|
||||
这是用户端的加密,确保“零知识”存储,即系统在没有分片的情况下无法感知数据内容。
|
||||
- 输入:用户隐私数据(明文)+ 步骤 1 恢复出的助记词。
|
||||
- 动作:
|
||||
- 通过助记词派生出对称加密密钥(AES-256-GCM)。
|
||||
- 使用该密钥对数据进行加密,生成 密文 1。
|
||||
- 特性:此步骤模拟在用户本地完成,密文 1 是用户资产的初级保护形态。
|
||||
|
||||
## 3. 系统外层加壳流:双重包封 (Gateway Layer)
|
||||
这是公司/平台层的加密,用于实现“被动验证”和“权限锁定”。
|
||||
- 输入:密文 1 + 公司生成的独立 RSA 公钥。
|
||||
- 动作:
|
||||
- 系统生成一套与用户无关的 RSA 公私钥对(公司钥匙)。
|
||||
- 使用 RSA 公钥对密文 1 进行二次加密,生成 密文 2。
|
||||
|
||||
- 逻辑价值:此时生成的 密文 2 具有双重安全性——即使助记词泄露,没有公司私钥也打不开;即使公司私钥泄露,没有助记词分片也打不开。
|
||||
|
||||
## 4. 判定触发流:剥离系统外壳 (Trigger/Unlock Layer)
|
||||
|
||||
这是 Demo 的转折点,模拟“订阅费失败”或“生前正常访问”时,系统解除第一层锁定。
|
||||
- 输入:密文 2 + 公司 RSA 私钥。
|
||||
- 动作:使用私钥解密密文 2,还原回 密文 1。
|
||||
- 业务映射:
|
||||
- 生前模式:用户活跃,系统私钥实时配合,允许数据流向用户。
|
||||
- 传承模式:判定死亡后,系统永久释放此私钥权限给该数据包。
|
||||
|
||||
## 5. 多场景还原流:最终提取 (Restoration Scenarios)
|
||||
这是 Demo 的结尾,展示在不同社会场景下,数据如何最终回到人手中。
|
||||
- 输入:步骤 4 还原出的密文 1 + 不同组合的分片。
|
||||
- 场景模拟:
|
||||
- 场景 1:生前正常访问
|
||||
- 组合:分片 A (手机) + 分片 B (云端) --> 恢复助记词 --> 解密密文 1。
|
||||
- 意义:证明用户在世时,无需传承卡即可查看数据。
|
||||
- 场景 2:死后标准传承
|
||||
- 组合:分片 B (云端) + 分片 C (物理卡) ---> 恢复助记词 ---> 解密密文 1。
|
||||
- 意义:模拟用户去世,继承人靠卡片和服务器释放的分片完成交接。
|
||||
- 场景 3:单纯测试验证,因为用户持有全部12个助记词
|
||||
- 组合:分片 A (手机) + 分片 C (物理卡) --> 恢复助记词 --> 解密密文 1。
|
||||
- 意义:测试目的
|
||||
Reference in New Issue
Block a user