项目作者: mk-math-kyushu

项目描述 :
C++ library for Optimal Ate Pairing on BLS48
高级语言: C++
项目地址: git://github.com/mk-math-kyushu/bls48.git
创建时间: 2017-11-13T07:43:47Z
项目社区:https://github.com/mk-math-kyushu/bls48

开源协议:

下载



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:

  1. $ 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:

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

Then, to compile, run:

  1. $ 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]