-
Notifications
You must be signed in to change notification settings - Fork 20
Module: Protocols
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.
-
EstablisherContractallows to create, edit, and sign contracts. It uses a ContractEntity to store data in db. -
Establisherallows the signing of a contract -
EstablisherListeneris triggered when a contract status is changed (used to inform user when signature cancelled or finalized)
-
sigmaimplements sigma basis. The main parts of the sigma protocol are located insigma.Sender,sigma.Receiver,Trentand the subpackagestepswhich contains the different part of the sigma protocol. All those classes use entities stored inmodel.entity.sigma. -
SigmaEstablisherimplements 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