(1.) 基于口令
一般将口令存储在数据库中,拿用户键入的口令和存储的口令比较,根据比较结果授予访问权限
(1.1) 明文认证
直接在数据库中存储口令明文
简单,成本低,但是不安全
(1.2) 引入散列
将口令哈希后存储在数据库中,每次登陆时判断用户输入的口令的哈希值和存储的哈希值是否一致
可能被彩虹表破解
(1.3) 加盐
给口令加盐之后哈希,将哈希值和盐一起存储在数据库中,用户登录时,将用户输入的口令加盐哈希,判断是否一致
加盐本质上等于改变了哈希函数,使得彩虹表破解难以实现
(2.) 基于生物特征
- 指纹鉴别
- 声音鉴别
- 手迹鉴别
- 虹膜扫描
- 手形及掌纹
- 面相
- (DNA)
(3.) 零知识证明
零知识证明 考虑证明者 (P) 和验证者 (V),(P) 在不让 (V) 知晓信息内容的前提下,向 (V) 证明自己知晓信息,满足
- 完备性 ( extbf{Completeness}) 若 (P) 可以证明,那么 (V) 有理由相信,即 (V) 无法欺骗 (P)
- 正确性 ( extbf{Soundness}) 若 (P) 无法证明,那么 (V) 有理由不相信 (P),即 (P) 无法欺骗 (V)
- 零知识性 ( extbf{Zero-Knowledge}) 证明过程 (P) 不泄露任何信息,即 (V) 无法获得额外信息