A pairing library of elliptic curve
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
cpp
ecpy
examples
scripts
.codeclimate.yml
.gitignore
.travis.yml
LICENSE
README.md
auto
note.md
setup.cfg
setup.py

README.md

ecpy

Code Climate Build Status

Elliptic-Curve Cryptography Library (Implemented by Python)

Features

  • Calculation between elliptic curve points
    • Elliptic curve: y^2 = x^3 + ax + b over Field K (char(K) != 2, 3).
    • You can choose K from below:
      • Complex Field, Rational Field, FiniteField and Extended Finite Field(Irreducible polynomial: x^2 + 1 or x^2 + x + 1)
  • Weil/Tate Pairing
    • Distortion Map, symmetric-pairing functions
  • SSSA-Attack Implementation
    • Sample (CTF Challenge Writeup)
  • Example Applications
    • example/id_based_encryption.py: Implementation of Boneh-Franklin's Identity-based Encryption Scheme
    • example/boneh_lynn_shacham_short_signature.py: Implementation of Boneh-Lynn-Shacham's Short Signature Scheme
    • example/ecdsa.py: Implementation of ECDSA Signature Scheme

Setup

> git clone https://github.com/elliptic-shiho/ecpy && cd ecpy
> pip install --upgrade .

Require modules:

  • six (for Python 3.x compatibility)

if installed following modules, ecpy uses that.

Setup with Native modules

ecpy has native module. If you want to speed-up ecpy, you can use that.

> cd ecpy/cpp
> make
> sudo make install

description is here: cpp/README.md

Speed

See bench_pairing.py .

Sat Jan 28 03:55:47 JST 2017 ~/prog/lab/mathematics/ecpy 100%
> time python scripts/bench_pairing.py
[+] found gmpy! use gmpy.is_prime
[+] Found native module!
Point (25 : 5635866983L + 11271733966Lw : 1) on Elliptic Curve y^2 = x^3 + 1 over ExtendedFiniteField(13208557577, "x^2+x+1")
[+] Weil Pairing: 
weil: 14744.50 usec/pass
weil: 14842.80 usec/pass
weil: 14626.05 usec/pass
weil: 14773.50 usec/pass
weil: 14582.25 usec/pass
weil: 14560.95 usec/pass
weil: 14622.40 usec/pass
weil: 15073.19 usec/pass
weil: 14874.60 usec/pass
weil: 14695.20 usec/pass
[+] Tate Pairing: 
tate: 3079.89 usec/pass
tate: 3083.21 usec/pass
tate: 3079.10 usec/pass
tate: 3072.70 usec/pass
tate: 3069.81 usec/pass
tate: 3089.30 usec/pass
tate: 3077.90 usec/pass
tate: 3116.00 usec/pass
tate: 3095.35 usec/pass
tate: 3193.65 usec/pass
================================================================
weil: 14739.54 usec/pass
tate: 3095.69 usec/pass

real    0m4.293s
user    0m4.256s
sys     0m0.012s

Special Thanks

Cybozu Labs Youth (5th, 6th) - http://labs.cybozu.co.jp/youth.html

License

this software released under MIT License. Please see /LICENSE.