Before we start, let's be clear: this is an experiment to demo isogeny-based DH, it is not secure or fast (at least it wouldn't be with reasonably-sized fields)!
We pick a supersingular curve over a small prime field:
|
Elliptic Curve defined by y^2 = x^3 + x over Finite Field of size 139967 |
Elliptic curves of this form with a prime congruent to 3 mod 4 will incidentally always be supersingular, but Sage will confirm that:
True |
139968 |
1728 |
Let's pick 4 random unique points, fixed as part of the protocol:
((52145 : 122183 : 1), (122248 : 66260 : 1), (22354 : 13937 : 1), (111386 : 102821 : 1)) |
Alice computes her secret numbers, from which she computes a point RA, which defines the kernel of her isogeny:
(42052 : 45422 : 1) |
Sage has convenient tools for proving that this is an isogeny:
True |
Alice sends her public key (consisting of the isogenous elliptic curve and the two base points for Bob under that curve) to Bob. I use the symbols phiA_PB and phiA_QB here to clarify that Bob just sees those values; he does not actually see the isogeny itself.
(Elliptic Curve defined by y^2 = x^3 + 91219*x + 72262 over Finite Field of size 139967, (107172 : 121677 : 1), (42404 : 0 : 1)) |
Sage gives us convenient tools for checking our work:
Isogeny of degree 7776 from Elliptic Curve defined by y^2 = x^3 + x over Finite Field of size 139967 to Elliptic Curve defined by y^2 = x^3 + 91219*x + 72262 over Finite Field of size 139967 Elliptic Curve defined by y^2 = x^3 + 91219*x + 72262 over Finite Field of size 139967 |
Bob does the same thing:
(112221 : 17506 : 1) Isogeny of degree 11664 from Elliptic Curve defined by y^2 = x^3 + x over Finite Field of size 139967 to Elliptic Curve defined by y^2 = x^3 + 86786*x + 16746 over Finite Field of size 139967 Elliptic Curve defined by y^2 = x^3 + 86786*x + 16746 over Finite Field of size 139967 |
True |
(Elliptic Curve defined by y^2 = x^3 + 86786*x + 16746 over Finite Field of size 139967, (82090 : 7459 : 1), (70660 : 33062 : 1)) |
(12132 : 0 : 1) Isogeny of degree 2 from Elliptic Curve defined by y^2 = x^3 + 86786*x + 16746 over Finite Field of size 139967 to Elliptic Curve defined by y^2 = x^3 + 130855*x + 32368 over Finite Field of size 139967 |
(107172 : 18290 : 1) Isogeny of degree 3 from Elliptic Curve defined by y^2 = x^3 + 91219*x + 72262 over Finite Field of size 139967 to Elliptic Curve defined by y^2 = x^3 + 130855*x + 32368 over Finite Field of size 139967 |
True |