Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
Cryptographic Estimators documentation
Logo
Cryptographic Estimators documentation
  • base_constants
  • base_estimator
  • estimation_renderer
  • base_problem
  • helper
  • base_algorithm
  • uov_estimator
  • uov_constants
  • uov_problem
  • uov_algorithm
  • direct_attack
  • intersection_attack
  • kipnis_shamir
  • collision_attack
  • bike_algorithm
  • bike_estimator
  • bike_constants
  • bike_problem
  • sd_msg_attack
  • sd_key_attack
  • ranksd_estimator
  • ranksd_constants
  • ranksd_problem
  • ranksd_algorithm
  • ranksd_helper
  • ourivski_johansson_2
  • ourivski_johansson_1
  • support_minors
  • grs
  • guessing_enhanced_grs
  • improved_grs
  • hybrid_linearization
  • max_minors
  • basis_enumeration
  • le_estimator
  • le_algorithm
  • le_constants
  • le_helper
  • le_problem
  • bbps
  • beullens
  • leon
  • pk_algorithm
  • pk_constants
  • pk_problem
  • pk_helper
  • pk_estimator
  • kmp
  • sbc
  • regsd_helper
  • regsd_algorithm
  • regsd_constants
  • regsd_problem
  • regsd_estimator
  • ccj
  • regisd_perm
  • ccj_lin
  • regisd_rep
  • regisd_enum
  • sd_attack
  • pe_algorithm
  • pe_constants
  • pe_estimator
  • pe_problem
  • pe_helper
  • beullens
  • leon
  • ssa
  • dummy_algorithm
  • dummy_problem
  • dummy_estimator
  • dummy_algorithm1
  • mr_estimator
  • mr_helper
  • mr_algorithm
  • mr_constants
  • mr_problem
  • kernel_search
  • support_minors
  • big_k
  • minors
  • bruteforce
  • sdfq_estimator
  • sdfq_helper
  • sdfq_algorithm
  • sdfq_problem
  • sdfq_constants
  • leebrickell
  • prange
  • stern
  • sd_helper
  • sd_algorithm
  • sd_estimator
  • sd_constants
  • sd_problem
  • bjmm_dw
  • bjmm
  • may_ozerov
  • ball_collision
  • prange
  • bjmm_plus
  • both_may
  • dumer
  • stern
  • bjmm_pdw
  • bjmm
  • workfactor_helper
  • may_ozerov
  • ball_collision
  • prange
  • both_may
  • dumer
  • stern
  • mq_estimator
  • mq_problem
  • degree_of_regularity
  • mq_helper
  • mq_constants
  • mq_algorithm
  • witness_degree
  • nmonomial
  • hilbert
  • mht
  • f5
  • dinur2
  • cgmta
  • kpg
  • hashimoto
  • hybrid_f5
  • lokshtanov
  • exhaustive_search
  • booleansolve_fxl
  • crossbred
  • bjorklund
  • dinur1
  • mayo_estimator
  • mayo_helper
  • mayo_problem
  • mayo_algorithm
  • mayo_constants
  • direct_attack
  • intersection_attack
  • claw_finding
  • kipnis_shamir
  • reconciliation_attack
Back to top
View this page

kernel_search¶

class cryptographic_estimators.MREstimator.MRAlgorithms.kernel_search.KernelSearch(problem: MRProblem, **kwargs)¶

Bases: MRAlgorithm

Construct an instance of KernelSearch estimator.

Parameters:
  • problem (MRProblem) – An instance of the MRProblem class

  • **kwargs –

    Additional keyword arguments

    w (int) - Linear algebra constant (default: 3)

    theta (int) - Exponent of the conversion factor (default: 2)

Examples

>>> from cryptographic_estimators.MREstimator.MRAlgorithms.kernel_search import KernelSearch
>>> from cryptographic_estimators.MREstimator.mr_problem import MRProblem
>>> E = KernelSearch(MRProblem(q=7, m=9, n=10, k=15, r=4))
>>> E
KernelSearch estimator for the MinRank problem with (q, m, n, k, r) = (7, 9, 10, 15, 4)
a()¶

Return the optimal a, i.e. number of vectors to guess in the kernel of the low-rank matrix.

Examples

>>> from cryptographic_estimators.MREstimator.MRAlgorithms.kernel_search import KernelSearch
>>> from cryptographic_estimators.MREstimator.mr_problem import MRProblem
>>> KS = KernelSearch(MRProblem(q=7, m=9, n=10, k=15, r=4))
>>> KS.a()
1
Tests:
>>> from cryptographic_estimators.MREstimator.MRAlgorithms.kernel_search import KernelSearch
>>> from cryptographic_estimators.MREstimator.mr_problem import MRProblem
>>> KS = KernelSearch(MRProblem(q=16, m=15, n=15, k=78, r=6))
>>> KS.a()
4
property attack_type¶

Returns the attack type of the algorithm.

property complexity_type¶

Returns the attribute _complexity_type.

cost_reduction(a, lv)¶

Return the cost of computing the reduced instance.

The reduced instance is obtained after one guess of a kernel vectors.

Parameters:

a – Number of vectors to guess in the kernel of the low-rank matrix

get_optimal_parameters_dict()¶

Returns the optimal parameters dictionary.

get_problem_parameters_reduced(a, lv)¶

Return the problem parameters of the reduced instance.

Returns the problem parameters after guessing a kernel vectors and lv entries in the solution vector.

Args: - a – no. of vectors to guess in the kernel of the low-rank matrix - lv – no. of entries to guess in the solution vector

has_optimal_parameter()¶

Return True if the algorithm has optimal parameter.

Tests:
>>> from cryptographic_estimators import BaseAlgorithm, BaseProblem
>>> BaseAlgorithm(BaseProblem()).has_optimal_parameter()
False
hybridization_factor(a, lv)¶

Return the logarithm of the number of reduced instances to be solved.

Parameters:
  • a – No. of vectors to guess in the kernel of the low-rank matrix.

  • lv – No. of entries to guess in the solution vector.

linear_algebra_constant()¶

Return the linear algebra constant.

Tests:
>>> from cryptographic_estimators.MREstimator.mr_algorithm import MRAlgorithm
>>> from cryptographic_estimators.MREstimator.mr_problem import MRProblem
>>> MRAlgorithm(MRProblem(q=7, m=9, n=10, k=15, r=4), w=2).linear_algebra_constant()
2
lv()¶

Return the optimal lv, i.e. number of entries to guess in the solution.

Examples

>>> from cryptographic_estimators.MREstimator.MRAlgorithms.kernel_search import KernelSearch
>>> from cryptographic_estimators.MREstimator.mr_problem import MRProblem
>>> KS = KernelSearch(MRProblem(q=7, m=9, n=10, k=15, r=4))
>>> KS.lv()
0
Tests:
>>> from cryptographic_estimators.MREstimator.MRAlgorithms.kernel_search import KernelSearch
>>> from cryptographic_estimators.MREstimator.mr_problem import MRProblem
>>> KS = KernelSearch(MRProblem(q=16, m=15, n=15, k=78, r=6))
>>> KS.lv()
3
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.

Next
support_minors
Previous
mr_problem
Copyright © 2022, TII
Made with Sphinx and @pradyunsg's Furo
On this page
  • kernel_search
    • KernelSearch
      • KernelSearch.a()
      • KernelSearch.attack_type
      • KernelSearch.complexity_type
      • KernelSearch.cost_reduction()
      • KernelSearch.get_optimal_parameters_dict()
      • KernelSearch.get_problem_parameters_reduced()
      • KernelSearch.has_optimal_parameter()
      • KernelSearch.hybridization_factor()
      • KernelSearch.linear_algebra_constant()
      • KernelSearch.lv()
      • KernelSearch.memory_access
      • KernelSearch.memory_access_cost()
      • KernelSearch.memory_complexity()
      • KernelSearch.optimal_parameters()
      • KernelSearch.parameter_names()
      • KernelSearch.parameter_ranges
      • KernelSearch.reset()
      • KernelSearch.set_parameter_ranges()
      • KernelSearch.set_parameters()
      • KernelSearch.time_complexity()