GithubHelp home page GithubHelp logo

genos / e2c2 Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 229 KB

Edwards Elliptic Curve Cryptography

License: MIT License

C++ 4.56% C 0.21% HTML 94.51% CSS 0.67% Makefile 0.04%

e2c2's Introduction

e2c2: Edwards Elliptic Curve Cryptography

Build Status

The group of rational points on an elliptic curve over a finite fields has proven very useful in cryptography since Koblitz and Miller first suggested its use in the 1980s. Due to the lack of subexponential algorithms for the Discrete Logarithm Problem in this group, elliptic curve cryptography enjoys a level of security comparable to other ElGamal-type systems with much smaller key sizes.

There is some room for improvement, however. Typically the rules for the group operation on an elliptic curve involve a number of special cases:

  • What if one point is the point at infinity?
  • What if the two points are the same?
  • What if they're inverses of each other?

In each of these cases, the need to handle an exception to the typical geometric understanding can lead to implementations giving off more information than intended---leaking information through a "side-channel."

In 2007, Dr. Harold Edwards put forth a new form of elliptic curve; despite his paper not focusing on cryptography, his new normal form has very desirable cryptographic properties: the addition law is unified and complete. In other words, Edwards curves do not leak as much side-channel information as curves in typical Weierstrass (or other) forms. Moreover, in many cases the addition laws involve less operations, making for faster computations. While this is not the case over binary fields, the benefits of the law's completeness make the loss of speed seem negligible. In fact, some authors argue that with specialized hardware the speed difference can be greatly reduced, while the completeness of the binary Edwards curve group law actually makes it faster than Weierstrass implementations that must constantly check for special cases. Add to this the reduced code complexity, and binary Edwards curves look much more promising from an implementation point of view.

This code library consists the second version of a C++ proof-of-concept implementation of Edwards Curves (over both binary fields and fields of odd prime characteristic) and both affine and projective points over them, built using Victor Shoup's NTL.

Acknowledgements

Mike Blackmon was a great help in getting this code working.

e2c2's People

Contributors

genos avatar

Stargazers

Not Mike avatar David Leon Gil avatar

Watchers

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