首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

走进硬件时代的身份认证(二):账户安全需谨慎,动态口令勿泄露

这是德嘉说第021期文章

编者按:动态口令通常通过一种称为令牌的专用硬件来生成,即为硬件令牌。令牌的实现方式分为硬件令牌和软件令牌。目前大部分采用硬件令牌,如中国银行e-token、网易将军令、盛大密宝、QQ令牌等。硬件令牌是一种采用内置电源、存储器、密码计算芯片和显示屏的设备,具有使用便利、安全性高等特点。本文节选汪德嘉博士《身份危机》中硬件时代的硬件令牌章节,将为大家解析硬件令牌的安全性、发展现状及相关技术原理。

常用的口令认证机制大都是基于静态口令的,系统根据用户输入的口令和自己维护的口令表进行匹配来判断用户身份的合法性。静态口令认证机制是最简单的一种口令认证方法,但容易受到重放、网络窃听以及猜测攻击。针对静态口令认证机制在安全方面的脆弱性,研究口令认证的学者提出了动态口令认证技术以保护重要的网络系统资源。一次性动态口令认证机制是产生验证信息的时候中加入不定因素,使每次登录过程中网络传送的数据包都不同,以此来提高登录的安全性。不定因子可以是用户登录的时间或者用户登录的次数等。

硬件令牌发展现状

80年代初,贝尔实验室的Lamport博士提出了一种生成动态口令的方法。90年代初贝尔实验室开发出了较为成熟的动态口令系统S/KEY口令的生成主要是依靠一个口令生成器即令牌,令牌通常是独立于终端的、授权用户可随身携带的、信用片或钥匙链大小的器件,并且令牌本身可使用PIN来保护。动态口令认证系统通过使用令牌产生的无法猜测和复制的动态口令接入系统,保证了接入远程系统的终端用户确实为授权实体,有效地保护了信息系统的安全性,大大降低了非法访问的风险。

当前最主流的是基于时间同步的硬件令牌,它30至60秒变换一次动态口令,动态口令一次有效,它产生6位/8位动态数字。硬件令牌内置电源、密码生成芯片和显示屏。密码生成芯片运行专门的密码算法,根据当前时间或使用次数生成当前口令并显示在显示屏上。远程系统采用相同的算法计算当前的有效口令。用户使用时只需要将动态令牌上显示的当前口令输入客户端计算机,即可实现身份认证。由于每次使用的口令必须由令牌动态产生,而且只有合法用户才持有该硬件,所以只要通过口令验证就可以认为该用户的身份是可靠的。由于用户每次使用的口令都不相同,即使黑客截获了某一次登录时使用的口令,也无法利用这个口令来仿冒合法用户的身份。动态口令技术采用一次一密的方法,有效保证了用户身份的安全性。

硬件令牌优点

(1)动态性:令牌每次产生的口令都是不同的,不同时刻使用不同口令登录,而且每个口令都只在其产生的时间范围内有效。

(2)随机性:验证口令每次都是随机产生的,不可预测。

(3)一次性:每个验证口令使用过一次后就失效,不能重复使用。

(4)抗偷看窃听性:由于动态性和一次性的特点,即使某一个验证口令被人偷看或窃听了,也无法被再次使用。

(5)不可复制性:动态产生的验证口令与令牌是紧密相关的,不同的令牌产生不同的动态口令。令牌是密封的,而且卡内种子密钥数据一旦断电就会丢失。因此也就保证只有拥有令牌的用户才能使用,其他用户无法获得。

(6)方便性:令牌随身携带,验证口令显示在卡上,无需再为记忆负责的口令而烦恼。

(7)危险及时发现性:令牌随身携带,一旦遗失或失窃,就会及时发现、及时挂失,把损失降到最小。

(8)抗穷举攻击性:由于动态性的特点,如果一分钟内穷举不到,那么下一分钟就需要重新穷举,因此新的动态口令可能就在已经穷举过的口令中。另外还可以通过系统设置,限制一个时间段内用户尝试登录的次数,从而进一步降低穷举攻击的风险。

硬件令牌缺点

一次性口令尽管具有上述众多优点,但是如果用户终端与远程系统的时间或登录次数不能保持良好的同步,就可能发生授权用户无法登录的问题,并且终端用户每次登录时都需要输入一长串无规律的密码,使用起来非常不方便。

硬件令牌“认牌不认人”,虽然携带方便,但也容易丢失;缺少通信模块,认证服务器无法对其管理和更新数据。一旦失去同步,将无法使用;实施成本较高,这对于预算有限的中小企业来说,显然是不现实的。

硬件令牌安全性分析

当硬件令牌面对安全性攻击时,硬件令牌是通过何种技术抵挡攻击手段,从而保证身份认证安全,以下将详细介绍:

1、一次性口令生成算法破解攻击:

(1)从硬件中得到令牌密钥:由于令牌密钥固化在芯片中,如要读取其中的密钥,前提条件是已经获得令牌。如果令牌被非法用户所得,则合法用户应该已经注销了该令牌。因此,解密得到的是失效的令牌密钥。为此,需要为用户提供令牌注销服务。如果用户丢失了令牌,可使用令牌挂失服务,让系统停用该令牌。需要输入用户的用户名和其它一些该用户在注册时保留的个人信息;

(2)算法分析:生成动态口令的加密算法是RC5算法,因此对算法攻击的可能性取决于RC5算法的抗攻击强度。系统采用的加密密钥为16字节,目前的穷举密钥方法还不能进行有效的攻击,加密轮数为16轮(RSA对分组为64比特时推荐的加密轮数为12轮),经过测试得到加密时间约为几百毫秒,速度能够满足需求。对抗差分分析或线性分析也有足够的强度。

2、窃听攻击:因为网络上传输的是加密过并且经过转换的数字,所以在网络上窃听到这样的数字没有任何意义。

3、重放攻击:这是时间同步一次性口令系统的缺点。而事件同步一次性口令认证系统,每认证成功一次。要更新服务器端的计数器值。因此重发攻击对本系统是无效的。

4、攻击:因为挑战值是由在硬件令牌内部产生的,而不是由服务器产生的,所以不存在小数攻击的威胁。

5、假冒服务器攻击:即在用户认证数据包还未到达认证服务器之前,修改用户的认证数据包,使数据包的IP地址指向攻击者所在的地址。所有的一次性口令系统都存在这样的威胁,必须结合其它的方式来防止或告警。如利用SSL对传输过程进行加密。

6、口令猜测攻击:为了防止口令猜测攻击,用户认证出错超过3次,则停用该帐户,并通知用户。

动态口令技术原理

动态(一次)口令认证机制的主要原理是:在登录过程中加入不确定因素。使每次登录过程中摘录所得到的密码都不相同,以提高登录过程的安全性。每次的口令是3个因子按一定算法计算得到的结果,这3个因子分别是种子(seed)、迭代值(iteration)和秘密通行短语。它们之间应具备一种相同的“认证器件”,该认证器件实际上是某种算法的硬件或软件实现,它的作用是生成一次性口令。

一次性口令认证模式根据不确定因素的不同,分为以下几种模式:挑战应答模式、时间同步认证模式和事件同步认证模式,第一种使用的方法一般是通过客户输入的挑战码,令牌在内置芯片上会自动用算法生产一个随机数字串,有效期为一次性。第二种是与系统服务器时间挂钩的,通常是60秒生成一个口令,但其固有窗口与交易的过程无关,所以在实际应用上会与预想有一定的差距。第三种事物型令牌,工作机制是事务地顺序与统一钥匙解锁,由HASH函数来运行出一样的密钥。

动态口令认证模式

动态口令身份认证系统,是由客户端设备和认证系统同时拥有一个对称密钥算法,并且同时拥有对称密钥(客户端设备上的个人密钥是由认证系统发放的)。动态口令的变化,则是由于算法中变量的不同而不同。根据变量的不同,动态口令身份认证目前有基于时间同步方式的、基于事件同步方式的和基于挑战/应答(异步)方式三种技术模式。

(1)时间同步方式(TimeSynchronization)

所谓时间同步机制,就是以时间作为变量。每个用户都持有相应的时间同步令牌(Token),令牌内置时钟、种子密钥和加密算法。时间同步令牌根据当前时间和种子密钥每分钟动态生成一个一次性口令。用户需要访问系统时,将令牌生成的动态口令传送到认证服务器。服务器通过其种子密钥副本和当前时间计算出所期望的输出值,对用户进行验证。如果相匹配,则登录通过。时间同步方式的关键在于认证服务器和令牌的时钟要保持同步,这样在同一时钟内两者才能计算出相同的动态口令。该方式的实现还需要有时间同步令牌这类特殊硬件的支持。

(2)事件同步方式

又称为Lamport方式或哈希链(Hashchains)方式。事件同步机制是以事件(次数/序列数)作为变量。在初始化阶段选取一个口令PW和一个迭代数N,及一个单向散列函数F,计算Y=Fn(PW)(Fn()表示进行n次散列运算),并把Y和N的值存到服务器上。用户端计算Y'=Fn-1(PW)的值,再提交给服务器。服务器则计算Z=F(Y'),最后服务器将Z值同服务器上保存的Y进行比较。如果Z=Y,则验证成功,然后用Y'的值取代服务器上Y的值,同时N的值递减1。通过事件同步方式,用户每次登录到服务器端的口令都不相同。这种方案易于实现,且无须特殊硬件的支持。例如S/KEY口令序列认证方案就是一种基于事件同步方式的认证方案。

口令为一个单向的前后相关的序列,系统只用记录第N个口令。用户用第N-1个口令登录时,系统用单向算法算出第N个,令与自己保存的第N个口令匹配,以判断用户的合法性。由于N是有限的,用户登录N次后必须重新初始化口令序列。

(3)挑战/应答(异步)认证方式(Challenge/Response)

挑战/应答机制就是以挑战数作为变量。每个用户同样需要持有相应的挑战/应答令牌。令牌内置种子密钥和加密算法。用户在访问系统时,服务器随机生成一个挑战(Challenge)数据,并将挑战数据发送给用户,用户将收到的挑战数据手工输入到挑战/应答令牌中,挑战/应答令牌利用内置的种子密钥和加密算法计算出相应的应答(Response)数据。用户再将应答数据上传给服务器。服务器根据该用户存储的种子密钥和加密算法计算出相应的应答数据,再和用户上传的应答数进行比较来实施认证。该方式可以保证很高的安全性,是目前最可靠有效的认证方式。

动态口令身份认证模式比较

三种技术模式的认证系统端(即后台中心系统)结构非常类似,功能也基本相同,提供着同一级别的安全认证管理。但三种技术模式的客户端则有着较大的不同:

(1)时间同步机制:时间同步方式的难点也在时间同步上,由于以时间做变量,因此客户端设备必须具有时钟,从而对设备精度要求高,成本高,并且从技术上很难保证用户的时间令牌在时间上和认证服务器严格同步;同步机制复杂,降低认证效率,数据在网络上传输和处理存在一定的延迟,当时间误差超过允许值时,对正常用户的登录往往造成身份认证失败;耗电量大,使用寿命短;应用模式单一,很难支持双向认证及“数字签名”等应用需求。一般用于软件令牌。

(2)挑战/应答机制:由于挑战数是由认证系统提出,客户端设备将挑战数输入后产生应答数,因此应用模式可设计的较丰富,支持不同的应用需求,如:双向认证、数字签名等;但由于需要运算,因此客户端需要特殊硬件(挑战/应答令牌)的支持,设备必须具备运算功能,增加了该方式的实现成本;同时,用户需多次手工输入数据,易造成较多的输入失误;认证步骤复杂,对应用系统的改造工作量大;用户的身份ID直接在网络上明文传输,攻击者可很容易地截获它,留下了安全隐患;没有实现用户和服务器间的相互认证,不能抵抗来自服务器端的假冒攻击;挑战数据每次都由服务器随机生成,造成了服务器开销过大。

(3)事件同步机制,由于这一机制与应用逻辑相吻合(都是以次数为计算单位),因此客户端设备设计要求简单,甚至可不使用运算设备。但其安全性依赖于单向散列函数F,不宜在分布式的网络环境下使用。此外,使用事件同步方式进行身份认证用户,需要进行多次散列运算。而且由于迭代数是有限的,每隔一段时间还需要重新初始化系统,服务器的额外开销比较大。现在设计可为客户印制动态口令表,预先完成散列运算,降低成本;还可结合客户端设备的设计特点,可支持丰富的应用需求。

硬件令牌技术设计

1、算法描述

动态口令生成算法[1]借鉴了对称密码加密的方式。将令牌的序列号经系统密钥加密后写入用户令牌中,通过对计数器值的加密得到二进制一次性口令.再将其转化为十进制一次性口令OTP。计数器值c随机生成,为4个字节。令牌密钥可用固定的系统密钥对令牌序列号用AES加密后得到。系统密钥和令牌序列号均为16字节的字符串。令牌密钥生成后是固定的。每个令牌密钥uk既是随机数,在整个系统中又是唯一的,这样确保非法用户难以获得用户的uk。即使获得某个或少数令牌的密钥,对获得系统中其它用户的密钥毫无帮助。

图7-2 一次性口令生成算法示意图

一次性口令算法示意图(见图7-2),该算法有两个基本功能模块:(1)利用RC5算法,对计数器值用令牌密钥加密,输出为4字节的二进制串。RC5算法非常适合于硬件实现,加密速度非常快,实时性好,且对不同字长的处理器具有较好的适应性;(2)OTP_Conv()函数的作用时将二进制串转换为十进制串。

2、硬件令牌实现

图7-3 硬件令牌实现逻辑

硬件令牌的逻辑结构(见图7-3),芯片经过驱动接口与液晶屏、键盘、外部存储电路以及外接电源相连。基本工作过程简单描述如下:(1)按下电源开关按键,电源灯亮,硬件令牌开始工作;(2)按下口令生成按钮,在液晶屏上显示出一次性口令;(3)用户用这个一次性口令来登录;(4)按下电源开关按键,电源灯灭。硬件令牌结束工作。主函数程序首先调用sys_init()函数,用来初始化芯片的中断、端口、UART口和串行总线。接着在一个循环中,等待口令生成按钮被按下,如按键,调用OTP_result()函数,它完成主要的业务功能,得到一次性口令并显示在液晶屏上。

硬件协议设计

图7-4 硬件令牌认证协议描述

认证协议具体包括3个阶段:初始化阶段、口令生成阶段和认证阶段。硬件令牌认证协议描述(见图7-4),uk为令牌密钥,k为系统密钥,seq为令牌序列号。c为计数器值。

(1)认证服务器和令牌的初始化。认证服务器的初始化:计数器值和令牌序列号存入数据库。认证服务器在初始化的时候。生成一个服务器的主密钥,主密钥保存在智能卡中,由系统管理员使用。每次在启动认证服务器的时候,从智能卡中读入该主密钥,确保主密钥的安全。令牌的初始化:计数器值、令牌密钥及一次性口令生成及转换算法写入令牌中。

(2)令牌中一次性口令的生成。生成一次性口令:利用RC5算法对4字节计数器值c用令牌密钥uk进行加密,加密出的结果仍为4字节的二进制串。一次性口令的转换:将4字节的二进制串转换为用户可以接受长度的十进制数,作为一次性口令OTP。

(3)认证过程的实现。识别令牌所有者:用户提交用户名、PIN码和一次性口令,传输到认证服务器以后,认证服务器根据用户名从数据库中查到PIN码,与接收到的数据进行对比。如果一致,则证明令牌所有者是本人。如果不一致,则拒绝登录。0TP的比较:认证服务器首先将接收到的一次性口令进行转换,然后用AES算法对系统密钥和令牌序列号进行运算得到令牌密钥。再用令牌密钥对一次性口令进行解密。将解密得到的结果c1和认证服务器中的计数器值c进行比较。此时考虑以下3种情况:

(1)如果用户发送的计数器值大于认证服务器中的计数器值且小于一个偏移量,即c

(2)如果计数器值在硬件令牌中已经循环过一次,即c1

(3)如果用户触发事件的次数大于偏移量。即c1>c+offset,则系统记录当前的c1值,提示客户再次输入口令,对第二次提交的一次性口令按同样的方式进行解密后得到结果c2,将c2与c1进行比较,此时如果(c2=c1+1)或者c2=0同时c1=232-1,则二次认证通过,否则认证不通过。认证通过后,将c的值用c1更新;如果是二次认证通过,则将c的值用c2更新。以上3个条件都不符合的话,认证不通过。

结束:随着互联网的发展,账号密码体系的身份认证逐渐走进人们的生活,人们开始习惯于,每使用一个平台即需要注册一套账号密码,账号密码体系为身份认证体系中最简单便捷的一种身份认证方式,为了增强互联网身份认证的安全性,基于PKI体系以硬件/软件为载体的身份认证方式逐渐被人们所熟知,如:智能卡、硬件令牌、身份认证SDK/APP等。除了这里提到的这些身份认证方式外,U盾也是基于PKI体系以硬件为载体的身份认证方式,U盾是用于网上银行电子签名和数字认证的工具,它内置微型智能卡处理器,采用1024位非对称密钥算法对网上数据进行加密、解密和数字签名,确保网上交易的保密性、真实性、完整性和不可否认性。在下篇文章中将带大家了解U盾的发展历史及相关技术原理,敬请期待!

the end

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180315G15S1M00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券