一、概述
在 SDK 数据传输中,加密是安全保证的第一道屏障。除此之外,需要使用连线密码来保证用户设备不被非法访问。目前 SDK 中涉及到的密码主要有以下四种形式:
- IOTC Authkey
- AV Password/AV Token
- RDT Password
- Tunnel Password
二、SDK支持的密码类型
SDK 各模块提供了不同的密码验证机制,以下是四种核心密码类型的详细说明及 API 支持情况:
1. IOTC Authkey
| API 类型 | APP端 API | 设备端 API | 是否支持 Authkey |
|---|---|---|---|
| 连接类 API | IOTC_Connect_ByUID_Parallel | IOTC_Device_Login | × |
| IOTC_Connect_ByUIDEx | IOTC_Device_LoginEx | √ |
2. AV Password / AV Token
| API 类型 | APP端 API | 设备端 API | 是否支持 av password | 是否支持 av token |
|---|---|---|---|---|
| 音视频连接类 API | avClientStart / avClientStart2 | avServStart / avServStart2 / avServStart3 | √ | × |
| avClientStartEx | avServStartEx | √ | √ |
3. RDT Password
| API 类型 | APP端 API | 设备端 API | 是否支持 rdt password |
|---|---|---|---|
| RDT 通道创建类 API | RDT_Create | RDT_Create | × |
| RDT_Client_Create | RDT_Server_Create | √ |
4. Tunnel Password
目前 P2PTunnelAPI 连线相关接口(如隧道创建、数据传输)均支持通过密码验证,无需区分 APP 端和设备端,统一通过接口参数传入密码即可完成校验。
三、合理的 Auth 设计方案
我们强烈建议开启 Authkey,并搭配其他模块的 Password 使用。但多个 auth 的 Password 对用户可能不太友好,所以一般会有以下几种使用方式:
1. 方案一:统一的 Authkey + 非固定的 Password
- 设计思路:所有设备使用统一的 Authkey(用于基础身份校验),Password 为动态生成(如设备序列号、随机字符串),每次连线时动态获取或验证;
- 优势:安全性与易用性的平衡;
2. 方案二:非统一的 Authkey + 固定的 Password
- 设计思路:每个设备分配唯一的 Authkey(如设备出厂时烧录),Password 为用户可自定义的固定值(如设备管理密码);
- 优势:安全性与易用性的平衡;
3. 方案三:非统一的 authkey + 非固定的 Password(推荐)
- 设计思路:Authkey 与 Password 关联,将 Authkey 作为 Password 的一部分,兼顾唯一性和动态性;
- 实现示例:
- 假设 password 为
hfjhkfjk@12345678(包含固定前缀和动态后缀),Authkey 可从 Password 中截取任意8位有效字符,例如: - Authkey =
hfjhkfjk(前缀截取) - Authkey =
12345678(后缀截取) - Authkey =
kfjk@123(中间截取)
- 假设 password 为
- 优势:Authkey 与 Password 强关联,双重密码验证更安全;
重要提示
无论采用哪种方案,需确保 Authkey 和 Password 的传输过程加密(依赖 SDK 内置加密机制),避免明文传输导致泄露;同时定期更新 Password 或 Authkey,进一步提升安全性。
