Highly-optimized ARMv8 implementation of Supersingular Isogeny Key Encapsulation (SIKE).
The efficient implementation of SIKE protocol on ARMv8 high-performance processors. For more details please see: https://ieeexplore.ieee.org/abstract/document/8768333
The finite field arithmetic implementation is developed by the state-of-the-art implementation techniques, taking advantage of ARMv8 64-bit general purpose registers combined with ASIMD vectorization. The field multiplication is designed and developed using one- and two-level additive Karatsuba method. The independent multiplications are implemented using both AArch64 and ASIMD hand-crafted assembly using an interleaved technique to maximize the pipeline throuhput and efficiency of the library.
The submitted SIKE proposal contains the optimized implementation of SIKEp503 and SIKEp751 on different platforms. This repositoy contains the highly-optimized implementation of SIKEp503, SIKEp751, and SIKEp964 on ARMv8 platforms.
SIKEp503: Optimized implementaion of SIKEp503 using only 64-bit general registers
SIKEp503_mixed: Optimized implementation of SIKEp503 using the mixture of general registers and ASIMD vectorization hand-written assembly.
SIKEp751: Optimized implementaion of SIKEp751 using only 64-bit general registers
SIKEp751_mixed: Optimized implementation of SIKEp751 using the mixture of general registers and ASIMD vectorization hand-written assembly.
SIKEp964_mixed: Optimized implementation of SIKEp964 using the mixture of general registers and ASIMD vectorization hand-written assembly.
ARMv8 executables can be generated using cross-compilation on Linux. There are different methods for cross-compilation. An easy approach is to install gcc-aarch64-linux-gnu
package by executing:
$ sudo apt-get install gcc-aarch64-linux-gnu
After installation, simply use the following command to generate the ARMv8 executables:
$ make CC=aarch64-linux-gnu-gcc ARCH=ARM64
Now, the generated binaries can be run on ARMv8-A cores.
- Amir Jalali: ([email protected])
- Reza Azarderakhsh: ([email protected])
- Matthew Campagna: ([email protected])