身份识别、身份认证和授权,是安全架构中最容易混淆的三个概念。
它们看起来相近,但解决的是三个完全不同的问题:
你声称是谁;
你如何证明自己是谁;
你通过证明后能做什么。
在嵌入式系统中,很多安全问题都来自于把"身份识别"误认为"身份认证"。例如,只检查 SN、设备 ID、型号或批次号,就认为设备可信,这在工程上是不安全的。
| 关键词 | 工程含义 |
|---|---|
| 识别 / 认证 / 授权 | SN 只是声明,挑战响应才是证明,权限控制决定能做什么。 |
1. 三个概念的核心区别
可以先用一句话区分三者:
| 概念 | 解决的问题 | 工程含义 |
|---|---|---|
| 身份识别 Identification | 你声称自己是谁 | 上报 SN、设备 ID、用户名、证书编号 |
| 身份认证 Authentication | 你如何证明自己是谁 | 密码、证书、挑战响应、MAC、数字签名 |
| 授权 Authorization | 你通过证明后能做什么 | 权限控制、功能开关、访问范围、使用次数 |
这三者是顺序关系,而不是同一个概念。
通常流程是:
先识别身份;
再认证身份;
最后根据身份和权限进行授权。
2. 身份识别 Identification
身份识别是设备、用户或模块声明自己的身份。
通俗地说,它回答的是:
我是谁?
在嵌入式产品中,身份识别可以表现为:
- 设备上报序列号 SN;
- 设备上报型号;
- 设备上报硬件版本;
- 设备上报证书编号;
- 设备上报 Device ID;
- 耗材上报批次号;
- 探头上报探头类型;
- 用户输入用户名;
- 维修工具上报工具编号。
这些信息用于让系统知道当前对象声称的身份。
但是,身份识别只是"声明",不能直接作为可信依据。
3. 为什么 SN 不能等同于安全认证
很多嵌入式产品早期会采用这种方式:
主机读取外设 SN;
SN 在白名单中;
允许外设工作。
这种方式看起来像认证,实际上只是身份识别。
原因很简单:
SN 可以被复制。
如果攻击者从一个合法设备中读取到 SN,然后写入另一个仿冒设备,主机看到的仍然是一个"合法 SN"。
此时主机只能知道:
对方声称自己是某个合法设备。
但主机并不能确认:
对方真的拥有合法设备内部不可复制的秘密。
因此,SN、设备 ID、型号、批次号、版本号,都只能作为身份声明或索引信息,不能单独作为安全认证依据。
4. 身份认证 Authentication
身份认证是证明身份声明为真。
通俗地说,它回答的是:
你怎么证明你就是你?
在嵌入式系统中,身份认证的关键不是把密钥发给主机,而是让设备证明:
我拥有正确的密钥或私钥,但我不需要把它暴露出来。
常见认证方式包括:
- 密码认证;
- 共享密钥认证;
- 挑战响应;
- MAC 验证;
- 数字签名;
- 证书链验证;
- 安全芯片认证。
5. 挑战响应机制
挑战响应是嵌入式设备认证中非常常见的方式。
基本流程如下:
- 主机生成一个随机数 Challenge;
- 主机把 Challenge 发送给设备;
- 设备使用内部密钥对 Challenge 计算 MAC,或者使用私钥进行签名;
- 设备把 Response 返回给主机;
- 主机验证 Response 是否正确;
- 验证通过后,认为设备拥有正确密钥或私钥。
这个过程中,设备不需要把密钥发出来。
主机验证的不是"设备说了什么",而是验证:
设备是否具备只有合法设备才拥有的秘密。
6. 为什么挑战响应比固定口令更安全
如果设备每次都发送固定口令,例如:
password = 123456
auth_code = ABCD1234
攻击者只要截获一次,就可以后续重复使用。
这就是典型的重放攻击。
挑战响应机制通过随机数解决这个问题。由于每次 Challenge 都不同,设备每次计算出的 Response 也不同。
因此,攻击者即使截获了一次 Response,也很难在下一次认证中复用。
7. 授权 Authorization
授权是在认证通过之后,决定对象可以访问哪些资源、启用哪些功能、执行哪些操作。
通俗地说,它回答的是:
你被证明是合法对象之后,可以做什么?
授权不是认证本身,而是认证之后的权限控制。
在嵌入式产品中,授权常见于以下场景:
- 维修工具可以进入维护模式;
- 普通用户只能查看数据,不能修改校准参数;
- 管理员可以修改系统配置;
- 普通耗材只能使用固定次数;
- 特定探头才能启用特定测量功能;
- 授权模块才能打开高级功能;
- 产线工装可以进入生产测试模式;
- 现场设备只能执行有限升级,研发工具才能刷写调试固件。
8. 最小权限原则
授权设计应遵循最小权限原则。
也就是说,一个对象只应该获得完成当前任务所需的最小权限,而不是认证通过后获得全部权限。
例如:
- 普通用户不应该能修改工厂校准参数;
- 维修人员不应该能导出密钥;
- 耗材不应该能修改主机配置;
- 普通 App 不应该能进入产线模式;
- 产线工装不应该在现场维护环境中长期有效;
- 调试权限不应该在量产设备中默认开启。
最小权限原则可以降低单点泄露后的影响范围。
9. 嵌入式案例:合法探头接入主机
假设一个医疗设备主机需要识别外接探头。
第一步:身份识别
探头接入后,先上报:
- SN;
- 型号;
- 硬件版本;
- 批次号;
- 证书编号。
这一步只是告诉主机:
我声称自己是哪一个探头。
第二步:身份认证
主机生成随机数 Challenge,发送给探头。
探头内部的安全芯片或安全存储区域使用密钥计算 Response。
主机验证 Response 是否正确。
这一步用于确认:
这个探头确实拥有合法密钥,具备合法身份。
第三步:授权
认证通过后,主机还不能无条件允许所有功能。
主机还需要根据:
- 探头型号;
- 探头批次;
- 注册状态;
- 有效期;
- 使用次数;
- 支持功能;
- 当前设备型号;
- 当前软件版本;
- 当前测量模式。
决定是否允许测量、允许哪些功能、是否提示更换、是否限制高级功能。
这一步才是授权。
10. 三者缺一不可
如果只有身份识别,没有身份认证:
攻击者复制 SN,就可能伪装成合法设备。
如果只有身份认证,没有授权:
合法对象可能获得过大的权限,造成越权访问。
如果只有授权规则,没有可靠认证:
权限规则建立在不可信身份之上,仍然可能被绕过。
因此,完整的嵌入式安全流程应该是:
识别身份 → 认证身份 → 授权访问。
11. 工程总结
身份识别不是安全,身份认证才开始建立信任,授权则决定信任之后的权限边界。
简单来说:
身份识别:你声称是谁;
身份认证:你如何证明自己是谁;
授权:证明之后你能做什么。
在工程实现中,SN、型号、批次号、设备 ID 只能用于识别和索引,不能单独作为可信认证依据。
真正可靠的做法,是结合挑战响应、MAC、数字签名、安全芯片、证书链和权限控制,建立从身份声明到身份证明,再到权限约束的完整闭环。