isogenies Profile Banner
Giacomo 🪿 Profile
Giacomo 🪿

@isogenies

Followers
971
Following
2K
Media
98
Statuses
1K

One half of @CryptoHack__, Cryptography consultant, PhD Black Holes and Supergravity 🚩@0rganizers

Joined February 2020
Don't wanna be here? Send us removal request.
@isogenies
Giacomo 🪿
3 years
It works!! . Here's a @sagemath implementation of the SIDH Key Recovery attack of Castryck and Decru. Huge thanks to @oudomphe. Their insights allowed us to directly compute the image of points in the Jacobian through divisors. No Gröbner needed!.
Tweet card summary image
github.com
A SageMath implementation of the Castryck-Decru Key Recovery attack on SIDH - GiacomoPope/Castryck-Decru-SageMath
7
59
180
@isogenies
Giacomo 🪿
3 months
This week I have been working on some rust code to develop a library for isogeny based cryptography. As a first project, I have implemented SQIsign verification following the round 2 NIST spec.
Tweet card summary image
github.com
Rust library for isogeny-based cryptography. Contribute to GiacomoPope/isogeny_rs development by creating an account on GitHub.
1
4
23
@isogenies
Giacomo 🪿
9 months
RT @DD_Baumann: I am retiring from teaching GR. Here is the final course material (lecture notes including all problem sets and exams). Hop….
0
309
0
@isogenies
Giacomo 🪿
10 months
We find 2, 4 and 8-radical isogeny formula in dim 1, 2 and 3. For higher genus, the more complex l-isogeny graph allows us to use a smaller base field. The bottleneck of the radical isogenies are roots, which get cheaper as the prime shrinks, improving performance of the hash
Tweet media one
Tweet media two
0
0
3
@isogenies
Giacomo 🪿
10 months
New paper with lots of my friends on computing isogeny-based hash functions using the theta model. Was fun to implement something which benchmarked at the micro rather than millisecond timescale for a change!. 🍄.
Tweet card summary image
eprint.iacr.org
We provide explicit descriptions for radical 2-isogenies in dimensions one, two and three using theta coordinates. These formulas allow us to efficiently navigate in the corresponding isogeny graphs....
1
4
43
@isogenies
Giacomo 🪿
1 year
RT @BenjWeso: Random walks in number-theoretic cryptology: on Thursday (Aug. 29, 2pm CEST) I'll be defending my "habilitation". I'll presen….
0
9
0
@isogenies
Giacomo 🪿
1 year
kyber-py and dilithium-py have both been updated to match the finalised FIPS specifications 203 and 204. They also both pass the test vectors supplied by usnistgov/ACVP-Server. I hope these are useful tools to learn PQ crypto 🍄.
Tweet card summary image
github.com
A pure python implementation of ML-KEM (FIPS 203) and CRYSTALS-Kyber - GiacomoPope/kyber-py
0
8
40
@isogenies
Giacomo 🪿
1 year
RT @asanso: Hey class groups lovers. Back from holiday and started reading ANTS XVI papers. Apart the obvious Selfridge prize winner 'Fast….
0
1
0
@isogenies
Giacomo 🪿
1 year
We now support the Ascon XOFs too!.
@isogenies
Giacomo 🪿
1 year
This weekend I made xoflib with my friends Robin Jadoul and @_tritoke. xoflib is a Python package for the Shake extendable-output functions (XOFs) written using pyO3 bindings to the sha3 Rust crate.
0
0
5
@isogenies
Giacomo 🪿
1 year
Main takeaway from this project though was how easy pyO3 is to use and maturin made uploading the package trivial too. Definitely inspired to use python bindings for rust code to solve projects more often now.
0
0
4
@isogenies
Giacomo 🪿
1 year
Here's a side by side of hashlib vs xoflib which shows the issues which people have when the required use of the algorithm is streaming byte after byte (this is exactly what is done for polynomial creation for ML-KEM and ML-DSA)
Tweet media one
Tweet media two
1
0
3
@isogenies
Giacomo 🪿
1 year
The motivation for this comes from ML-KEM and ML-DSA which both which require an XOF for the sampling of pseudorandom bytes. hashlib includes Shake, but for some reason has no streaming API for them, meaning most people hack something together which has huge memory costs.
1
0
1
@isogenies
Giacomo 🪿
1 year
This weekend I made xoflib with my friends Robin Jadoul and @_tritoke. xoflib is a Python package for the Shake extendable-output functions (XOFs) written using pyO3 bindings to the sha3 Rust crate.
Tweet card summary image
github.com
A Python package build using pyO3 rust bindings to various extendable-output functions (XOFs): including Ascon, BLAKE3, Shake and TurboShake - GiacomoPope/xoflib
1
3
9
@isogenies
Giacomo 🪿
1 year
So it turns out all my Dilithium hint confusion was very carefully written about in the. Dilithium spec. I added a small discussion in the README of the Python implementation too with some links to the source code as well:
Tweet media one
2
0
9
@isogenies
Giacomo 🪿
1 year
Fixed :).
0
0
1
@isogenies
Giacomo 🪿
1 year
Bug was with my understanding of an optimisation, not with the code or FIPS 204 document. Everything works as expected. Discussion here: .
Tweet card summary image
github.com
The function make_hint() should be very easy: def make_hint(z, r, a, q): r1 = high_bits(r, a, q) v1 = high_bits(r + z, a, q) return int(r1 != v1) but when implemented like this, sometimes signature...
@isogenies
Giacomo 🪿
1 year
I also have a silly bug somewhere, if you fix it that would be cool!.
0
0
2
@isogenies
Giacomo 🪿
1 year
I can't find an implementation which implements following FIPS 204 exactly, but I can find other implementations which seem to need to use the Dilithium version.
Tweet card summary image
github.com
Auditable & minimal JS implementation of public-key post-quantum cryptography - paulmillr/noble-post-quantum
0
0
0
@isogenies
Giacomo 🪿
1 year
I implemented ML-DSA following draft FIPS 204 to follow the work earlier this week with ML-KEM. Hopefully this is interesting to people learning about the protocol.
Tweet card summary image
github.com
A pure python implementation of ML-DSA (FIPS 204) and CRYSTALS-Dilithium - GiacomoPope/dilithium-py
1
4
18
@isogenies
Giacomo 🪿
1 year
I've been looking at my old Dilithium implementation in Python to add an additional file for ML-DSA and I have an old bug I forgot about and can't squish with the make_hint() method. 🐛. Any advice?.
Tweet card summary image
github.com
The function make_hint() should be very easy: def make_hint(z, r, a, q): r1 = high_bits(r, a, q) v1 = high_bits(r + z, a, q) return int(r1 != v1) but when implemented like this, sometimes signature...
1
0
4
@isogenies
Giacomo 🪿
1 year
The PR for was a bit of a rabbit hole, but we finally removed the 100x slowdown of int(k) * P versus ZZ(k) * P for elliptic curve scalar multiplication.
Tweet card summary image
github.com
There is an annoying problem at the moment. If you compute the scalar multiplication of a point on an elliptic curve over a finite field, a fast call to Pari is made when the scalar is a Sage type,...
0
2
27