Higher-Order Side Channel Security and Mask Refreshing
J.-S. Coron,E. Prouff, M. Rivain and T. Roche thomas.roche@ssi.gouv.fr FSE 2013 – March 2013
- T. Roche, ANSSI
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing J.-S. - - PowerPoint PPT Presentation
Higher-Order Side Channel Security and Mask Refreshing J.-S. Coron,E. Prouff, M. Rivain and T. Roche thomas.roche@ssi.gouv.fr FSE 2013 March 2013 T. Roche, ANSSI Higher-Order Side Channel Security and Mask Refreshing Side Channel Analysis
Higher-Order Side Channel Security and Mask Refreshing
◮ 1996 : Timing Attacks ◮ 1998 : Power Analysis ◮ 2000 : Electromagnetic Analysis
◮ 1998 : (single-bit) DPA KocherJaffeJune1999 ◮ 1999 : (multi-bit) DPA Messerges99 ◮ 2000 : Higher-order SCA Messerges2000 ◮ 2002 : Template SCA ChariRaoRohatgi2002 ◮ 2004 : CPA BrierClavierOlivier2004 ◮ 2005 : Stochastic SCA SchindlerLemkePaar2006 ◮ 2008 : Mutual Information SCA GierlichsBatinaTuyls2008 ◮ etc.
Higher-Order Side Channel Security and Mask Refreshing
◮ 1996 : Timing Attacks ◮ 1998 : Power Analysis ◮ 2000 : Electromagnetic Analysis
◮ 1998 : (single-bit) DPA KocherJaffeJune1999 ◮ 1999 : (multi-bit) DPA Messerges99 ◮ 2000 : Higher-order SCA Messerges2000 ◮ 2002 : Template SCA ChariRaoRohatgi2002 ◮ 2004 : CPA BrierClavierOlivier2004 ◮ 2005 : Stochastic SCA SchindlerLemkePaar2006 ◮ 2008 : Mutual Information SCA GierlichsBatinaTuyls2008 ◮ etc.
Higher-Order Side Channel Security and Mask Refreshing
◮ Efficient against SCA in practice. ◮ Difficult to implement for non-linear
◮ Less efficient against SCA in practice. ◮ Easy to implement for every
◮ Less efficient than masking when used
◮ Easy to implement for every
Higher-Order Side Channel Security and Mask Refreshing
◮ Efficient against SCA in practice. ◮ Difficult to implement for non-linear
◮ Less efficient against SCA in practice. ◮ Easy to implement for every
◮ Less efficient than masking when used
◮ Easy to implement for every
Higher-Order Side Channel Security and Mask Refreshing
◮ Efficient against SCA in practice. ◮ Difficult to implement for non-linear
◮ Less efficient against SCA in practice. ◮ Easy to implement for every
◮ Less efficient than masking when used
◮ Easy to implement for every
Higher-Order Side Channel Security and Mask Refreshing
◮ Efficient against SCA in practice. ◮ Difficult to implement for non-linear
◮ Less efficient against SCA in practice. ◮ Easy to implement for every
◮ Less efficient than masking when used
◮ Easy to implement for every
Higher-Order Side Channel Security and Mask Refreshing
◮ Bit x masked → x0, x1, . . . , xd ◮ Leakage : Li ∼ xi + N(µ, σ2) ◮ # of leakage samples to test
Higher-Order Side Channel Security and Mask Refreshing
◮ Bit x masked → x0, x1, . . . , xd ◮ Leakage : Li ∼ xi + N(µ, σ2) ◮ # of leakage samples to test
Higher-Order Side Channel Security and Mask Refreshing
◮ Bit x masked → x0, x1, . . . , xd ◮ Leakage : Li ∼ xi + N(µ, σ2) ◮ # of leakage samples to test
Higher-Order Side Channel Security and Mask Refreshing
◮ Bit x masked → x0, x1, . . . , xd ◮ Leakage : Li ∼ xi + N(µ, σ2) ◮ # of leakage samples to test
Higher-Order Side Channel Security and Mask Refreshing
◮ Hardware interpretation : d is the maximum of wires observed
◮ Software interpretation : d is the maximum of different timings
◮ d = 1 : KocherJaffeJune99, Bl¨
◮ d = 2 : RivainDottaxProuff08. ◮ d ≥ 1 : IshaiSahaiWagner03, ProuffRoche11,
Higher-Order Side Channel Security and Mask Refreshing
◮ Hardware interpretation : d is the maximum of wires observed
◮ Software interpretation : d is the maximum of different timings
◮ d = 1 : KocherJaffeJune99, Bl¨
◮ d = 2 : RivainDottaxProuff08. ◮ d ≥ 1 : IshaiSahaiWagner03, ProuffRoche11,
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing
◮ → Problem reduces to secure multiplications !
Higher-Order Side Channel Security and Mask Refreshing
◮ → Problem reduces to secure multiplications !
Higher-Order Side Channel Security and Mask Refreshing
◮ → Problem reduces to secure multiplications !
Higher-Order Side Channel Security and Mask Refreshing
◮ → Problem reduces to secure multiplications !
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i, (bi)i s.t.
i ai = a, i bi = b
◮ Output : (ci)i s.t.
i ci = a×b
◮ Extended to get dth-order security in RivainProuff10
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i, (bi)i s.t.
i ai = a, i bi = b
◮ Output : (ci)i s.t.
i ci = a×b
◮ Extended to get dth-order security in RivainProuff10
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i, (bi)i s.t.
i ai = a, i bi = b
◮ Output : (ci)i s.t.
i ci = a×b
◮ Extended to get dth-order security in RivainProuff10
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i, (bi)i s.t.
i ai = a, i bi = b
◮ Output : (ci)i s.t.
i ci = a×b
◮ Extended to get dth-order security in RivainProuff10
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i, (bi)i s.t.
i ai = a, i bi = b
◮ Output : (ci)i s.t.
i ci = a×b
◮ Extended to get dth-order security in RivainProuff10
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i, (bi)i s.t.
i ai = a, i bi = b
◮ Output : (ci)i s.t.
i ci = a×b
◮ Extended to get dth-order security in RivainProuff10
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i, (bi)i s.t.
i ai = a, i bi = b
◮ Output : (ci)i s.t.
i ci = a×b
◮ Extended to get dth-order security in RivainProuff10
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i, (bi)i s.t.
i ai = a, i bi = b
◮ Output : (ci)i s.t.
i ci = a×b
◮ Extended to get dth-order security in RivainProuff10
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i, (bi)i s.t.
i ai = a, i bi = b
◮ Output : (ci)i s.t.
i ci = a×b
◮ Extended to get dth-order security in RivainProuff10
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i, (bi)i s.t.
i ai = a, i bi = b
◮ Output : (ci)i s.t.
i ci = a×b
◮ Extended to get dth-order security in RivainProuff10
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i, (bi)i s.t.
i ai = a, i bi = b
◮ Output : (ci)i s.t.
i ci = a×b
◮ Extended to get dth-order security in RivainProuff10
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i, (bi)i s.t.
i ai = a, i bi = b
◮ Output : (ci)i s.t.
i ci = a×b
◮ Extended to get dth-order security in RivainProuff10
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i, (bi)i s.t.
i ai = a, i bi = b
◮ Output : (ci)i s.t.
i ci = a×b
◮ Extended to get dth-order security in RivainProuff10
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i, (bi)i s.t.
i ai = a, i bi = b
◮ Output : (ci)i s.t.
i ci = a×b
◮ Extended to get dth-order security in RivainProuff10
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i, (bi)i s.t.
i ai = a, i bi = b
◮ Output : (ci)i s.t.
i ci = a×b
◮ Extended to get dth-order security in RivainProuff10
Higher-Order Side Channel Security and Mask Refreshing
◮ masked square : x2 → x2
0, x2 1, · · · , x2 d
◮ amount to look at small addition chains for r
Higher-Order Side Channel Security and Mask Refreshing
◮ masked square : x2 → x2
0, x2 1, · · · , x2 d
◮ amount to look at small addition chains for r
Higher-Order Side Channel Security and Mask Refreshing
◮ masked square : x2 → x2
0, x2 1, · · · , x2 d
◮ amount to look at small addition chains for r
Higher-Order Side Channel Security and Mask Refreshing
◮ masked square : x2 → x2
0, x2 1, · · · , x2 d
◮ amount to look at small addition chains for r
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing
◮ Indeed Pr[z | (ℓi)i, ℓo] = Pr[z].
Higher-Order Side Channel Security and Mask Refreshing
◮ the first input is the sharing (of x) to refresh and ◮ the second input is a sharing of 1.
Higher-Order Side Channel Security and Mask Refreshing
◮ f is bilinear, thus we have
Higher-Order Side Channel Security and Mask Refreshing
◮ f is bilinear, thus we have
Higher-Order Side Channel Security and Mask Refreshing
◮ f is bilinear, thus we have
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i s.t.
i ai = a
◮ Output : (ci)i s.t.
i ci = h(a) = a×a2j
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i s.t.
i ai = a
◮ Output : (ci)i s.t.
i ci = h(a) = a×a2j
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i s.t.
i ai = a
◮ Output : (ci)i s.t.
i ci = h(a) = a×a2j
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i s.t.
i ai = a
◮ Output : (ci)i s.t.
i ci = h(a) = a×a2j
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i s.t.
i ai = a
◮ Output : (ci)i s.t.
i ci = h(a) = a×a2j
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i s.t.
i ai = a
◮ Output : (ci)i s.t.
i ci = h(a) = a×a2j
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i s.t.
i ai = a
◮ Output : (ci)i s.t.
i ci = h(a) = a×a2j
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i s.t.
i ai = a
◮ Output : (ci)i s.t.
i ci = h(a) = a×a2j
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i s.t.
i ai = a
◮ Output : (ci)i s.t.
i ci = h(a) = a×a2j
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i s.t.
i ai = a
◮ Output : (ci)i s.t.
i ci = h(a) = a×a2j
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i s.t.
i ai = a
◮ Output : (ci)i s.t.
i ci = h(a) = a×a2j
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i s.t.
i ai = a
◮ Output : (ci)i s.t.
i ci = h(a) = a×a2j
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i s.t.
i ai = a
◮ Output : (ci)i s.t.
i ci = h(a) = a×a2j
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i s.t.
i ai = a
◮ Output : (ci)i s.t.
i ci = h(a) = a×a2j
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i s.t.
i ai = a
◮ Output : (ci)i s.t.
i ci = h(a) = a×a2j
Higher-Order Side Channel Security and Mask Refreshing
◮ Input : (ai)i s.t.
i ai = a
◮ Output : (ci)i s.t.
i ci = h(a) = a×a2j
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing
Higher-Order Side Channel Security and Mask Refreshing