transient faults: enabled.
fault types: randomizing zeroing.
Maximum number of faults: 2.
Total number of different fault injections: 7141.
Total number of successful attack: 72.
noprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
S ≠ @ ∧ (S ≡ @ [mod p] ∨ S ≡ @ [mod q])
q × (-(me−1 mod (q − 1) mod q) + me−1 mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
mdqq mod qq | Sptdqt ≢ Sqtdpt [mod t]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := Random ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Zero abort with error ; return S ;
q × (-(Random mod q) + me−1 mod (p − 1) × q−1 mod p) + (Random mod q)
Attack successful.
qq | Sptdqt ≢ Sqtdpt [mod t]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod Random ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Zero abort with error ; return S ;
q × (-(mr2 × (q − 1) + (e−1 mod (q − 1)) mod Random) + me−1 mod (p − 1) × q−1 mod p) + (mr2 × (q − 1) + (e−1 mod (q − 1)) mod Random)
Attack successful.
mdqq | Sptdqt ≢ Sqtdpt [mod t]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := Random mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Zero abort with error ; return S ;
q × (-(Random mod q) + me−1 mod (p − 1) × q−1 mod p) + (Random mod q)
Attack successful.
dqq | Sptdqt ≢ Sqtdpt [mod t]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mRandom mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Zero abort with error ; return S ;
q × (-(mRandom mod (q − 1) mod q) + me−1 mod (p − 1) × q−1 mod p) + (mRandom mod (q − 1) mod q)
Attack successful.
m | Sptdqt ≢ Sqtdpt [mod t]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := Randomdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Zero abort with error ; return S ;
q × (-(Randome−1 mod (q − 1) mod q) + me−1 mod (p − 1) × q−1 mod p) + (Randome−1 mod (q − 1) mod q)
Attack successful.
mdpp mod pp | Sptdqt ≢ Sqtdpt [mod t]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := Random ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Zero abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + Random × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
pp | Sptdqt ≢ Sqtdpt [mod t]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod Random ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Zero abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + (mr1 × (p − 1) + (e−1 mod (p − 1)) mod Random) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
mdpp | Sptdqt ≢ Sqtdpt [mod t]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := Random mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Zero abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + Random × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
dpp | Sptdqt ≢ Sqtdpt [mod t]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mRandom mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Zero abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + mRandom mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
m | Sptdqt ≢ Sqtdpt [mod t]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := Randomdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Zero abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + Randome−1 mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
iq × (Sp − Sq) mod p | S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × Random ; if Zero abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × Random + (me−1 mod (q − 1) mod q)
Attack successful.
p | S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod Random) ; if Zero abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + (me−1 mod (p − 1) mod p) × (q−1 mod p) mod Random) + (me−1 mod (q − 1) mod q)
Attack successful.
iq × (Sp − Sq) | S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (Random mod p) ; if Zero abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (Random mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
iq | S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (Random × (Sp − Sq) mod p) ; if Zero abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + me−1 mod (p − 1) × Random mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
Sp − Sq | S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × Random mod p) ; if Zero abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (q−1 × Random mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
Sp | S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Random − Sq) mod p) ; if Zero abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + Random × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
-Sq | S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp + Random) mod p) ; if Zero abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (me−1 mod (p − 1) + Random × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
Sq | S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Random) mod p) ; if Zero abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-Random + me−1 mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
Sqq mod q | S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Random ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if Zero abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-Random + me−1 mod (p − 1) × q−1 mod p) + Random
Attack successful.
q | S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod Random ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if Zero abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-((mr2 × (q − 1) + (e−1 mod (q − 1)) mod (q − 1 × (t − 1)) mod (q × t)) mod Random) + me−1 mod (p − 1) × q−1 mod p) + ((mr2 × (q − 1) + (e−1 mod (q − 1)) mod (q − 1 × (t − 1)) mod (q × t)) mod Random)
Attack successful.
Sqq | S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Random mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if Zero abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(Random mod q) + me−1 mod (p − 1) × q−1 mod p) + (Random mod q)
Attack successful.
Spp mod p | S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Random ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if Zero abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + Random × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
p | S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod Random ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if Zero abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + ((mr1 × (p − 1) + (e−1 mod (p − 1)) mod (p − 1 × (t − 1)) mod (p × t)) mod Random) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
Spp | S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Random mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if Zero abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + Random × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
Sqq mod q | S ≢ Sqq [mod q]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Random ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ Zero abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-Random + me−1 mod (p − 1) × q−1 mod p) + Random
Attack successful.
q | S ≢ Sqq [mod q]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod Random ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ Zero abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-((mr2 × (q − 1) + (e−1 mod (q − 1)) mod (q − 1 × (t − 1)) mod (q × t)) mod Random) + me−1 mod (p − 1) × q−1 mod p) + ((mr2 × (q − 1) + (e−1 mod (q − 1)) mod (q − 1 × (t − 1)) mod (q × t)) mod Random)
Attack successful.
Sqq | S ≢ Sqq [mod q]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Random mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ Zero abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(Random mod q) + me−1 mod (p − 1) × q−1 mod p) + (Random mod q)
Attack successful.
iq × (Sp − Sq) mod p | S ≢ Spp [mod p]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × Random ; if Zero ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × Random + (me−1 mod (q − 1) mod q)
Attack successful.
p | S ≢ Spp [mod p]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod Random) ; if Zero ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + (me−1 mod (p − 1) mod p) × (q−1 mod p) mod Random) + (me−1 mod (q − 1) mod q)
Attack successful.
iq × (Sp − Sq) | S ≢ Spp [mod p]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (Random mod p) ; if Zero ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (Random mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
iq | S ≢ Spp [mod p]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (Random × (Sp − Sq) mod p) ; if Zero ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + me−1 mod (p − 1) × Random mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
Sp − Sq | S ≢ Spp [mod p]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × Random mod p) ; if Zero ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (q−1 × Random mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
Sp | S ≢ Spp [mod p]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Random − Sq) mod p) ; if Zero ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + Random × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
-Sq | S ≢ Spp [mod p]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp + Random) mod p) ; if Zero ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (me−1 mod (p − 1) + Random × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
Sq | S ≢ Spp [mod p]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Random) mod p) ; if Zero ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-Random + me−1 mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
Spp mod p | S ≢ Spp [mod p]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Random ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if Zero ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + Random × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
p | S ≢ Spp [mod p]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod Random ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if Zero ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + ((mr1 × (p − 1) + (e−1 mod (p − 1)) mod (p − 1 × (t − 1)) mod (p × t)) mod Random) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
Spp | S ≢ Spp [mod p]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Random mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if Zero ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + Random × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
dq + r2 × (q − 1) | qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := Random ; Sqq := mdqq mod qq ; if Zero abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(mRandom mod (q − 1) mod q) + me−1 mod (p − 1) × q−1 mod p) + (mRandom mod (q − 1) mod q)
Attack successful.
dq | qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := Random + r2 × (q − 1) ; Sqq := mdqq mod qq ; if Zero abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(mRandom mod (q − 1) mod q) + me−1 mod (p − 1) × q−1 mod p) + (mRandom mod (q − 1) mod q)
Attack successful.
r2 × (q − 1) | qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + Random ; Sqq := mdqq mod qq ; if Zero abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 + Random mod (q − 1) mod q) + me−1 mod (p − 1) × q−1 mod p) + (me−1 + Random mod (q − 1) mod q)
Attack successful.
q − 1 | qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × Random ; Sqq := mdqq mod qq ; if Zero abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(mr2 × Random + e−1 mod (q − 1) mod q) + me−1 mod (p − 1) × q−1 mod p) + (mr2 × Random + e−1 mod (q − 1) mod q)
Attack successful.
q | qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (Random − 1) ; Sqq := mdqq mod qq ; if Zero abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(mr2 × (-1 + Random) + e−1 mod (q − 1) mod q) + me−1 mod (p − 1) × q−1 mod p) + (mr2 × (-1 + Random) + e−1 mod (q − 1) mod q)
Attack successful.
-1 | qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q + Random) ; Sqq := mdqq mod qq ; if Zero abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(mr2 × (q + Random) + e−1 mod (q − 1) mod q) + me−1 mod (p − 1) × q−1 mod p) + (mr2 × (q + Random) + e−1 mod (q − 1) mod q)
Attack successful.
1 | qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − Random) ; Sqq := mdqq mod qq ; if Zero abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(mr2 × (q − Random) + e−1 mod (q − 1) mod q) + me−1 mod (p − 1) × q−1 mod p) + (mr2 × (q − Random) + e−1 mod (q − 1) mod q)
Attack successful.
q | qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := Random × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if Zero abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-((mr2 × (q − 1) + (e−1 mod (q − 1)) mod (t × Random)) mod q) + me−1 mod (p − 1) × q−1 mod p) + ((mr2 × (q − 1) + (e−1 mod (q − 1)) mod (t × Random)) mod q)
Attack successful.
dq + r2 × (q − 1) | dqq ≢ dq [mod q − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := Random ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ Zero abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(mRandom mod (q − 1) mod q) + me−1 mod (p − 1) × q−1 mod p) + (mRandom mod (q − 1) mod q)
Attack successful.
dq | dqq ≢ dq [mod q − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := Random + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ Zero abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(mRandom mod (q − 1) mod q) + me−1 mod (p − 1) × q−1 mod p) + (mRandom mod (q − 1) mod q)
Attack successful.
r2 × (q − 1) | dqq ≢ dq [mod q − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + Random ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ Zero abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 + Random mod (q − 1) mod q) + me−1 mod (p − 1) × q−1 mod p) + (me−1 + Random mod (q − 1) mod q)
Attack successful.
q − 1 | dqq ≢ dq [mod q − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × Random ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ Zero abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(mr2 × Random + e−1 mod (q − 1) mod q) + me−1 mod (p − 1) × q−1 mod p) + (mr2 × Random + e−1 mod (q − 1) mod q)
Attack successful.
q | dqq ≢ dq [mod q − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (Random − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ Zero abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(mr2 × (-1 + Random) + e−1 mod (q − 1) mod q) + me−1 mod (p − 1) × q−1 mod p) + (mr2 × (-1 + Random) + e−1 mod (q − 1) mod q)
Attack successful.
-1 | dqq ≢ dq [mod q − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q + Random) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ Zero abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(mr2 × (q + Random) + e−1 mod (q − 1) mod q) + me−1 mod (p − 1) × q−1 mod p) + (mr2 × (q + Random) + e−1 mod (q − 1) mod q)
Attack successful.
1 | dqq ≢ dq [mod q − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − Random) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ Zero abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(mr2 × (q − Random) + e−1 mod (q − 1) mod q) + me−1 mod (p − 1) × q−1 mod p) + (mr2 × (q − Random) + e−1 mod (q − 1) mod q)
Attack successful.
q | qq ≢ 0 [mod q]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := Random × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if Zero ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-((mr2 × (q − 1) + (e−1 mod (q − 1)) mod (t × Random)) mod q) + me−1 mod (p − 1) × q−1 mod p) + ((mr2 × (q − 1) + (e−1 mod (q − 1)) mod (t × Random)) mod q)
Attack successful.
q | qq
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := Random × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if Zero ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-((mr2 × (q − 1) + (e−1 mod (q − 1)) mod (t × Random)) mod q) + me−1 mod (p − 1) × q−1 mod p) + ((mr2 × (q − 1) + (e−1 mod (q − 1)) mod (t × Random)) mod q)
Attack successful.
dp + r1 × (p − 1) | pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := Random ; Spp := mdpp mod pp ; if Zero abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + mRandom mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
dp | pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := Random + r1 × (p − 1) ; Spp := mdpp mod pp ; if Zero abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + mRandom mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
r1 × (p − 1) | pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + Random ; Spp := mdpp mod pp ; if Zero abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + me−1 + Random mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
p − 1 | pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × Random ; Spp := mdpp mod pp ; if Zero abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + mr1 × Random + e−1 mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
p | pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (Random − 1) ; Spp := mdpp mod pp ; if Zero abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + mr1 × (-1 + Random) + e−1 mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
-1 | pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p + Random) ; Spp := mdpp mod pp ; if Zero abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + mr1 × (p + Random) + e−1 mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
1 | pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − Random) ; Spp := mdpp mod pp ; if Zero abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + mr1 × (p − Random) + e−1 mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
p | pp ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := Random × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if Zero abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + (mr1 × (p − 1) + (e−1 mod (p − 1)) mod (t × Random)) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
dp + r1 × (p − 1) | dpp ≢ dp [mod p − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := Random ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ Zero abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + mRandom mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
dp | dpp ≢ dp [mod p − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := Random + r1 × (p − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ Zero abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + mRandom mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
r1 × (p − 1) | dpp ≢ dp [mod p − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + Random ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ Zero abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + me−1 + Random mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
p − 1 | dpp ≢ dp [mod p − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × Random ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ Zero abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + mr1 × Random + e−1 mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
p | dpp ≢ dp [mod p − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (Random − 1) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ Zero abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + mr1 × (-1 + Random) + e−1 mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
-1 | dpp ≢ dp [mod p − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p + Random) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ Zero abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + mr1 × (p + Random) + e−1 mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
1 | dpp ≢ dp [mod p − 1]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := p × t ; dpp := dp + r1 × (p − Random) ; Spp := mdpp mod pp ; if pp ≢ 0 [mod p] ∨ Zero abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + mr1 × (p − Random) + e−1 mod (p − 1) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
p | pp ≢ 0 [mod p]
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := Random × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if Zero ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + (mr1 × (p − 1) + (e−1 mod (p − 1)) mod (t × Random)) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.
p | pp
expand/collapsenoprop error, m, e, r1, r2 ; prime {p}, {q}, t ; dp := { e-1 mod (p − 1) } ; dq := { e-1 mod (q − 1) } ; iq := { q-1 mod p } ; pp := Random × t ; dpp := dp + r1 × (p − 1) ; Spp := mdpp mod pp ; if Zero ≢ 0 [mod p] ∨ dpp ≢ dp [mod p − 1] abort with error ; qq := q × t ; dqq := dq + r2 × (q − 1) ; Sqq := mdqq mod qq ; if qq ≢ 0 [mod q] ∨ dqq ≢ dq [mod q − 1] abort with error ; Sp := Spp mod p ; Sq := Sqq mod q ; S := Sq + q × (iq × (Sp − Sq) mod p) ; if S ≢ Spp [mod p] ∨ S ≢ Sqq [mod q] abort with error ; Spt := Spp mod t ; Sqt := Sqq mod t ; dpt := dpp mod (t − 1) ; dqt := dqq mod (t − 1) ; if Sptdqt ≢ Sqtdpt [mod t] abort with error ; return S ;
q × (-(me−1 mod (q − 1) mod q) + (mr1 × (p − 1) + (e−1 mod (p − 1)) mod (t × Random)) × q−1 mod p) + (me−1 mod (q − 1) mod q)
Attack successful.