身份认证
身份认证与消息认证不同,它直接认证参与者的身份
身份认证的方法包括:
- what you know:知道的信息——静态口令
- what you have:拥有的东西——卡、短信口令、动态口令、USB KEY
- who you are:独一无二的特征:生物特征验证
网站用户认证技术
HTTP Basic认证
在发出HTTP请求时发出账号和静态口令
对账号和口令对(U,P)进行Base64编码,发送到Web端
Base64编码:基于64个可打印字符表示二进制数(64进制)
缺点:易于被监听、盗取;本地浏览器需要保存账号和口令;每次请求都需要身份验证
改进:账号口令加密
账号口令明文传输风险很大,因此可以使用口令作为密钥对账号加密,即传输
但是无法躲避重放攻击:攻击者只要将抓到的包重发即可
改进:消息认证
采用挑战/响应机制:
- 第一次请求,服务器向客户端返回挑战码
- 第二次请求,客户端向服务端发送,其中为MAC码
基于表单的身份认证
目的:防止账号口令的长期本地保存、避免每次登录进行账号口令认证
使用Session(会话)机制:
- Session首次启用时,服务器产生一个唯一标识符(随机字符串)发送给客户端
- 客户端使用Cookie技术存储
- Cookie包含:键值对,作用域,作用路径,有效时间
- 在Session存活期间的每次请求,客户端都会附上唯一标识符
- Session结束时,客户端和服务端都销毁唯一标识符
问题:账号口令在网络中明文传输,存在监听盗取的可能
改进:避免重放和明文传输
使用挑战/响应机制,服务器返回表单时同时返回一个挑战
填写表单时发送和
其他认证方式
只靠静态口令安全强度不同,可以增加其他认证构成双因素/多因素认证:
- 短信口令(短信验证码)
- 动态口令(Steam令牌)
- 往往需要基于时间同步,即服务端与令牌端使用同步的初始时间、时间间隔和伪随机算法
- USB KEY
- 本质上是内部存储了一个私钥
- 数字证书