![]() |
YAARX: Yet Another ARX Toolkit
0.1
|
The ADD differential probability of the sequence of operations: ADD, LROT, XOR (ARX):
.
More...
Functions | |
| void | adp_arx_alloc_matrices (gsl_matrix *A[2][2][2][2]) |
| void | adp_arx_free_matrices (gsl_matrix *A[2][2][2][2]) |
| void | adp_arx_normalize_matrices (gsl_matrix *A[2][2][2][2]) |
| void | adp_arx_print_matrices (gsl_matrix *A[2][2][2][2]) |
| void | adp_arx_sf (gsl_matrix *A[2][2][2][2]) |
| double | adp_arx (gsl_matrix *A[2][2][2][2], uint32_t rot_const, uint32_t da, uint32_t db, uint32_t dd, uint32_t de) |
| double | adp_arx_exper (uint32_t r, uint32_t da, uint32_t db, uint32_t dd, uint32_t de) |
Variables | |
| uint32_t | ADP_ARX_ISTATES [ADP_ARX_NISTATES] = {0,2,4,6} |
| uint32_t | ADP_ARX_FSTATES [ADP_ARX_NISTATES][ADP_ARX_NFSTATES] = {{0,1}, {2,3}, {4,5}, {6,7}} |
The ADD differential probability of the sequence of operations: ADD, LROT, XOR (ARX):
.
| double adp_arx | ( | gsl_matrix * | A[2][2][2][2], |
| uint32_t | rot_const, | ||
| uint32_t | da, | ||
| uint32_t | db, | ||
| uint32_t | dd, | ||
| uint32_t | de | ||
| ) |
The additive differential probability of ARX
. Complexity:
.
| A | transition probability matrices for computed with adp_arx_sf. |
| rot_const | rotation constant. |
| da | first input difference (input to ADD). |
| db | second input difference (input to ADD). |
| dd | third input difference (input to XOR). |
| de | output difference (output from ARX). |
.
and
are values that satisfy the differences
and
respectively, then the ARX operation is defined as:
. | void adp_arx_alloc_matrices | ( | gsl_matrix * | A[2][2][2][2] | ) |
Allocate memory for the transition probability matrices for
.
| A | transition probability matrices for . |
| double adp_arx_exper | ( | uint32_t | r, |
| uint32_t | da, | ||
| uint32_t | db, | ||
| uint32_t | dd, | ||
| uint32_t | de | ||
| ) |
The additive differential probability of ARX (
) computed experimentally over all inputs. Complexity:
.
| r | rotation constant. |
| da | first input difference (input to ADD). |
| db | second input difference (input to ADD). |
| dd | third input difference (input to XOR). |
| de | output difference (output from ARX). |
. | void adp_arx_free_matrices | ( | gsl_matrix * | A[2][2][2][2] | ) |
Free memory reserved by a previous call to adp_arx_alloc_matrices.
| A | transition probability matrices for . |
| void adp_arx_normalize_matrices | ( | gsl_matrix * | A[2][2][2][2] | ) |
Transform the elements of A into probabilities.
| A | transition probability matrices for . |
| void adp_arx_print_matrices | ( | gsl_matrix * | A[2][2][2][2] | ) |
Print the matrices for
.
| A | transition probability matrices for . |
| void adp_arx_sf | ( | gsl_matrix * | A[2][2][2][2] | ) |
S-function for
:
.
| A | zero-initialized set of matrices. |
.
, where
: rotation constant.
: the
-th bit of the first input difference.
: the
-th bit of the second input difference.
: the
-th bit of the output difference.
: special bit postion:
.
.
, a special set of matrices is generated for which the carries generated at position
in the differences
are set to 0. | uint32_t ADP_ARX_FSTATES[ADP_ARX_NISTATES][ADP_ARX_NFSTATES] = {{0,1}, {2,3}, {4,5}, {6,7}} |
Array of final states for the S-function of
: adp_arx_sf. Every set of final states corresponds to a unique initial state (ADP_ARX_ISTATES).
| uint32_t ADP_ARX_ISTATES[ADP_ARX_NISTATES] = {0,2,4,6} |
Array of initial states for the S-function of
: adp_arx_sf.