Skip to content

Module: Protocols

Nathanaël EON edited this page Jun 8, 2017 · 8 revisions

Role

With SXP users can publish what they have to offer, and find what meets their demands. At some point a deal may be found, and formalized into a contract. Hence the need for contract signing protocols. These are not an easy matter. They are described in this Wiki. Currently, this package contains an implementation of the two-party version of this protocol.

api

  • EstablisherContract allows to create, edit, and sign contracts. It uses a ContractEntity to store data in db.
  • Establisher allows the signing of a contract
  • EstablisherListener is triggered when a contract status is changed (used to inform user when signature cancelled or finalized)

implementation

  • sigma implements sigma basis. The main parts of the sigma protocol are located in sigma.Sender, sigma.Receiver, Trent and the subpackage steps which contains the different part of the sigma protocol. All those classes use entities stored in model.entity.sigma.
  • SigmaEstablisher implements sigma protocols.

The current implementation of SigmaEstablisher has a known breach. It is in the TTP-choosing part of the protocol. For now, the TTP is chosen using those step :

  • Create an ordered (by public key) common list of possible TTP (OK)
  • Generate a random number collectively (breach)
  • The number is the index in list of the TTP (modulo the size of the list) (OK)

The issue is in the randomly generated number. Everyone compute a random number and send it to the others. The collective number is the sum of all those. A cheater can easily wait for everyone to send him their numbers and then compute the correct one so the TTP would be his friend.

To collapse the breach, we need to use either another protocol completely or to find a way of generating a random collective number. Some useful documentation may be found here :

  • Uriel Feige, Noncryptographic Selection Protocols, Proceedings of the 40th Annual Symposium on Foundations of Computer Science, p.142, October 17-18, 1999
  • Valerie King, Jared Saia: Breaking the O(n2) bit barrier: Scalable byzantine agreement with an adaptive adversary. J. ACM 58(4): 18:1-18:24 (2011)
  • Varsha Dani, Valerie King, Mahnush Movahedi, Jared Saia: Quorums Quicken Queries: Efficient Asynchronous Secure Multiparty Computation. ICDCN 2014: 242-256

Clone this wiki locally