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