Giter VIP home page Giter VIP logo

student_18_daga's Introduction

student_18_daga's People

Contributors

sarkortrantor avatar

Watchers

James Cloos avatar Bryan Ford avatar Philipp Jovanovic avatar Nicolas Gailly avatar Raphaël Dunant avatar Ismail Khoffi avatar  avatar  avatar

student_18_daga's Issues

Onet and daga contexts

add facilities to build a subset of a roster containing the nodes that are part of a particular DAGA context.
given DAGA context, every participant, client or conodes MUST be able to obtain the serverIdentity of any DAGA server in the context (or everything needed to contact any other DAGA server in the context)

Context verification during challenge generation protocol

// FIXME blindly trust Leader that request is legitimate for us (part of a context we as node accept to handle ??)
// FIXME or have leader send original request with annouce for us to check here ! ?
// What can go wrong ? : maybe dishonest or buggy leader can forward request
// from expired context or context for which we are not authoritative BUT we are part of the servers of context (if we are not part of original context then client cannot verify our signature => abort ok)
// (it means that the signatures will be correct)
// then what ? mhh maybe not an issue leader and client still obtained a perfectly valid honest random challenge...
// and when client proceeds to send its meesage with proof to some server either server accept context and can verify proof or server doesnt accept context and cannot verify proof
// => seems this is not an issue finally, but maybe keep in mind
// I fear they may be issues if context change during auth request lifetime

use kyber.proof.hashProve for the server proofs

ok I won't lose more time doing this now,
but still this is the only real and good choice to make I would say,
I would feel a lot more safer to use it instead of bloating the DAGA code and tests (as it is the case now) with all the obscure server proof related code.

less code => less hidden bugs,
better readability using higher level vocabulary (prove verify etc..)
+
kyber.proof is listed as one of the main features of kyber on godoc, I feel like it is absurd to not use it in DEDIS projects.

investigate the possibility to use randherd

instead of the procedure -- described in DAGA paper or the one the previous student derived from it -- to generate the random challenge,

investigate the possibility to use randherd => means have the servers become a randherd+daga cothority

fix the uncovered server bug (there is an "index out of bound" segfault when there is only 1 serve)r

// FIXME understand why this final test segfault when running all tests but pass when running only this test
// got it it was the state of the rand, when running only this one it was fine but when running all tests
// the rand returned s=1, meaning only one server
// => uncovered a hidden bug, + now ensure that there is at least 2 clients as in DAGA paper
// TODO remains to understand why s=1 is ko, I guess that somewhere there is an hidden assumption that s>1
// which is sound since if s=1 we are in a centralized setting and this is kind of out of the assumptions of the daga paper
// which expressly state that there should be at least one honest server
// ok got it, when more than one server the msg.tags not nil but when 1 server it is nil and the return msg.tags[len(msg.tags)-1]
// has an index out of bound error !!
// TODO remains to know how to fix it in a way that is DAGA compliant, anyway I guess that there are lots of such bugs hidden in the server code.. I lost trust in this code long ago

support for signature of challenges

  • first step adapt previous code that used ECDSA/schnorr to use EdDSA
  • then maybe much later don't know.. when writing server and server protocol see if makes sense to use something like CoSi ?!

Onet roster and DAGA contexts

add facilities to build subset of full roster that contains all nodes that are part (are servers) of a particular DAGA auth. context.
Given DAGA context, every participant, client or conodes/DAGA servers MUST be able to obtain the serverIdentity of every other DAGA server in auth. context. (or whatever needed to contact every other server.)

start written draft of report

with for now 3 main sections:

  1. overall goals and motivations, convince etc..

  2. eventual DAGA improvements and ideas etc

  3. larger architecture
    i) DAGA protocol
    ii) login service

    • how to generate contexts etc.. (pop-party transcript ? our own procedure using public ledger ? etc..)
    • how to actually log etc..

DAGA practical (and maybe theoretical) issue, proof verification

design issue, if we follow the paper to the letter, it induce some practical issues, need to manage state on the servers to verify auth. message because we cannot blindly trust the proof transcript that is sent with auth. message, need to verify that proof commitments and challenge are same as the one that were sent during PKClient sigma protocol run....
(... and this can not be avoided I'd say because we have multiple servers and if we move the proof verification to be live/direct then the next server cannot trust it, we just moved the problem..)

Alternative solutions (vs keeping and managing state in a sound way, bad and difficult and bug prone IMO)

  • maybe that would be a perfect use case for a blockchain !! ? have the proof be conducted/transcripted in a public ledger

  • OR maybe simpler ! we can have the servers collectively sign the commitments they received during challenge generations protocol, and then send them back to client with master challenge => then the client would need to include those signed commitments in its proof transcript => servers can now verify they have not been altered (correct signature)
    AKA store state in clients in RESTFull terminology

these considerations (check commitments and challenge at verification time) are not addressed in the paper (have I missed something ?)
TODO write those in the draft for Ewa Syta

remove hashfactory from daga suite

and instead define functions Hash1() and Hash2() that should behave like RO's and returns Scalar of the groupS.

because this is what we want, we don't need a Hash.hash, and by doing so we can fulfill more easily the stated goal of the suite which is to easily switch implementations.

currently there is hash related code all over the place that do things that work only with SuiteEC or that is "over-complex"

Bootstraping + context management

currently we assume that clients and servers are provided everything they need to work with DAGA.
they all have access to a well formed daga context.

real life, need ways to

  1. build such auth context
  2. make the context evolve (add members, etc..)
  3. transmit/publish the context to participants
  4. for servers, ways to manage maybe more than one context at a time (and more than one daga server identity)
  5. manage expiry of contexts
    (servers can decide to stop accepting requests part of a auth context/round)
    => fine but not very polite for the others..

etc. etc.

  • need to address all of these practical considerations in a way that doesn't destroy DAGA purposes

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.