Git Product home page Git Product logo

dkg's Introduction

test CodeQL

Dkg

Implementation in C# of a distributed key generation algorithm (Pedersen 91) with a K-of-N threshold scheme (Shamir scheme) on standard elliptic curves (Sec256k1 with an option to replace)

Реализация на c# алгоритма распределённой генерации ключей (Pedersen 91) с пороговой схемой K из N (схема Шамира) на стандартных эллиптических кривых (Sec256k1 c возможностью замены)

Theoretical basis/Теоретическая основа

  • Pedersen, T.P. (1991). A Threshold Cryptosystem without a Trusted Party. In: Davies, D.W. (eds) Advances in Cryptology — EUROCRYPT ’91. EUROCRYPT 1991. Lecture Notes in Computer Science, vol 547. Springer, Berlin, Heidelberg.

    https://doi.org/10.1007/3-540-46416-6_47

  • Pedersen, T.P. (1992). Non-Interactive and Information-Theoretic Secure Verifiable Secret Sharing. In: Feigenbaum, J. (eds) Advances in Cryptology — CRYPTO ’91. CRYPTO 1991. Lecture Notes in Computer Science, vol 576. Springer, Berlin, Heidelberg.

    https://doi.org/10.1007/3-540-46766-1_9

  • Wong, Theodore & Wing, Jeannette. (2001). Verifiable Secret Redistribution.

These articles are available at docs folder. Перечисленные статьи доступны в папке doc.

Practical basis/Практическая основа

This development is the result of translation into C# and subsequent refactoring of the implementation of the above algorithms in the library dedis

Данная разработка - результат перевода на C# и последующего рефакторинга реализации вышеперечисленных алгоритмов в библиотеке dedis

Solution structure/Структура решения

The C# solution includes three projects:

  • dkgLibrary - a .net class library with implementation of algorithms and some additional utilities.
  • dkgLibraryTests -- tests for dkgLibrary
  • dkgSample -- demo application

С# solution включает три проекта:

  • dkgLibrary -- .net class library с реализацией алгоритмов и некоторых дополнительных утилит
  • dkgLibraryTests -- тесты для dkgLibrary
  • dkgSample -- демонстрационное приложение

Where to start/С чего начинать

  • dkgLibraryTests/AnEndToEndExample.cs -- This test demonstrates the basic capabilities of the distributed key generation algorithm and Shamir's scheme in a synchronous form (the algorithm proposed by Pederson is synchronous in nature).

  • dkgSample/Program.cs - asynchronous (multithreaded) implementation of the distributed key generation algorithm and the Shamir scheme in the gRPC server. This application does not solve the issue of node synchronization; time delays are used.

  • dkgLibraryTests/AnEndToEndExample.cs -- этот тест демонстрирует основные возможности алгоритма распределённой генерации ключей и схемы Шамира в синхронном виде (алгоритм, предложенный Pederson'ом по свой природе являеся синхронным).

  • dkgSample/Program.cs -- асинхронная (многопоточная) реализация алгоритма распределённой генерации ключей и схемы Шамира в видк gRPC сервера. Задача синхронизации узлов в этом приложении не решалась, испльзуются временные задержки.

Continuation project ... / Продолжение ...

https://github.com/project-dkg/dkg-nodes

Project financing

Initial development of this project was financed by NarayanaSupramati

dkg's People

Contributors

maxirmx avatar

Stargazers

 avatar  avatar

Watchers

 avatar

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.