单向函数
特点:正向很容易 逆向很难
定义:函数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函数要满足如下条件:
单向性(抗原像):对若干给定的消息,计算其哈希值容易.但是,对于给定的哈希值h,要找到M使得H(M)=h在计算上是不可行的。
弱抗碰撞(抗二次原像):对于给定的消息M1,要发现另一个消息M2,满足H(M1)=H(M2)在计算上是不可行的。
强抗碰撞:找任意一对不同的消息M1,M2,使H(M1)=H(M2)在计算上是不可行的。
Hash函数的分类:
改动检测码MDC(Manipulation Detection Code)
不带密钥的哈希函数
主要用于消息完整性认证
消息认证码MAC(Message Authentication Code)
带密钥的哈希函数
用于消息源认证和消息完整性认证
Hash函数的用途:
消息完整性检测
消息源认证码
数字签名 1.自己签很容易 2.别人很难模仿 3.一旦有纠纷 能被鉴别
Hash链可以用于口令认证(身份鉴别)
比特承诺等密码协议
原文:https://www.cnblogs.com/sjyu/p/12864726.html