您好,欢迎访问三七文档
1关于鉴别总结当今世界各主要国家的政府都十分重视密码工作,有的设立庞大机构,拨出巨额经费,集中数以万计的专家和科技人员,投入大量高速的电子计算机和其他先进设备进行工作。与此同时,各民间企业和学术界也对密码日益重视,不少数学家、计算机学家和其他有关学科的专家也投身于密码学的研究行列,更加速了密码学的发展。但是,在很多年里这种密码学是军队独家专有的领域。美国国家安全局以及前苏联、英国、法以色列及其它国家的安全机构已将大量的财力投入到加密自己的通信,同时又千方百计地去破译别人的通信的残酷游戏之中,面对这些政府,个人既无专门知识又无足够财力保护自己的秘密,个人隐秘的信息得不到法律和技术两方面有效的保护。在这之后,公开的密码学研究开始呈现爆炸性地增长。从二次世界大战以来,当普通公民还在长期使用经典密码时,计算机密码学成为世界军事的独占领域,在军事战争中占据举足轻重的地位。密码学发展到今天,最新的计算机密码学已广泛的应用到除军事以外的其他领域,非专业人员都可以利用密码技术去阻止别人,包括政府、军方的安全机构。然而,作为普通的百姓,我们是否真的需要这种保密?回答是肯定的,我们也可能正设计一件新产品,讨论一种市场策略,或计划接管竞争对手的生意,或者,我们可能生活在一个不尊重个人隐私权的国家,也可能做一些我们自己认为并非违法实际却是非法的事情。不管理由是什么,我们的数据和通信都是私人的、秘密的,与他人无关,也拒绝别人的窥探。那么对我们来说如何来鉴别这些消息的真假呢?从而有了鉴别的产生。鉴别的目的主要有两个:一是信源识别即验证信息的发送者是真正的,而不是冒充的;二是验证信息的完整性,在传送或存储过程中未被篡改,重放或延迟等。为了帮助我们去鉴别那些消息的真伪,我们引入了鉴别函数。利用它来判断消息的真假。鉴别函数这样分成这样的三类:一类是消息加密(整个消息的密文作为认证标识);二是消息鉴别码(简称MAC,是通过公开函数+密钥产生一个固定长度的值作为认证标识);三是散列函数2(一个公开的函数将任意长度的消息映射到一个固定长度的哈希值,作为认证标识)。下图是鉴别模型。图1鉴别模型由于在课堂上前面两点讲的很清楚了,这里就不赘述了,主要讲一下散列函数方面的知识点。散列函数(也称散列算法)提供了这样的一种服务:它对不同长度的输入消息,产生固定的长度的输出。这个固定长度的输出称之为原输入消息的“散列”或“消息摘要”。对于一个安全的散列函数,这个消息摘要通常可以直接作为消息的认证标签。目前已经研制出适合于各种用途的散列算法,这些算法都是伪随机函数,任何散列值都是等可能的。输出并不可辨别的方式依赖于输入。任何输入串中单个比特的变化,将会导致输出比特串中大约一半的比特发生变化。。散列函数又称hash函数,Hash函数(也称杂凑函数或杂凑算法)就是把任意长的输入消息串变化成固定长的输出串的一种函数。这个输出串称为该消息的杂凑值。一般用于产生消息摘要,密钥加密等.一个安全的杂凑函数应该至少满足以下几个条件:①输入长度是任意的;②输出长度是固定的,根据目前的计算技术应至少取128bits长,以便抵抗生日攻击;③对每一个给定的输入,计算输出即杂凑值是很容易的3④给定杂凑函数的描述,找到两个不同的输入消息杂凑到同一个值是计算上不可行的,或给定杂凑函数的描述和一个随机选择的消息,找到另一个与该消息不同的消息使得它们杂凑到同一个值是计算上不可行的。Hash函数主要用于完整性校验和提高数字签名的有效性,目前已有很多方案。这些算法都是伪随机函数,任何杂凑值都是等可能的。输出并不以可辨别的方式依赖于输入;在任何输入串中单个比特的变化,将会导致输出比特串中大约一半的比特发生变化。散列函数的概念就说到这里了,下面讲一下它的分类:(1)MD5(MessageDigestAlgorithm5):是RSA数据安全公司开发的一种单向散列算法,MD5被广泛使用,可以用来把不同长度的数据块进行暗码运算成一个128位的数值;(2)SHA(SecureHashAlgorithm)这是一种较新的散列算法,可以对任意长度的数据运算生成一个160位的数值;(3)MAC(MessageAuthenticationCode):消息认证代码,是一种使用密钥的单向函数,可以用它们在系统上或用户之间认证文件或消息。HMAC(用于消息认证的密钥散列法)就是这种函数的一个例子。(4)CRC(CyclicRedundancyCheck):循环冗余校验码,CRC校验由于实现简单,检错能力强,被广泛使用在各种数据校验应用中。占用系统资源少,用软硬件均能实现,是进行数据传输差错检测地一种很好的手段(CRC并不是严格意义上的散列算法,但它的作用与散列算法大致相同,所以归于此类)。下面介绍一下散列算法的典型应用(1)用MD5校验和实现文件的完整性保护较常用的有奇偶校验和CRC校验,但是这两种并没有抗数据传该的能力,能检测到数据传输的错误,但却不能防止数据被破坏。MD5是目前最广泛的一种文件完整性算法可以。(2)文件系统完整性保护散列算法可以保存二进制文件系统的数字指纹,目的是检测文件系统是否未经允许的被修改。可以定期或者根据需要再次计算文4件系统的校验和,一旦发现与原来保存的值不匹配,说明文件已经被非法修改或是感染病毒。(3)身份鉴别例如Unix系统中用户密码就是经过MD5加密后存储在文件系统中,当用户登陆时,系统把用具输入的密码计算成MD5值,然后再与文件系统中的MD5比较,就可验证密码的合法性。(4)网页自动恢复系统网页保护是专门用于对页面进行保护的系统。其基本任务是在网页文件被篡改后,能够及时发现发现、产生报警、自动恢复。在这里我主要介绍一下MD5算法。MD5算法的核心是Hash函数。密码学Hash函数又称杂凑函数,是在信息安全领域有广泛和重要应用的密码算法,主要作用是数据完整性验证和消息认证。它有一种类似于指纹的应用,所以有时候也把它叫做“数字指纹”。因为它具有以下特性:原始信息只要改变一点点,哪怕是几比特,对应的消息摘要也会改变很大。Hash函数把任意有限长的输入行映射到固定长的行。Hash函数的值域与定义域相比规模要小得多,它是“多对一”的映射,因此可能会发生碰撞。所谓碰撞是指定义域的两个不同元素xl、x2映射到同一个消息摘要,即h(xl)=h(x2),也就是存在不同的消息具有相同的消息摘要对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。在MD5算法中,首先需要对信息进行填充,使其字节长度对512求余的结果等于448。因此,信息的字节长度(bitslength)将被扩展至n*512+448,即n*64+56个字节(bytes),n为一个正整数。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。然后,在在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,现在的信息字节长度=n*512+448+64=(n+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。MD5中有四个32位被称作链接变量的整数参数,他们分别为:a=0x01234567,b=0x89abcdef,c=0xfedcba98,d=0x76543210。当5设置好这四个链接变量后,就开始进入算法的四轮循环运算。循环的次数是信息中512位信息分组的数目。将上面四个链接变量复制到另外四个变量中:a到a,b到b,c到c,d到d。主循环有四轮(md4只有三轮),每轮循环都很相似。第一轮进行16次操作。每次操作对a、b、c和d中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上a、b、c或d中之一。最后用该结果取代a、b、c或d中之一。每次操作如下图1、图2所示。图1MD5主循环图2MD5轮循环中的对32bit消息字的一次处理过程以一下是每次操作中用到的四个非线性函数(每轮一个)。f(x,y,z)=(x&y)|((~x)&z)g(x,y,z)=(x&z)|(y&(~z))h(x,y,z)=x^y^zi(x,y,z)=y^(x|(~z))(&是与,|是或,~是非,^是异或)这四个函数的说明:如果x、y和z的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的。f是一个逐位运算的函数。即,如果x,那么y,否则z。函数h是逐位奇偶操作符。6MD5的四个非线性轮函数分别如下:第一轮ff(a,b,c,d,m0,7,0xd76aa478)ff(d,a,b,c,m1,12,0xe8c7b756)ff(c,d,a,b,m2,17,0x242070db)ff(b,c,d,a,m3,22,0xc1bdceee)ff(a,b,c,d,m4,7,0xf57c0faf)ff(d,a,b,c,m5,12,0x4787c62a)ff(c,d,a,b,m6,17,0xa8304613)ff(b,c,d,a,m7,22,0xfd469501)ff(a,b,c,d,m8,7,0x698098d8)ff(d,a,b,c,m9,12,0x8b44f7af)ff(c,d,a,b,m10,17,0xffff5bb1)ff(b,c,d,a,m11,22,0x895cd7be)ff(a,b,c,d,m12,7,0x6b901122)ff(d,a,b,c,m13,12,0xfd987193)ff(c,d,a,b,m14,17,0xa679438e)ff(b,c,d,a,m15,22,0x49b40821)第二轮gg(a,b,c,d,m1,5,0xf61e2562)gg(d,a,b,c,m6,9,0xc040b340)gg(c,d,a,b,m11,14,0x265e5a51)gg(b,c,d,a,m0,20,0xe9b6c7aa)gg(a,b,c,d,m5,5,0xd62f105d)gg(d,a,b,c,m10,9,0x02441453)gg(c,d,a,b,m15,14,0xd8a1e681)gg(b,c,d,a,m4,20,0xe7d3fbc8)gg(a,b,c,d,m9,5,0x21e1cde6)gg(d,a,b,c,m14,9,0xc33707d6)gg(c,d,a,b,m3,14,0xf4d50d87)gg(b,c,d,a,m8,20,0x455a14ed)gg(a,b,c,d,m13,5,0xa9e3e905)gg(d,a,b,c,m2,9,0xfcefa3f8)gg(c,d,a,b,m7,14,0x676f02d9)gg(b,c,d,a,m12,20,0x8d2a4c8a)7第三轮hh(a,b,c,d,m5,4,0xfffa3942)hh(d,a,b,c,m8,11,0x8771f681)hh(c,d,a,b,m11,16,0x6d9d6122)hh(b,c,d,a,m14,23,0xfde5380c)hh(a,b,c,d,m1,4,0xa4beea44)hh(d,a,b,c,m4,11,0x4bdecfa9)hh(c,d,a,b,m7,16,0xf6bb4b60)hh(b,c,d,a,m10,23,0xbebfbc70)hh(a,b,c,d,m13,4,0x289b7ec6)hh(d,a,b,c,m0,11,0xeaa127fa)hh(c,d,a,b,m3,16,0xd4ef3085)hh(b,c,d,a,m6,23,0x04881d05)hh(a,b,c,d,m9,4,0xd9d4d039)hh(d,a,b,c,m12,11,0xe6db99e5)hh(c,d,a,b,m15,16,0x1fa27cf8)hh(b,c,d,a,m2,23,0xc4ac5665)第四轮ii(a,b,c,d,m0,6,0xf4292244)ii(d,a,b,c,m7,
本文标题:鉴别_查千明
链接地址:https://www.777doc.com/doc-1968870 .html