velusqrt:
Warning
The implementations of CSIDH-512 etc. shown here are not constant-time implementations.
Sage implementation
The following scripts in theSagecomputer-algebra system test various statements in thevelusqrt paper, organized by sections of the paper:1 2 3 4 5
**Usage.**The following instructions have been tested on a Debian 11 (Bullseye) VM. As root, install Sage and wget:
apt install sagemath wget -y
As a user velusqrt, download and run the scripts:
for i in 1 2 3 4 5
do
wget https://velusqrt.isogeny.org/velusqrt-$i.sage
done
for i in 1 2 3 4 5
do
sage velusqrt-$i.sage || break
done
Magma implementation
The <velusqrt-magma-20200608.tar.gz> package implements CSIDH-512 and CSURF-512 in theMagmacomputer-algebra system. This package is an improved version of theCSURFpackage from2019 Castryck–Decru.
**Usage.**These instructions assume that you already have Magma installed. As a user velusqrt, download and unpack velusqrt-magma:
wget https://velusqrt.isogeny.org/velusqrt-magma-20200608.tar.gz
tar -xf velusqrt-magma-20200608.tar.gz
cd velusqrt-magma-20200608
Run the scripts:
magma < csidh_512.m
magma < csurf_512.m
Julia+Nemo implementation
The <velusqrt-julia-20200320.tar.gz> package implements CSIDH-512, CSURF-512, and B-SIDH in theJulia programming language, usingNemofor field arithmetic and polynomial arithmetic.
**Usage.**The following instructions have been tested on a Debian 11 (Bullseye) VM. As root, install Julia (version 1.1 or higher),zlib1g-dev, and wget:
apt install julia zlib1g-dev wget -y
As a user velusqrt, download velusqrt-julia and install its dependencies:
wget https://velusqrt.isogeny.org/velusqrt-julia-20200320.tar.gz
tar -xf velusqrt-julia-20200320.tar.gz
cd velusqrt-julia-20200320
julia -e 'using Pkg; Pkg.activate("."); Pkg.instantiate()'
Run the benchmarks:
# takes about an hour:
julia Benchmark.jl
Or you can interactively explore the functionality in the Jupyter notebook: first install Jupyter, and then use notebook VeluSqrt.ipynb inside velusqrt-julia.
C+FLINT implementation
The <velusqrt-flint-20200320.tar.gz> package implements CSIDH-512 and CSURF-512 usingFLINTfor field arithmetic and polynomial arithmetic.
**Usage.**The following instructions have been tested on a Debian 11 (Bullseye) VM. As root, install compilers, libmpfr-dev, git, time, and wget:
apt install build-essential libmpfr-dev git time wget -y
As a user velusqrt, download a recent development version of FLINT:
git clone https://github.com/wbhart/flint2.git
cd flint2
# optionally, downgrade to version used to test velusqrt-flint:
git checkout dd1021a6cbaca75d94e6e066c26a3a5622884a7c
Compile FLINT:
./configure --prefix=$HOME
make
make check
make install
Download and compile velusqrt-flint:
cd
wget https://velusqrt.isogeny.org/velusqrt-flint-20200320.tar.gz
tar -xf velusqrt-flint-20200320.tar.gz
cd velusqrt-flint-20200320
# typically takes under 20 minutes:
make
This produces various benchmarks inbench.out,bench-velu.out,bench-velu2.out, andbench-velu3.out.
C+assembly implementation
The <velusqrt-asm-20200320.tar.gz> package implements CSIDH-512 and CSIDH-1024. CPU prerequisites: amd64 architecture including ADX (ADOX and ADCX); i.e., Intel Broadwell or newer, or AMD Zen or newer.
This package is an improved version of the public CSIDH-512 software from2018 Meyer–Reith, which in turn is an improved version of the public CSIDH-512 software from2018 Castryck–Lange–Martindale–Panny–Renes:
- Field arithmetic: For the CSIDH-512 prime, all three packages use essentially the same asm software from 2018 Castryck–Lange–Martindale–Panny–Renes. For the CSIDH-1024 prime, 2018 Castryck–Lange–Martindale–Panny–Renes included portable software, and
velusqrt-asmincludes asm software. - Isogeny computation:
velusqrt-asmincludes new software for the new isogeny-evaluation algorithm and for the relevant polynomial arithmetic, and automatically tunes the parameter choices in the new algorithm.velusqrt-asmplugs this algorithm into the higher-level CSIDH software from 2018 Meyer–Reith.
**Usage.**The following instructions have been tested on a Debian 11 (Bullseye) VM. As root, install compilers, time, and wget:
apt install build-essential clang time wget -y
As a user velusqrt, download and compile velusqrt-asm:
wget https://velusqrt.isogeny.org/velusqrt-asm-20200320.tar.gz
tar -xf velusqrt-asm-20200320.tar.gz
cd velusqrt-asm-20200320
# typically takes under an hour:
make
This produces benchmarks inbenchmults512.out,benchcycles512.out,benchmults1024.out, andbenchcycles1024.out.
**Version:**This is version 2020.06.08 of the "Software" web page.