Giter Club home page Giter Club logo

rsa_ringsign's Introduction

RSA RING SIGNATURE

This repository contain an implementation of RING SIGNATURES SCHEME in Rust. The current implementation is based on the following paper:

  • How to Leak a Secret by Ronald L. Rivest, Adi Shamir, Yael Tauman Kalai. This is the first paper which formalizes the notion of Ring Signatures.

Application layer protocol technology like CryptoNote uses Ring signatures. Cryptocurriencies like ShadowCash and Monero uses Ring Signatures.

Ring Signatures provide an elegant way to produce a digital signature by a member from the set of possible signers, without revealing which member actually produced the signature. It can be used as a way to leak a secret.

Terminology: The set of possible signers is called a Ring. The member who produces the actual signature is called a signer and others are called non-signer.

Proposed Signature Scheme using RSA Trapdoor

Sign:

  • Given the message m to be signed, a symmetric key k is chosen by k = Hash(m) . First we hash using SHA256 and then blake2 to get a 128 hash such that forging is not computationally possible.
  • Random glue value v is chosen uniformly at random from {0,1}^b where all public key n_i are less that 2^b
  • Signer picks random x_i for all other ring member except for him and calculate y_i = g(x_i) where g is a trapdoor permutation.
  • The signer solves the ring equation, C_k_v(y_1, y_2, ..., y_r) = v where C_k_v is a Symmetric Key Encryption to get y_s
  • Signer invert the trapdor using his secret key to get the value of x_s
  • Signer will output the list of pulic keys, x_i's and the glue v

Verify:

  • On input: public keys, glue v and x_i's, Verifier will generate y_i = g(x_i) where g is trapdoor funtion.
  • Verifier will obtain the key k = Hash(m)
  • Verifier will verify the ring equation.
  • If ring equation is satisfied, verifier will accept. Otherwise, rejects.

Test

cargo test

Example implementation

cargo run 

rsa_ringsign's People

Contributors

garryfcr avatar man2706kum 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.