基于口令的认证方式是较常用的一种技术。在最初阶段,用户首先在系统中注册自己的用户名和登录口令。系统将用户名和口令存储在内部数据库中,注意这个口令一般是长期有效的,因此也称为静态口令。当进行登录时,用户系统产生一个类似于时间戳的东西,把这个时间戳使用口令和固定的密码算法进行加密,连同用户名一同发送给业务平台,业务平台根据用户名查找用户口令进行解密,如果平台能恢复或接收到那个被加密的时间戳,则对解密结果进行比对,从而判断认证是否通过;如果业务平台不能获知被加密的时间戳,则解密后根据一定规则(如时间戳是否在有效范围内)判断认证是否通过。静态口令的应用案例随处可见,如本地登录Windows系统、网上博客、即时通信软件等。
基于静态口令的身份认证技术因其简单和低成本而得到了广泛的使用。但这种方式存在严重的安全问题, 安全性仅依赖于口令,口令一旦泄露,用户就可能被假冒。简单的口令很容易遭受到字典***、穷举***甚至暴力计算破解。特别地,一些业务平台没有正确实现使用口令的认证流程,让用户口令在公开网络上进行传输,认证方收到口令后,将其与系统中存储的用户口令进行比较,以确认对象是否为合法访问者。这种实现方式存在许多隐患,一旦记录用户信息的文件泄露,整个系统的用户账户信息连同对应的口令将完全泄露。网上发生的一系列网络用户信息被公开到网上的现象,反映的就是这种实现方式的弊病。另外,这种不科学的实现方式也存在口令在传输过程中被截获的安全隐患。随着网络应用的深入化和网络***手段的多样化,口令认证技术也不断发生变化,产生了各种各样的新技术。为了防止一些计算机进程模拟人自动登录,许多业务平台还增加了计算机难以识别的模糊图形。
基于口令的身份认证容易遭受如下安全***。
(1)字典***。***者可以把所有用户可能选取的密码列举出来生成一个文件,这样的文件被称为“字典”。当***者得到与密码有关的可验证信息后,就可以结合字典进行一系列的运算,来猜测用户可能的密码,并利用得到的信息来验证猜测的正确性。
(2)暴力破解。也称为“蛮力破解”或“穷举***”,是一种特殊的字典***。在暴力破解中所使用的字典是字符串的全集,对可能存在的所有组合进行猜测,直到得到正确的信息为止。
(3)键盘监听。按键记录软件以***方式植入到用户的计算机后,可以偷偷地记录下用户的每次按键动作,从而窃取用户输入的口令,并按预定的计划把收集到的信息通过电子邮件等方式发送出去。
(4)搭线窃听。通过嗅探网络、窃听网络通信数据来获取口令。目前,常见的Telnet、FTP、HTTP 等多种网络通信协议均用明文来传输口令,这意味着在客户端和服务器端之间传输的所有信息(包括明文密码和用户数据)都有可能被窃取。
(5)窥探。***者利用与用户接近的机会,安装监视设备或亲自窥探合法用户输入的账户和密码。窥探还包括在用户计算机中植入***。
(6)社会工程学(Social Engineering)。这是一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等设置心理陷阱进行诸如欺骗、伤害等手段,取得秘密信息的手法。
(7)垃圾搜索。***者通过搜索被***者的废弃物(如硬盘、U 盘、光盘等),得到与口令有关的信息。
为了尽量保证安全,在使用口令时通常需要注意以下几点:
(1)使用足够长的口令,不使用默认口令;
(2)不要使用结构简单的字母或数字,尽量增加密码的组合复杂度;
(3)避免在不同平台使用相同的口令,并且要定期更换口令。
为克服静态口令带来的种种安全隐患,动态口令认证逐渐成为口令认证的主流技术。顾名思义,动态口令是指用户每次登录系统的口令都不一样,每个口令只使用一次,因而也叫一次性口令(OTP , One Time Password),具有“一次一密”的特点,有效保证了用户身份的安全性。但是如果客户端与服务器端的时间或次数不能保持良好的同步,就可能发生无法使用的问题。OTP的原理是采用一类专门的算法(如单向散列函数变化)对用户口令和不确定性因子(如随机数)进行转换生成一个一次性口令,用户将一次性口令连同认证数据提交给服务器。服务器接收到请求后,利用同样的算法计算出结果与用户提交的数据对比,对比一致则通过认证;否则认证失败。通过这种方式,用户每次提交的口令都不一样,即使***者能够窃听网络并窃取登录信息,但由于***每次窃取的数据都只有一次有效,并且无法通过一次性口令反推出用户的口令,从而极大地提升了认证过程的安全性。 OTP 从技术上可以分为3种形式:“挑战—应答”、时间同步和事件同步。
动态口令的3种方式
(1)“挑战—应答”。“挑战—应答”认证机制中,通常用户携带一个相应的“挑战—应答”令牌。令牌内置种子密钥和加密算法。用户在访问系统时,服务器随机生成一个挑战并将挑战数发送给用户,用户将收到的挑战数手工输入到“挑战—应答”令牌中,“挑战—应答”令牌利用内置的种子密钥和加密算法计算出相应的应答数,将应答数上传给服务器,服务器根据存储的种子密钥副本和加密算法计算出相应的验证数,和用户上传的应答数进行比较来实施认证。不过,这种方式需要用户输入挑战数,容易造成输入失误,操作过程较为繁琐。近年来,通过手机短信实现OTP验证码用得比较广泛。是目前主流的OTP验证方式,目前被广泛用于交易系统以及安全要求较高的管理系统中。
(2)时间同步。原理是基于动态令牌和动态口令验证服务器的时间比对,基于时间同步的令牌,一般每60 s产生一个新口令,要求服务器能够十分精确地保持正确的时钟,同时对其令牌的晶振频率有严格的要求,这种技术对应的终端是硬件令牌。目前,大多数银行登录系统采用这种动态令牌登录的方式,用户持有一个硬件动态令牌,登录到系统时需要输入当前的动态口令以便后台实现验证。近年来,基于智能手机的软件动态令牌逐渐受到青睐,用户通过在智能手机上安装专门的客户端软件并由该软件产生动态口令完成登录、交易支付过程。
(3)事件同步。事件同步机制的动态口令原理是通过特定事件次序及相同的种子值作为输入,通过特定算法运算出相同的口令。事件动态口令是让用户的的密码按照使用的次数不断动态地发生变化。每次用户登录时(当作一个事件),用户按下事件同步令牌上的按键产生一个口令,与此同时系统也根据登录事件产生一个口令,两者一致则通过验证。与时钟同步的动态令牌不同的是,事件同步令牌不需要精准的时间同步,而是依靠登录事件保持与服务器的同步。因此,相比时间同步令牌,事件同步令牌适用于非常恶劣的环境中,即便是掉进水中也不会发生失步问题。
基于口令认证是目前使用最为广泛的身份认证技术,静态口令认证主要用于系统登录时的身份验证如门户网站、网上银行的登录。而在银行支付、网上银行转账、交易时一般采用静态口令+动态口令组合的方式进行认证。例如,在支付宝中交易时,支付宝系统要求用户同时输入支付口令及与该账户绑定的软件动态令牌。招商银行在进行低额度交易、转账时采用静态口令与短信动态验证码,这种双重保障的方式可以大大提高使用的安全性。