我正在自学“CLRS的算法简介”。其中一个问题似乎是提供了一条不必要的信息,书中的问题11-4
设H是散列函数的类,其中每个散列函数h∈H将密钥的宇宙U映射到{0,1 ... m-1}。我们说H是k-通用的,如果对于k个不同的密钥{x1,x2 ... xk}的每个固定序列以及对于从H随机选择的任何h,该序列同样可能是任何m ^ k个序列长度为k的元素,其中元素是从{0,1 ... m-1}
绘制的部分d(前面的部分是无关的):假设Alice和Bob在哈希函数的2通用族H中秘密地同意哈希函数h。每个h∈H映射从密钥U的宇宙到Zp = {0,1,2 ... p-1},其中p是素数。之后,Alice通过Internet向Bob发送消息m,其中m∈H。她还通过发送认证标签t = h(m)向Bob发送此消息,并且Bob检查他收到的对(m,t)确实满足t = h(m)。假设对手在途中拦截(m,t)并试图通过用另一对(m',t')替换对(m,t)来欺骗Bob。认为对手成功欺骗Bob接受(m',t')的概率最多为1 / p,无论对手有多少计算能力,即使对手知道其家族H使用哈希函数。
所以对手可以做的最好的事情就是找到所有人。这样h'(m)= t,然后找到一些m',t'与那些h'尽可能。然而,由于宇宙H是2 - 通用的,这意味着即使对手已经将其缩小到较小的h'对于每个m',t'仍然同样可能是任何p值。因此,对手的概率是m' t'匹配Alice和Bob的函数h正好是1 / p,假设攻击者最初将其缩小了。
然而,问题表明p是素数。在我给出的论证中,我没有使用过这个事实,所以要么我的论证是错误的,要么是问题造成了一些不必要的条件?