# AID 孤儿预防与救援机制

## G.1 问题背景

当 Issuer CA 或 Root CA 运营商退出、倒闭或被吊销时，其签发的所有 Agent 证书将面临失效风险，导致大量 AID 变成"孤儿 AID"（无法验证证书链，无法正常使用）。

**影响范围**：

```
Root CA 倒闭
  └─ 影响该 Root CA 下所有 Issuer CA
      └─ 影响所有 Issuer CA 下的所有 Agent 证书
          └─ 可能影响数百万个 AID

Issuer CA 倒闭
  └─ 影响该 Issuer 下所有 Agent 证书
      └─ 可能影响数万到数十万个 AID
```

## G.2 预防机制

### G.2.1 提前预警系统

**监控指标**：

| 指标 | 预警阈值 | 监控频率 | 责任方 |
|------|---------|---------|--------|
| CRL/OCSP 可用性 | < 95% | 每小时 | 管理局运营团队 |
| 证书续期率 | < 80% | 每月 | 管理局运营团队 |
| 审计状态 | 未通过年度审计 | 每年 | 审计委员会 |
| 财务状况 | 连续 2 季度亏损 | 每季度 | 审计委员会 |
| 服务响应 | 超过 48 小时无响应 | 实时 | 管理局运营团队 |

**预警流程**：

```
监控系统检测到异常
  │
  │ 1. 自动告警
  │    - 发送邮件/短信给运营团队
  │    - 记录告警日志
  ↓
运营团队
  │
  │ 2. 初步评估
  │    - 联系 CA 运营商
  │    - 评估问题严重性
  ↓
技术委员会
  │
  │ 3. 风险评估
  │    - 评估影响范围
  │    - 制定应急预案
  ↓
理事会
  │
  │ 4. 决策
  │    - 要求整改
  │    - 启动迁移计划
  │    - 或启动应急接管
```

### G.2.2 强制迁移通知期

**Root CA 退出**：

- **最短通知期**：90 天（可延长至 180 天）
- **强制要求**：必须协助所有 Issuer CA 迁移到其他 Root CA
- **迁移进度检查**：每 30 天检查一次，确保按计划进行
- **未完成迁移的处理**：
  - 延长过渡期（需理事会批准）
  - 管理局协调其他 Root CA 接管
  - 最后手段：强制吊销（需提前 30 天通知）

**Issuer CA 退出**：

- **最短通知期**：60 天（可延长至 120 天）
- **强制要求**：必须通知所有 Agent 证书持有者
- **迁移支持**：提供迁移工具和技术支持
- **未完成迁移的处理**：
  - 管理局协调其他 Issuer CA 接管
  - 提供临时证书续期服务

### G.2.3 证书有效期限制

**防止长期依赖**：

| 证书类型 | 最长有效期 | 推荐有效期 | 理由 |
|---------|-----------|-----------|------|
| Root CA | 30 年 | 20-25 年 | 减少密钥轮换频率 |
| Issuer CA | 10 年 | 5-8 年 | 平衡安全性和便利性 |
| Agent 证书 | 5 年 | 1-2 年 | 强制定期续期，及时发现问题 |

**自动续期机制**：

- Agent 证书有效期过半时，Auth 服务自动签发新证书
- 客户端自动更新证书，无需用户干预
- 如果 Issuer CA 出现问题，用户有足够时间迁移

### G.2.4 财务保证金制度

**Root CA 保证金**：

- **金额**：根据签发的 Issuer CA 数量确定（如每个 Issuer CA 10 万美元）
- **用途**：用于支付应急迁移成本、用户补偿等
- **退还条件**：正常退出且所有 Issuer CA 已迁移后退还

**Issuer CA 保证金**：

- **金额**：根据签发的 Agent 证书数量确定（如每 1 万个证书 1 万美元）
- **用途**：用于支付应急迁移成本、用户补偿等
- **退还条件**：正常退出且所有 Agent 证书已迁移或过期后退还

## G.3 应急救援机制

### G.3.1 应急接管流程

**触发条件**：

1. **突发倒闭**：CA 运营商突然倒闭，无法履行迁移义务
2. **服务中断**：CRL/OCSP 服务中断超过 7 天
3. **拒绝配合**：CA 运营商拒绝配合迁移工作
4. **安全事件**：私钥泄露或重大安全事件

**应急接管流程（Root CA 倒闭）**：

```
触发事件
  │
  │ 1. 应急响应（24 小时内）
  │    - 运营团队评估影响范围
  │    - 统计受影响的 Issuer CA 数量
  │    - 联系所有受影响的 Issuer CA
  ↓
理事会紧急会议
  │
  │ 2. 决策（48 小时内）
  │    - 启动应急接管计划
  │    - 指定接管 Root CA（志愿或指定）
  │    - 批准使用保证金
  ↓
接管 Root CA
  │
  │ 3. 技术接管（7 天内）
  │    - 为所有 Issuer CA 签发新证书
  │    - 新证书由接管 Root CA 签发
  │    - 保持 Issuer CA 的 CN 和公钥不变
  ↓
管理局
  │
  │ 4. 更新受信列表
  │    - 从列表中移除倒闭的 Root CA
  │    - 发布紧急更新
  ↓
Issuer CA
  │
  │ 5. 部署新证书
  │    - 更新 Auth 服务配置
  │    - 部署新的 Issuer CA 证书
  │    - 继续签发 Agent 证书（证书链已更新）
  ↓
Agent 证书持有者
  │
  │ 6. 自动更新（透明）
  │    - 下次续期时自动获得新证书链
  │    - 无需用户干预
  │    - 旧证书在有效期内仍可使用
```

**应急接管流程（Issuer CA 倒闭）**：

```
触发事件
  │
  │ 1. 应急响应（24 小时内）
  │    - 运营团队评估影响范围
  │    - 统计受影响的 Agent 证书数量
  │    - 发布公告通知所有用户
  ↓
管理局
  │
  │ 2. 协调接管（48 小时内）
  │    - 联系其他 Issuer CA 志愿接管
  │    - 或指定接管 Issuer CA
  │    - 批准使用保证金
  ↓
接管 Issuer CA
  │
  │ 3. 域名和服务接管（7 天内）
  │    - 接管域名（如 aid.pub）
  │    - 部署 Auth 服务
  │    - 导入 Issuer CA 证书和私钥（如果可获得）
  ↓
  │ 4. 证书迁移
  │    - 如果可获得 Issuer CA 私钥：
  │      └─ 继续使用原 Issuer CA 证书签发
  │    - 如果无法获得私钥：
  │      └─ 为所有 Agent 签发新证书（新 Issuer CA）
  ↓
Agent 证书持有者
  │
  │ 5. 证书更新
  │    - 如果 Issuer CA 私钥可用：透明，无需操作
  │    - 如果需要新 Issuer CA：
  │      └─ 客户端自动申请新证书
  │      └─ 保持 AID 不变，只更新证书链
```

### G.3.2 AID 迁移机制

**核心原则**：AID 是身份标识，不应因 CA 变更而改变。

**迁移方案 A：保持 Issuer CA 证书不变**

适用场景：可以获得 Issuer CA 私钥（如通过法律程序、破产清算等）

```
旧证书链：
  alice.aid.pub ← aid.pub (旧 Root CA 签发) ← 旧 Root CA

新证书链：
  alice.aid.pub ← aid.pub (新 Root CA 签发) ← 新 Root CA

变化：
  - AID 不变：alice.aid.pub
  - Issuer CA 公钥不变
  - Issuer CA 证书由新 Root CA 重新签发
  - Agent 证书无需更新（下次续期时自动更新证书链）
```

**迁移方案 B：更换 Issuer CA**

适用场景：无法获得 Issuer CA 私钥

```
旧证书链：
  alice.aid.pub ← aid.pub (旧 Issuer CA) ← 旧 Root CA

新证书链：
  alice.aid.pub ← aid.pub (新 Issuer CA) ← 新 Root CA

变化：
  - AID 不变：alice.aid.pub
  - Issuer CA 更换（新的公钥/私钥对）
  - Agent 证书需要重新签发
  - 客户端自动申请新证书（使用原私钥）
```

**迁移方案 C：更换 Issuer 域名**

适用场景：无法获得原 Issuer 域名控制权

```
旧 AID：alice.aid.pub
新 AID：alice.newissuer.com

迁移流程：
  1. 用户申请新 AID（alice.newissuer.com）
  2. 使用原私钥签名证明身份
  3. 系统建立 AID 映射关系
  4. 旧 AID 重定向到新 AID（过渡期 180 天）
  5. 过渡期后，旧 AID 标记为"已迁移"
```

### G.3.3 AID 映射与重定向

**AID 映射表**：

管理局维护一个公开的 AID 映射表，记录因 CA 倒闭而迁移的 AID：

```json
{
  "version": 1,
  "updated_at": "2026-03-15T10:00:00Z",
  "mappings": [
    {
      "old_aid": "alice.aid.pub",
      "new_aid": "alice.newissuer.com",
      "reason": "issuer_ca_bankruptcy",
      "effective_from": "2026-01-01T00:00:00Z",
      "redirect_until": "2026-07-01T00:00:00Z",
      "proof": "用户私钥签名证明"
    }
  ]
}
```

**重定向机制**：

```
客户端尝试连接 alice.aid.pub
  │
  │ 1. 查询 AID 映射表
  │    - 发现 alice.aid.pub 已迁移
  ↓
  │ 2. 自动重定向
  │    - 连接到 alice.newissuer.com
  │    - 显示提示："alice.aid.pub 已迁移到 alice.newissuer.com"
  ↓
  │ 3. 过渡期后
  │    - 旧 AID 返回 "301 Moved Permanently"
  │    - 建议用户更新联系人信息
```

### G.3.4 临时证书服务

**应急证书签发**：

当 Issuer CA 突然倒闭，管理局可以启动临时证书服务：

```
管理局临时 CA
  │
  │ 1. 生成临时 Issuer CA 证书
  │    - CN: aid.pub.emergency
  │    - 有效期: 90 天
  │    - 由管理局证书签发（特殊用途）
  ↓
  │ 2. 部署临时 Auth 服务
  │    - 接管 aid.pub 域名
  │    - 使用临时 Issuer CA 证书
  ↓
  │ 3. 签发临时 Agent 证书
  │    - 用户提交原证书和私钥签名
  │    - 验证身份后签发临时证书
  │    - 有效期: 90 天
  ↓
  │ 4. 过渡到正式 Issuer CA
  │    - 90 天内完成正式迁移
  │    - 用户重新申请正式证书
```

## G.4 用户自救机制

### G.4.1 证书备份与导出

**推荐做法**：

用户应定期备份证书和私钥：

```
备份内容：
  ├─ 私钥（加密存储）
  ├─ Agent 证书
  ├─ Issuer CA 证书
  ├─ Root CA 证书
  └─ 证书链完整性证明
```

**导出格式**：

```json
{
  "aid": "alice.aid.pub",
  "private_key_encrypted": "...",
  "certificate_chain": [
    "-----BEGIN CERTIFICATE----- (Agent)",
    "-----BEGIN CERTIFICATE----- (Issuer CA)",
    "-----BEGIN CERTIFICATE----- (Root CA)"
  ],
  "backup_time": "2026-03-15T10:00:00Z"
}
```

### G.4.2 跨 Issuer 迁移工具

**客户端内置迁移工具**：

```
迁移向导
  │
  │ 1. 检测 Issuer CA 状态
  │    - 自动检测当前 Issuer CA 是否可用
  │    - 如果不可用，提示用户迁移
  ↓
  │ 2. 选择新 Issuer CA
  │    - 显示可用的 Issuer CA 列表
  │    - 推荐接管的 Issuer CA
  ↓
  │ 3. 申请新证书
  │    - 使用原私钥生成 CSR
  │    - 提交到新 Issuer CA
  │    - 附带原证书作为身份证明
  ↓
  │ 4. 更新配置
  │    - 自动更新客户端配置
  │    - 通知联系人 AID 已更新（如果 AID 改变）
```

### G.4.3 社交恢复机制

**信任网络恢复**：

如果用户无法通过技术手段迁移，可以通过社交网络恢复身份：

```
用户 Alice（旧 AID 不可用）
  │
  │ 1. 申请新 AID
  │    - alice.newissuer.com
  ↓
  │ 2. 请求信任背书
  │    - 联系 3-5 个信任的联系人
  │    - 请求他们为新 AID 背书
  ↓
联系人（Bob, Carol, Dave）
  │
  │ 3. 验证身份
  │    - 通过其他渠道验证（电话、视频等）
  │    - 确认是本人
  ↓
  │ 4. 签名背书
  │    - 用自己的私钥签名声明：
  │      "我确认 alice.newissuer.com 是 alice.aid.pub 的新身份"
  ↓
新 AID 建立信任
  │
  │ 5. 发布背书声明
  │    - 新 AID 附带多个信任背书
  │    - 其他用户可以选择信任
```

## G.5 法律和合规保障

### G.5.1 破产保护条款

**AUN 根证书互信协议**中应包含：

```
第 X 条：破产保护

1. CA 运营商应在破产前至少 90 天通知管理局
2. 破产清算时，Issuer CA 私钥应移交给管理局或指定接管方
3. 域名控制权应移交给管理局或指定接管方
4. 保证金用于支付迁移成本和用户补偿
5. CA 运营商应配合完成所有迁移工作
```

### G.5.2 域名托管

**推荐做法**：

Issuer CA 运营商应将域名托管在第三方托管服务：

```
域名托管协议：
  - 域名所有权：Issuer CA 运营商
  - 托管方：中立的第三方（如律师事务所）
  - 触发条件：运营商倒闭、服务中断超过 30 天
  - 执行：托管方将域名控制权移交给管理局指定的接管方
```

### G.5.3 数据托管

**关键数据托管**：

```
托管内容：
  ├─ Issuer CA 证书和私钥（加密）
  ├─ Agent 证书数据库
  ├─ CRL/OCSP 数据
  └─ 配置和文档

托管方式：
  - 定期（每周）加密备份到第三方托管服务
  - 多人授权解密（3/5 多签）
  - 仅在应急情况下使用
```

## G.6 最佳实践建议

### G.6.1 对 Root CA 运营商

1. **财务透明**：定期公布财务状况，接受审计
2. **应急预案**：制定详细的应急接管预案
3. **保证金充足**：确保保证金足以覆盖迁移成本
4. **定期演练**：每年进行一次应急接管演练

### G.6.2 对 Issuer CA 运营商

1. **域名托管**：将域名托管在第三方
2. **数据备份**：定期备份关键数据到托管服务
3. **财务稳定**：确保至少 2 年的运营资金
4. **迁移工具**：提供用户自助迁移工具

### G.6.3 对用户

1. **定期备份**：备份私钥和证书
2. **监控状态**：关注 Issuer CA 的运营状况
3. **及时续期**：不要等到证书快过期才续期
4. **建立信任网络**：与多个联系人建立信任关系

## G.7 总结

通过多层次的预防和救援机制，可以最大程度避免 AID 变成孤儿：

| 机制 | 预防效果 | 救援效果 | 实施难度 |
|------|---------|---------|---------|
| 提前预警系统 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 中 |
| 强制迁移通知期 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 低 |
| 证书有效期限制 | ⭐⭐⭐ | ⭐⭐⭐ | 低 |
| 财务保证金 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 中 |
| 应急接管 | ⭐⭐ | ⭐⭐⭐⭐⭐ | 高 |
| AID 映射重定向 | ⭐⭐ | ⭐⭐⭐⭐ | 中 |
| 临时证书服务 | ⭐ | ⭐⭐⭐⭐⭐ | 高 |
| 用户自救机制 | ⭐⭐⭐ | ⭐⭐⭐⭐ | 低 |
| 法律保障 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 中 |

**核心思想**：
- **预防为主**：通过监控、预警、保证金等机制，尽早发现问题
- **多重保障**：技术、法律、财务多管齐下
- **用户赋能**：提供工具让用户可以自救
- **社区互助**：通过信任网络实现社交恢复
