如今,大多数常见应用,如网站和APP,在用户首次使用时通常都需要注册。一般会使用邮箱作为账号,用户再设置一个容易记住的密码。近年来,双因子认证在网站和APP中越来越常见,系统有时还会询问用户是否需要启用这一功能。那么,双因子认证究竟是什么?
简单来说,双因子认证就是一种双重认证机制。用户不仅要输入密码供系统审核,还需要提供第二种认证方式,最常见的就是智能卡。这就像使用银行卡在ATM机上取款一样,需要插入卡片并输入密码,只有通过了这两重验证,才能成功取款。
多因子认证则是比双因子认证增加了更多的验证因素。
这指的是用户必须自行记忆的认证内容,例如:用户的账号及密码。
指的是用户本身可以持有的东西,可以是硬件或软件,例如:智能卡、证书、动态密码生成器。动态密码最常见的应用是系统会发送短信到用户的手机上,并且给出一段密码,通常也叫做验证码,然后在APP或网站端要求用户输入这段验证码,让系统进行验证。
指的是用户与生俱来就拥有的东西,最常见的就是我们的指纹、面部特征、DNA、虹膜等生物特征信息。虽然有些生物特征确实可以造成以假乱真的效果,但通常使用生物特征作为认证因子还需要考虑易用性的问题,例如你要解锁手机前,手机要扫描你的DNA或虹膜吗?当然是指纹或面部识别这方面的验证才会让用户更加方便使用。
其实不外乎是因为如果只用用户可以记得的密码进行认证,不免会有以下的问题:
弱密码与强密码:弱密码通常指用户容易记住的密码,而强密码则类似于随机生成的密码。
大多数用户倾向于选择容易记忆的密码,这可能导致密码容易被破解。网络上有许多列出最常见密码的文章,许多用户可能仍在使用这些简单密码。黑客往往会首先尝试这些常见密码,因此存在安全隐患。
为什么会被称为智能卡,是因为它们内置了特殊的芯片,这些芯片能够加密存储和处理数据。通过读卡器,我们可以读取或处理卡内的数据,而这些数据通常难以被破解或复制。
在大多数情况下,智能卡并不会单独取代密码认证机制,而是与用户记忆的密码结合使用,只有两者都正确,才能访问卡内数据。
证书是一种证明文件,通常由具有公信力的第三方机构颁发给用户,即数字证书认证机构(Certificate Authority,简称CA)。
证书分为实体证书和数字证书。实体证书如政府发放的身份证,而数字证书比如电子身份证等。虽然我们的身份证和驾驶证没有芯片,不具备计算能力,但它们代表了一种证明。数字证书则采用PKI架构(Public Key Infrastructure)。
PKI架构由数字证书、证书机构(CA)、注册机构(RA)等组成,用于验证网上交易各方的身份。
简单来说,PKI架构的原理是利用非对称加密算法。每个用户都有一对公钥和私钥,公钥是公开的,而私钥存储在智能卡的芯片中,由CA保管。
例如,当A想要向B发送加密信息时,A会先向CA获取B的公钥,然后用它加密信息,再通过网络发送给B。即使信息在传输过程中被截获,黑客也无法解密,因为只有B的私钥才能解开。这样既保证了信息的私密性,也验证了发送者的身份,确保了交易的不可否认性。
动态密码,也称为一次性密码(OTP),通过散列算法生成,具有时效性和不可预测性。
动态密码通常与载体一起使用,比如通过手机短信接收。Google的Authenticator APP就是通过与启用双因子认证的网站绑定,生成一次性验证码。以GitHub为例,用户需要使用双因子认证应用,并扫描提供的条形码图像。之后,在Google Authenticator APP上会显示6位验证码,用户需要输入这个验证码。
每次登录GitHub时,除了账号密码,还需输入Google Authenticator APP上显示的验证码,该验证码每30秒更新一次。
其原理是GitHub维护每个用户的密钥,通过条形码传递给Google Authenticator APP,APP结合密钥和时间戳生成6位验证码。当验证码发送到服务器时,服务器也用相同的算法生成验证码进行比对,比对成功则验证通过。因此,APP和GitHub的时间需要同步,通常使用Unix时间戳,以保证生成的验证码一致。
以目前生活中的搭配来看,比较多的是以下三种:
其实要采用怎样不同类型的因子进行搭配,还是要看使用情境而定,此外还需要考量成本、验证准确度及速度来决定。生物特征理论上是最安全和严谨的,但考虑到目前技术发展水平,如果准确度和速度不够高,就无法广泛使用。
双因子认证无疑比单因子认证更安全,已成为主流趋势。如果用户关注信息安全,启用双因子认证是一个好选择。尽管大多数网站将双因子认证设为可选而非必需,因为更安全的系统操作更复杂,可能会影响用户体验。特别是对于那些与财产无关的网站,用户可能不太关心安全性。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。