基于MD5算法的动态口令技术的软件实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二层加密使用 M D 5加密算法, 由于 M D 5算法的理论不 可逆性决定了破坏者无法根据密文推出明文, 这样保证了动态 口令的安全性。此外 M D 5加密算法把任意长度( 小于 2的 6 4 次方 B i t ) 的信息通过加密产生 1 2 8位信息摘要( 固定位数) , 而 动态口令的位数也是固定的( 一般为 6位或 8位) , 故M D 5算法 很适合应用在动态口令技术的实现中。
4 ㊀结㊀论
本文阐述了用双密钥和 M D 5算法对用户 I D和当前时间进 行两层加密, 从而产生动态口令的编程技术。该方法在保持硬 件实现动态口令优点的同时, 提出了用软件实现动态口令技术 的整套方案。本方案已经成功应用于温州医学院计算机实验室 的计算机专业学生身份认证系统, 结果表明本方案完全能够满 足一般性认证系统的需要, 而且可以直接在现有基础上开发, 无 需任何额外的硬件成本。本方案也非常适用于各类中小型商务 网站的身份认证系统。
A b s t r a c t ㊀㊀T h ep r i n c i p l eo f d y n a m i cp a s s w o r dt e c h n o l o g yi sd e s c r i b e di nd e t a i l s . As o f t w a r em e t h o df o r i m p l e m e n t i n gd y n a m i cp a s s w o r d t e c h n o l o g y b a s e do nM D 5e n c r y p t a l g o r i t h mi s s t u d i e d ,a n di t s a c t u a l r e s u l t s a r e d e m o n s t r a t e dt h r o u g he x a m p l e s . C e r t a i nh e l pi s o f f e r e dt o t h e d e v e l o p m e n t o f d y n a m i cp a s s w o r dt e c h n o l o g yf o r E C o m m e r c ew e b s i t e s . K e y w o r d s ㊀㊀D y n a m i cp a s s w o r dt e c h n o l o g y ㊀M D 5a l g o r i t h m ㊀E n c r y p t
叶㊀晰㊀叶依如
( 温州医学院计算机系㊀浙江 温州 3 2 5 0 3 5 )
摘㊀要㊀㊀描述动态口令技术的基本原理, 研究一种基于 M D 5加密算法的动态口令技术的软件实现方法, 并通过实例演示了该方 法的实际效果。对于开发各类电子商务网站的动态口令技术可以提供一定的帮助。 关键词㊀㊀动态口令技术㊀M D 5算法㊀加密
1 ㊀动态口令技术的基本原理
动态口令又称为一次性口令 O T P ( O n e T i m e P a s s w o r d ), 其 特点是: 用户根据服务商提供的动态口令令牌的显示数字来输 入动态口令, 而且每个登录服务器的口令只使用一次, 窃听者无 法用窃听到的登录口令来做下一次登录, 同时利用单向散列函 数( 如M D 5算法等) 的不可逆性, 防止窃听者从窃听到的登录 口令推出下一次登录口令。 选取动态口令认证这种方案的商用系统采用的是静态密码 与令牌相结合的方式进行身份鉴别。这种方式在检查用户静态 密码( 知道什么)的同时, 验证用户是否持有正确的令牌( 拥有 什么)。令牌常用的有两种方式, 一种是基于时间同步机制, 另一种是基于挑战应答机制。采用时间同步机制的令牌,每分 钟会提供给用户一个不同的口令,与验证方同步获得验证, 本 例实现的动态口令也是基于时间同步机制的。
第2 6卷第 1 1期㊀㊀㊀ 2 0 0 9年 1 1月㊀㊀
计算机应用与软件 C o m p u t e r A p p l i c a t i o n s a n dS o f t w a r e
V o l 2 6N o . 1 1 0 9 N o v . 2 0
基于 MD 5算法的动态口令技术的软件实现
图2 ㊀客户端文件运行效果图
( 4 )客户在网站输入用户 I D 、 静态密码和动态口令后, 如 果正确即登录成功。
3 . 4 ㊀碰撞问题
3 ㊀主要关键技术解决和实施效果
3 . 1 ㊀时间的同步问题
基于时间同步机制的动态口令系统一般每 6 0秒产生一个 新口令。如果用类似动态口令令牌的硬件实现方法, 由于其同 步的基础是国际标准时间, 故对令牌的晶振频率有严格的要求, 以降低系统失去同步的几率。但随着时间的流逝, 误差总是会 出现的, 当服务器和令牌的时间偏移超过一定值时, 则系统验证 会出错。而用软件实现动态技术则没有这方面的问题, 只要定 期通过校时网站( 如: t i m e . w i n d o w s . c o m 等) 校准一下服务器和 客户端的系统时间即可解决同步的问题。
参 考 文 献
[ 1] 吴佩萱. 基于时间同步机制的动态密码认证系统[ J ] . 长江大学学 报: 自然版, 2 0 0 5 , 2 ( 7 ) : 2 5 6 2 5 7 . [2] 李传目. 一次性口令技术的研究[ J ] . 集美大学学报: 自然科学版, 2 0 0 3 , 8 ( 2 ) : 1 6 0 1 6 3 . [3] 胡天麟, 刘嘉勇, 陈芳, 等. 基于 M D 5的 O T P认证系统的原理及实 现[ J ] . 信息技术, 2 0 0 5 ( 9 ) : 1 4 0 1 4 2 . [4] 动态密码基 础、 原 理. 2 0 0 9-0 1-1 6 . h t t p : / / h i . b a i d u . c o m/ g e g o / b l o g / i t e m/ b a 5 3 c 6 1 1 5 2 7 f e 2 1 7 b 8 1 2 7 b 8 9 . h t m l .
S O F T WA R EI MP L E ME N T A T I O NO FD Y N A MI CP A S S WO R DT E C H N O L O G Y B A S E DO NMD 5A L G O R I T H M
Y eX i ㊀Y eY i r u
( D e p a r t m e n t o f C o m p u t e r ,W e n z h o uM e d i c a l C o l l e g e ,W e n z h o u 3 2 5 0 3 5 , Z h e j i a n g ,C h i n a )
收稿日期: 2 0 0 9- 0 2- 0 1 。叶晰, 讲师, 主研领域: 信息安全, 计算机 网络, 系统分析与设计。 图1 ㊀动态口令的产生和验证流程图
客户端软件( 即相当于硬件实现中的动态口令令牌) 保存 有用户密钥和用户 I D号, 软件中的时钟计数器 T每隔 6 0秒自 动用密钥 K 和K 同时加密用户 I D和当前时间 t ( 精确到分 A 1 A 2 钟) , 然后我们用 M D 5算法对加密结果进行单向散列加密( 即 第二层加密) , 产生两个等长的 3 2位十六进制摘要。最后我们
2 ㊀动态口令的软件实现过程
2 . 1 ㊀客户端动态口令的产生
动态口令的产生和验证过程如图 1所示。为了方便描述, 对图中采用的符号做如下定义: A为用户; S 为认证服务器;I D A 为 A的标识; K 为用户密钥 1 ;K 为用户密钥 2 ; P A 1 A 2 A 为动态口 令; T为时钟计时器。
2 . 2 ㊀动态口令的验证
验证服务器收到用户输入的用户 I D 、 静态密码和动态口令 后, 先验证用户 I D和静态密码是否正确。如正确则在数据库中 读出该用户的密钥 K 和K 。这两个密钥在发布动态口令客 A 1 A 2 户端软件时应该已确定, 并存放在验证服务器端数据库内。使 用密钥 K 和K 对用户 I D和当前时间 t 进行同客户端相同的 A 1 A 2 处理, 最终产生验证服务器端的动态口令, 并与客户端产生的动 态口令进行比较, 一致则通过验证。
㊀ ㊀ 2 8 2 ㊀㊀㊀
计算机应用与软件
2 0 0 9年
把两个摘要分别分割为 8块, 进行异或运算并取每块最右边位 得到最终的 8位动态口令。
( 3 )网站根据该用户 I D和其相应的密钥 K 和K 生成一 A 1 A 2 个可执行文件( E X E文件) , 并发放给该客户。当客户登录网站 时, 必须先运行该文件得到该时段( 精确到分钟) 的动态口令。 客户端文件运行效果如图 2所示。
3 . 2 ㊀主要加密过程
用密钥 K 和K 对用户 I D和当前时间 t 进行第一层加密, A 1 A 2 其部分 V B代码如下:
F o r I=1T oL e n ( s t r S o u r c e ) ㊀ᶄ 从待加( 解) 密字符串中取出一个字符 ㊀s t r C h a r 1 =M i d ( s t r S o u r c e ,I , 1 ) ㊀ᶄ 取字符的低字节和 K e y 1进行异或运算 ㊀b L o w D a t a= A s c B ( M i d B ( s t r C h a r 1 , 1 , 1 ) )X o r K e y 1 ㊀ᶄ 取字符的高字节和 K e y 2进行异或运算 ㊀b H i g D a t a= A s c B ( M i d B ( s t r C h a r 1 , 2 , 1 ) )X o r K e y 2 ㊀ᶄ 将运算后的数据合成新的字符 ㊀s t r S t r i n g= s t r S t r i n g&C h r B ( b L o w D a t a )&C h r B ( b H i g D a t a ) N e x t I F o r K =1T oL e n ( s t r S t r i n g ) ㊀s t r C h a r 2 =M i d ( s t r S t r i n g ,K , 1 ) ㊀s t r E n c r y p t= s t r E n c r y p t &A s c B ( s t r C h a r 2 ) N e x t K
0 ㊀引㊀言
目前网络安全越来越受到重视, 银行和各种大型电子商务 网站都采用了提供免费的动态口令令牌或动态口令卡来加强网 络身份认证系统的安全性。但对于中小型的电子商务网站来 讲, 提供硬件的动态口令令牌来加强安全性成本太高, 显然是不 现实的。开发一种简单易行的软件实现动态口令技术的方法能 解决中小型电子商务网站的燃眉之急。动态口令技术的软件实 现无需购买任何硬件, 只需一次编程就可解决所有问题。
从上面的数据我们可以看到: 动态口令软件连续运行 1 1天 可能会出现一次碰撞( 即出现一次相同的动态口令) , 连续运行 5 3天则大约出现 2 9次碰撞, 连续运行半年则会出现大约 3 5 0 次碰撞, 总体碰撞率不高, 而且实际应用中我们只是在需要登录 时才会运行一下客户端文件并得到该时刻的动态口令, 得到动 态口令后即关闭程序, 而不会连续运行Βιβλιοθήκη Baidu序。
不同的明文如果经过加密后密文是一样的,则我们称这种 现象为碰撞。由于动态口令位数固定, 所以碰撞是在所难免的。 本程序实际应用中动态口令每分钟变一次, 在测试中为了提高 效率, 我们让动态口令每秒变一次, 其碰撞数据如表 1所示。
表1 ㊀碰撞数据表 用户 I D 1 9 7 6 0 1 3 0 1 9 7 6 0 1 3 0 1 9 7 6 0 1 3 0 1 9 7 6 0 1 3 0 y e x i 2 0 0 0 J a m e s X i Y e K e y 1 1 2 1 2 1 2 2 1 2 2 1 2 2 1 2 2 K e y 2 2 5 2 5 2 5 5 2 5 5 2 5 5 2 5 5 口令数 1 5 7 8 6 7 5 8 7 5 7 5 8 7 5 2 6 1 6 9 8 2 6 1 6 9 7 2 6 1 7 0 0 碰撞次数 1 2 9 2 6 3 5 6 3 2 7 3 5 8 碰撞率 0 . 0 0 6 3 % 0 . 0 3 8 2 % 0 . 0 3 4 3 % 0 . 1 3 6 0 % 0 . 1 2 5 0 % 0 . 1 3 6 8 %
相关文档
最新文档