-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathconstant.py
78 lines (78 loc) · 6.05 KB
/
constant.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import numpy as np
FRAME_COUNTER_DIFFERENCE = 2048
FRAME_COUNTER_SIZE = 22
KEY_SIZE = 64
MAJORITY_CYCLES_A52 = 99
MAJORITY_CYCLES_A51 = 100
KEY_STREAM_SIZE = 114
R1_SIZE = 19
R2_SIZE = 22
R3_SIZE = 23
R4_SIZE = 17
R1_TAPS = [13, 16, 17, 18]
R2_TAPS = [20, 21]
R3_TAPS = [7, 20, 21, 22]
R4_TAPS = [11, 16]
R1_MAJORITY_BITS = [12, 15]
R2_MAJORITY_BITS = [9, 13]
R3_MAJORITY_BITS = [16, 18]
R1_NEGATED_BIT = 14
R2_NEGATED_BIT = 16
R3_NEGATED_BIT = 13
FORCE_R1_BIT_TO_1 = 15
FORCE_R2_BIT_TO_1 = 16
FORCE_R3_BIT_TO_1 = 18
FORCE_R4_BIT_TO_1 = 10
R1_CLOCKING_BIT = 8
R2_CLOCKING_BIT = 10
R3_CLOCKING_BIT = 10
R4_CLOCK_BITS = [3, 7, 10]
R4_CLOCKING_BIT_FOR_R1 = 10
R4_CLOCKING_BIT_FOR_R2 = 3
R4_CLOCKING_BIT_FOR_R3 = 7
MATRIX_ROWS = 114
MATRIX_COLUMNS = 64
R1_REVERSE_TAPS = [0, 14, 17, 18]
R2_REVERSE_TAPS = [0, 21]
R3_REVERSE_TAPS = [0, 8, 21, 22]
R1_START_IN_SOLUTION = 0
R1_END_IN_SOLUTION = 19
R2_START_IN_SOLUTION = 19
R2_END_IN_SOLUTION = 41
R3_START_IN_SOLUTION = 41
R3_END_IN_SOLUTION = 64
STREAM_KEY_SIZE = 114
R1_SK_START_ROW = 0
R2_SK_START_ROW = 19
R3_SK_START_ROW = 41
R1_SK_POSITIONS_AFTER_CLOCKING = [[45, 31, 17, 3, 28, 0, 11, 9, 27, 26, 7], [46, 32, 18, 4, 29, 1, 12, 10, 28, 0, 27, 8], [47, 33, 19, 5, 30, 2, 13, 11, 29, 1, 28, 0, 9],
[48, 34, 20, 6, 0, 31, 3, 14, 12, 30, 2, 29, 1, 10], [49, 35, 21, 7, 1, 32, 4, 15, 13, 31, 3, 30, 2, 11], [50, 36, 22, 8, 2, 0, 33, 5, 16, 14, 32, 4, 31, 3, 12],
[51, 37, 23, 9, 3, 1, 34, 6, 17, 0, 15, 33, 5, 32, 4, 13], [52, 38, 24, 10, 4, 2, 35, 7, 18, 1, 16, 34, 6, 33, 5, 14],
[53, 39, 25, 11, 5, 3, 36, 8, 19, 2, 17, 35, 7, 34, 6, 15], [54, 40, 26, 12, 6, 4, 37, 9, 20, 3, 18, 36, 8, 0, 35, 7, 16],
[55, 41, 27, 13, 7, 5, 38, 10, 21, 4, 19, 37, 9, 1, 36, 8, 17], [56, 42, 28, 14, 8, 6, 39, 11, 22, 5, 20, 38, 10, 2, 37, 9, 18],
[57, 43, 29, 15, 9, 7, 40, 12, 23, 6, 21, 39, 11, 3, 38, 10, 19, 0], [58, 44, 30, 16, 10, 8, 41, 13, 24, 7, 22, 40, 12, 4, 39, 11, 20, 1],
[59, 45, 31, 17, 11, 9, 42, 14, 25, 8, 23, 41, 13, 5, 40, 12, 21, 2], [60, 46, 32, 18, 12, 10, 43, 15, 26, 9, 24, 42, 14, 6, 41, 13, 22, 3],
[61, 47, 33, 19, 13, 11, 44, 16, 27, 10, 25, 43, 15, 7, 42, 14, 23, 4], [62, 48, 34, 20, 14, 12, 45, 17, 28, 11, 26, 44, 16, 8, 43, 15, 24, 5],
[63, 49, 35, 21, 15, 13, 46, 18, 29, 12, 27, 45, 17, 9, 44, 16, 25, 6]]
R2_SK_POSITIONS_AFTER_CLOCKING = [[42, 21, 0, 20], [43, 22, 1, 21], [44, 23, 2, 22, 0], [45, 24, 3, 23, 1], [46, 25, 4, 24, 2], [47, 26, 5, 25, 3], [48, 27, 6, 26, 4], [49, 28, 7, 27, 5],
[50, 29, 8, 28, 6], [51, 30, 9, 29, 7], [52, 31, 10, 30, 8], [53, 32, 11, 31, 9], [54, 33, 12, 32, 10], [55, 34, 13, 33, 11], [56, 35, 14, 34, 12],
[57, 36, 15, 35, 13], [58, 37, 16, 36, 14], [59, 38, 17, 37, 15], [60, 39, 18, 38, 16], [61, 40, 19, 39, 17], [62, 41, 20, 40, 18], [63, 42, 21, 0, 41, 19]]
R3_SK_POSITIONS_AFTER_CLOCKING = [[41, 33, 25, 17, 9, 1, 20, 4, 19, 3, 18, 2], [42, 34, 26, 18, 10, 2, 21, 5, 0, 20, 4, 19, 3], [43, 35, 27, 19, 11, 3, 22, 6, 1, 21, 5, 20, 4],
[44, 36, 28, 20, 12, 4, 23, 7, 2, 0, 22, 6, 21, 5], [45, 37, 29, 21, 13, 5, 24, 8, 3, 1, 23, 7, 22, 6], [46, 38, 30, 22, 14, 6, 0, 25, 9, 4, 2, 24, 8, 23, 7],
[47, 39, 31, 23, 15, 7, 1, 26, 10, 5, 3, 25, 9, 24, 8], [48, 40, 32, 24, 16, 8, 0, 2, 27, 11, 6, 4, 26, 10, 25, 9], [49, 41, 33, 25, 17, 9, 1, 3, 28, 12, 7, 5, 27, 11, 26, 10],
[50, 42, 34, 26, 18, 10, 2, 0, 4, 29, 13, 8, 6, 28, 12, 27, 11], [51, 43, 35, 27, 19, 11, 3, 1, 5, 30, 14, 9, 7, 29, 13, 28, 12],
[52, 44, 36, 28, 20, 12, 4, 2, 0, 6, 31, 15, 10, 8, 30, 14, 29, 13], [53, 45, 37, 29, 21, 13, 5, 3, 1, 7, 32, 16, 0, 11, 9, 31, 15, 30, 14],
[54, 46, 38, 30, 22, 14, 6, 4, 2, 8, 33, 17, 1, 12, 10, 32, 16, 31, 15], [55, 47, 39, 31, 23, 15, 7, 5, 3, 9, 34, 18, 2, 13, 11, 33, 17, 32, 16, 0],
[56, 48, 40, 32, 24, 16, 8, 0, 6, 4, 10, 35, 19, 3, 14, 12, 34, 18, 33, 17, 1], [57, 49, 41, 33, 25, 17, 9, 1, 7, 5, 11, 36, 20, 4, 15, 13, 35, 19, 34, 18, 2],
[58, 50, 42, 34, 26, 18, 10, 2, 8, 6, 12, 37, 21, 5, 16, 14, 36, 20, 35, 19, 3], [59, 51, 43, 35, 27, 19, 11, 3, 9, 7, 13, 38, 22, 6, 17, 15, 37, 21, 36, 20, 4],
[60, 52, 44, 36, 28, 20, 12, 4, 10, 8, 14, 39, 23, 7, 18, 16, 38, 22, 37, 21, 5], [61, 53, 45, 37, 29, 21, 13, 5, 11, 9, 15, 40, 24, 8, 19, 17, 39, 23, 38, 22, 6],
[62, 54, 46, 38, 30, 22, 14, 6, 12, 10, 16, 41, 25, 9, 20, 18, 40, 24, 39, 23, 7], [63, 55, 47, 39, 31, 23, 15, 7, 13, 11, 17, 0, 42, 26, 10, 21, 19, 41, 25, 40, 24, 8]]
R1_FC_POSITIONS_AFTER_CLOCKING = [[18], [17], [16], [], [14], [13], [12], [11], [10], [9], [8], [7, 21], [6, 20], [5, 19], [4, 18, 21], [3, 17, 20, 21], [2, 16, 19, 20, 21], [1, 15, 18, 19, 20], [0, 14, 17, 18, 19]]
R2_FC_POSITIONS_AFTER_CLOCKING = [[21], [20], [19], [18], [17], [], [15], [14], [13], [12], [11], [10], [9], [8], [7], [6], [5], [4], [3], [2], [1], [0, 21]]
R3_FC_POSITIONS_AFTER_CLOCKING = [[], [21], [20], [19], [], [17], [16], [15], [14], [13, 21], [12, 20], [11, 19], [10, 18], [9, 17], [8, 16], [7, 15], [6, 14], [5, 13, 21], [4, 12, 20], [3, 11, 19], [2, 10, 18], [1, 9, 17], [0, 8, 16, 21]]
R1_X_DELTA_PRODUCTS = [(12, 14), (14, 12), (14, 15), (15, 14), (12, 15), (15, 12)]
R2_X_DELTA_PRODUCTS = [(9, 16), (16, 9), (9, 13), (13, 9), (13, 16), (16, 13)]
R3_X_DELTA_PRODUCTS = [(16, 13), (13, 16), (16, 18), (18, 16), (18, 13), (13, 18)]
R1_DELTA_DELTA_PRODUCTS = [(14, 12), (14, 15), (15, 12), (12, 12), (15, 15), (18, 18)]
R2_DELTA_DELTA_PRODUCTS = [(9, 16), (9, 13), (13, 16), (9, 9), (13, 13), (21, 21)]
R3_DELTA_DELTA_PRODUCTS = [(16, 13), (16, 18), (18, 13), (16, 16), (18, 18), (22, 22)]