kipnis_shamir¶
- class cryptographic_estimators.MAYOEstimator.MAYOAlgorithms.kipnis_shamir.KipnisShamir(problem: MAYOProblem, **kwargs)¶
Bases:
MAYOAlgorithm
Construct an instance of KipnisShamir estimator.
First attack on the Oil and Vinegar problem, proposed by Kipnis and Shamir. The attack attempts to find vectors in the oil space O, by exploiting the fact that these vectors are more likely to be eigenvectors of some publicy-known matrices.
Note
The linear algebra constant w_ks is set by default to 2.8 since this is the suggested choice in Section 5.4 of [BCCHK23]
- Parameters:
problem (MAYOProblem) – Object including all necessary parameters
w_ks (float, optional) – Linear algebra constant (only for kipnis-shamir algorithm). Defaults to 2.8.
h (int, optional) – External hybridization parameter. Defaults to 0.
excluded_algorithms (list, optional) – A list/tuple of MQ algorithms to be excluded. Defaults to [Lokshtanov].
memory_access (int, optional) – Specifies the memory access cost model. Defaults to 0. Choices: 0 - constant, 1 - logarithmic, 2 - square-root, 3 - cube-root or deploy custom function which takes as input the logarithm of the total memory usage.
complexity_type (int, optional) – Complexity type to consider. Defaults to 0 (estimate).
bit_complexities (int, optional) – Determines if complexity is given in bit operations or basic operations. Defaults to 1 (in bit).
- property attack_type¶
Returns the attack type of the algorithm.
- property complexity_type¶
Returns the attribute _complexity_type.
- get_optimal_parameters_dict()¶
Returns the optimal parameters dictionary.
- has_optimal_parameter()¶
Return True if the algorithm has optimal parameter.
- Tests:
>>> from cryptographic_estimators import BaseAlgorithm, BaseProblem >>> BaseAlgorithm(BaseProblem()).has_optimal_parameter() False
- linear_algebra_constant()¶
Return the linear algebra constant.
- Tests:
>>> from cryptographic_estimators.MAYOEstimator.mayo_algorithm import MAYOAlgorithm >>> from cryptographic_estimators.MAYOEstimator.mayo_problem import MAYOProblem >>> E = MAYOAlgorithm(MAYOProblem(n=66, m=64, o=8, k=9, q=16)) >>> E.linear_algebra_constant() 2.81
- property memory_access¶
Returns the attribute _memory_access.
- memory_access_cost(mem: float)¶
Returns the memory access cost (in logarithmic scale) of the algorithm per basic operation.
- Parameters:
mem (float) – Memory consumption of an algorithm.
- Returns:
Memory access cost in logarithmic scale.
- Return type:
float
Note
memory_access: Specifies the memory access cost model (default: 0, choices: 0 - constant, 1 - logarithmic, 2 - square-root, 3 - cube-root or deploy custom function which takes as input the logarithm of the total memory usage)
- memory_complexity(**kwargs)¶
Return the memory complexity of the algorithm.
- Parameters:
**kwargs –
Arbitrary keyword arguments.
optimal_parameters - If for each optimal parameter of the algorithm a value is provided, the computation is done based on those parameters.
- optimal_parameters()¶
Return a dictionary of optimal parameters.
- Tests:
>>> from cryptographic_estimators import BaseAlgorithm, BaseProblem >>> BaseAlgorithm(BaseProblem()).optimal_parameters() {}
- parameter_names()¶
Return the list with the names of the algorithm’s parameters.
- Tests:
>>> from cryptographic_estimators import BaseAlgorithm, BaseProblem >>> BaseAlgorithm(BaseProblem()).parameter_names() []
- property parameter_ranges¶
Returns the set ranges for optimal parameter search.
Returns the set ranges in which optimal parameters are searched by the optimization algorithm (used only for complexity type estimate).
- reset()¶
Resets internal state of the algorithm.
- set_parameter_ranges(parameter: str, min_value: float, max_value: float)¶
Set range of specific parameter.
If optimal parameter is already set, it must fall in that range.
- Parameters:
parameter (str) – Name of parameter to set
min_value (float) – Lowerbound for parameter (inclusive)
max_value (float) – Upperbound for parameter (inclusive)
- set_parameters(parameters: dict)¶
Set optimal parameters to predifined values.
- Parameters:
parameters (dict) – Dictionary including parameters to set (for a subset of optimal_parameters functions)
- time_complexity(**kwargs)¶
Return the time complexity of the algorithm.
- Parameters:
**kwargs –
Arbitrary keyword arguments.
optimal_parameters - If for each optimal parameter of the algorithm a value is provided, the computation is done based on those parameters.