Skip to content

方法Method

简单制表哈希

Simple tabulation hashing · 简单表格哈希

把键分成定长字符,用各位置独立随机表异或得到哈希值,证明三独立并找出四键的确定相关。

形式陈述 ​

每个字符位置有自己的随机表 ​

固定正整数 c、r 和有限字符集 Σ。键是恰有 c 个字符的元组 x=(x0,…,xc−1)∈Σc,输出为 r 位串。为每个位置 i 建一张表 Ti:Σ→{0,1}r,全部位置、全部字符的表项相互独立且均匀。抽表后保持不变,定义

h(x)=T0[x0]⊕T1[x1]⊕⋯⊕Tc−1[xc−1],

其中 ⊕ 是逐位异或。位置0的字符a和位置1的字符a读取不同表项;不能为了省表把它们当成同一个随机量。[1, §1]

通用哈希只要求不同键的碰撞概率受控。本构造更强:对任意事先固定的至多三个不同键 x1,…,xk 及任意 r 位输出 y1,…,yk,有

Pr[h(x1)=y1,…,h(xk)=yk]=2−rk,1≤k≤3.

概率空间是建表时的所有随机表项,键先固定。对于 c≥2,|Σ|≥2,四独立一般不成立;这不是一次不走运的抽样,而是某些四键在每张表下都满足相关式。

三独立的消元证明 ​

先看三个不同键。必有一个位置不是三个字符都相同。在这个位置,至少一个字符只出现在这三个键中的一键:三字符互不相同则任取其一;两同一异则取异者。因此存在一个随机表项 Z,只影响其中一个键的输出。

暂不揭示Z。另两个键不同,同样可找到只属于其中一键的位置字符,再暂不揭示相应表项;最后一个键也至少有一个表项可留下。按这个顺序删除键后,反向揭示留下的三个表项。每次相关输出都是“新独立均匀r位串,异或一个已定常量”,故条件概率恰为 2−r。连乘便得到 2−3r。两键、一键是同一证明的较短版本。

这个论证没有把“每键单独均匀”误当成联合独立。决定性条件是,每轮确有尚未揭示且不出现在剩余键中的表项。

直觉

异或保留一份未揭示的随机性 ​

若Z均匀,固定任意a,映射 Z↦Z⊕a 是一一对应,结果仍均匀。制表哈希把每个键拆成几个小查表;只要能为要分析的键保留一份独占随机表项,就能逐键确定输出而不约束其它剩余键。

表项可以共享。两个键只差最后一字符时,大部分异或项都相同,但最后两项独立,仍给出独立的两份输出。问题不在于“是否共享过表项”,而在于共享方式能否形成无法消去的关系。

例子与边界

手算四键矩形 ​

令c=2、Σ={0,1}、r=3,抽得 T0=[1,6]、T1=[3,5]。数字按三位二进制异或:

键 运算 输出
00 1⊕3 2
01 1⊕5 4
10 6⊕3 5
11 6⊕5 3

这四个输出的异或为0。对任意随机表也成立,因为每个表项恰出现两次:

h(00)⊕h(01)⊕h(10)⊕h(11)=0.

知道前三个输出后,第四个已经确定;四个独立均匀r位串却只以 2−r 的概率满足这条关系。配套检查器把r改成2,穷举 44=256 张随机表:前三输出的64种组合各出现4次;四输出也只有64种,而独立四元组应有256种。

当c=1时,每个不同键直接读取不同表项,反而具有任意阶独立性。非四独立的结论必须保留至少两个位置、至少两个字符的条件。

截位、取模与键编码 ​

保留固定的b个输出位,1≤b≤r,仍给均匀且三独立的b位输出,适合 2b 个桶。直接对非二次幂m取模则不一定均匀。例如均匀三位数0至7模3,三个桶概率为3/8、3/8、2/8。对两个独立输入,此时碰撞概率为 22/64>1/3,不能继续引用“恰为1/m”。

输入元组必须完整表示原键。若可变长字符串只补零,不记录长度,两个原本不同的字符串可能先被编码成同一元组;之后再强的哈希独立性也无法把它们分开。使用定长键域,或先规定单射编码及可容纳的长度范围。

同一张表用于所有位置也会破坏结论:T[a]⊕T[b]=T[b]⊕T[a],字符交换便产生必然碰撞。这是更改了构造,不是上述三独立族的一次坏种子。

推论与应用

时间、空间和保证的使用范围 ​

设一个字符下标和一个r位表项都装进常数个RAM字。一次求值读c项并做c−1次异或,需O(c)时间;生成和保存全部表需要 c|Σ| 个表项、c|Σ|r 位主数据。只有c固定时才称查询常数时间。若r超过字长,异或与读写还要乘上相应字数;获取真正独立随机位也是建表所需资源。

三独立蕴含两独立,所以对固定键对的桶碰撞可直接使用通用哈希的分析。但线性探测的长聚簇依赖许多键联合落点,不能仅凭“三独立”三个字推出期望常数探测。原论文证明简单制表对线性探测等问题有超出一般三独立族的良好性质,依靠的是这套表项结构的专门分析。[1, §§1、3]

它也不是密码学伪随机函数。看到种子后的攻击者可以利用四键关系;本文概率结论针对先固定的键,而不是自适应挑选碰撞的安全游戏。Xor过滤器的精确误报证明还要求非成员指纹在给定全部成员信息后保持均匀,不能未经证明就用这里的三独立替代该条件。

终点任务要求复算三独立的小空间分布,再作两个结构修改:共享位置表、把输出模3。分别指出哪个证明前提消失,并给实际碰撞分布;只换一张随机种子不能完成这两项检查。

参考资料

[1] Mihai Pătraşcu、Mikkel Thorup,The Power of Simple Tabulation Hashing,作者预印本,2010/2011,§1的构造与三独立/非四独立讨论,§3的线性探测专门分析;正式刊载于JACM 59(3),2012,Article14。本文三键消元、矩形手算和枚举实验独立展开。

关系图谱5 个相邻概念 · 1 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组