分享

身份识别技术简介

 吴雨虹2kzpi83a 2020-07-19

说到身份识别,最常见的就是我们每天都要用到的“登录密码”了。其实,在第一篇文章就说过,这里的密码更确切的叫法是口令。口令是一定长度的字符串,由数字、字母、特殊字符、控制字符等组成。用户名加口令的方法是应用最广的一种身份识别方式,它的原理也很简单,应用系统事先储存了用户名与对应的口令,身份识别时只要用户提交的用户名加口令与存储的匹配,应用系统就认证了当前用户的身份。口令是安全强度比较低身份识别的方式,它主要存在以下几个方面的风险:

一是暴力破解,这是针对口令最常见的攻击方式。攻击者通过不断重试来猜测你的口令。所以大家会发现,现在的系统在注册时对口令的复杂程度越来越高,以前是最低4位,现在都是8位起,而且必须有至少两种以上的字符,有些还要求必须有大小写字母等,这些都是增加暴力破解和猜测口令的难度。另外,攻击者不会通过手工输入用户名加口令登录系统来测试口令,都是通过工具软件实现自动化攻击,因此很多应用系统登录时引入多次错误后用户账户锁定机制。暴力破解中还存在一种叫“撞库”的攻击方法,就是攻击者使用从其他已破解的系统中拿到的用户口令数据,在要破解的目标系统上测试登录。这种方法的理论依据就是人们一般喜欢在不同的系统中使用相同或相近的用户及口令信息,以方便记忆。

二是传输及存储风险。口令如果是以明文形式传输和存储,那被泄露的机会是很高的。甚至可以这么说,没被泄露是人家还没有打你主意或根本不感兴趣。在现在的网络环境下,明文就等于不设防。在前文数字摘要也介绍过,系统存储的和登录时传递的应该是口令的摘要,而非口令本身。因为数字摘要是单向加密,攻击者拿到摘要也无法还原口令。

三是重放攻击。即使口令被加密了,攻击者仍可以截获某一用户成功登录系统时请求的数据,然后自己把数据再发送给应用的服务器,如果不做特殊处理,服务器仍会认为收到的数据是正常的,并把攻击者认为是前面那个“某一用户”。防范这种重放攻击行为的难度最大,一般有两种方式:第一个是在登录请求数据中加盐,如登录时间和随机数。服务器也建立相应的存储对比机制,如检查数据中的随机数是否之前登录使用过,如果没有说明是正常登录,并把随机数进行存储;如果使用过说明就是重放攻击。当然,这种方法只是增大了重放攻击得手的难度,并不能做到完全杜绝。另外一种方法则是采用客户端与服务器交互,类似于SSL握手协议那样,如果服务器收到客户端登录请求后,发送一个随机数到客户端,客户端再将此随机数编入登录请求数据中,服务器收到请求数据后,检查里面的随机数是否和自己发出的一致。这种方法可以做到每次请求的唯一性,杜绝了重放攻击的可能。但它加大了系统的复杂程度和服务器压力,而且不适用无状态的应用方式。话说回来,如果应用系统需要使用这么复杂的安全方案来防止重放攻击,那它选择口令验证这种方式本身是不合适的。

此外还有一种比较特殊的口令验证方式:令牌锁,也叫动态口令,这种方式网银用的比较多。应用系统为每位注册的用户发放一种叫令牌锁的硬件,这个硬件会根据某种算法定时(比如每分钟一次)生成一串字符口令(一般是48位),而服务端也会以同样的频率为同样的用户生成同样的字符口令。用户在验证身份的时候需要输入自己所持令牌上显示的口令,发送到服务端进行对比验证,以确定身份。显而易见,在口令生成的定时间隔内,重放攻击是可行的。

可见口令验证适用于安全要求不高的应用场景,如果应用对安全强度要求较高,可以采用生物特征识别和数字签名技术,这两种验证方式在前文都已介绍过。另外,手机短信验证码作为一种方便易行身份验证方式,在很多场合也被广泛使用。在实际应用中,可以将上述几种身份验证的方式结合,以达到一个比较好的应用效果。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多