Skip to content
Snippets Groups Projects
Rémi Adelin's avatar
Rémi Adelin authored
- change lines 64 and 89 to typedef struct ALIGNME( 64 ) __blake2s_state
75843f64
History

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
  1. 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
  1. 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
  1. make.sh: execute cmake with the options under which the fixed-argument pairing was implemented

  2. 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
  1. 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.