Skip to content

mk-math-kyushu/bls48

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 

Repository files navigation


Overview

bls48 is an Optimal Ate Pairing(OAP) on BLS Curve implementation in C++. This implementation is based on the drafts below;

  • Y. Kiyomura, et al. "Secure and Eifficient Pairing at 256-Bit Secure Level" (2017)
  • C. Costello, K. Lauter, M. Naehrig, "Attractive Subfamilies of BLS Curves for Implementing High-Security Pairings." (2011)
  • draft-by-Kato(not submitted)

Furthermore, this implementation uses libsnark library.

We are motivated by the security consideration for pairing on any curve give by T. Kim.

  • T. Kim et al. "The extended tower number field sieve: A new complexity for the medium prime case. In Advances in Cryptology", (2016).

Kim's attack made us to update the security parameters or to use alternative curves in OAP. BLS-48 cuerve is one of the pairing friendly curves, and recommended parameters for realizing 256-bit security is written in [Kiyomura].


Build instructions

This implementation relies on the following:

  • C++ build environment
  • GMP for certain bit-integer arithmetic
  • libprocps for reporting memory usage
  • GTest for some of the unit tests

We have tested these only Linux so far(Ubuntu14.04). For example, on a fresh install of Ubuntu 14.04, install the following packages:

$ sudo apt-get install build-essential git libgmp3-dev libprocps3-dev libgtest-dev python-markdown libboost-all-dev libssl-dev

In the case of Ubuntu 16.04, install the following packages:

$ sudo apt-get install build-essential git libgmp3-dev libprocps4-dev libgtest-dev python-markdown libboost-all-dev libssl-dev

Then, to compile, run:

$ make

Timing Test

  • Ubuntu14.04   Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz, 4 cores RAM 8GB
Security Level 100 256
Curve Parameter BN256 BLS48
Scalar Multiplication on G1 0.08[ms] 2.32[ms]
Scalar Multiplication on G2 1.11[ms] 160.09[ms]
Pairing 2.81[ms] 509[ms]
  • Ubuntu16.04   Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz, 8 cores RAM 24GB
Security Level 100 256
Curve Parameter BN256 BLS48
Scalar Multiplication on G1 0.06[ms] 3.05[ms]
Scalar Multiplication on G2 1.24[ms] 230.61[ms]
Pairing 4.05[ms] 740.69[ms]
  • Raspberry Pi 3 model B Linux devuan 4.6.3-gb48d47a(64bit OS) CPU Cortex-A53 ARMv8 64bit @ 1.2GHz, 4 cores RAM 1GB
Security Level 100 256
Curve Parameter BN256 BLS48
Scalar Multiplication on G1 6.68[ms] 41.15[ms]
Scalar Multiplication on G2 24.23[ms] 2643.23[ms]
Pairing 58[ms] 8549.02[ms]
  • Raspberry Pi model B Ubuntu16.04.2 LTS xenial(32bit OS) CPU Cortex-A53 ARMv8 64bit @ 1.2GHz, 4 cores RAM 1GB
Security Level 100 256
Curve Parameter BN256 BLS48
Scalar Multiplication on G1 5.39[ms] 38.42[ms]
Scalar Multiplication on G2 21.81[ms] 2660.55[ms]
Pairing 53.03[ms] 8585.53[ms]
  • Mac Mac OS Sierra Intel Core i7 @ 3.5 GHz, 2 cores RAM 16 GB
Security Level 100 256
Curve Parameter BN256 BLS48
Scalar Multiplication on G1 0[ms] 1.07[ms]
Scalar Multiplication on G2 0.14[ms] 112.86[ms]
Pairing 2.11[ms] 373.02[ms]
  • Windows (Using MSYS2) Windows10 Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz, 4 cores RAM 16 GB
Security Level 100 256
Curve Parameter BN256 BLS48
Scalar Multiplication on G1 0[ms] 1.5[ms]
Scalar Multiplication on G2 0.9[ms] 127.74[ms]
Pairing 2.25[ms] 409.8[ms]

About

C++ library for Optimal Ate Pairing on BLS48

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages