身份认证

身份认证消息认证不同,它直接认证参与者的身份

身份认证的方法包括:

  • what you know:知道的信息——静态口令
  • what you have:拥有的东西——卡、短信口令、动态口令、USB KEY
  • who you are:独一无二的特征:生物特征验证

网站用户认证技术

HTTP Basic认证

在发出HTTP请求时发出账号静态口令

对账号和口令对(U,P)进行Base64编码,发送到Web端

Base64编码:基于64个可打印字符表示二进制数(64进制)

缺点:易于被监听、盗取;本地浏览器需要保存账号和口令;每次请求都需要身份验证


改进:账号口令加密

账号口令明文传输风险很大,因此可以使用口令kk作为密钥对账号UU加密,即传输

UEk[U]U||E_k[U]

但是无法躲避重放攻击:攻击者只要将抓到的包重发即可


改进:消息认证

采用挑战/响应机制

  1. 第一次请求,服务器向客户端返回挑战码MM
  2. 第二次请求,客户端向服务端发送MCk[M]M||C_k[M],其中Ck[M]C_k[M]为MAC码

基于表单的身份认证

目的:防止账号口令的长期本地保存、避免每次登录进行账号口令认证

使用Session(会话)机制:

  • Session首次启用时,服务器产生一个唯一标识符(随机字符串)发送给客户端
  • 客户端使用Cookie技术存储
    • Cookie包含:键值对,作用域,作用路径,有效时间
  • 在Session存活期间的每次请求,客户端都会附上唯一标识符
  • Session结束时,客户端和服务端都销毁唯一标识符

问题:账号口令在网络中明文传输,存在监听盗取的可能


改进:避免重放和明文传输

使用挑战/响应机制,服务器返回表单时同时返回一个挑战MM

填写表单时发送UUEk[MU]E_k[M||U]

其他认证方式

只靠静态口令安全强度不同,可以增加其他认证构成双因素/多因素认证

  • 短信口令(短信验证码)
  • 动态口令(Steam令牌)
    • 往往需要基于时间同步,即服务端与令牌端使用同步的初始时间、时间间隔和伪随机算法
  • USB KEY
    • 本质上是内部存储了一个私钥
  • 数字证书