单向函数
特点:正向很容易 逆向很难
定义:函数f:{0,1}*->{0,1}*若满足下列两个条件,则称之为强单向函数:
1.计算f(x)是容易的,即f(x)是多项式时间可计算的
2.计算f函数的逆f-1(x)是困难的,即对每一多项式时间概率算法M,每一多项式p(n)和充分大的n(n>n0)有
Pr{M(f(Un)∈f-1(f(Un))}<1/p(n)
Hash码
把任意长变消息为固定长短的Hash码(信息摘要)
Hash码有很强的的错误检测能力,即改变数据的任何一位或多位,都将极大可能改变其Hash码。
Hash码与数据紧密联系,很好地反映着数据的真实性和完整性,因此人们把Hash码称为数据的‘指纹’。
Hash码是从数据压缩而成的,长度比数据的长度小的多,所以人们称Hash码为数据的‘摘要’。
Hash函数
定义为h=H(M)
Hash函数要满足如下安全性条件:
单向性(抗原像):对若干给定的消息,计算其哈希值容易.但是,对于给定的哈希值h,要找到M使得H(M)=h在计算上是不可行的。
弱抗碰撞(抗二次原像):对于给定的消息M1,要发现另一个消息M2,满足H(M1)=H(M2)在计算上是不可行的。
强抗碰撞:找任意一对不同的消息M1,M2,使H(M1)=H(M2)在计算上是不可行的。
随机性:Hash函数的输出具有伪随机性。
Hash函数的用途:
消息完整性检测
消息源认证码
数字签名 1.自己