relic_scott
Description
This repository is a fork of the RELIC repository (https://github.com/relic-toolkit/relic) with the addition of the Fixed-Argument Pairing [Scott 2005, Scott 2006, Scott 2007, Costello 2010, Scott 2011] to RELIC Optimal ATE Paring (oatep). The Fixed-Argument Pairing enables to pre-compute a side of the pairing and to use the precomputed values once the other side is known. The benefit of this pre-computation comes when the pre-computed side is known beforehand or when it can be re-used.
The Fixed-Argument Pairing is called the Scott Optimization in this project. All functions providing pre-computation are suffixed with: "_prec" to identify the pre-computing function and "_comp" to identify the computing function.
The Fixed-Argument Pairing is implemented from commit b984e901 of the original RELIC project.
Structure
This project adds or modifies the following files:
.
├── bench/
├── CMakeLists.txt
├── bench_pp2.c
├── bench_pp3.c
├── bench_rand.c
├── timetools.h
├── include/
├── relic_fp.h
├── relic_label.h
├── relic_pp.h
├── make.sh
├── src/
├── fp/
├── relic_fp_param.c
├── pp/
├── relic_pp_add.c
├── relic_pp_dbl.c
├── relic_pp_map.c
├── test/
├── CMakeLists.txt
├── test_pp2.c
-
bench/
:
- bench_pp2.c: a copy of bench_pp.c which contains the benchmark of the additional prec and comp functions
- bench_pp3.c: evaluate the execution time of the original, prec and comp oatep functions
- timetools.h: macros used in the execution time evaluation
-
include
:
- relic_pp.h: contain the prec_t struct definition used to store the pre-computed values, macros PREC_INIT and PREC_CLEAN used to initialize and to free the prec_t struct
-
make.sh
: execute cmake with the options under which the fixed-argument pairing was implemented -
src/
:
- fp/:
- relic_fp_param.c: contain the fp_param_get_slen function used in the prec_t initialization
- pp/:
- relic_pp_add.c: add pre-computation of the pp_add_k12_projc_lazyr function
- relic_pp_dbl.c: add pre-computation of the pp_dbl_k12_projc_lazyr function
- relic_pp_map.c:
- add pre-computation of the pp_mil_sps_k12 function
- add pre-computation of the pp_fin_k12_oatep function
- add pre-computation of the pp_map_oatep_k12 function which is the oatep pairing function
- add pre-computation of the pp_map_sim_oatep_k12 function which is the oatep multi-pairing function
-
test/
:
- test_pp2.c: a copy of test_pp.c which contains the test of the additional prec and comp functions
References
Scott, M. (2005). Computing the Tate pairing. In Topics in Cryptology–CT-RSA 2005: The Cryptographers’ Track at the RSA Conference 2005, San Francisco, CA, USA, February 14-18, 2005. Proceedings (pp. 293-304). Springer Berlin Heidelberg.
Scott, M., Costigan, N., & Abdulwahab, W. (2006). Implementing cryptographic pairings on smartcards. In Cryptographic Hardware and Embedded Systems-CHES 2006: 8th International Workshop, Yokohama, Japan, October 10-13, 2006. Proceedings 8 (pp. 134-147). Springer Berlin Heidelberg.
Scott, M. (2007). Implementing cryptographic pairings. Lecture Notes in Computer Science, 4575, 177.
Costello, C., & Stebila, D. (2010). Fixed argument pairings. In Progress in Cryptology–LATINCRYPT 2010: First International Conference on Cryptology and Information Security in Latin America, Puebla, Mexico, August 8-11, 2010, proceedings 1 (pp. 92-108). Springer Berlin Heidelberg.
Scott, M. (2011). On the efficient implementation of pairing-based protocols. In Cryptography and Coding: 13th IMA International Conference, IMACC 2011, Oxford, UK, December 12-15, 2011. Proceedings 13 (pp. 296-308). Springer Berlin Heidelberg.