BIT2密码理论与应用_第1页
BIT2密码理论与应用_第2页
BIT2密码理论与应用_第3页
BIT2密码理论与应用_第4页
BIT2密码理论与应用_第5页
已阅读5页,还剩126页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

密码理论与应用孙建伟计算机网络攻防对抗实验室北京理工大学提纲密码技术概述对称机密体制与算法公钥密码体制与算法数字摘要算法数字签名与完整性保护数字证书与PKI体系密码学概述我们需要哪些安全机制?认证完整性机密性密码学是安全通信的基础对称加密非对称加密哈希函数(Hash)密码学的发展历史(1)自人类社会出现战争便产生了密码

Phaistos圆盘,一种直径约为160mm的Cretan-Mnoan粘土圆盘,始于公元前17世纪。表面有明显字间空格的字母,至今还没有破解。JuliusCaesar发明了凯撒密码密码学的发展历史(2)1834年,伦敦大学的实验物理学教授惠斯顿发明了电机,这是通信向机械化、电气化跃进的开始,也为密码通信采用在线加密技术提供了前提条件。1920年,美国电报电话公司的弗纳姆发明了弗纳姆密码。其原理是利用电传打字机的五单位码与密钥字母进行模2相加。密码学的发展历史(3)两次世界大战大大促进了密码学的发展。二战中美国陆军和海军使用的条形密码设备M-138-T4。根据1914年ParkerHitt的提议而设计。25个可选取的纸条按照预先编排的顺序编号和使用,主要用于低级的军事通信。Kryha密码机大约在1926年由AlexandervoKryha发明。这是一个多表加密设备,密钥长度为442,周期固定。一个由数量不等的齿的轮子引导密文轮不规则运动。密码学的发展历史(4)两次世界大战大大促进了密码学的发展。转轮密码机ENIGMA,由ArthurScherbius于1919年发明,面板前有灯泡和插接板;4轮ENIGMA在1942年装备德国海军,英国从1942年2月到12月都没能解读德国潜艇的信号。英国的TYPEX打字密码机,是德国3轮ENIGMA的改进型密码机。它在英国通信中使用广泛,且在破译密钥后帮助破解德国信号。密码学的发展历史(5)1949年香农发表了一篇题为《保密系统的通信理论》的著名论文,该文首先将信息论引入了密码,从而把已有数千年历史的密码学推向了科学的轨道,奠定了密码学的理论基础。1976年,美国密码学家W.Diffie和M.Hellman在一篇题为《密码学的新方向》一文中提出了一个崭新的思想,不仅加密算法本身可以公开,甚至加密用的密钥也可以公开。1977年美国国家标准局颁布了数据加密标准DES2001年11月26日,正式颁布AES为美国国家标准。

密码学基本概念明文:需要秘密传送的消息。密文:明文经过密码变换后的消息。加密:由明文到密文的变换。解密:从密文恢复出明文的过程。破译:非法接收者试图从密文分析出明文的过程。加密算法:对明文进行加密时采用的一组规则。解密算法:对密文进行解密时采用的一组规则。密钥:加密和解密时使用的一组秘密信息。一个密码系统,通常简称为密码体制,由5部分组成:明文空间M全体明文的集合密文空间C全体密文的集合密钥空间K全体密钥的集合加密算法E一组由M到C的加密变换解密算法D一组由C到M的解密变换密码体制基本组成信息加密传输的过程加密:C=E(M,Ke)MCEKeCMKdD解密:M=D(C,Kd)M------明文C------密文Ke-----加密密钥Kd-----解密密钥E-------加密算法D------解密算法密码系统的分类根据密钥的使用方式分类对称密码体制(秘密钥密码体制)用于加密数据的密钥和用于解密数据的密钥相同,或者二者之间存在着某种明确的数学关系。加密:EK(M)=C解密:DK(C)=M非对称密码体制(公钥密码体制)用于加密的密钥与用于解密的密钥是不同的,而且从加密的密钥无法推导出解密的密钥。用公钥KP对明文加密可表示为:EKP(M)=C用相应的私钥KS对密文解密可表示为:DKS(C)=M密码系统的分类根据明文和密文的处理方式分类分组密码体制(BlockCipher)

设M为明文,分组密码将M划分为一系列明文块Mi,通常每块包含若干字符,并且对每一块Mi都用同一个密钥Ke进行加密。M=(M1,M2,…,Mn),C=(C1,C2,

…,Cn,),其中Ci=E(Mi,Ke),i=1,2…,n。序列密码体制(StreamCipher)将明文和密钥都划分为位(bit)或字符的序列,并且对明文序列中的每一位或字符都用密钥序列中对应的分量来加密。M=(M1,M2,…,Mn),Ke=(ke1,ke2,…,ken),C=(C1,C2,…,Cn),其中Ci=E(mi,kei),i=1,2,…,n。经典密码学经典密码(古典密码)对于今天来说,是极不安全的,是极易破解的,但其基本方法仍然是近、现代密码学的基础。经典密码运用的两种基本技术:代换法:将明文字母替换成其他字母、数字或符号置换法:明文的字母保持相同,但顺序被打乱代换技术代换法,是将明文字母替换成其他字母、数字或符号的方法。Caesar密码(已知的最早的代换密码)例如:明晨五点发动反攻明文:MINGCHENWUDIANFADONGFANGONG密文:PLQJFKHQZXGLDQIDGRQJIDQJRQJCaesar密码如果让每个字母等价于一个数值:a=0,b=1,…,z=25则加密公式为:

C=E(p)=(p+3)mod26更一般地:

C=E(p)=(p+k)mod26解密:p=D(C)=(C-k)mod26用穷举分析可轻松破解Caesar密码通常,加密和解密算法是已知的。需测试的密钥只有25个。明文所用的语言是已知的,其意义易于识别。因此,为了提高穷举分析的难度,密钥空间必须很大。例如3-DES算法的密钥长度为168位,密钥空间为2168。单表代换密码使用一个密文字母表,并且用密文字母表中的一个字母来代替一个明文字母表中的一个字母。例如,明文a用c来代换,b用剩下的25个字母中随机的一个来代换,c用剩下的24个字母中随机的一个来代换,……,以此类推。这样,密钥空间为26!,约4*1026种可能的密钥。最简单的多表代换密码---Vigenère

维吉尼亚密码选择一个词组作为密钥,密钥中每个字母用来确定一个代换表,每个密钥字母用来加密一个明文字母。例如密钥字母为a,明文字母为c,则密文字母为0+2(mod26)=2,也就是c。直到所有的密钥字母用完,后再从头开始,使用第一个密钥字母加密。也就是说,密钥循环使用。一个例子明文为attackbeginsatfive,密钥为cipher,

attackbeginsatfive明文+cipherciphercipher密钥

----------------------------------------------

=cbihgbdmvprjcbupzv密文去除空格后为cbihgbdmvprjcbupzv维吉尼亚密码的密钥维吉尼亚密码的密钥即字符串密钥空间: 字符串长度为M密钥空间:26M置换技术在置换密码中,明文的字母保持相同,但顺序被打乱了。在简单的纵行换位密码中,明文以固定的宽度水平地写在一张图表纸上,密文按垂直方向读出,解密就是将密文按相同的宽度垂直地写在图表纸上,然后水平地读出明文。Plaintext:COMPUTERGRAPHICSMAYBESLOWBUTATLEASTITSEXPENSIVECOMPUTERGRAPHICSMAYBESLOWBUTATLEASTITSEXPENSIVECiphertext:CAELPOPSEEMHLANPIOSSUCWTITSBIVEMUTERATSGYAERBTX

这种简单的技巧对于密码分析者来说是微不足道的。可在置换前,把列的次序打乱,列的次序就是算法的密钥。置换技术的密钥设列的数量为N密钥空间:N!代换技术与置换技术通常结合使用。一般地,可先利用代换技术加密,再用置换技术将密文再次加密。这是现代密码学的对称加密方法的基础转轮机---经典密码的机械阶段20世纪20年代,随着机械和机电技术的成熟,以及电报和无线电需求的出现,引起了密码设备方面的一场革命——发明了转轮密码机(简称转轮机,Rotor),转轮机的出现是密码学发展的重要标志之一。美国人EdwardHebern认识到:通过硬件卷绕实现从转轮机的一边到另一边的单字母代替,然后将多个这样的转轮机连接起来,就可以实现几乎任何复杂度的多个字母代替。转轮机由一个键盘和一系列转轮组成,每个转轮是26个字母的任意组合。转轮被齿轮连接起来,当一个转轮转动时,可以将一个字母转换成另一个字母。照此传递下去,当最后一个转轮处理完毕时,就可以得到加密后的字母。为了使转轮密码更安全,人们还把几种转轮和移动齿轮结合起来,所有转轮以不同的速度转动,并且通过调整转轮上字母的位置和速度为破译设置更大的障碍。转轮机的工作原理每一个旋转轮代表一个单表代换系统,旋转一个引脚,再转变为另一个单表代换系统。为使机器更安全,可把几种转轮和移动的齿轮结合起来。因为所有转轮以不同的速度移动,n个转轮的机器的周期是26n,即个单表代换系统。最后一个转轮转完一圈之后,它前面的转轮就旋转一个引脚,有点像时钟的齿轮。转轮机的经典---ENIGMA1918年,德国发明家ArthurScherbius用二十世纪的电气技术来取代已经过时的铅笔加纸的加密方法。他研究的结果就是永远被尊为经典的ENIGMA。ENIGMA首先是作为商用加密机器得到应用的。它的专利在1918年在美国得到确认。售价大约相当于现在的30000美元。二、对称密码体制与算法对称密码学概述分组密码数据加密标准(DES)流密码对称密码学概述

加密:EK(M)=C

解密:DK(C)=M

等效于DK(EK(M))=M数学变换函数密钥K明文密文数学变换函数密钥K明文密文对称密码学概述网络信息M对称密码算法密钥K密文C用户A对称密码算法密文C用户B信息M密钥K对称密码学分类

块密码(分组密码)

一次若干位一组地对明文进行操作和运算

流密码(序列密码)

每次一位地对明文进行操作和运算

工作方式

将明文分成固定长度的组(块),如64bit一组,用同一密钥和算法对每一快加密,输出也是固定长度的密文。

主要算法

DES、3DES、IDEA、RC2、AES等。分组密码数据加密标准(DES)概述数据加密标准(DataEncryptionStandard),已经有20多年的历史;DES是一种对称密码算法,1976年11月23日DES被采纳为美国国家标准;DES是第一个得到广泛应用的密码算法;DES是一种分组加密算法,输入的明文为64位,密钥为56位,生成的密文为64位;DES已经过时,基本上认为不再安全。数据加密标准(DES)算法

该算法分三个阶段实现

1.给定明文X,通过一个固定的初始置换IP来排列X中的位,得到X0。

X0=IP(X)=L0R0

其中L0由X0前32位组成,R0由X0的后32位组成。

2.计算函数F的16次迭代,根据下述规则来计算LiRi(1<=i<=16)

Li=Ri-1,Ri=Li-1

F(Ri-1,Ki)

其中Ki是长为48位的子密钥。子密钥K1,K2,…,K16是作为密钥K(56位)的函数而计算出的。

3.对比特串R16L16使用逆置换IP-1得到密文Y。

Y=IP-1(R16L16)左半边的处理过程可以分三个部分:(1)64位明文经过初始置换被重新排列,然后分左右两半,每半各32位;(2)左右两半经过16轮置换和代换迭代,即16次实施相同的变换。然后再左右两半互换;(3)互换后的左右两半合并,再经过逆初始置换输出64位密文。右半部则由56位密钥,产生16个48位子密钥,分别供左半边的16轮迭代加密使用数据加密标准(DES)算法图示数据加密标准(DES)数据加密标准(DES)

F函数说明

F(Ri-1,Ki)函数F以长度为32的比特串A=R(32bits)作第一个输入,以长度为48的比特串变元J=K(48bits)作为第二个输入。产生的输出为长度为32的位串。

(1)对第一个变元A,由给定的扩展函数E,将其扩展成48位串E(A);

(2)计算E(A)+J,并把结果写成连续的8个6位串,B=b1b2b3b4b5b6b7b8;

(3)使用8个S盒,每个Sj是一个固定的416矩阵,它的元素取0~15的整数。给定长度为6个比特串,如Bj=b1b2b3b4b5b6,计算Sj(Bj)如下:b1b6两个比特确定了Sj的行数,r(0<=r<=3);而b2b3b4b5四个比特确定了Sj的列数c(0<=c<=15)。最后Sj(Bj)的值为S-盒矩阵Sj中r行c列的元素(r,c),得Cj=Sj(Bj); (4)最后,进行固定置换P。

加密函数F的计算过程

S盒

在加密函数计算过程中使用了8个S盒S盒是DES保密性的关键所在S盒是一种非线性变换,也是DES中唯一的非线性运算S盒有6位输入,4位输出48位数据经过8个S盒后输出32位数据每个S盒都由4行(表示为0,1,2,3)和16列(0,1,…,15)组成每行都是全部的16个长为4比特串的一个全排列每个比特串用它对应的二进制整数表示,如1001用9表示。对每个S盒,将6位输入的第一位和最后一位组成一个二进制数,用于选择S盒中的一行。用中间的4位选择S盒16列中的某一列,行列交叉处的十进制数转换为二进制数可得到4位输出。例如对于S1盒而言,如果输入为011001,则行是01(十进制1,即S盒的第2行),列1100(12,即S盒的第13列),该处的值是9,转换为二进制数为1001,即为该S盒的输出DES密钥产生过程

(1)给定64位的密钥K,放弃奇偶校验位(8,16,…,64)并根据固定置换PC1来排列K中剩下的位。我们写 PC1(K)=C0D0

其中C0由PC1(K)的前28位组成;D0由后28位组成;

(2)对1<=i<=16,计算

Ci=LSi(Ci-1)

Di=LSi(Di-1)

LSi表示循环左移2或1个位置,取决于i的的值。i=1,2,9和16时移1个位置,否则移2位置;

(3)Ki=PC2(CiDi),PC2为固定置换。DES密钥产生图示数据加密标准(DES)

DES加密的一个例子

*取16进制明文X:0123456789ABCDEF

*取密钥K为:133457799BBCDFF1

*去掉奇偶校验位以二进制形式表示的密钥是00010010011010010101101111001001101101111011011111111000

*应用初始置换IP,我们得到:

L0=11001100000000001100110011111111

L1=R0=11110000101010101111000010101010

*然后进行16轮加密。

*最后对L16,R16使用IP-1得到密文: 85E813540F0AB405DES解密

DES解密过程与加密过程本质上一致加密和解密使用同一个算法,使用相同的步骤和相同的密钥主要不同点是将密文作为算法的输入,但是逆序使用子密钥ki,即第1轮使用子密钥k16,第2轮使用子密钥k15,最后一轮使用子密钥k1

数据加密标准(DES)

DES密钥长度太小

DES迭代次数可能太少1997年6月,许多台计算机并行工作,140天内破解了DES;1998年,DES在48天内被破解;1999年,几个小时内就能破解。三重DES使用三(或两)个不同的密钥对数据块进行三次(或两次)加密,加密一次要比进行普通加密的三次要快三重DES的强度大约和112-bit的密钥强度相当三重DES有四种模型DES-EEE3使用三个不同密钥顺序进行三次加密变换DES-EDE3使用三个不同密钥依次进行加密-解密-加密变换DES-EEE2其中密钥K1=K3顺序进行三次加密变换DES-EDE2其中密钥K1=K3依次进行加密-解密-加密变换到目前为止还没有人给出攻击三重DES的有效方法DES-EDE2其中密钥K1=K3依次进行加密-解密-加密变换目前还没有针对两个密钥的三重DES实际的攻击方法但是感觉它不大可靠,如果采用三把密钥的三重DES则比较放心三把密钥的三重DES的密钥长度是168位,采用加密—解密—加密(E-D-E)方案其加密过程为C=EK3[DK2[EK1[M]]],解密过程为M=DK1[EK2[DK3[C]]]这种加密方式已经被一些网络应用采用,如PGP和S/MIME采用了这种方案IDEAInternationalDataEncryptionAlgorithm;XuejiaLai和JamesMassey提出;IDEA是对称、分组密码算法,输入的明文为64位,密钥为128位,生成的密文为64位;IDEA是一种相对较新的算法,有坚强的理论基础,已被证明可对抗差分分析和线性分析;PGP中已实现了IDEA;高级加密标准(AES)1997年4月15日美国国家标准和技术研究所NIST发起了征集AES算法的活动并成立了专门的AES工作组目的是为了确定一个非保密的公开披露的全球免费使用的分组密码算法用于保护下一世纪政府的敏感信息并希望成为秘密和公开部门的数据加密标准1997年9月12日在联邦登记处公布了征集AES候选算法的通告AES的基本要求是比三重DES快或至少和三重DES一样安全分组长度128比特,密钥长度为128/192/256比特1998年8月20日NIST召开了第一次候选大会并公布了15个候选算法高级加密标准(AES)-续1999年3月22日举行了第二次AES候选会议从中选出5个算法MARSRC6SerpentTwofishRijndael

2000年10月,美国国家技术标准委员会(NIST)选定“Rijndael”全为AESRijndael是迭代分组密码,其分组长度和密钥长度都是可变的;为了满足AES的要求,分组长度为128bit,密码长度为128/192/256bit,相应的轮数r为10/12/14。流密码明文m=m1,m2,…….mk伪随机序列k=k1,k2,…….kk密文ci=miki,i=1,2,…….k解密过程与加密过程一致序列密码的安全性完全依赖于伪随机数的强度移位寄存器是产生序列密码的有效方法RC4、SEAL(SoftwareOptimizedEncryptionAlgorithm,软件优化加密算法)三、公钥密码体制公钥密码学概述公钥密码算法公钥密码技术应用公钥密码学概述WhitefieldDiffie,MartinHellman,《NewDirectionsinCryptography》,1976公钥密码学的出现使大规模的安全通信得以实现–解决了密钥分发问题;公钥密码学还可用于另外一些应用:数字签名、防抵赖等;公钥密码体制的基本原理–陷门单向函数(trapdoorone-wayfunction)公钥密码学概述

加密:EK1(M)=C

解密:DK2(C)=M

等效于DK2(EK1(M))=M数学变换函数密钥K1明文密文数学变换函数密钥K2明文密文公钥密码学概述网络信息M非对码密钥算法B公钥密文C用户B用户A非对称密码算法密文C信息MB私钥非对称加密应用模式数据机密性发送方认证对称密码学中的密钥管理单钥密码技术要求通信双方事先交换密钥。在实际应用中,一方需要与成千上万的通信方进行交易,若采用单钥密码技术,每个用户需要管理成千上万个不同对象通信的密钥。双方如何交换密钥。通过传统手段,还是通过因特网,都会遇到密钥传送的安全性问题。在现实环境中,密钥通常会经常更换,更为极端的是,每次传送都使用不同的密钥,单钥密码技术的密钥管理和发布都是远远无法满足使用要求的。公钥密码学中的密钥管理公钥密钥技术解决了密钥的发布和管理问题,任何一方可以公开其公开密钥,而保留私有密钥。发送方可以用人人皆知的接收方公开密钥对发送的信息进行加密,安全的传送给接收方,然后由接收方用自己的私有密钥进行解密。

RSA算法概述Rivest,Shamir和Adleman1977年研制并且1978年首次发表。密码分析者尚不能证明其安全性,但也不能否定其安全性。RSA是一种分组密码,其理论基础是一种特殊的可逆模指数运算,其安全性基于分解大整数的困难性。既可以用于加密,也可用于数字签名。硬件实现时,比DES慢约1000倍。软件实现时比DES慢约100倍。永远不会比对称钥算法快。已被许多标准化组织(如ISO、ITU、IETF和SWIFT等)接纳,目前多数公司使用的是RSA公司的PKCS系列。算法描述

1.密钥的产生

随机选择两个大素数p,q

计算n=p×q计算秘密的欧拉函数(n)=(p-1)(q-1)选择e使得1<e<(n),且gcd(e,

(n))=1解下列方程求出d

ed≡1mod(n),且0≤d≤n

公开公钥:PU={e,N}保存私钥:PR={d,p,q}672.加密过程加密时明文以分组为单位进行加密,每个分组m的二进制值均小于n,对明文分组m作加密运算:c=memodn,且0≤m<n3.解密过程密文解密m=cd

modn

RSA算法描述结果:

e和n作为公开密钥,d,n作为私人密钥。

p、q、φ(n)和d是秘密的陷门(并不是相互独立的),不可以泄露。使用: 首先将消息分成大小合适的数据分组,然后对分组分别进行加密。每个分组的大小应该比n小。 设ci为明文分组mi加密后的密文,则加密公式为ci=mie(modn)

解密时,对每一个密文分组进行如下运算:mi=cid(modn)RSA样例p=17,q=11,n=pq=187(n)=(p-1)(q-1)=160gcd(160,e)==1:e=7de=161=1mod160:d=23RSA算法安全性

RSA的安全性是基于加密函数ek(x)=xe(modn)是一个单向函数,所以对的人来说求逆计算不可行。而解密的陷门是分解n=pq,知(n)=(p-1)(q-1)。从而用欧氏算法解出解密私钥d。密码分析者攻击RSA体制的关键点在于如何分解n。若分解成功使n=pq,则可以算出φ(n)=(p-1)(q-1),然后由公开的e,解出秘密的d。RSA算法关键技术密钥选择位数:1024以上,素性应该证明p-1,q-1有大的素因子p+1,q+1也要有大的素因子e的选取,最常用的e值为3,65537(2^16+1)算法实现软件与硬件结合,并行算法等RSA算法使用1.加解密A的公开密钥为(e,n),B对消息m加密c=memodn给A,只有A能解密m=cdmodn特点:和A从来不认识,都可进行保密通讯,只要知道A的公钥.速度慢,不实用.要求对公开密钥进行保护,防止修改和替换。

通信保密:此时将公钥作为加密密钥,私钥作为解密密钥,通信双方不需要交换密钥就可以实现保密通信。RSA算法使用2.数字签名与身份认证A的公开密钥为(e,n),私钥为(d,n),A对消息m的数字签名为:s=H(m)dmodn,H(x)为公开的散列(hash)函数.任何人都可验证A对m的签名的有效性H(m)=semodn功能:防止非法篡改、伪造,A的抵赖与否认,对A的假冒等。要求对公开密钥进行保护,防止修改。

数字签名:将私钥作为加密密钥,公钥作为解密密钥,可实现由一个用户对数据加密而使多个用户解读。

其他公钥算法Rabin密码算法

合数模下求解平方根的困难性ElGamal密码算法 基于离散对数问题椭圆曲线密码算法 代数几何中基于椭圆曲线的点集四、摘要算法摘要算法的需求摘要算法的设计要求

MD5算法介绍哈希函数(Hash)Hash相同的输入产生相同的输出(散列值/指纹)单向,不可逆变长的输入,定长的输出散列算法MD5(128bit)、SHA-1(160bit)用途数据完整性发送方认证Hash杂凑函数杂凑(Hash)函数是将任意长的数字串M映射成一个较短的定长输出数字串H的函数,通常是单向杂凑函数;强单向杂凑与弱单向杂凑,对不同报文,很难有同样的报文摘要。这与不同的人有不同的指纹很类似;杂凑函数除了可用于数字签名方案之外,还可用于其它方面,诸如消息的完整性检测(一般杂凑函数)、消息的起源认证检测(密码杂凑函数)等。h=H(M)假定两次输入同样的数据,那么散列函数应该能够生成相同的散列值。输入数据中的一位发生了变化,会导致生成的散列值完全不一样。散列函数有个非常重要的特性为单向性,也就是从M计算h容易,而从h计算M不可能。

散列函数H必须满足以下几个性质H对于任何大小的数据分组,都能产生定长的输出。对于任何给定的M,H(M)要相对易于计算。单向性:对于任何给定的hash值h,计算出M在计算上不可行。弱无碰撞性:对任何给定的M1,寻找M2,使H(M1)=H(M2)在计算上不可行。强无碰撞性:寻找任何的(M1,M2),使H(M1)=H(M2)在计算上不可行。MD系列杂凑函数RonRivest设计的系列杂凑函数系列:MD4[RFC1320]MD5是MD4的改进型[RFC1321]MD2[RFC1319],已被Rogier等于1995年攻破较早被标准化组织IETF接纳,并已获得广泛应用Hash值长度为128bits

这个选择的意义:签名算法复杂度这种,如RSA算法SHA和SHA-1美国NIST和NSA为配合DSS,设计了安全杂凑标准(SHS),其算法为SHA[FIPSPUB180],修改的版本被称为SHA-1[FIPSPUB180-1]SHA/SHA-1采用了与MD4相似的设计准则,其结构也类似于MD4,但其输出为160bits目前还没有针对SHA有效的攻击2023/2/484Ch5-消息认证与数字签名MD5MD5(Message-Digest

Algorithm

5)是由Ronald

L.

Rivest(RSA算法中的“R”)这90年代初开发出来的,经MD2、MD3和MD4发展而来。它比MD4复杂,但设计思想类似,同样生成一个128位的信息散列值。其中,MD2是为8位机器做过设计优化的,而MD4和MD5却是面向32位的计算机。2004年8月,在美国召开的国际密码学会议(Crypto’2004)上,王小云教授给出破解MD5、HAVAL-128、MD4和RIPEMD算法的报告。给出了一个非常高效的寻找碰撞的方法,可以在数个小时内找到MD5的碰撞。2023/2/485Ch5-消息认证与数字签名MD5算法步骤1)填充消息:任意长度的消息首先需要进行填充处理,使得填充后的消息总长度与448模512同余(即填充后的消息长度448mod512)。填充的方法是在消息后面添加一位“1”,后续都是“0”。2)添加原始消息长度:在填充后的消息后面再添加一个64位的二进制整数表示填充前原始消息的长度。这时经过处理后的消息长度正好是512位的倍数。3)初始值(IV)的初始化:MD5中有四个32位缓冲区,用(A,B,C,D)表示,用来存储散列计算的中间结果和最终结果,缓冲区中的值被称为链接变量。首先将其分别初始化为为:A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210。2023/2/486Ch5-消息认证与数字签名MD5算法步骤-续4)以512位的分组为单位对消息进行循环散列计算:经过处理的消息,以512位为单位,分成N个分组,用Y0,Y1,…,YN-1。MD5对每个分组进行散列处理。每一轮的处理会对(A,B,C,D)进行更新。5)输出散列值:所有的N个分组消息都处理完后,最后一轮得到的四个缓冲区的值即为整个消息的散列值。2023/2/487Ch5-消息认证与数字签名MD5算法步骤-续MD5的主循环,包括四轮,每个循环都以当前的正在处理的512比特分组Yq和128比特缓冲值ABCD为输入,然后更新缓冲内容。四轮的操作类似,每轮16次:用到一个有64个元素的表T[1..64],T[i]=232×abs(sin(i)),i的单位为弧度。16次压缩函数中的一步迭代基本逻辑函数定义轮基本函数gg(b,c,d)fFF(b,c,d)(b^c)V(b¯^d)fGG(b,c,d)(b^d)V(c^d¯)fHH(b,c,d)bÅcÅdfII(b,c,d)cÅ(bV

d¯)X[k]当前分组的第k个32位的字。第1轮x[0]x[1]x[2]x[3]x[4]x[5]x[6]x[7]x[8]x[9]x[10]x[11]x[12]x[13]x[14]x[15]第2轮x[1]x[6]x[11]x[0]x[5]x[10]x[15]x[4]x[9]x[14]x[3]x[8]x[13]x[2]x[7]x[12]第3轮x[5]x[8]x[11]x[14]x[1]x[4]x[7]x[10]x[13]x[0]x[3]x[6]x[9]x[12]x[15]x[2]第4轮x[0]x[7]x[14]x[5]x[12]x[3]x[10]x[1]x[8]x[15]x[6]x[13]x[4]x[11]x[2]x[9]MD-5的安全性MD-5的输出为128-bit,若采用纯强力攻击寻找一个消息具有给定Hash值的计算困难性为2128,用每秒可试验1000000000个消息的计算机需时1.07×1022年。采用生日攻击法,找出具有相同杂凑值的两个消息需执行264次运算。5、数字签名与完整性保护数字签名概念数字签名与验证数字信封技术时间戳技术数字签名概述日常生活和经济往来中,签名盖章和识别签名是一个重要环节;计算机网络通信时代,用密码学来实现数字签名;数字签名特点:收方能够确认或证实发方的签字;任何人都不能仿造;如果发方否认他所签名的消息,可以通过仲裁解决争议。数字签名与手写签名和消息认证与手写签名的区别;手写签名是模拟的,且因人而异;数字签名是01数字串,因消息而异。与消息认证的区别:消息认证使收方能验证消息内容是否被篡改;数字签名还可以认证消息发送者的身份。数字签名算法RSA算法

应用最广泛DSA(DigitalSignatureAlgorithm)算法

基于有限域上的离散对数问题GOST算法

俄罗斯采用的数字签名标准算法数字签名与验证过程第一步:将消息按散列算法计算得到一个固定位数的消息摘要值。在数学上保证:只要改动消息的任何一位,重新计算出的消息摘要就会与原先值不符。这样就保证了消息的不可更改。数字签名与验证过程第二步:对消息摘要值用发送者的私有密钥加密,所产生的密文即称数字签名。然后该数字签名同原消息一起发送给接收者。第三步:接收方收到消息和数字签名后,用同样的散列算法对消息计算摘要值,然后与用发送者的公开密钥对数字签名进行解密,将解密后的结果与计算的摘要值相比较。如相等则说明报文确实来自发送者。数字签名与验证过程图示消息摘要数字签名消息数字签名消息摘要数字签名摘要发送方接收方数字签名与数据完整性验证数据的完整性(integrity)数据的完整性是用来认证消息、检验数据是否被篡改的技术,是另一类型的数字签名实现技术:双钥加密算法和消息摘要算法应用:消息不需加密但要鉴别,如银行发出的支票Alice与Bob通话,Bob希望验证消息的完整性:

—Alice就要使用SHA来计算消息(密文)的消息摘要,并使用自己的私有密钥对这个消息摘要进行加密(即该消息的签名)

—Alice将消息发给Bob

—Bob接到消息后,首先用Alice的公开密钥解密,然后计算消息的消息摘要,再比较两者是否相同

—若相同,Bob就能确信接受到的消息是完整的电子信封技术为解决每次传送更换密钥的问题,结合对称加密技术和非对称密钥加密技术的优点,产生了电子信封技术,用来传输数据。

电子信封技术实现加密对称密钥用户A明文密文用户B的公钥电子信封用户B密文解密明文用户B的私钥对称密钥数字时间戳(DigitalTime-Stamp)交易文件中,文件签署日期和签名一样是防止被伪造和篡改的关键性内容数字时间戳服务(DTS)是网上安全服务项目,由专门的机构提供时间戳是一个经过加密后形成的凭证文档,包括:需加时间戳的文件的摘要、DTS收到文件的日期和时间、DTS的数字签名时间戳产生过程:用户将需加时间戳的文件用HASH编码加密形成摘要,并将其发送到DTS;DTS在加入了收到日期和时间信息后再对该文件加密和数字签名,然后返回用户数字证书的结构

相关标准

PKI的组成与功能

我国PKI的发展六、数字证书与PKI体系数字证书(Digitalcertificates)数字证书:是一个担保个人、计算机系统或组织的身份和密钥所有权的电子文档,它的格式必须符合CCITTX.509国际标准的规定数字证书可以解决公开密钥的认证问题基于公开密钥体制(PKI)的数字证书是电子商务安全体系的核心,其用途是利用公共密钥加密系统来保护与验证公众的密钥,由可信任的、公正的权威机构CA颁发应用程序能识别的证书类型如下:客户证书(个人证书)、站点证书(服务器证书)、安全邮件证书、CA证书数字证书(续)证书的内容(证书格式遵循X.509国际标准)

—证书的数据:版本信息、证书序列号、CA使用的签名算法、发行证书CA的名称、证书的有效期、被证明的公钥信息

—发行证书的CA签名:CA签名和签名算法证书的有效性

—证书没有过期

—密钥没有修改

—用户仍然有权使用这个密钥

—CA负责回收证书,发行无效证书清单证书使用证书帮助证实个人身份,你的证书和你的密钥就是你是谁的证据公钥证书的结构

证书主体身份信息主体的公钥CA名称CA签名签字X.500与X.509X.500和X.509是安全认证系统的核心:为了提供公用网络用户目录信息服务,ITU于1988年制定了X.500系列标准。X.500定义了一种区别命名规则,以命名树来确保用户名称的唯一性X.509是由国际电信联盟(ITU-T)制定的数字证书标准。X.509为X.500用户名称提供了通信实体鉴别机制,并规定了实体鉴别过程中广泛适用的证书语法和数据接口,X.509称之为证书。

X.509证书由用户公共密钥与用户标识符组成,此外还包括版本号、证书序列号、CA标识符、签名算法标识、签发者名称、证书有效期等。目前,X.509标准已在编排公共密钥格式方面被广泛接受,已用于许多网络安全应用程序,其中包括IP安全(Ipsec)、安全套接层(SSL)、安全电子交易(SET)、安全多媒体INTERNET邮件扩展(S/MIME)等。

公钥基础结构

(Public

Key

Infrastructure,

PKI)

PKI是一种遵循标准的密钥管理平台,它能够为所有网络应用透明地提供采用加密和数字签名等密码服务所必需的密钥和证书管理。

PKI体系结构采用证书管理公钥,即结合X.509标准中的鉴别框架(Authentication

Framework)来实现密钥管理,通过CA把用户的公钥及其它标识信息捆绑在一起,在INTERNET上验证用户的身份,保证网上数据的保密性和完整性。

公钥基础结构

(Public

Key

Infrastructure,

PKI)

一个PKI必须支持下面的密钥和证书管理服务:

◆认证机关(CA)

◆证书库

◆证书的撤消

◆密钥的备份与恢复

◆对数字签名的抗抵赖性的支持

◆密钥对和证书的自动更新

◆密钥历史信息的管理

◆对交叉认证的支持

◆客户端证书处理系统如何获得发送方公钥A发送验证消息给B;B用私钥加密该消息并附上证书送给A;A收到后用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论