4.3 KiB
mcl
A class library of finite field, elliptic curve and pairing
Abstract
mcl is a library for pairing-based cryptography. The current version supports the optimal Ate pairing over BN curves.
Support architecture
- 64-bit Windows + Visual Studio
- x86, x86-64 Linux + gcc/clang
- ARM
- ARM64
- (maybe any platform to be supported by LLVM)
Installation Requirements
- GMP must
apt install libgmp-dev
Create a working directory (e.g., work) and clone the following repositories.
mkdir work
cd work
git clone git://github.com/herumi/mcl.git
git clone git://github.com/herumi/cybozulib.git
git clone git://github.com/herumi/xbyak.git
git clone git://github.com/herumi/cybozulib_ext.git
- Xbyak is a prerequisite for optimizing the operations in the finite field on x86-64.
- Cybozulib_ext is a prerequisite for running OpenSSL and GMP on VC (Visual C++).
Build and test
To make lib/libmcl.a and test, run
make test
To measure pairing, run
bin/bn_test.exe
To make sample programs, run
make sample
If LLVM is installed, then
make MCL_USE_LLVM=1 LLVM_VER=-3.8
Change LLVM_VER=-3.8
to LLVM_VER=-3.7
if the version of LLVM is 3.7.
Build for 32-bit Linux
Build openssl and gmp for 32-bit mode and install
make ARCH=x86 CFLAGS_USER="-I <lib32>/include" LDFLAGS_USER="-L <lib32>/lib -Wl,-rpath,<lib32>/lib"
Build for 64-bit Windows
- make library
>mklib.bat
- make exe binary of sample\pairing.cpp
>mk sample\pairing.cpp
open mcl.sln and build or if you have msbuild.exe
msbuild /p:Configuration=Release
Build for ARM64 Linux
make MCL_USE_LLVM=1 LLVM_VER=-3.7 ARCH=aarch64
Build for ARM Linux
make MCL_USE_LLVM=1 LLVM_VER=-3.8 ARCH=arm
Benchmark
A benchmark of a BN curve over the 254-bit prime.
- x64, x86 ; Inte Core i7-6700 3.4GHz(Skylake)
sudo cpufreq-set -g performance
- arm ; 900MHz quad-core ARM Cortex-A7 on Raspberry Pi2, Linux 4.4.11-v7+
- arm64 ; 1.2GHz ARM Cortex-A53 HiKey
software | x64 | x86 | arm | arm64(msec) |
---|---|---|---|---|
ate-pairing | 0.21 | - | - | - |
mcl | 0.35 | 2.0 | 31 | 4.5 |
TEPLA | 1.76 | 3.7 | 37 | 17.9 |
RELIC PRIME=254 | 1.31 | 3.5 | 36 | - |
MIRACL ake12bnx | 4.2 | - | 78 | - |
NEONabe | - | - | 16 | - |
License
modified new BSD License http://opensource.org/licenses/BSD-3-Clause
The original source of the followings are https://github.com/aistcrypt/Lifted-ElGamal . These files are licensed by BSD-3-Clause and are used for only tests.
include/mcl/elgamal.hpp
include/mcl/window_method.hpp
test/elgamal_test.cpp
test/window_method_test.cpp
sample/vote.cpp
This library contains mie and Lifted-ElGamal.
References
- ate-pairing
- Faster Explicit Formulas for Computing Pairings over Ordinary Curves, D.F. Aranha, K. Karabina, P. Longa, C.H. Gebotys, J. Lopez, EUROCRYPTO 2011, (preprint)
- High-Speed Software Implementation of the Optimal Ate Pairing over Barreto-Naehrig Curves, Jean-Luc Beuchat, Jorge Enrique González Díaz, Shigeo Mitsunari, Eiji Okamoto, Francisco Rodríguez-Henríquez, Tadanori Teruya, Pairing 2010, (preprint)
- Faster hashing to G2,Laura Fuentes-Castañeda, Edward Knapp, Francisco Rodríguez-Henríquez, SAC 2011, (preprint)
Author
光成滋生 MITSUNARI Shigeo(herumi@nifty.com)