pk_problem

class cryptographic_estimators.PKEstimator.pk_problem.PKProblem(n: int, m: int, q: int, ell=1, **kwargs)

Bases: BaseProblem

Construct an instance of the Permuted Kernel Problem.

Parameters:
  • n (int) – Columns of the matrix.

  • m (int) – Rows of the matrix.

  • q (int) – Size of the field.

  • ell (int, optional) – Number of rows of the matrix whose permutation should lie in the kernel. Defaults to 1.

  • **kwargs

    Additional keyword arguments.

    use_parity_row (bool) - Enables trick of appending extra (all one) row to the matrix, i.e., m -> m+1. Defaults to False.

    nsolutions (int) - Number of solutions of the problem in logarithmic scale. Defaults to expected_number_solutions.

expected_number_solutions()

Returns the logarithm of the expected number of existing solutions to the problem.

get_parameters()

Return the optimizations parameters.

to_bitcomplexity_memory(elements_to_store: float)

Returns the memory bit-complexity associated to a given number of elements to store.

Parameters:

elements_to_store (float) – Number of Fq elements the algorithm needs to store (logarithmic)

to_bitcomplexity_time(basic_operations: float)

Returns the bit-complexity corresponding to basic_operations field additions.

Parameters:

basic_operations (float) – Number of Fq additions (logarithmic)