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