Paper 2019/331

Optimized Supersingular Isogeny Key Encapsulation on ARMv8 Processors

Amir Jalali, Reza Azarderakhsh, Mehran Mozaffari Kermani, Matthew Campagna, and David Jao


In this work, we present highly-optimized constant-time software libraries for Supersingular Isogeny Key Encapsulation (SIKE) protocol on ARMv8 processors. Our optimized hand-crafted assembly libraries provide the most efficient timing results on 64-bit ARM-powered devices. Moreover, the presented libraries can be integrated into any other cryptography primitives targeting the same finite field size. We design a new mixed implementation of field arithmetic on 64-bit ARM processors by exploiting the A64 and Advanced SIMD processing units working in parallel. Using these techniques, we are able to improve the performance of the entire protocol by the factor of 5 times compared to optimized C implementations on 64-bit ARM high-performance cores, providing 83-, 124-, and 159-bit quantum-security levels. Furthermore, we compare the performance of our proposed library with the previous highly-optimized ARMv8 assembly library available in the literature. The implementation results illustrate the overall 10% performance improvement in comparison with previous work, highlighting the benefit of using mixed implementation over relatively-large finite field size.

Available format(s)
Public-key cryptography
Publication info
Preprint. Minor revision.
ARM assemblyfinite fieldisogeny-based cryptosystemskey encapsulation mechanismpost-quantum cryptography
Contact author(s)
ajalali2016 @ fau edu
razarderakhsh @ fau edu
djao @ uwaterloo ca
mehran2 @ usf edu
campagna @ amazon com
2019-04-03: received
Short URL
Creative Commons Attribution


      author = {Amir Jalali and Reza Azarderakhsh and Mehran Mozaffari Kermani and Matthew Campagna and David Jao},
      title = {Optimized Supersingular Isogeny Key Encapsulation on ARMv8 Processors},
      howpublished = {Cryptology ePrint Archive, Paper 2019/331},
      year = {2019},
      note = {\url{}},
      url = {}
Note: In order to protect the privacy of readers, does not use cookies or embedded third party content.