Implements Length-based attack on AAG protocol. More...
#include <LengthAttack.h>
Public Member Functions | |
LengthAttack_A3 () | |
int | type () |
Returns the algorithm type. | |
findKey_LengthBasedResult | findKey_LengthBased (int N, const vector< Word > &A1, const vector< Word > &A2, const vector< Word > &B, int sec=9999999, ostream &out=cout) |
Attack on an instances of the AAG protocol. | |
Private Member Functions | |
void | addProducts (const vector< Word > &elem_set, vector< Word > &ext_set, vector< Word > &ext_set_sg_gens, const Word &sel_gen, int sel_gen_sg) |
void | addAllProducts (const vector< Word > &elem_set, vector< Word > &ext_set, vector< Word > &ext_set_sg_gens) |
int | sbgpGeneratorsWeight (const vector< Word > &A) |
void | addNewElt (const vector< Word > &A, set< ELT > &checkedElements, set< ELT > &uncheckedElements) |
void | tryElt (int N, const ELT &cur, const vector< Word > &B, set< ELT > &checkedElements, set< ELT > &uncheckedElements) |
void | tryElt (int N, const ELT &cur, const vector< Word > &B, const vector< Word > &B_sg_gens, set< ELT > &checkedElements, set< ELT > &uncheckedElements, bool is_B_extended, ostream &out) |
bool | check_ifVectorsEqual (int N, const vector< Word > &A1, const vector< Word > &A2) |
Implements Length-based attack on AAG protocol.
This is an implementation of the generalised length-based attack. This is an LBA with backtracking in which the set of elements in Alice~s public set on each iteration is extended by conjugators and two-products of the "best" generator. See A.Myasnikov. A.Ushakov, "On the length-based attack" for more details.
Definition at line 143 of file LengthAttack.h.
LengthAttack_A3::LengthAttack_A3 | ( | ) | [inline] |
Definition at line 146 of file LengthAttack.h.
void LengthAttack_A3::addAllProducts | ( | const vector< Word > & | elem_set, | |
vector< Word > & | ext_set, | |||
vector< Word > & | ext_set_sg_gens | |||
) | [private] |
void LengthAttack_A3::addNewElt | ( | const vector< Word > & | A, | |
set< ELT > & | checkedElements, | |||
set< ELT > & | uncheckedElements | |||
) | [private] |
void LengthAttack_A3::addProducts | ( | const vector< Word > & | elem_set, | |
vector< Word > & | ext_set, | |||
vector< Word > & | ext_set_sg_gens, | |||
const Word & | sel_gen, | |||
int | sel_gen_sg | |||
) | [private] |
bool LengthAttack_A3::check_ifVectorsEqual | ( | int | N, | |
const vector< Word > & | A1, | |||
const vector< Word > & | A2 | |||
) | [private] |
findKey_LengthBasedResult LengthAttack_A3::findKey_LengthBased | ( | int | N, | |
const vector< Word > & | A1, | |||
const vector< Word > & | A2, | |||
const vector< Word > & | B, | |||
int | sec = 9999999 , |
|||
ostream & | out = cout | |||
) | [virtual] |
Attack on an instances of the AAG protocol.
Executes a length-based attack on an instance of the AAG protocol
N | - rank of the braid group (number of strands) | |
A1 | - Alices subgroup generators | |
A2 | - Alices subgroup generators conjugated by Bob's private key | |
B | - Bob's subgroup (Bob's private key belongs to it) | |
sec | - amount of time (in seconds) given to procedure to finish |
Implements LengthAttackBase.
int LengthAttack_A3::sbgpGeneratorsWeight | ( | const vector< Word > & | A | ) | [private] |
void LengthAttack_A3::tryElt | ( | int | N, | |
const ELT & | cur, | |||
const vector< Word > & | B, | |||
const vector< Word > & | B_sg_gens, | |||
set< ELT > & | checkedElements, | |||
set< ELT > & | uncheckedElements, | |||
bool | is_B_extended, | |||
ostream & | out | |||
) | [private] |
void LengthAttack_A3::tryElt | ( | int | N, | |
const ELT & | cur, | |||
const vector< Word > & | B, | |||
set< ELT > & | checkedElements, | |||
set< ELT > & | uncheckedElements | |||
) | [private] |
int LengthAttack_A3::type | ( | ) | [inline, virtual] |
Returns the algorithm type.
Implements LengthAttackBase.
Definition at line 147 of file LengthAttack.h.
References AL3.