挑战响应认证机制CRAM
验证操作的最常用方法是挑战响应认证机制CRAM。它们是一组协议,其中一方发出挑战(需要解决),另一方需要用正确的响应(需要验证/检查)来做出回应,以便进行认证。
挑战性问题有两种类型:
- 正如名称所示,静态问题采用静态方法来选择挑战。用户可以选择挑战并确认其身份。以电子邮件服务中的“忘记密码”功能为例。您在账户设置中保存的“安全问题”是一个静态挑战。预计对这些问题的正确回答不会随时间而变化。
- 动态问题使用动态选择和认证过程进行挑战。任务是随机选择的,假设用户是真实的用户,他们会知道正确的答案。
CRAM执行方法 –
1. CAPTCHA(全自动公共图灵测试以区分计算机和人类垃圾邮件):
完全自动化的公共图灵测试,用于区分计算机和人类垃圾邮件,以及阻止在网站上自动创建新帐户或用于电子邮件的CAPTCHA。
2. 安全外壳(SSH):
SSH是一种加密的网络协议,可在不安全的网络上安全运行网络服务。
3. 密码:
密码传输到服务器,在与正确密码进行比较后进行检查。
4. Salted Challenge Response Authentication Mechanism (SCRAM)的一种变体:
为确保密码仅使用一次,挑战将被哈希和加盐。服务器将哈希与正确密码的哈希进行比较,而不是与明文密码本身进行比较。由于密码只能使用一次,因此无法泄露,从而防止中间人和重放攻击。
5. 生物识别:
每当用户希望验证自己时,他必须提供他独特的生物识别信息(如视网膜扫描或指纹扫描)用于验证。
如何使用挑战-响应
挑战-响应屏障是一种安全措施,用于保护资产免受未经授权的用户、活动、程序和物联网(IoT)设备的侵害。它要求网络攻击者完成一系列挑战,以绕过安全屏障并获得对其他材料的访问权限。例如,商业银行使用挑战-响应认证创建了一个多因素身份验证(MFA)流程。使用多个CRAM,此流程对用户的身份进行认证。
双因素身份验证(2FA)流程可能涉及输入密码并通过电子邮件接收验证码。MFA变体还可能询问个人问题,例如“您母亲的婚前姓名是什么?”然而,帐户登录并不是挑战-响应认证的唯一用途。
CRAM的应用案例
- 区分计算机和人类:
向用户显示一个通常在初始查看时难以阅读的图像,并要求用户通过解析图像中的字符来输入。然后将输入与实际字符进行比较,以阻止机器人访问系统。
- 在训练机器学习模型时:
将图像切割并混淆后,提交给用户进行某种形式的人类用户可验证的认证。使用用户的输入来验证用户输入。比较用户的响应和ML模型提供的答案。任务是从打乱的图像中选择正确的部分。在Google CAPTCHA身份验证中经常观察到。
- 用于登录(认证):
将已保存在您要访问的服务器上的正确密码与您输入的密码(直接或间接)进行比较,以查看它们是否匹配。
典型的CRAM攻击包括:
- 窃听
- 网络钓鱼攻击
- 劫持攻击
- 中间人攻击
- DNS缓存中毒攻击
- 特洛伊木马攻击
- 手机劫持攻击
- 浏览器注入攻击
- 字典攻击
- 暴力攻击
- 零知识密码证明
- 可重复使用的密码攻击
局限性 –
密码的一个基本问题是它们被重复使用。当服务器接收到密码时,服务器无法确定密码是否由真正的用户输入。
较新的CRAM还使用加密来匹配密码的哈希值,而不是明文密码。
一些加密CRAM示例 –
- SCRAM是Salted Challenge Response Authentication Mechanism的缩写。
- CRAM-MD5