搜索
您的当前位置:首页正文

安全散列算法SHA-1的研究

来源:好走旅游网
安全散列算法SHA-1的研究 张松敏,陶荣,于国华 (洛阳理工学院,河南洛阳471023) 摘要:信息加密技术是当今保障网络安全的一种重要手段,加密算法已成为人们研究的一个热点。对SHA~I算法进行了深入 研究,介绍了SHA—I算法的特性和应用,并对SHA一1算法原理及实现进行了分析。 关键词:安全散列算法;SHA一1;加密技术 Research of Secure Hash Algorithm SHA-1 ZHANG Song rain,TAO RO噌,YU GuO—nua (Zuoyang Institute of Science and Tecknology,Luoyang,Henan 42102Y,Ch/na) Abstract:Information encryption technology has become an important means to ensure network security and encryption algorithm has become a hotspot.This paper introduces the SHA l algorithm characteristic and application.analyses SHA-1 algorithm principle and fmplementation. Key words:Secure hash algorithm;SHA 1;Encryption technology 1引言 安全散列算法(SHA)是一种常用的数据加密算法。 它由美国国家标准与技术局(NIST)于1993年作为联邦 2。1.1 SHA-1的迭代函数 SHA—l使用80个连续的逻辑函数:f ,f ”,f 。。 每个函数ft(0≤t≤79)都操作三个32位字(B,C,D), 产生一个32位字作为输出。函数ft(B,C,D)定义如下: (I1 (B, D)=(B- j0(~B、D) (21. B.C D)=(B C0D)£3) .D)=(B (O≤ ≤19) (20≤f 39) (4O , 59) 信息处理标准公布(即第一代SHA算法SHA一0)。在 1995年,其改进版本SHA一1也正式公布(SHA—l具有 比SHA一0更高的安全性o SHA-1算法…是目前最常 用的安全散列算法和最先进的加密技术。SHA一1算法的 思想是接收一段明文,然后以一种不可逆的方式将它转 j0(B Dj0( ^D)L4), eB.C D):(B¥(=f0D)(60≤ 79) (渔I咧:,是与,~足J|.0足井或) 换成一段(通常更小)密文,也可以简单地理解为取一 串输入码,把它们转化为长度较短、位数固定的输出序 2.1。2 SHA-1常量 SHA一1一共需要80个32位的常量(K ,K ”, K 。),以l6进制给出,它们如下所示: (1)K+=0x5A827999(0≤t≤19) (2)K+=0x6ED9EBA 1 (20≤t≤39) (3)K.=0x8F1BBCDC (40≤t≤59) 列即散列值(称为信息摘要)的过程。该算法对长度不 超过2 的消息产生160位的消息摘要输出,输入按512 位的分组进行处理。SH A一1算法具有两个重要特性 : 单向性和抗碰撞性。单向性即由原始消息计算出信息摘 要很容易,而由消息摘要计算出原始消息在计算上则几乎 是不可行的。而所谓的抗碰撞性是指,要找到两个不同的 (4)K =0xCA62C 1D6 (60≤t≤79) 2.2预处理 在进行散列值计算之前,先要对需要加密的数据进 行预处理。这一预处理由三部分组成:消息填充、分割 已填充消息(将填充后的消息等分成m位处理块)、为 原始消息生成同一个信息摘要在计算上也是不可行的。 SHA一1算法在加密学中扮演着极其重要的角色,可 以用于实现数据保密、防止数据更改和身份验证等功能。 一个典型的应用是从数字消息、IP信息包、磁盘文件等 散列值计算设置初始化值。 2。2.1消息填充 假设原始消息(M)的长度是L位。首先,在消息最 后加一位“l”,接着在这位“l”后面补k个…0,使 数据抽取散列值(称为消息摘要),并与对称或非对称加 密技术一起来完成对原始数据的认证和完整性检查。另 外,SHA一1算法是当今众多流行加密思想核心,几乎 无处不在。它在许多安全协议中广为使用,如:数字签 得L+1+k(即补位后的消息长度)满足对5l2取模后 余数是448。然后,添加最后的64位二进制数据,这64 名标准(DSS)、传输层安全(TLS)、安全电子交易(SET)、 互联网协议安全(IPSec)、无线局域网(WLANs)安全、 随机数生成算法和密码存储机制等。 位二进制数据就是原始L位消息(M)长度的二进制表示。 例如:在8位ASCII码系统中,消息“abc”长度为8 ×3=24,加上一位“1”,还要添加448一(24+1)= 423位“0”,最后加上64位原始消息长度二进制表示后, 就得到5l2位的填充消息: 2 SHA-1算法原理分析 2.1函数与常量定义 =』 — ~O4 ,——— L__、 基于上述SHA-I算法原理的分析,SHA一1算法实 现流程如图1所示。 0 1100001 。㈣。。1 1000 a b c L=24 2.2.2分割已填充消息 经过消息填充后,还必须将数据划分成m位一组 的N块的数据块来提供给下面的散列值计算过程。对于 SHA—l,填充过的消息被分割成N(M“’,M ,…,M ) 块,每块512位。然后每组512位的输入块可以表示成 16个32位的字,分别记为:M。“ ,M “ ,…,M, ” 。 2.2.3设置初始散列值(H(。 ) 在安全散列算法开始其核 15的散列迭代计算之 前,还必须设置好正确的初始散列值H 。而H 的 数量和字长取决于消息摘要的选择。对于SHA一1,初始 散列值由下面5个32位的字组成,其16进制表示如下: H (。 = 7452301;HI ̄l=0xEFCDAB89;H“”=啦 8BADCFE; ,,Hff=0x10325476;H ‘” =:0xC3D2E1F0。 2.3散列值计算 在对原始数据消息进行了填充、分割后,就可以 开始SH A-1算法的核心部分:散列值计算。计算需要 两个缓冲区,每个都由5个32位的字组成,还需要一 个80个32位字的缓冲区。第一个5个字的缓冲区被 标识为A,B,C,D,E。第二个5个字的缓冲区被标识为 洋 图1 SHA 1算法买现流程 SHA一1算法是一种易于实现并可以基于多种平台 H。,H ,H:,H,,H 。80个字的缓冲区被标识为W。,W1’.”,W 。 另外,还需要一个一个字的TEMP缓冲区。为了产生消 息摘要,定义的16个字的数据块M.,M 一,M 会依次 进行处理,处理每个数据块包含80个步骤,在处理每 个数据块之前,缓冲区H H.,H,,H ,H 被设置初始值。 一—................. ..L 的方便易行的安全算法 ,目前很多计算机语言,像C, Java,C++和PHP依照SHA—l算法的标准都能实现 SHA-1。当然,受语言平台应用性的制约,应用最广泛 的是C语言和Java语言。自身计算机上的消息认证一 般采用C语言实现就足够,不仅能够保证良好的可移植 为了处理M.,需要进行如下步骤: (1)将M,分成l6个字W。,W 一,W, (W。是最左边 的字)。 (2)对于t=16到79,令 s ( 0H 一。0 @ )。 性,而且实现起来也比较简单、容易理解。考虑到网络 上的数字签名,乃至电子商务等,一般采用Java实现代 码较简单迅速,其可移植性和安全性也能得到更好的保 证。事实上,这里还存在一个潜在的问题:SHA—l算法 信息摘要的计算速度并不总是能满足要求。使得SHA-l 算法的硬件实现也有很多途径,如利用现场可编程门阵 (3)令A=H ,B'-H.,C=H,,D=H ,E--H 。 (4)对于t=0到79,执行下面的循环: D=C;C=S (B);B-"A;A--TEMP。 TEMP=S (A)+f (B,C,D)+E+W +K.;E=D; 鍪 H,+C;H 3: 列不仅可以实现这种算法,并且某种程度上也能提高运 算速度。特别是随着数字通信领域的飞速发展,在急剧 增长的无线移动设备领域,对加密系统的性能要求越来 (5)计算第一个5个字的缓冲区H H.,H,,H 和H 。令: H 0=H 0+A;Hl=H l+B;H,=越严格。使得SHA-1算法软硬件优化方案的实现成为 专家关注的热点。 H +D;H4=H4+E。 (说明:S,、(X)是位循环移位操作符,其中,X是一 个字,n是一个整数且0≤I1≤32) 3.2算法安全性 SHA—l算法是由MD5算法演变而来的 ,它们之 间最大的区别在于前者产生的摘要长度比后者长32bit。 SHA-1对于强行攻击,产生任何一个报文使之摘要等于 给定报文摘要的难度为2160数量级的操作,较MD5的 2128数量级操作要难。因此,SHA—l算法对抵抗强行 攻击的强度很高。同时,因为SHA—l算法的循环步骤 当上述循环步骤重复过n次之后(即处理完M|、之后), 就可以得到原始数据的散列摘要输出,消息摘要是一个160 位的字符串,按下面的顺序标识:H。H H,H H 。 3 SHA-1算法实现与安全性 3.1算法实现 有80次,比MD5算法的64次要多,所以其运行速度也 较慢。从目前密码学研究的最新进展来看,SHA—l虽然 参考文献: [1】李克洪,王大玲,董晓梅.实用密码学与计算机数据 安全【M】.沈阳:东北大学出版社,2002. 【2】孙楠楠,韩银河,许都.一种基于循环展开结构的 被发现存在缺陷(碰撞),但在近几年内,仍然可以大量 使用SHA—l算法 。同时,专家们认为王小云等人发 现了当前所用的散列算法存在的问题,必将帮助新的散 列算法设计者考虑到这方面的问题,使得新的散列算法 具有更好的安全性。美国政府的大多数应用被要求在今 年年底以前改用SHA一2散列函数系列,早期的应用也 要尽可能地进行升级。SHA一2算法跟SHA一1基本上相 似,至今尚未出现对SHA-2算法的攻击。 SHA-1算法实现【J】.信息技术,2007,3:29. 【5】朱雷钧.哈希函数加密算法的高速实现【D】.上海:上 海交通大学,2007. [4】高铭达.基于SHA-1安全认证的题库管理系统[D】.厦 门:厦门大学,2009. [5】杜谦,张文霞.多语言可实现的SHA一】散列算法[J】. 4结束语 随着互联网与通信技术的飞速发展,人们的信息化生 活水平在不断提高。电子商务,电子邮件,网上金融交易, 数据上传下载日益影响着人们的日常生活。大量重要的数 据信息存储在网络服务器中,给人们带来方便的同时也造 成了巨大的信息安全隐患。在保证信息系统安全性的各种 技术中,数据信息加密算法扮演了一个重要角色。人们已 经对信息加密技术进行了详细深入的研究。虽然SHA一1加 武汉理工大学学报,200"/,(29):45 44. [6】DouglasP ̄.Stinson.密码学原理与实践【M】.北京市:电子 工业出版社,2005. [7】林雅榕,侯整风.对哈希算法SHA一1的分析和改进【J]. 计算机技术与发展,2006(1 6):1 24—1 25. 作者简介:张松敏(1 977一),女,硕士,讲师,研究方向 数字图像处理技术和信息安全技术。 收稿日期:201 0-07 24 密技术由于其自身安全等级高,被广泛应用在社会的各行 各业。但随着加密技术的不断更新和发展,SHA—l算法将 来可能会完全被其他更安全的算法取代。 (上接第2页) 有消除分割私钥的影响,才能暴露标识密钥的线性方程。 消除分割私钥的办法是寻找分割私钥的重复。 钥规模则是两个总量的乘积(N, N,),因此当N =N:时, 其密钥规模最大。密钥规模是指无意义共谋规模的上限 (实际上,离真正的上限还差很远),如果本规模的共谋 是不可能事件,那么用户规模可以是无限的。假设EC C 密钥长度为160比特(20]3),其公钥长度为40]3,那么 密钥的存储量和密钥规模的关系如表1。 表1存储量和密钥规模的关系 2 f40KB) ZV-fl 设组合矩阵变量的总量为N.,分割私钥变量的总量为 N,。因为标识密钥方程组的秩为N...,要列N 个联立方程, 至少要获得N 个重复。假设用户量为N. N2,分割私钥重 复的概率为N.次,那么可以找到N 个重复,但是: (1)在这些重复中,只有参与共谋的才有私钥,可 以列出方程,而没有参与共谋的,即使找到了重复,也 因为没有私钥,所以列不出方程,因而没有意义。 2l0(401 ̄、 2l!“椰KB) (2)在消除分割私钥影响以后的组合私钥的线性方 程中,又只有线性无关方程才有意义,而线性相关方程 没有意义。 填模 2:B=1.0I】 2: 1.6IIO’ 当N。 N,个用户全体参与共谋的情况下,N.个方程 恰好满秩的可能性几乎等于零,显然方程不可能有惟一 解,私钥的组合矩阵仍然是安全的。 10小结 CPK是基于组合的公钥体制,将密钥生产和密钥管 理结合起来,能够实现数字签名和密钥交换,可以满足 超大规模信息网络与非信息网络(包括物联)中的标识 鉴男IJ、实体鉴别、数据保密需求。 9存储量与密钥规模 当组合矩阵变量总量为N。,分割密钥变量总量为N (注:2010年8月8日召开了CPK v5.0的座谈会,本版 时,公布所需要的空间是两个总量之和(N.+N!),而密 本是根据专家意见修改的确定稿,以后不再使用版本号。) 编后语:经过十多年的发展,目前世界上已形成三种认证系统。一是基于公共密钥基础设施(PKI)技术实现的认证系统。二是基 于标识(1BE)算法实现的认证系统。三是我国著名密码专家南相浩教授发明的基于组合公钥(0PK)算法实现的认证系统。三个系统中 惟有cPK综合解决了规模化、无需第三方认证、不需要在线数据库支持等关键技术问题,并已达成芯片级实现,而成本代价只相"3于其 -他系统的几十分之一,代表了认证技术的发展方向,使我国在这一关键技术领域走在了世界前列。 目前,组合公钥(CPK)体制拟报国际标准和国家标准.专家们已就此进行过讨论,得到肯定和支持。0PK体制发明者南相浩教授赐 稿本刊“组合公钥(cPK)体制标准(v5.0)”一文,希望广泛听取各界更大范围的意见和反映,欢迎反馈您的意见和建议。 蠲 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top