Skip to content

% SCP Secure Indexing Specification % Version 1.0 (Comprehensive Edition) % 2026-02-27

SCP 安全索引规范 v1.0

状态:Standards Track
类别:执行层 × 隐私层 × 可扩展查询规范

本规范整合:

  1. 索引总体架构
  2. Epoch 分区模型
  3. Salt 派生机制
  4. classification_status 兼容规则
  5. 批量提交与 Root 绑定
  6. 隐私保护机制
  7. 访问模式泄露分析
  8. 分片与扩展模型
  9. 形式化不变量
  10. Domain 爆炸与索引增长上界
  11. 查询执行完整流程
  12. 安全等级分层模型

============================================================

第一部分:设计目标

索引必须满足:

  • 支持 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人

步骤:

  1. 解析 attribute_id
  2. 对最近30个 epoch: data_salt_e = PRF(master_secret, epoch_e) index_key = H(attribute_id || data_salt_e) 查询 epoch 分区
  3. 聚合 vault_token 列表
  4. 随机抽样1000
  5. 映射回 vault_id(TEE 内)
  6. 解密 CR 验证 Commitment
  7. 生成 Proof
  8. 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 安全索引完整定义版本。

结束。