身份验证基础:你凭什么证明你是谁?

说实话,我做了这么多年安全审计,发现很多团队在身份验证这块栽跟头。不是技术多难,而是基础概念没吃透。今天咱们就把身份验证这事儿掰开揉碎了讲清楚。

身份验证的定义

身份验证,说白了就是回答一个问题:“你声称你是谁,怎么证明?”

在计算机世界里,这通常是一个二元判定——要么通过,要么拒绝。没有中间状态。我在一次合规审计中遇到过一家公司,他们的登录系统居然有“半通过”状态,结果被审计官直接打回重做。嗯,这里要注意:身份验证的结果必须是明确的。

核心定义:身份验证(Authentication)是确认用户、设备或系统所声称身份是否真实的过程。它与授权(Authorization)不同——验证是“你是谁”,授权是“你能干什么”。

身份验证的三要素

你想想看,现实生活中我们怎么证明身份?身份证(你拥有的)、密码(你知道的)、指纹(你是什么)。计算机世界也一样,所有身份验证手段都逃不出这三个维度。

要素 定义 典型例子 弱点
你知道的 只有你本人知道的信息 密码、PIN码、密保答案 容易被猜测、钓鱼、窃取
你拥有的 你物理持有的物品 智能卡、U盾、手机(OTP)、硬件令牌 可能丢失、被盗、被复制
你是什么 你固有的生物特征 指纹、人脸、虹膜、声纹 不可重置、可能被仿冒

我的经验:单要素验证就像只用一把锁锁门。我在做设备合规审计时,见过太多只用密码的系统被攻破。多因素验证(MFA)才是正道——至少组合两个不同要素。

多因素验证(MFA)为什么重要?

我曾经参与过一个金融系统的合规审计。他们的管理员账号只用密码登录,结果被撞库攻击,损失惨重。从那以后,我对MFA特别执着。

MFA的核心逻辑很简单:攻击者同时攻破两个不同要素的概率,远低于攻破一个。比如密码+手机验证码,就算密码泄露了,没有手机也白搭。

避坑指南:我曾经见过一家公司把“密码+密保问题”当MFA用。这其实还是单要素——都是“你知道的”。真正的MFA必须来自至少两个不同的要素类别。

常见身份验证协议

理论说完了,咱们看看实际工作中最常用的三个协议。我按使用场景给你捋一遍。

RADIUS(远程认证拨号用户服务)

RADIUS是个老牌协议,但老当益壮。它最初是为拨号上网设计的,现在广泛用于网络设备认证——比如你连公司Wi-Fi时,后台可能就在跑RADIUS。

它的工作模式是客户端/服务器架构:

  • 客户端:网络接入设备(交换机、AP、VPN网关)
  • 服务器:集中存储用户凭证和策略
  • 协议:基于UDP,使用共享密钥加密
# RADIUS认证流程(简化版)
1. 用户输入凭证 → 接入设备
2. 接入设备封装Access-Request → RADIUS服务器
3. RADIUS服务器验证凭证
4. 返回Access-Accept或Access-Reject
5. 接入设备根据结果允许或拒绝访问

实际场景:我在审计某大型企业的无线网络时,发现他们的RADIUS服务器没有配置Failover。结果主服务器宕机,全公司连不上Wi-Fi。记住:RADIUS服务器必须做高可用。

LDAP(轻量级目录访问协议)

LDAP不是用来做验证的?很多人有这个误解。其实LDAP本身是目录访问协议,但它常被用来做身份验证的后端——说白了,就是查目录里的用户信息来验证身份。

LDAP把用户信息组织成树状结构,每个条目有唯一的DN(Distinguished Name)。验证时,客户端绑定(Bind)到LDAP服务器,提供DN和密码,服务器验证后返回结果。

特性 RADIUS LDAP
主要用途 网络接入认证 目录服务+认证
传输协议 UDP TCP
数据结构 扁平属性 树状目录
加密方式 共享密钥 LDAPS(TLS)
典型场景 Wi-Fi、VPN、交换机 企业邮箱、内部系统

我的建议:如果你在做设备合规审计,LDAP通常用于管理设备的管理员账号。我曾经审计过一家公司,他们的LDAP匿名绑定没关,任何人都能枚举所有用户名——这是高危漏洞。

OAuth 2.0(开放授权协议)

OAuth 2.0严格来说是授权协议,不是身份验证协议。但实际工作中,它经常被用来做身份验证——比如“用登录”或“用Google账号登录”。

OAuth 2.0的核心角色:

  • 资源所有者:用户本人
  • 客户端:想要访问用户资源的应用
  • 授权服务器:验证用户身份并发放令牌
  • 资源服务器:存储用户资源,验证令牌后提供访问
# OAuth 2.0授权码流程(最常用模式)
1. 用户点击“用XX登录”
2. 客户端将用户重定向到授权服务器
3. 用户登录并授权
4. 授权服务器返回授权码
5. 客户端用授权码换取访问令牌
6. 客户端用访问令牌访问资源服务器

注意:OAuth 2.0本身不提供身份信息。我见过有人直接用访问令牌当身份凭证,结果被中间人攻击。正确的做法是使用OpenID Connect(OIDC)——它在OAuth 2.0之上加了身份层。

身份验证协议选型对比

你可能会问:这么多协议,我该用哪个?我根据自己的经验给你一个参考:

场景 推荐协议 原因
网络设备接入(Wi-Fi/VPN) RADIUS 成熟稳定,设备原生支持
企业内部系统统一认证 LDAP + Kerberos 与Active Directory集成好
第三方登录/移动端 OAuth 2.0 + OIDC 灵活,支持现代应用架构
设备合规审计场景 RADIUS + TACACS+ 支持命令级审计和授权

身份验证核心逻辑图

下面这张图把身份验证的三要素和常见协议的关系画清楚了。我建议你保存下来,做审计时对照着看。

身份验证核心逻辑图 身份验证核心逻辑图 你知道的 密码 PIN码 密保答案 弱点:易被窃取 你拥有的 智能卡 硬件令牌 手机(OTP) 弱点:可能丢失 你是什么 指纹 人脸识别 虹膜扫描 弱点:不可重置 多因素验证(MFA) RADIUS LDAP OAuth 2.0 应用场景:网络接入 · 企业统一认证 · 第三方登录 · 设备合规审计

小结

身份验证是整个安全体系的基石。三要素是理论框架,RADIUS、LDAP、OAuth 2.0是实战工具。我个人习惯在做设备合规审计时,先搞清楚客户用了哪些要素组合,再检查协议配置是否合理。

记住一句话:验证越严格,攻击越困难。但也要平衡用户体验——太繁琐的验证会让用户想办法绕过,反而更不安全。