% SCP Secure Indexing Specification % Version 1.0 (Comprehensive Edition) % 2026-02-27
SCP 安全索引规范 v1.0
状态:Standards Track
类别:执行层 × 隐私层 × 可扩展查询规范
本规范整合:
- 索引总体架构
- Epoch 分区模型
- Salt 派生机制
- classification_status 兼容规则
- 批量提交与 Root 绑定
- 隐私保护机制
- 访问模式泄露分析
- 分片与扩展模型
- 形式化不变量
- Domain 爆炸与索引增长上界
- 查询执行完整流程
- 安全等级分层模型
============================================================
第一部分:设计目标
索引必须满足:
- 支持 1 亿级 Vault
- O(log N) 查询复杂度
- 不暴露 attribute_id 明文
- 不暴露 vault_id 明文
- 不泄露跨 epoch 关联
- 支持历史查询
- 与 Commitment 绑定
- 不影响 Registry 共识层
============================================================
第二部分:索引分层架构
索引属于执行加速层,不属于 Registry 共识层。
结构:
Client Query ↓ TEE Query Router ↓ TEE Index Service ↓ Sharded Epoch Index Storage ↓ TEE Compute ↓ OEV 验证层
============================================================
第三部分:Epoch 分区模型
索引必须按 epoch 分区:
/index/ /epoch_e1/ /epoch_e2/ ...
每个 epoch 分区独立存储。
============================================================
第四部分:Salt 派生机制
定义:
master_secret 存于 TEE 内部。
data_salt_e = PRF(master_secret, epoch_e)
index_key(a,e) = H(attribute_id(a) || data_salt_e) vault_token(v,e) = H(vault_id(v) || data_salt_e)
性质:
- 外部无法推导 attribute_id
- 外部无法关联跨 epoch
- TEE 可重建历史 salt
============================================================
第五部分:索引条目结构
struct IndexEntry {
index_key
vault_token
time_bucket
commitment_pointer
}
不存:
- attribute_id 明文
- vault_id 明文
- value
- 精确 timestamp
============================================================
第六部分:时间分桶
timestamp_bucket = floor(timestamp / bucket_size)
建议 bucket_size ≥ 6 小时。
防止精确时间推断攻击。
============================================================
第七部分:Root 绑定
Batch_B = [C1, C2, ..., Cn]
MerkleRoot_B = MerkleTree(sorted(C_i))
SettlementRoot = H(RegistryRoot || MerkleRoot_B)
============================================================
第八部分:查询执行流程
查询:最近30天购买过咖啡的1000人
步骤:
- 解析 attribute_id
- 对最近30个 epoch: data_salt_e = PRF(master_secret, epoch_e) index_key = H(attribute_id || data_salt_e) 查询 epoch 分区
- 聚合 vault_token 列表
- 随机抽样1000
- 映射回 vault_id(TEE 内)
- 解密 CR 验证 Commitment
- 生成 Proof
- OEV 验证
复杂度:
O(D log N_epoch + K)
其中 D 为时间跨度天数,K 为 limit。
============================================================
第九部分:分片模型
shard_id = H(index_key) % shard_count
支持水平扩展。
============================================================
第十部分:形式化不变量
Invariant 1:Salt 可重建性
data_salt_e = PRF(master_secret, epoch_e)
Invariant 2:不可跨 epoch 关联
index_key(a,e1) ≠ index_key(a,e2) if e1 ≠ e2
Invariant 3:Root 不包含 UNRESOLVED Attribute
classification_status(a) = UNRESOLVED
⇒ 不生成索引条目
Invariant 4:Domain 数量上界
Domain_max ≤ min(N / K, |V| / V_threshold)
Invariant 5:索引增长上界
Index_size_epoch ≤ |CR_epoch|
============================================================
第十一部分:隐私等级模型
Level 1:外部 DB + 明文访问模式可见
Level 2:外部 DB + 加盐索引 + TEE 查询逻辑
Level 3:TEE 存储 + 访问模式隐藏
Level 4:ORAM / PIR 强隐私
推荐 Level 2 或 Level 3。
============================================================
第十二部分:攻击模型
防止:
- 行为统计攻击
- Membership inference
- 时间关联攻击
- 重放攻击
- 索引枚举攻击
============================================================
第十三部分:访问模式风险说明
若索引在 TEE 外部:
可能泄露:
- 查询频率
- key 热度
- 时间分布
是否可接受取决于威胁模型。
============================================================
第十四部分:扩展性结论
支持:
- 1 亿 Vault
- 30 天窗口查询
- 毫秒级索引定位
- 线性水平扩展
============================================================
结论
SCP Secure Indexing v1.0 实现:
- 跨 epoch 可查询
- 不泄露长期关联
- 可扩展至百亿级记录
- 与 Commitment 完整绑定
- 支持隐私分级部署
本规范为 SCP 安全索引完整定义版本。
结束。