质询响应认证机制 (CRAM)
质询响应身份验证机制 (CRAM)是最常用的操作身份验证方式。它们是一组协议,其中一方提出挑战(待回答),另一方必须对挑战提出正确答案(待检查/验证)才能获得身份验证。
图 – CRAM 活动流程图
两种类型的问题(挑战) -
- 顾名思义,静态问题涉及挑战选择的静态方法。用户可以选择他的挑战并验证自己。例如,以电子邮件服务中的 FORGET PASSWORD 用例为例。静态挑战是您在帐户设置中保存的“安全问题”。这些问题的正确答案预计不会随着时间而改变。
- 动态问题涉及挑战选择和身份验证的动态方法。挑战是随机选择的,假设用户知道挑战的有效答案,考虑到用户是真实的。
CRAM 的执行方式 –
- 验证码:
用于区分计算机和人类的全自动公共图灵测试。 CAPTCHA 用于防止垃圾邮件和自动注册电子邮件或网站的新帐户。 - SSH(安全外壳):
SSH 是一种加密网络协议,用于在不安全的网络上安全地运行网络服务。 - 密码:
通过匹配正确的密码将密码发送到服务器进行验证。 - Salted Challenge Response Authentication Mechanism(SCRAM,CRAM的一种变体):
挑战使用哈希进行加盐,以确保密码仅使用一次。哈希被发送到服务器以与正确密码的哈希匹配,而不是纯文本密码本身的匹配。因此,密码不会被泄露,以防止中间人攻击和重放攻击,因为密码只能使用一次。 - 生物识别:
记录唯一的生物特征细节(视网膜扫描、指纹扫描),每次用户想要验证自己的身份时,他都必须向身份验证系统出示他的生物特征凭据以进行验证。
用例 -
- 区分计算机和人类:
向用户呈现图像(通常难以一目了然地阅读),并要求用户通过读取图像中的字符来进行输入。然后将输入与实际字符进行匹配,以防止机器人进入系统。 - 在训练机器学习模型时:
一幅图像被拼凑起来并呈现给用户,以进行某种真正的人类用户可以进行的验证。输入用于用户验证。用户给出的答案与 ML 模型给出的答案相匹配。混乱的图像是“挑战”,选择正确的部分就是例子。常见于 Google CAPTCHA 认证。 - 用于登录(身份验证)目的:
密码输入(直接或间接)与正确的密码(已存储在您尝试访问的服务器中)进行匹配。
对 CRAM 的常见攻击 –
- 窃听
- 网络钓鱼攻击
- 域名攻击
- 中间人攻击
- DNS 缓存中毒攻击
- 木马攻击
- 电话中的人攻击
- 浏览器中毒攻击
- 字典攻击
- 蛮力攻击
- 零知识密码证明
- 可重复使用的密码攻击
限制——
密码的一个基本问题是密码被重复使用。当服务器接收到密码时,服务器无法确定真实用户是否正在输入密码。
较新的 CRAM 还采用加密技术,以便匹配密码的哈希而不是普通密码。
加密 CRAM 的一些示例 –
- SCRAM – 盐渍挑战响应认证机制
- CRAM-MD5