OTP动态令牌是一种新型的强身份认证的信息安全产品,由于其具有使用简单,携带方便,安全性高,美观时尚等优点,已经广泛应用在网银系统,电子办公系统,网络游戏,网络支付等众多领域。. i y2 y; C5 `( O
; g1 H6 l" `9 }: P U0 }% V7 F5 Z3 JOTP原理:OTP动态密码的产生主要是通过内置在硬件中不可导出的密钥与一个变化因子通过安全算法进行计算完成的。即:3 ~( Z9 Q" B) t# z
* t0 |0 E7 X* b
算法{密钥(也称为种子),动态因子(时间,事件,冲击响应……)}=OTP口令
& I) k4 k8 |: `6 b* I$ U: @, M5 [8 H
算法
6 c- K# R; J6 B$ S% r' x* u% o$ \3 s6 i3 U% E: c
可以看到算法有两个输入因子:密钥和动态因子。算法的好坏也决定了OTP的安全程序,一般算法应该考虑几点因素:
, j: T! j+ _4 j+ m) n1 b3 g4 p3 m1 w3 E8 P( F8 C
l 权威性:一个算法是需要经过长时间的研发积累,经过长期广泛的市场验证才能够走向成熟。真正成熟算法的研究需要几年,甚至十几年的时间。坚石诚信ET系列动态令牌采用OTP领域中公认的最具权威的OATH国际组织的安全算法。算法的安全性得到了有效保障。自定义算法未被广泛验证和认可,安全性是一个未知数。
' q( k0 m2 I) z* ?6 E X" F5 K3 {$ ] [2 x1 Y$ p8 B
l 安全性:OTP的算法一般不采用对称加解密算法,如:3DES,AES等。而采用单向散列算法。原因是这样的,拿时间型令牌说明,密钥+时间(动态因子)=OTP,时间是知道的,每分钟产生的动态口令能通过硬件知道,3DES算法也是公开的,这样就有反推出密钥的可能性。而单向散列算法,即使知道通算法计算的结果OTP,由于算法保证单向,那么从根本上就断绝了反推密钥的途径。
5 U. Q7 K+ j' q1 O! O9 z" e3 j
0 [9 a2 X' V1 l. x8 u' Fl 效率/耗电:OATH算法是国际OTP领域中公认的安全算法。坚石诚信ET系列动态令牌的OATH算法单次运行时间<1ms,用时极短,耗电极少。保证电池能够正常使用3年以上。按键开关显示OTP设计,更能保证电池寿命可长达5年以上。
( A! F g1 A1 L6 m) K* [0 m
6 @& B% E6 S! F% G9 y密钥 ( x/ `5 ?4 M- ?* C: `2 c
0 h- w. x4 b/ N
l 唯一性:每个动态令牌中的密钥都是唯一且不相同的,每个动态令牌与不同的用户绑定,那么该令牌中的密钥就代表这个用户的身份。坚石诚信ET系列OTP动态令牌产品的密钥符合OATH组织规定的160位(20字节)长度。. n2 k1 E: B/ y0 p. q1 M r
* z- y# q8 n: S2 g! e) F' }
l 不可复制:动态令牌硬件保证密钥不可导出,断电即毁。动态口令的计算在硬件内部完成。保证了密钥的安全。3 ^* f t. b6 H% R T6 u4 Z
) M( ~3 ]# P5 n9 {8 vl 产生/生产:两种模式保证了OTP密钥的唯一性:软实现(符合FIPS140-2标准),硬实现(使用国密办认证的硬件加密卡)。生产时密钥以密文的方式烧入到智能卡中(智能卡由专门的授权的人员负责,读卡器、通讯协议、COS都是自主研发,不公开),使用工控机烧入动态令牌密钥时,智能卡的COS会将烧入成功的密钥删除,所有的密钥烧录成功完成后,智能卡中就没有密钥了。
3 {, D2 @, y1 u7 R- H9 j# d4 s, M4 \ p3 Z9 C' |
5 D1 ^& F2 M! ?$ W6 X b动态因子
: |* E& i' _+ I$ X5 k( c! s/ e& c' ]7 R
动态因子可以有多种选择,目前较多使用的有如下3种:/ Q' L) ^8 o- Z0 r% P
* u2 _7 `7 t, e' J- F时间型:以时间为变化因子
. f* ?) O* c( J$ z事件型:以每次触发计算动态口令的计算事件行为为变化因子3 i9 y) V# [8 Q. U( I) L, d1 M
冲击响应:以服务器产生的随机数为变化因子7 f" i$ ~) }7 a9 t9 v5 D* {! p
. ]% M; v4 L% _! Q% F- Z( {6 c9 M
目前国内以时间型最为流行。4 u( a* y+ N& e) S, k
: d/ |+ q, Z1 W! D: H6 xl 精确性:动态令牌硬件中的时钟芯片的精确性保证OTP计算的准确性。当时钟芯片中的时间与计算机服务器的时间都符合标准时间,才能保证OTP认证系统的流畅运行。坚石诚信ET系列动态令牌对每只出厂的动态令牌中的时钟芯片及晶振都做了精确调整,保证每年内时间误差不超过2分钟。
9 v) b" M7 j( j+ [5 d" w. M
) q" h5 W* X; b. Z- ?, ]l 认证窗口:认证窗口是用于调整硬件中时钟芯片的时间与计算机服务器时间偏差的一种手段。一般都是在计算机服务器中按照窗口范围计算多个动态口令,硬件产生的动态口令在这个范围内就视为认证通过。
+ Z, t% U+ `: Q3 I5 q z2 B& q9 |. b+ Z M- J6 W( P L
OTP动态令牌与应用系统集成:3 r6 l6 a# ^" ^( D$ X
提起动态令牌,大家都会想到认证服务器,而这个认证服务器又怎么应用到实际的应用系统中呢?在这里做一个分析和说明,帮助广大用户能够更好的使用OTP动态令牌这种身份认证产品。7 n0 n9 K- n& p( p
) J$ h2 I8 W% T$ L/ a( @* a从上述的OTP原理部分中可以看出,服务器端是在一个范围内计算出多个OTP,然后检验客户端硬件产生的OTP口令是否在这个范围内。那么服务器端只要能够完成这样的验证就可以了。实际上所有厂家的OTP认证服务器都是建立在这个认证基础上的。即认证接口是服务器的本质和核心。; e9 k L5 ]3 e& h0 l- s! Z: B
7 h: G3 ]8 w! k% Q! v9 \" j9 l
而OTP厂商提供的服务器软件无非就是在这个认证接口上增加其他的功能,如:数据库表定义、令牌管理工具、Radius支持、各种认证代理插件等,但最终都会归到这个认证接口完成最终的认证。另外,在某些情况下,OTP厂商也会将认证服务器软件安装到硬件服务器上,将硬件设备一同销售给客户。
( o& n- L) L5 }, H0 I) F
2 q5 @5 k _. C# s) W, R# w# j从上面的分析可以看出,可以有3种模式将OTP系统集成到应用系统中,即:核心接口开发模式、服务器接口开发模式和服务器代理模式。下面就来说明一下它们的特点。9 A* }" w; _ Y# E
) h1 `% ~3 f- ]7 P$ M8 w核心接口开发模式 2 r$ E6 h# b4 @; o! C, x9 p
0 c5 @& U, w( n- ~+ g% Z# t1 e9 a2 w6 w
该模式是最为灵活,集成最为方便简单,与应用最为紧密结合的模式。由于与关联少,也是目前大型项目中常采用的模式(如:中国银行,同花顺证券系统,上海期货交易所等都是采用接口形式的开发)。该模式由OTP厂商提供认证和同步两个API接口供系统集成调用。接口不与数据库连接,应用系统使用系统中原有的数据库连接方式,将密钥与调整值从数据取出带入到接口中进行认证,认证成功后,将新的调整值写回到数据库中。数据库中用户存储令牌信息的数据表可以根据应用系统实际情况进行设计,方便灵活。
. i/ J/ x2 K" n; p# Q+ }- b集成过程如下:
8 x$ v2 U& @; @- D. M
\, j- z% m& J6 k% D(1) 在数据库中增加一张用于存储OTP动态令牌信息的数据表。里面至少存储以下字段:“令牌号”(背面条形码)、“密钥”(authkey)、“成功值”(currsucc)、“漂移值”(currdft)。其中令牌号和密钥都可以用字符串形式,成功值和漂移值接口中要用到uint64(BigInteger)和int类型。4 W/ D# n( h3 D, o. O7 M2 `/ n
# u9 T& |. S. |1 p! _6 L2 z2 b(2)
" s8 ?+ Y' Y. |在系统的用户表中增加一个存“令牌号”的字段,存储与用户绑定的令牌号。
" {- {( o$ _+ g
: a, `9 E- T( k/ F用户在登录时,输入用户名和OTP传给服务器端。服务器通过用户名到用户表中得到“令牌号”,再通过这个“令牌号”到令牌表中得到“密钥”,“成功值”和“漂移值”,带入到接口中进行认证或同步,认证或同步成功后将返回的值写回数据库中保存。认证或同步失败时,不要将这两个值写回数据库。
! a8 B; [0 _ ~' r- [: J
+ J4 f+ a' H5 j! c' _( ]服务器接口开发模式 ' S8 Y2 g2 c% _1 y u, L
* @& E& ]4 c$ R* I这种模式下,需要安装OTP厂商提供的服务器软件,安装OTP服务器软件的机器就是OTP认证服务器。可以在服务器端调用服务器接口,或者在web服务器机器上调用代理接口将OTP集成到应用系统中。
Q, j5 Z' O, b2 L7 D- z' u" ?* a+ ^( l4 `% D7 }
服务器接口是指应用系统直接调用这个接口,接口直接调用数据库取得需要的数据,完成认证,如下所示:
& w4 |7 j& U0 s
! T4 S5 A: K; d: GOTP传给 读/写认证信息 2 l, N7 _( t! u0 }/ g
客户端―――――>应用系统后台认证模块―>调用服务器接口 <―――――――>数据库
' H& }8 Y0 U, A6 ~& b( W6 Y% \1 F4 F
代理接口是指通过认证代理,认证代理再将认证信息传给服务器进行认证,如下所示:) U7 @9 u& T3 l% g5 h8 T
% U) j3 ?% ^& ?7 v8 U6 W9 LOTP传给 读/写认证信息7 h H% o8 t+ M; \
客户端―――――>认证代理接口->认证服务器 <―――――――>数据库 " J; t6 L8 p5 D; e7 E
9 O. O" y8 c1 b/ N" J t4 v" p
综上,可以认为认证服务器是在服务器接口基础上封装好的有图形操作界面的软件。代理接口是在使用到负载均衡时会采用的手段,一个代理会根据优先级设置查找多个认证服务器,一个服务器也可以按照优先级设置接收多个认证代理的请求。坚石诚信的OTP认证服务器软件采用了多种优化措施,以及多进程/多线程的高效处理,每秒钟能够完成3300次以上的认证。就目前实际情况而言,不超过千万级别的用户,都是没有必要做负载均衡的。
l6 e4 O: g3 U
. F4 k3 v4 k( Q, N$ b' _( d; C在这种模式下,需要数据库中按照OTP厂商定义的表结构创建数据库表,在调用接口中的API函数前,都需要先与数据库进行连接。集成过程如下:: ^6 F' \1 M; `8 [( T
, Y! q6 w+ B( H$ _8 I(1) 安装OTP认证服务器软件,包括OTP认证服务和OTP管理工具。
- i d. s1 X0 k9 L(2) 在OTP管理工具中创建数据库及符合OTP厂商定义的数据库表。
* t' L' s4 ^9 g% [(3) 在应用系统中调用服务器接口API或者代理接口API完成认证。
9 x' ^2 N! T: y" v4 M; X% @+ {* _9 {/ k) ?- R6 L
服务器代理模式 ) M2 L; k8 D& X
+ f, N+ u% t* \* V. O2 v+ f该模式主要是针对一些具体应用而设计,不需要进行API接口开发就可以完成集成。由于其关联的东西较多,且软件界面都会有OTP厂商的标识,相对而言灵活性较差。这些具体应用一般包括:IIS/Apache网站保护、VPN Radius登录保护、Windows登录保护、Linux登录保护、Citrix远程登录保护、OWA登录保护等。集成过程如下:
: a+ m% R9 x6 m# N- l: \0 {) P; w# i; L, ]6 c4 _
(1) 安装OTP认证服务器软件,包括OTP认证服务和OTP管理工具。
, a0 B/ X8 G4 t, A(2) 根据不同的应用,安装对应的认证代理安装包。
( R8 w- x9 w4 Z9 v(3) 在应用中配置OTP认证保护。1 x. j: [, p. x0 ^) t" o
* g: e5 X$ Q8 @( f/ }4 r" p }
|