[
[
['6','add','hl'],
['9','add','hl'],
['39','add','hl'],
['34','add','hl'],
['14','remove','slide-up'],
['2','add','slide-down']
],
[
['20','add','hl'],
['20','remove','hidden'],
['21','add','hl'],
['21','remove','hidden'],
['35','add','hl'],
['35','remove','slide-left'],
['4','add','hidden'],
['6','remove','hl'],
['6','add','hidden'],
['9','remove','hl'],
['9','add','hidden'],
['39','remove','hl'],
['39','add','slide-left'],
['34','remove','hl'],
['34','add','slide-right']
],
[
['20','remove','hl'],
['21','remove','hl'],
['35','remove','hl'],
['5','add','hl'],
['7','add','hl'],
['10','add','hl'],
['38','add','hl'],
['21','add','hl'],
['35','add','hl'],
['25','remove','slide-up'],
['14','add','slide-down']
],
[
['27','remove','hidden'],
['39','add','hl'],
['39','remove','slide-left'],
['30','add','hl'],
['30','remove','hidden'],
['36','add','hl'],
['36','remove','slide-left'],
['5','remove','hl'],
['5','add','hidden'],
['7','remove','hl'],
['7','add','hidden'],
['10','remove','hl'],
['10','add','hidden'],
['38','remove','hl'],
['38','add','slide-right'],
['21','remove','hl'],
['21','add','hidden'],
['35','remove','hl'],
['35','add','slide-right']
],
[
['39','remove','hl'],
['30','remove','hl'],
['36','remove','hl']
]
]
We use a short sequence of hybrids starting with $\lib{prf-real}$.
First, we apply the security of the PRF to replace $F$ with a lazy random dictionary. The standard three-hop maneuver is not shown.
Next, we apply \definitionref{uhf.def.dict} to replace a dictionary indexed by $U(\key_1, X)$ with a dictionary indexed directly by $X$. The standard three-hop maneuver is not shown. The result is precisely $\lib{prf-rand}$, which completes the proof.
$\lib{prf-real}$
$\key_1 \gets \bits^\secpar$
$\key_2 \gets \bits^\secpar$
$\lib{prf-rand}$
$H := U(\key_1, X)$
if
$\prftable[H]$ undefined:
$\prftable[X]$ undefined:
$\prftable[H] \gets \bits^n$
$\prftable[X] \gets \bits^n$
return
$F(\key_2,H)$
$\prftable[H]$
$\prftable[X]$