2个回答
2013-05-08
展开全部
4)单向散列函数介绍(Hash Function,哈希函数):
将任意长度的消息M映射/换算成固定长度值h(散列值,或消息摘要MD, Message Digest),最大的特点为其具有单向性。
h=H(M)
Hash函数用于消息认证(或身份认证)以及数字签名。
特性:
(1) 给定M,可算出h.
(2) 给定h,根据H(M)=h反推出M是非常困难的。
(3) 给定M,要找到另外一个消息M*,使其满足H(M*)=H(M)=h 是非常困难的。
注 (见 参考E,p75):
-从理论上说,有很多消息能生成相同的消息摘要。因为消息的长度是任意的,而摘要的长度是固定的。
-对于固定1000 bit的消息和固定128 bit的摘要,平均来说,有2872个消息与之对应,测试似乎不可能成功。
-对于一个128 bit的消息摘要算法,大约需要尝试2128个(长短不一的)消息,才能找到一个消息摘要与给定的摘要数值相吻合(作为攻击,当然该消息可为经篡改后的消息)。注:这里是用无数次的“尝试”,而非简单从h反推出M。
-对于一个128 bit的消息摘要算法,需要尝试264个消息才能找到两个具有相同摘要的消息。
-为什么将消息摘要定为128 bit? 因为消息摘要为m bit,任何人想要得到两个具有相同摘要的消息,大约需要尝试2m/2个消息。 若m=64, 则需检查232个消息,这在计算上是可行的。所以使m=128, 检查264个消息目前在计算上是不可行的。
应用举例讲解:
(i) 存储于银行计算机内的用户密码采用散列值,用于保密。
(ii)Alice要Bob写一份关于解雇Fred的报告,而Bob是Fred的朋友,想做“双面人”。
(iii)为文档和程序生成“指纹”或“DNA”。
在实际应用中,Hash函数是基于压缩函数的。
(RefC_p42_Hash函数)
给定任意长度的消息,Hash函数输出长度为m的散列值(即消息摘要)。
压倒函数的输入为
(1) 明文消息分组 Mi。
(2) 前一压缩数据的输出 CVi-1 (Compressed Vector)。
注:
-第一个压缩函数的输入M1为和IV (Initial Vector)。
-压缩函数的输出值为前所有分组的散列值;最后一个分组的散列值即为整个消息的散列值,即消息摘要MD。
Hash函数算法介绍: MD5算法 和 SHA-1算法。
MD5算法:
对任意长度的消息M作为输入,产生一个128 bit的散列值/消息摘要。
(RefC_p43_MD5算法)
算法包括5个步骤:
(1) 附加填充位:填充消息,使消息的长度位一个比512倍数小64位的数,填充位数为1~512。填充方法:原消息的后面第一位填1,其余填0。(例如:设消息为“abc”。)
(2) 附加长度:将原消息的64位表示附加在填充后的消息后面,这时处理后的消息的长度恰好为512的整数倍。(续上例)
若原消息的长度大于264时,则用原消息长度mod264的64位表示附加在填充后的消息后面。
(3) 初始化MD的缓冲区:缓冲区共有4个32 bit的寄存器 A、B、C、D, 各寄存器的初始值为
A: 01 23 45 67
B: 89 ab cd ef
C: fe dc ba 98
D: 76 54 32 10
(4) 按512 bit的消息分组处理输入消息:该步为MD5的主循环,包括4轮。
(RefC_p44_主循环处理)
每个循环均以当前正在处理的512 bit的分组Yq和128 bit的缓冲值ABCD为输入,然后更新缓冲内容。
以上4轮操作类似,每轮进行16次操作,各轮操作过程见下图。
(RefC_p44_某轮执行过程)
每一轮的非线性函数不同,4次所用的非线性函数分别记为 F、G、H、I。
F(X,Y,Z)=(X Y) ((~X) Z)
G(X,Y,Z)=(X Z) ( Y (~Z))
H(X,Y,Z)=X Y Z
I(X,Y,Z)=Y (X (~Z))
其中: :逻辑按位与 :逻辑按位或
~:逻辑按位反 :逻辑按位异或
注:T表:T[i]=232abs(sin(i))
安全散列函数算法(SHA, Secure Hash Algorithm):
SHA由美国NIST(国家标准与技术研究所)和NSA(国家标准协会)设计,用于数字签名(DS)。
SHA-1为SHA的修改版,于1995年发布。
SHA-1产生消息摘要的过程与MD5类似,但输入为度小于232 bit的消息,而输出为160 bit的散列值(即消息摘要MD),消息仍需填充使其最后为512的整数倍。
注:与MD5比较:
-附加填充位和附加消息长度与MD5相同。
-初始化缓冲器:SHA用两个缓冲区,每个区均有
5个32位的寄存器,分别为 A、B、C、D、E和H0、H1、H2、H3、H4。另有一单字缓冲区。
-按512 bit分组处理输入消息,主循环包括4轮(和MD5一样),但每轮操作20次(MD5为16次)
(详见参考资料)
2.5 数字信封
用于保证数据在传输过程中的安全。对称加密效率高,但密钥不适合在公共网络传递,而非对称加密传递简单,但效率低下。数字信封技术取二合一,即取对称加密的高效性和非对称加密的灵活性。
(RefB_p385_数字信封)
-两个不同的加密解密过程:明文的加密/解密,密钥的加密/解密。首先使用对称加密算法对数据加密;然后,利用非对称加密算法对对称加密过的密钥进行加密,过程包括:
(1) 发送消息时,发送方生成一个对称密钥。
(2) 发送方使用自己的对称加密的密钥和算法对欲发送的数据进行加密,形成数据密文。
(3) 发送方使用接收方提供的公钥,对自己的密钥进行加密。
(4) 发送方通过网络将加密后的密文和密钥传输到接收方。
(5) 接收方用私钥对加密后的发送方密钥进行解密,获得对称密钥。
(6) 接收方使用还原出的密钥对数据进行解密,得到数据明文。
应用两层加密体制,在内层运用对称加密技术,每次传送消息都可以重新生成新的密钥,保证消息的安全性。在外层,利用非对称加密技术加密对称密钥,保证密钥传递的安全性。
2.6 身份认证技术的发展
网络用户的身份认证可以用下列3中基本方法之一或它们的组合来实现。
(1) 所知(knowledge): 验证用户的密码,口令等。
(2) 所有(possession): 所掌握的用户的身份证、护照、信用卡等。
(3) 特征(characteristics):所掌握的用户的指纹、声音、笔记、手型,虹膜,DNA、动作等。
将任意长度的消息M映射/换算成固定长度值h(散列值,或消息摘要MD, Message Digest),最大的特点为其具有单向性。
h=H(M)
Hash函数用于消息认证(或身份认证)以及数字签名。
特性:
(1) 给定M,可算出h.
(2) 给定h,根据H(M)=h反推出M是非常困难的。
(3) 给定M,要找到另外一个消息M*,使其满足H(M*)=H(M)=h 是非常困难的。
注 (见 参考E,p75):
-从理论上说,有很多消息能生成相同的消息摘要。因为消息的长度是任意的,而摘要的长度是固定的。
-对于固定1000 bit的消息和固定128 bit的摘要,平均来说,有2872个消息与之对应,测试似乎不可能成功。
-对于一个128 bit的消息摘要算法,大约需要尝试2128个(长短不一的)消息,才能找到一个消息摘要与给定的摘要数值相吻合(作为攻击,当然该消息可为经篡改后的消息)。注:这里是用无数次的“尝试”,而非简单从h反推出M。
-对于一个128 bit的消息摘要算法,需要尝试264个消息才能找到两个具有相同摘要的消息。
-为什么将消息摘要定为128 bit? 因为消息摘要为m bit,任何人想要得到两个具有相同摘要的消息,大约需要尝试2m/2个消息。 若m=64, 则需检查232个消息,这在计算上是可行的。所以使m=128, 检查264个消息目前在计算上是不可行的。
应用举例讲解:
(i) 存储于银行计算机内的用户密码采用散列值,用于保密。
(ii)Alice要Bob写一份关于解雇Fred的报告,而Bob是Fred的朋友,想做“双面人”。
(iii)为文档和程序生成“指纹”或“DNA”。
在实际应用中,Hash函数是基于压缩函数的。
(RefC_p42_Hash函数)
给定任意长度的消息,Hash函数输出长度为m的散列值(即消息摘要)。
压倒函数的输入为
(1) 明文消息分组 Mi。
(2) 前一压缩数据的输出 CVi-1 (Compressed Vector)。
注:
-第一个压缩函数的输入M1为和IV (Initial Vector)。
-压缩函数的输出值为前所有分组的散列值;最后一个分组的散列值即为整个消息的散列值,即消息摘要MD。
Hash函数算法介绍: MD5算法 和 SHA-1算法。
MD5算法:
对任意长度的消息M作为输入,产生一个128 bit的散列值/消息摘要。
(RefC_p43_MD5算法)
算法包括5个步骤:
(1) 附加填充位:填充消息,使消息的长度位一个比512倍数小64位的数,填充位数为1~512。填充方法:原消息的后面第一位填1,其余填0。(例如:设消息为“abc”。)
(2) 附加长度:将原消息的64位表示附加在填充后的消息后面,这时处理后的消息的长度恰好为512的整数倍。(续上例)
若原消息的长度大于264时,则用原消息长度mod264的64位表示附加在填充后的消息后面。
(3) 初始化MD的缓冲区:缓冲区共有4个32 bit的寄存器 A、B、C、D, 各寄存器的初始值为
A: 01 23 45 67
B: 89 ab cd ef
C: fe dc ba 98
D: 76 54 32 10
(4) 按512 bit的消息分组处理输入消息:该步为MD5的主循环,包括4轮。
(RefC_p44_主循环处理)
每个循环均以当前正在处理的512 bit的分组Yq和128 bit的缓冲值ABCD为输入,然后更新缓冲内容。
以上4轮操作类似,每轮进行16次操作,各轮操作过程见下图。
(RefC_p44_某轮执行过程)
每一轮的非线性函数不同,4次所用的非线性函数分别记为 F、G、H、I。
F(X,Y,Z)=(X Y) ((~X) Z)
G(X,Y,Z)=(X Z) ( Y (~Z))
H(X,Y,Z)=X Y Z
I(X,Y,Z)=Y (X (~Z))
其中: :逻辑按位与 :逻辑按位或
~:逻辑按位反 :逻辑按位异或
注:T表:T[i]=232abs(sin(i))
安全散列函数算法(SHA, Secure Hash Algorithm):
SHA由美国NIST(国家标准与技术研究所)和NSA(国家标准协会)设计,用于数字签名(DS)。
SHA-1为SHA的修改版,于1995年发布。
SHA-1产生消息摘要的过程与MD5类似,但输入为度小于232 bit的消息,而输出为160 bit的散列值(即消息摘要MD),消息仍需填充使其最后为512的整数倍。
注:与MD5比较:
-附加填充位和附加消息长度与MD5相同。
-初始化缓冲器:SHA用两个缓冲区,每个区均有
5个32位的寄存器,分别为 A、B、C、D、E和H0、H1、H2、H3、H4。另有一单字缓冲区。
-按512 bit分组处理输入消息,主循环包括4轮(和MD5一样),但每轮操作20次(MD5为16次)
(详见参考资料)
2.5 数字信封
用于保证数据在传输过程中的安全。对称加密效率高,但密钥不适合在公共网络传递,而非对称加密传递简单,但效率低下。数字信封技术取二合一,即取对称加密的高效性和非对称加密的灵活性。
(RefB_p385_数字信封)
-两个不同的加密解密过程:明文的加密/解密,密钥的加密/解密。首先使用对称加密算法对数据加密;然后,利用非对称加密算法对对称加密过的密钥进行加密,过程包括:
(1) 发送消息时,发送方生成一个对称密钥。
(2) 发送方使用自己的对称加密的密钥和算法对欲发送的数据进行加密,形成数据密文。
(3) 发送方使用接收方提供的公钥,对自己的密钥进行加密。
(4) 发送方通过网络将加密后的密文和密钥传输到接收方。
(5) 接收方用私钥对加密后的发送方密钥进行解密,获得对称密钥。
(6) 接收方使用还原出的密钥对数据进行解密,得到数据明文。
应用两层加密体制,在内层运用对称加密技术,每次传送消息都可以重新生成新的密钥,保证消息的安全性。在外层,利用非对称加密技术加密对称密钥,保证密钥传递的安全性。
2.6 身份认证技术的发展
网络用户的身份认证可以用下列3中基本方法之一或它们的组合来实现。
(1) 所知(knowledge): 验证用户的密码,口令等。
(2) 所有(possession): 所掌握的用户的身份证、护照、信用卡等。
(3) 特征(characteristics):所掌握的用户的指纹、声音、笔记、手型,虹膜,DNA、动作等。
2013-05-08
展开全部
单项函数就是不可逆函数。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询