An elliptic curve implementation of Secure Remote Protocol (SRP) written in Python.
This repo contains a server and client implementation of the Elliptic Curve Secure Remote Protocol (EC-SRP) key sharing and authentication protocol. Inspired by this IEEE submission draft.
This implementation is similar to, but not exactly the same as, MikroTik's EC-SRP5 implementation used for its Winbox and MAC Telnet services. For more on those services, please review our blog post "MikroTik Authentication Revealed" which highlights the overall protocol and our MikroTik Authentication Repo which implements both clients and server services.
The EC-SRP algorithm can be distilled into the following client and server calculations:
This repo primarily uses Jacobian points in projective space as oppose to the affine Weierstrass form.
The client and server can connect to each other over a host's loopback address using the following commands:
server: python3 ecsrp_server.py -a 127.0.0.1 -u admin -p pass
client: python3 ecsrp_client.py -a 127.0.0.1 -u admin -p pass
These tools require the following dependencies:
pip3 install ecdsa
pip3 install rich