# TOTP 层级定义

## Tier-One（一级授权）

| 属性 | 值 |
|------|-----|
| 通信方 | project-management ↔ watchdog |
| 位数 | 8位 |
| 有效期 | 30分钟 (1800秒) |
| 算法 | SHA256 |
| 加密 | AES-256-GCM |
| 用途 | 项目注册、授权申请/下发 |

## Tier-Two（二级授权）

| 属性 | 值 |
|------|-----|
| 通信方 | watchdog ↔ agent/node |
| 位数 | 6位 |
| 有效期 | 30秒 |
| 算法 | SHA1 |
| 加密 | 无（内网通信） |
| 用途 | 心跳验证、指令执行 |

## 双向验证流程

```
1. 客户端生成TOTP → 发送请求
2. 服务端验证客户端TOTP → 生成新TOTP返回
3. 客户端验证服务端TOTP → 确认双方身份
```

## 密钥管理

### 生成时机
- tier_one_secret: project-management创建项目时生成
- tier_two_secret: project-management创建项目时生成

### 传输方式
- 通过项目配置文件离线部署到Watchdog
- **禁止通过MQTT公网传输**

### 存储位置
- project-management: 数据库加密存储
- watchdog: 配置文件/环境变量
- agent/node: 首次连接时从watchdog获取tier_two_secret

## 时间容忍度

| 配置项 | 默认值 | 说明 |
|--------|--------|------|
| time_offset_allowed | 300秒 | 时间戳校验容忍度 |
| totp_window | 1 | TOTP验证窗口（前后各1个周期） |
