cover_image

The CoSi Multi-Signature Scheme

Kurt Pan XPTY
2021年03月17日 15:09

CoSi is a multi-signature scheme introduced by Syta et al. [STV+16] that follows a long line of work on Schnorr-based multi-signatures. By organizing signers in a tree structure, thousands of signers can create a multi-signature in seconds, as demonstrated by the open source implementation.
github.com/dedis/cothority

  • Parameters generation.

    • The  algorithm sets up a group  of order  where  is a  -bit prime.
    • It also chooses two hash functions 
    • Output .
  • Key generation.

    • The key generation algorithm  samples  and computes .
    • It then generates a proof of possession  by choosing  and computing 
    • Output  and .
  • Signing. Signing is a four-step protocol. A signer  on input  behaves as follows.

  • Announcement.
      • If  is the leader (i.e., the root of tree  ), it initiates the protocol by sending an announcement to its children, which consists of a unique identifier for this signing session .
      • If  is not the leader, it waits to receive an announcement message and forwards it to its children in .
      • After doing so,  proceeds with the commitment phase.
    Commitment.
      • Let  denote the set of children of  in tree  waits to receive all values  for Note that if  has no children (i.e., it is a leaf in tree  it will proceed immediately.
      •  chooses  and computes  and  for 
      • If  is not the leader, it sends  to its parent. If  is the leader,  proceeds with the challenge phase.
    Challenge.
      If  is the leader, it sets  and , computes  and sends  to its children.
      If  is not the leader, it waits to receive a message , computes  and sends  to its children.
    Response.
      •  waits to receive all values  for  (note that if  is a leaf it will proceed immediately), and then computes 
      • It sends  to its parent, unless  is the root,
      • then  sets  and outputs 



    • Key Aggregation.
      • On input a set of public keys   checks for all  that   If so, it outputs aggregate public key .
    • Verification.
      •  on input an aggregate public key , a signature  and a message  checks that