[
[
['11','add','hl'],
['17','add','hl'],
['27','remove','slide-up'],
['2','add','slide-down']
],
[
['37','add','hl'],
['37','remove','hidden'],
['41','add','hl'],
['41','remove','hidden'],
['4','add','hidden'],
['11','remove','hl'],
['11','add','hidden'],
['17','remove','hl'],
['17','add','hidden']
],
[
['37','remove','hl'],
['41','remove','hl'],
['286','add','hl'],
['282','add','hl'],
['51','remove','slide-up'],
['27','add','slide-down']
],
[
['60','add','hl'],
['60','remove','hidden'],
['61','remove','indent-1'],
['61','add','hl'],
['61','remove','hidden'],
['283','add','hl'],
['283','remove','slide-left'],
['61','add','indent-2'],
['286','remove','hl'],
['286','add','slide-left'],
['282','remove','hl'],
['282','add','slide-right']
],
[
['60','remove','hl'],
['61','remove','hl'],
['283','remove','hl'],
['60','add','hl'],
['77','remove','slide-up'],
['51','add','slide-down']
],
[
['61','remove','indent-2'],
['60','remove','hl'],
['60','add','hidden'],
['61','add','indent-1']
],
[
['306','add','hl'],
['285','add','hl'],
['13','add','hl'],
['102','remove','slide-up'],
['77','add','slide-down']
],
[
['111','add','hl'],
['111','remove','hidden'],
['286','add','hl'],
['286','remove','slide-left'],
['282','add','hl'],
['282','remove','slide-right'],
['306','remove','hl'],
['306','add','slide-left'],
['285','remove','hl'],
['285','add','slide-right'],
['13','remove','hl'],
['13','add','hidden']
],
[
['111','remove','hl'],
['286','remove','hl'],
['282','remove','hl'],
['292','add','hl'],
['298','add','hl'],
['127','remove','slide-up'],
['102','add','slide-down']
],
[
['144','add','hl'],
['144','remove','hidden'],
['19','remove','indent-1'],
['146','add','hl'],
['146','remove','hidden'],
['151','add','hl'],
['151','remove','hidden'],
['292','remove','hl'],
['292','add','slide-left'],
['298','remove','hl'],
['298','add','slide-right'],
['19','add','indent-2']
],
[
['144','remove','hl'],
['146','remove','hl'],
['151','remove','hl'],
['5','add','hl'],
['6','add','hl'],
['294','add','hl'],
['299','add','hl'],
['291','add','hl'],
['288','add','hl'],
['297','add','hl'],
['151','add','hl'],
['155','remove','slide-up'],
['127','add','slide-down']
],
[
['295','add','hl'],
['295','remove','slide-left'],
['292','add','hl'],
['292','remove','slide-left'],
['289','add','hl'],
['289','remove','slide-left'],
['296-slide','remove','slide-left'],
['5','remove','hl'],
['5','add','hidden'],
['6','remove','hl'],
['6','add','hidden'],
['294','remove','hl'],
['294','add','slide-right'],
['299','remove','hl'],
['299','add','slide-right'],
['291','remove','hl'],
['291','add','slide-right'],
['288','remove','hl'],
['288','add','slide-right'],
['297','remove','hl'],
['297','add','slide-right'],
['151','remove','hl'],
['151','add','hidden']
],
[
['295','remove','hl'],
['292','remove','hl'],
['289','remove','hl']
],
[
['296-flip','add','flipped'],
['155','add','slide-down']
],
[
['295','add','hl'],
['292','add','hl'],
['289','add','hl']
],
[
['5','add','hl'],
['5','remove','hidden'],
['6','add','hl'],
['6','remove','hidden'],
['294','add','hl'],
['294','remove','slide-right'],
['299','add','hl'],
['299','remove','slide-right'],
['298','add','hl'],
['298','remove','slide-right'],
['288','add','hl'],
['288','remove','slide-right'],
['297','add','hl'],
['297','remove','slide-right'],
['295','remove','hl'],
['295','add','slide-left'],
['292','remove','hl'],
['292','add','slide-left'],
['289','remove','hl'],
['289','add','slide-left'],
['296-slide','add','slide-left']
],
[
['5','remove','hl'],
['6','remove','hl'],
['294','remove','hl'],
['299','remove','hl'],
['298','remove','hl'],
['288','remove','hl'],
['297','remove','hl'],
['305','add','hl'],
['61','add','hl'],
['18','add','hl'],
['144','add','hl'],
['302','add','hl'],
['146','add','hl'],
['258','remove','slide-up']
],
[
['260','remove','hidden'],
['306','add','hl'],
['306','remove','slide-left'],
['285','add','hl'],
['285','remove','slide-right'],
['291','add','hl'],
['291','remove','slide-right'],
['292','add','hl'],
['292','remove','slide-left'],
['19','remove','indent-2'],
['303','add','hl'],
['303','remove','slide-left'],
['305','remove','hl'],
['305','add','slide-right'],
['61','remove','hl'],
['61','add','hidden'],
['18','remove','hl'],
['18','add','hidden'],
['144','remove','hl'],
['144','add','hidden'],
['19','add','indent-1'],
['302','remove','hl'],
['302','add','slide-right'],
['146','remove','hl'],
['146','add','hidden']
],
[
['306','remove','hl'],
['285','remove','hl'],
['291','remove','hl'],
['292','remove','hl'],
['303','remove','hl']
]
]
The starting point is $\lib{sig-real+ro}$:
The library can remember signatures produced by $\sigsign$; they don't need to be verified later in $\sigver$.\FORMATTINGHACK{\pagebreak}
Inline the call made to $\ro$ inside $\sigsign$.
Make the if-statement in $\sigsign$ unconditional. This changes the library's behavior only in the bad event that $\rotable[\ptxt\|R]$ is already defined. However, $R$ is sampled uniformly each time. If the adversary makes at most $q$ calls to the library's subroutines, then there are most $q$ entries in $\rotable[\cdot]$, so at most $q$ ``bad'' values of $R$ that can be chosen. Overall, across at most $q$ calls to $\sigsign$, the bad event has negligible probability at most $q^2/2^\secpar$.
Instead of uniformly sampling $\rotable[\ptxt\|R]$ and setting $S := \rotable[\ptxt\|R]^d$, we can uniformly sample $S$ and set $\rotable[\ptxt\|R] := S^e$. The two methods induce the same joint distribution over $(S, \rotable[\ptxt\|R])$.
When $\sigver$ checks whether $Y = S^e$, it always uses a $Y$ that was chosen uniformly in $\ro$, not chosen with a known $e$-th root in $\sigsign$ (the if-statement in $\sigver$ catches these cases). \FORMATTINGHACK{\pagebreak}If we let $\mathcal{Y}$ denote the set of all $\ro$-outputs, then the condition $Y = S^e$ \emph{implies} $S^e \in \mathcal{Y}$. Hence, it has no effect on the library to add the additional check $S^e \in \mathcal{Y}$ in $\sigver$.
The library no longer uses the private RSA exponent $d$; it maintains a set $\mathcal{Y}$ of uniformly sampled values; it later checks whether the adversary has provided an $e$-th root of \emph{any} of these values. Hence, we can apply \claimref{sig.clm.rsa-self-reduce}:
After removing the now-unreachable if-statement, and reversing several earlier changes, the result is $\lib{sig-fake+ro}$. This completes the proof.
$\lib{sig-real+ro}$
$\lib{sig-fake+ro}$
$(\nmod,e,d) := \RSA.\KeyGen()$
return
$(\nmod,e)$
$\rsapk^*()$
$(\nmod,e)$
$R \gets \bits^\secpar$
if $\rotable[\ptxt\|R]$ undefined:
$S $
${}\gets \Z_\nmod$
${}:= \ro(\ptxt\|R)^d \pct \nmod $
$\rotable[\ptxt\|R] $
${}\gets \Z_\nmod$
${}:= S^e \pct \nmod$
$S := {}$
$\ro(\ptxt\|R)^d \pct \nmod $
$\rotable[\ptxt\|R]^d \pct \nmod $
$\mathcal{S} := \mathcal{S} \cup \{ (\ptxt,R,S) \}$
return $(R,S)$
if $(\ptxt,R,S) \in \mathcal{S}$: return $\mytrue$
$Y := \ro(\ptxt\|R)$
if
$S^e \pct \nmod \in \mathcal{Y}$:
$\rsacheck^*(S)$:
$\myfalse$:
return
$Y == S^e \pct \nmod$
$\myfalse$
else: return $\myfalse$
if $\rotable[A]$ undefined:
$\rotable[A] $
${}\gets \Z_\nmod$
${}:= \rsachallenge^*()$
${}\gets \Z_\nmod$
$\mathcal{Y} := \mathcal{Y} \cup \{\rotable[A]\}$
return $\rotable[A]$
$\link$
$\lib{rsa*-real}$
$(\nmod,e,d) := \RSA.\KeyGen()$
return $(\nmod,e)$
$Y \gets \Z_\nmod$
$\mathcal{Y} := \mathcal{Y} \cup \{Y\}$
return $Y$
if $X^e \pct \nmod \in \mathcal{Y}$: return $\mytrue$
else: return $\myfalse$
$\lib{rsa*-ideal}$
$(\nmod,e,d) := \RSA.\KeyGen()$
return $(\nmod,e)$
$Y \gets \Z_\nmod$
return $Y$
return $\myfalse$