Elliptic Curve Cryptography (ECC)

ECC algorithms for Quantum Threat Tracker.

class ECCBasic(crypt_params: CryptParams, alg_params: ECCBasicParams | None = None)[source]

Bases: QuantumAlgorithm

Class for a basic implementation of ECC.

Initialize the quantum algorithm.

Parameters:
  • crypt_params (CryptParams) – Cryptographic parameters.

  • alg_params (Optional[ECCBasicParams], optional) – Algorithmic parameters. For ECCBasic, these have no effect but are included for consistency.

static generate_search_space() list[ECCBasicParams][source]

Generate a search space for algorithm parameters.

Since ECCBasic doesn’t have configurable parameters, this returns a list with a single set of default parameters.

Returns:

Single-element list containing default parameters.

Return type:

list[ECCBasicParams]

get_algorithm_summary(alg_params: AlgParams | None = None) AlgorithmSummary[source]

Compute logical resource estimates for the circuit.

Parameters:

alg_params (Optional[AlgParams], optional) – Algorithm parameters (not used by ECCBasic)

Returns:

Logical resource estimates.

Return type:

AlgorithmSummary

Raises:

NameError – If the protocol is not “ECDH”.

class ECCBasicParams[source]

Bases: AlgParams

Parameters for the basic implementation of ECC.

This implementation doesn’t have configurable parameters, but this class is provided for consistency with the interface.

class LitinskiECC(crypt_params: CryptParams, alg_params: LitinskiECCParams | None = None)[source]

Bases: QuantumAlgorithm

Implementation of Litinski’s algorithm for elliptic curve cryptography.

Initialize the Litinski ECC algorithm.

Parameters:
  • crypt_params (CryptParams) – Cryptographic parameters, including key size.

  • alg_params (Optional[LitinskiECCParams], optional) – Algorithm parameters, by default None

generate_search_space() list[LitinskiECCParams][source]

Generate a search space for algorithm parameters.

Creates a range of window sizes to search over. For smaller key sizes (≤256), it explores smaller window sizes. For larger key sizes, it explores larger window sizes which are more computationally efficient.

Returns:

List of LitinskiECCParams with different window sizes.

Return type:

list[LitinskiECCParams]

get_algorithm_summary(alg_params: AlgParams | None = None) AlgorithmSummary[source]

Compute logical resource estimates for Litinski’s ECC algorithm.

Uses windowed approach with lookup, point addition, and unlookup operations. The algorithm uses (key_size-48)/window_size Lookup Additions.

Parameters:

alg_params (Optional[AlgParams], optional) – Algorithm parameters to use for the summary. If None, uses the parameters stored in the instance (self._alg_params).

Return type:

AlgorithmSummary with logical resource estimates

Raises:
  • NameError – If protocol is not “ECDH”.

  • ValueError – If no algorithm parameters are provided.

  • TypeError – If alg_params is not LitinskiECCParams.

class LitinskiECCParams(window_size: int, classical_bits: int = 48)[source]

Bases: AlgParams

Parameters for the Litinski ECC algorithm.

Parameters:
  • window_size (int) – Window size for point addition in the ECC implementation.

  • classical_bits (int) – Number of classical bits to be bruteforced.

classical_bits: int = 48
window_size: int