• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 高中学习 > 正文

    均匀分组消序原理 基于MD5分组变序的远程教育系统动态身份认证

    时间:2019-01-14 03:38:24 来源:雅意学习网 本文已影响 雅意学习网手机站

      【摘要】针对现代远程教育系统采用的基于MD5的用户名/密码的静态身份认证技术在应用中的不足,提出了一种基于MD5分组变序的动态身份认证技术,并用概率统计的方法对该技术的安全性进行了验证,最后给出了实验分析。
      【关键词】身份认证;MD5算法;分组变序;碰撞;安全
      【中图分类号】G420 【文献标识码】A 【论文编号】1009―8097(2010)09―0119―04
      
      一 引言
      
      现代远程教育系统是以计算机软硬件技术为基础,通过互联网向处于不同地域的用户提供教育服务的信息系统。远程用户在获得教育服务之前,通常需要通过系统的身份认证。目前来讲,最常用的身份认证技术是基于用户名/密码的静态认证技术。该身份认证技术起源于上个世纪70年代初[1],认证系统通过登记、注册等方式事先保存合法用户的用户名和密码;认证时,系统将用户输入的用户名和密码与对应合法用户的用户名和密码进行匹配,以此来验证用户身份的合法性。在这种认证技术中,用户名和密码均以明文的方式进行传输和存储,无法抵挡重放攻击[2]。一种解决办法是对密码加密后再传输和存储,只要加密算法够可靠,就可以有效地防止重放攻击。1992年,RIVEST R[3]提出了MD5(Message Digest 5)算法,该算法从理论上讲具有不可逆性、离散型和唯一性[4],因此基于用户名/密码的静态身份认证技术在应用了MD5算法后,其安全性可以得到较大的增强。然而王小云[5]等人在2004年8月召开的国际密码学会议(Crypto 2004)上做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告,给出了一种高效的MD5碰撞[6]方法,可以在短时间内找到多个碰撞,这意味着如果攻击者窃取到密文并且展开碰撞攻击,则将有可能绕过认证,这又使得重放攻击变为可能。
      针对这个问题,本文提出了一种基于MD5分组变序的动态身份认证技术,该技术通过随机数,对原MD5密文采用分组变序的方法生成伪MD5密文存储到数据库中,并且每次验证成功后,再次生成随机数重新分组变序,产生另一个伪MD5密文替换原伪MD5密文,以此实现了用户密码明文不变,但数据库中密文随认证次数不断变化的功能,进一步增强基于MD5的静态身份认证技术的安全性,从而更安全地保护远程教育系统中的教育资源以及用户的信息。
      
      二 基于MD5分组变序的动态身份认证技术
      
      传统的基于MD5用户名/密码的静态身份认证技术是将用户的密码进行MD5加密,再发送到服务器端进行存储,这种方式的安全性主要取决于MD5算法本身。除了向用户骗取密码以外,要获取真正的密码,只有通过对密文碰撞来获得,然而从理论上来讲,如果要对一个MD5密文使用穷举法进行碰撞破解,用一台运算速度为10亿次/秒的超级计算机,需要 年[6],即使使用效率较高的生日攻击法[5],同样的运算速度,仍需要58年的时间[6],而王小云等人提出的方法则可以在数小时之内找到一对碰撞[7],因此传统的基于MD5用户名/密码的静态身份认证技术已经不再安全。进一步分析,如果碰撞的对象并不是MD5值,那一切针对MD5的碰撞方法将不起作用。本文提出的基于MD5分组变序的动态身份认证技术的核心即在于动态地生成伪MD5密文,使针对MD5值的碰撞攻击无效,从而在原基于MD5的身份认证技术的基础上,进一步增强其安全性。
      该身份认证技术的体系结构如图1所示。
      从图中可以看出,所有关于用户密码的加密处理全部在客户端完成,在网络中仅传输用户名、密钥和加密后的伪MD5密文,而服务器端则为一个数据库,仅起到存储这些信息的功能,这么做既保证了网络传输的安全性,对用户的密码又做到了消息级的加密[8]。
      客户端由密钥生成、MD5加密、密文数组生成、伪MD5密文生成、伪MD5密文分割、密文数组比较六个模块组成,这几个模块的不同组合构成了用户注册和认证过程。
      1 用户注册阶段
      用户注册主要流程如图2所示。
      步骤1:用户输入用户名和密码,客户端首先对密码进行MD5加密操作,得到32位长度的MD5字符串,记为 ;同时执行密钥生成程序,生成随机数,记为 , ,且 为32的因数。
      步骤2:执行MD5密文数组生成程序,将 按密钥 的值为长度进行分组,将分组后的字符串存入字符串数组中,该字串符数组记为 。
      步骤3:执行伪MD5密文生成程序,随机变换 中元素的顺序,依次把值从变序后的 中取出,生成新字符串,该字符串即伪MD5密文,记为 。
      步骤4:客户端将用户名、密钥和伪MD5密文 发送至服务端,并存储到数据库中。
      从注册的过程可以看出,该认证技术的动态性体现在密钥 的随机性上, 的不同使密文 分组的位置不同,从而使得最终得到的密文 也是不同的。然而生成的伪MD5字符串 ,来源于标准的MD5字符串,这就为认证提供了依据,但同时又不是MD5字符串,因此任何针对MD5算法进行的破解将不起作用。
      2 用户认证阶段
      用户认证主要流程如图3所示。
      步骤1:待验证用户输入用户名和密码,客户端依然执行MD5程序,将用户输入的密码进行MD5加密,生成待验证密文,记为 ,同时将用户名发送至服务器端。
      步骤2:服务器端从数据库中查询是否存在该用户名,不存在则认证失败,存在则取出数据库中的伪MD5密文 和密钥 ,一起传输至客户端。
      步骤3:用密钥 对待验证的MD5字符串 执行客户端MD5密文数组生成程序,得到待验证的字符串数组中,该数组记为 ,同时执行伪MD5密文分割程序,以 为每组长度对 进行分组,每 位后加入“,”生成分割后的伪MD5字符串,记为 。
      步骤4:执行密文数组比较程序,依次取出数组 中的值与 进行比较,如果 的每个元素都包含在 中,则通过认证,如果有一个不包含,则认证失败。判断的根据在于 本身只是对MD5字符串做了位置上的改变,如果待认证的口令正确,那么 中的每个元素都应该包含在 中的,但只要数组中有一个元素不包含在密文字符串中,就可以判断认证失败。
      步骤5:如果验证通过,则对 再重新执行一次分组变序操作,用得到的新的伪MD5密文和新密钥替换原有的密文与密钥,一起存入数据库。
      需要说明的是,本文给出的匹配方法并没有直接把数据库中的 和 的元素进行包含比较,而是以“,”分割后再比较,原因在于密文的长度为32,而数组中值的长度小于或等于32,那么不排除数组的值交叉包含于密文中的情况,假设密文是c4ca4238a0b923820dcc509a6f75849b,密钥为16,则数组 的长度为2,再假设数组中的两个值分别为a0b923820dcc509a,20dcc509a6f75849b,虽然这两个值也都包含在密文中,但a0b923820dcc509a处于密文(c4ca4238-a0b923820dcc509a-6f75849b)的中间位置,而20dcc509a6f75849b处于密文(c4ca4238a0b9238-20dcc509a6f 75849b)的后半段,这种情况的出现有可能使匹配算法失效,反而造成认证的不精确。事实上标准的MD5字符串是多个16进制字符串的组合,而“,”是不可能出现在16进制字符串中的,采用“,”分组后再比较则可以有效地避免这种情况。
      三 安全性验证
    本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文   以上认证技术是对单个MD5值进行分组变序,根据不同的 ,除去MD5值本身,每个MD5值能演变出 -1个伪MD5值,记为下式:
      (1)
      由于随机数的存在,要还原得到真正的MD5值,只能通过暴力破解法来实现,对于单个MD5值,暴力破解的运算量为 ,同样使用一台运算量为10亿次/秒的超级计算机,需要约 年。
      由于伪MD5密文和密钥K均在网络中传输,如果攻击者知道该算法,利用密钥K进行攻击,那么最终密文的安全性取决于变换的顺序种类。变换的顺序种类由密钥K确定,K越小,顺序种类越多,破解的运算量越大。
      对于单个MD5值,当 时, ,即不存在伪MD5值, 不可取。
      当 时, ,暴力破解的运算量仅为1,很容易还原得到原始MD5值,因此密钥为16时,已经存在很大的安全隐患了。
      当 时, ,暴力破解的运算量为23。
      当 时, ,暴力破解的运算量为40319。
      当 时, ,同样使用一台运算量为10亿次/秒的超级计算机,需要约663457年。
      当 时,暴力破解的运算量更是巨大的。
      更进一步研究,该认证技术同样适合对多个MD5值的组合进行分组变序,假设 为由 个 组成的长度为 的字符串,其中 。这种情况下,暴力破解的运算量为 ,这样的运算量更是天文数字。而在知道该认证算法的情况下,暴力破解的运算量为 , , 可取的值更多,运算量更大。
      对于应用该认证技术的系统来讲,运算量仅仅取决于变序算法的复杂度,本文采取经典的洗牌算法[9]作为变序算法,以随机数 作为变序的基础,以保证每次交换顺序后的结果与交换之前的不同,算法复杂度仅为数组的长度,即 。
      实际应用时,当 , 时,最终生成的密文的安全性将是相当高的。而当 时,可选择的 更多,安全性则更高,而同时对认证系统的运算量并不会有太大增加。
      四 实验分析
      本实验选择浏览器/服务器作为运行模式,选择JavaScript作为客户端注册、认证程序编写语言,保证运算均在浏览器端完成,选择Java作为服务器端数据库访问语言,选择MySQL作为测试数据库。假设密码明文为888888,则MD5值为21218CCA77804D2BA1922C33E0151105,对比最终密文、密钥做8次运算,其中第一次为注册,后7次为认证,运算结果对比如表1所示。
      从表1可以看出,最终生成的密文已经和原MD5值已经有较大的不同,即使是相同的密钥,由于交换了顺序,密文也是不同的,攻击者即使得到这些密文,也是徒劳的。
      五 结束语
      本文通过分析目前远程教育系统常用的身份认证技术的优缺点,以基于MD5的用户名/密码的静态身份认证为基础,提出了基于MD5分组变序的动态身份认证技术,该技术通过分组变序随机地产生伪MD5密文,将伪MD5密文在客户端和服务器端之间传输,并存储到数据库中,从而可以有效抵挡碰撞攻击和重放攻击,并且实现了数据库中的密码随认证次数不断变化,而对用户透明的功能,进一步增强了原基于MD5的用户名/密码的静态身份认证的安全性。同时,该技术仅仅是对经MD5加密后的密文进行再处理,与MD5算法本身并有没有很大的关联,因此具有一定的通用性,只要稍做修改,就可以用于任何基于不可逆算法的身份认证技术中,以起到在原有认证技术的基础上,增加其安全性的作用。
      
      参考文献
      [1] 曹雪菲.基于身份的认证协议的理论及应用研究[D].西安:电子科技大学,2008.
      [2] Carles Garrigues, Nikos Migas, William Buchanan, et al. Protecting mobile agents from external replay attacks[J]. Journal of Systems and Software,2009,82(2):197-206.
      [3] RIVEST R.RFC 1321 The MD5 Message-Digest Algorithm[S].Boston: MIT Laboratory for Computer Science and RSA DATA Security, Inc, 1992.
      [4] 王津涛,覃尚毅,王冬梅.基于MD5的迭代冗余加密算法[J].计算机工程与设计,2007,28(1):41-42.
      [5] Wang Xiaoyun, Feng Dengguo, Lai Xuejia, et al. Collisions for hash functions MD4, MD5 Haval-128 and RIPEMD[R].CRYPTO 2004, Cryptology ePrint Archive, 2004.
      [6] Eric Thompson.MD5 collisions and the impact on computer forensics[J].Digital Investigation,2005,2(1): 36-40.
      [7] 张裔智,赵毅,汤小斌.MD5算法研究[J].计算机科学, 2008,35(7):295-297.
      [8] Paul Kearney.Message level security for web services[J].
      Information Security Technical Report, 2005,10(1):41-50.
      [9] 曹树国.基于洗牌算法的快速个性化组卷方法的研究[J].计算机与信息技术,2007,(10):71-72.
    本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

    推荐访问:分组 教育系统 身份认证 动态

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章