Multi-Signatures for Blockchains
Yannick Seurin
Agence nationale de la sécurité des systèmes d’information
June 12, 2019 — LINCS Blockchain Day
- Y. Seurin (ANSSI)
Multi-Signatures for Blockchains 12/06/2019 1 / 17
Multi-Signatures for Blockchains Yannick Seurin Agence nationale de - - PowerPoint PPT Presentation
Multi-Signatures for Blockchains Yannick Seurin Agence nationale de la scurit des systmes dinformation June 12, 2019 LINCS Blockchain Day Y. Seurin (ANSSI) Multi-Signatures for Blockchains 12/06/2019 1 / 17 Uses of cryptography
Agence nationale de la sécurité des systèmes d’information
Multi-Signatures for Blockchains 12/06/2019 1 / 17
Multi-Signatures for Blockchains 12/06/2019 2 / 17
Multi-Signatures for Blockchains 12/06/2019 2 / 17
Multi-Signatures for Blockchains 12/06/2019 2 / 17
Multi-Signatures for Blockchains 12/06/2019 2 / 17
Multi-Signatures for Blockchains 12/06/2019 2 / 17
Multi-Signatures for Blockchains 12/06/2019 2 / 17
Multi-Signatures for Blockchains 12/06/2019 2 / 17
Multi-Signatures for Blockchains 12/06/2019 2 / 17
Multi-Signatures for Blockchains 12/06/2019 2 / 17
Multi-Signatures for Blockchains 12/06/2019 2 / 17
Multi-Signatures for Blockchains 12/06/2019 2 / 17
Multi-Signatures for Blockchains 12/06/2019 2 / 17
Multi-Signatures for Blockchains 12/06/2019 2 / 17
txid: e62b0a. . . Inputs Outputs
Multi-Signatures for Blockchains 12/06/2019 3 / 17
txid: e62b0a. . . Inputs Outputs prevOut: {txid = 29a5c7. . . , ind=3} sig: 3f4de6. . . 3 BTC prevOut: {txid = 63ba6f. . . , ind=1} sig: f7b6c4. . . 1 BTC prevOut: {txid = e953b0. . . , ind=7} sig: fbb521. . . 5 BTC
Multi-Signatures for Blockchains 12/06/2019 3 / 17
txid: e62b0a. . . Inputs Outputs prevOut: {txid = 29a5c7. . . , ind=3} sig: 3f4de6. . . 3 BTC prevOut: {txid = 63ba6f. . . , ind=1} sig: f7b6c4. . . 1 BTC prevOut: {txid = e953b0. . . , ind=7} sig: fbb521. . . 5 BTC val: 7 BTC pubKey: 601b3a. . . val: 2 BTC pubKey: d781a3. . .
Multi-Signatures for Blockchains 12/06/2019 3 / 17
Multi-Signatures for Blockchains 12/06/2019 4 / 17
Multi-Signatures for Blockchains 12/06/2019 4 / 17
Multi-Signatures for Blockchains 12/06/2019 4 / 17
Multi-Signatures for Blockchains 12/06/2019 4 / 17
Multi-Signatures for Blockchains 12/06/2019 5 / 17
pk, m, Sign(sk, m) = 1
Multi-Signatures for Blockchains 12/06/2019 6 / 17
pk, m, Sign(sk, m) = 1
Multi-Signatures for Blockchains 12/06/2019 6 / 17
skA pkA
Multi-Signatures for Blockchains 12/06/2019 7 / 17
skA pkA
m1
Multi-Signatures for Blockchains 12/06/2019 7 / 17
skA pkA
m1 σ1
Multi-Signatures for Blockchains 12/06/2019 7 / 17
skA pkA
m1 σ1 . . . mq
Multi-Signatures for Blockchains 12/06/2019 7 / 17
skA pkA
m1 σ1 . . . mq σq
Multi-Signatures for Blockchains 12/06/2019 7 / 17
pkA
m1 σ1 . . . mq σq
pkA
(m∗, σ∗)
Multi-Signatures for Blockchains 12/06/2019 7 / 17
pkA
m1 σ1 . . . mq σq
pkA
(m∗, σ∗)
m∗ = m1, . . . , mq Ver(pkA, m∗, σ∗) = 1
Multi-Signatures for Blockchains 12/06/2019 7 / 17
(skA, pkA) (skB, pkB)
Multi-Signatures for Blockchains 12/06/2019 8 / 17
(skA, pkA) (skB, pkB) σA σB Ver(pkA, m, σA) = 1 Ver(pkB, m, σB) = 1
Multi-Signatures for Blockchains 12/06/2019 8 / 17
(skA, pkA) (skB, pkB)
Multi-Signatures for Blockchains 12/06/2019 8 / 17
(skA, pkA) (skB, pkB) σ σ Ver({pkA, pkB}, m, σ) = 1
Multi-Signatures for Blockchains 12/06/2019 8 / 17
(skA, pkA) (skB, pkB) σ σ pk = KeyAgg(pkA, pkB) Ver(pk, m, σ) = 1
Multi-Signatures for Blockchains 12/06/2019 8 / 17
(skA, pkA) (skB, pkB) σ σ pk = KeyAgg(pkA, pkB) Ver(pk, m, σ) = 1
Multi-Signatures for Blockchains 12/06/2019 8 / 17
Multi-Signatures for Blockchains 12/06/2019 9 / 17
Multi-Signatures for Blockchains 12/06/2019 9 / 17
Multi-Signatures for Blockchains 12/06/2019 10 / 17
Multi-Signatures for Blockchains 12/06/2019 11 / 17
Multi-Signatures for Blockchains 12/06/2019 11 / 17
Multi-Signatures for Blockchains 12/06/2019 11 / 17
Multi-Signatures for Blockchains 12/06/2019 11 / 17
Multi-Signatures for Blockchains 12/06/2019 11 / 17
XA = xAG XB = xBG
Multi-Signatures for Blockchains 12/06/2019 12 / 17
XA = xAG XB = xBG X = XA + XB = (xA + xB)G
Multi-Signatures for Blockchains 12/06/2019 12 / 17
XA = xAG XB = xBG X = XA + XB = (xA + xB)G RA = rAG RB = rBG R = RA + RB
Multi-Signatures for Blockchains 12/06/2019 12 / 17
XA = xAG XB = xBG X = XA + XB = (xA + xB)G RA = rAG RB = rBG R = RA + RB sA = rA + H(X, R, m)xA sB = rB + H(X, R, m)xB s = sA + sB
Multi-Signatures for Blockchains 12/06/2019 12 / 17
XA = xAG XB = xBG X = XA + XB = (xA + xB)G RA = rAG RB = rBG R = RA + RB sA = rA + H(X, R, m)xA sB = rB + H(X, R, m)xB s = sA + sB Ver(X, m, (R, s)) = 1
Multi-Signatures for Blockchains 12/06/2019 12 / 17
XA = xAG XB = xBG X = XA + XB = (xA + xB)G RA = rAG RB = rBG R = RA + RB sA = rA + H(X, R, m)xA sB = rB + H(X, R, m)xB s = sA + sB Ver(X, m, (R, s)) = 1
Multi-Signatures for Blockchains 12/06/2019 12 / 17
Multi-Signatures for Blockchains 12/06/2019 13 / 17
Multi-Signatures for Blockchains 12/06/2019 13 / 17
Multi-Signatures for Blockchains 12/06/2019 13 / 17
Multi-Signatures for Blockchains 12/06/2019 13 / 17
Multi-Signatures for Blockchains 12/06/2019 13 / 17
public key: X = xG
(H : {0, 1}∗ → G2)
?
= e(X, H(m))
Multi-Signatures for Blockchains 12/06/2019 14 / 17
public key: X = xG
(H : {0, 1}∗ → G2)
?
= e(X, H(m))
Multi-Signatures for Blockchains 12/06/2019 14 / 17
public key: X = xG
(H : {0, 1}∗ → G2)
?
= e(X, H(m))
Multi-Signatures for Blockchains 12/06/2019 14 / 17
public key: X = xG
(H : {0, 1}∗ → G2)
?
= e(X, H(m))
Multi-Signatures for Blockchains 12/06/2019 14 / 17
public key: X = xG
(H : {0, 1}∗ → G2)
?
= e(X, H(m))
Multi-Signatures for Blockchains 12/06/2019 14 / 17
public key: X = xG
(H : {0, 1}∗ → G2)
?
= e(X, H(m))
Multi-Signatures for Blockchains 12/06/2019 14 / 17
public key: X = xG
(H : {0, 1}∗ → G2)
?
= e(X, H(m))
Multi-Signatures for Blockchains 12/06/2019 14 / 17
public key: X = xG
(H : {0, 1}∗ → G2)
?
= e(X, H(m))
Multi-Signatures for Blockchains 12/06/2019 14 / 17
public key: X = xG
(H : {0, 1}∗ → G2)
?
= e(X, H(m))
Multi-Signatures for Blockchains 12/06/2019 14 / 17
Multi-Signatures for Blockchains 12/06/2019 15 / 17
Dan Boneh, Manu Drijvers, and Gregory Neven. Compact multi-signatures for smaller blockchains. In ASIACRYPT 2018, Part II, pages 435–464. Dan Boneh, Craig Gentry, Ben Lynn, and Hovav Shacham. Aggregate and verifiably encrypted signatures from bilinear maps. In EUROCRYPT 2003, pages 416–432. Dan Boneh, Ben Lynn, and Hovav Shacham. Short signatures from the Weil
Gregory Maxwell, Andrew Poelstra, Yannick Seurin, and Pieter Wuille. Simple Schnorr multi-signatures with applications to Bitcoin. Designs, Codes and Cryptography, 2019. David Pointcheval and Jacques Stern. Security arguments for digital signatures and blind signatures. Journal of Cryptology, 13(3):361–396, June 2000. Claus-Peter Schnorr. Efficient identification and signatures for smart cards. In CRYPTO’89, pages 239–252.
Multi-Signatures for Blockchains 12/06/2019 16 / 17
Claus-Peter Schnorr. Efficient signature generation by smart cards. Journal of Cryptology, 4(3):161–174, January 1991.
Multi-Signatures for Blockchains 12/06/2019 17 / 17