身份认证(Authentication) 是验证用户、进程、设备或其他主体所声明身份的过程,通常是允许访问系统资源之前的步骤。NIST 身份认证术语将其描述为验证用户、进程或设备身份的过程。
身份认证不同于身份识别。身份识别提出“我是谁”的声明,身份认证则要求主体证明它能够控制与该身份绑定的认证器。认证成功也不等于获得所有权限,系统仍需针对具体操作作出授权决定。
认证因素
NIST 数字身份指南将常见认证因素分为:
- 所知因素:主体知道的信息,例如密码或 PIN;
- 所持因素:主体持有的对象,例如保存密码密钥的设备或安全密钥;
- 固有因素:主体自身的生物特征,例如指纹。
多因素认证要求使用来自不同类别的因素。两个密码仍然属于同一种所知因素,因此不能仅凭数量将其视为多因素认证。
认证器与验证过程
认证器是主体持有并控制、用于证明身份的对象或秘密。密码、一次性验证码设备、密码密钥和硬件安全密钥都可以在相应协议中充当认证器。
验证方通过认证协议检查主体是否控制有效认证器。认证结果通常会建立一个有期限的会话;之后是否需要重新认证,取决于会话期限、操作风险和系统策略。
安全性
认证机制的强度不仅取决于因素数量,还取决于其抗钓鱼、抗重放、凭证保护和恢复流程。认证秘密不应出现在日志或公开配置中,系统还应限制尝试次数、保护认证器绑定和恢复过程,并在高风险场景中采用抗钓鱼的认证方式。