数据完整性

我们需要一种机制,使得到消息的接收者可以验证该消息确实是来自所声称的消息源,且在传输的过程中未受到未授权方式修改。数据完整性就是抗击对消息未授权修改的安全服务。

定义

数据完整性保护 设Data为任意信息,KeKe未编码密钥,KvKv为与该编码密钥相匹配的验证密钥。Data的数据完整性保护如下:检测码的生成:MDCf(Ke,Data)MDC\larr f(Ke,Data)

检测码的验证:

G(Kv,Data,MDC)={True,MDC=f(Ke,Data)False,MDCf(Ke,Data)G(Kv,Data,MDC)= \begin {cases} True,MDC=f(Ke,Data) \\ False ,MDC≠f(Ke,Data) \end {cases}

其中f和g都是有效的密码变换:前者由一个辅助输入Ke参数化,后者由任意输入Kv参数化、

对称技术

在实现数据完整性的对称技术中,密码变换f和g是对称密码算法,这意味着f=g,Ke=Kvf=g,Ke=Kv

密码杂凑函数

实现MAC通常的方法时使用密钥杂凑函数技术。

杂凑函数是一个确定的函数,它将任意长的比特串映射为定长比特串的杂凑值。设hh为一个杂凑函数,其固定的输出长度用h\vert h \vert,它有以下的性质:

  • 混合变换,对于任意的输入xx,输出的杂凑值h(x)h(x)应当和区间[0,2h][0,2^{\vert h \vert}]中均匀的二进制串在计算上是不可区分的。

  • 抗碰撞攻击,输入x,y,xyx,y,x≠y,使得h(x)=h(y)h(x)=h(y)在计算上应当是不可行的。

  • 抗原像攻击,已知一个杂凑值hh,找一个输入串xx,使得h=h(x)h=h(x),在计算上是不可行的。

  • 实用有效性,给定一个输入串xxh(x)h(x)的计算可以在关于xx的长度规模的低阶多项式时间内完成。

杂凑函数在密码学中的应用