Parameters:
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import re
import pandas as pd # Pandas for tables
from IPython.display import Latex
from IPython.display import HTML
def read_f(file_name):
"""Reading weight enumerators."""
with open(file_name, 'r') as fp:
wd = fp.read().split("]\n")[:-1] # "\n"
wd = np.array([list(map(int, re.findall(r"\d+", elem))) for elem in wd])
return wd
def find_ind(i):
"""Generating index of L_2 and L_3"""
ii = 256*(256+1)/2-i-1
kk = np.floor((np.sqrt(8*ii+1)-1)/2)
irow = int(256-1-kk)
icol = int(i-256*(256+1)/2 + (256-irow)*(257-irow)/2 +irow)
return irow, icol
wd = read_f("weight_distrib_n3k8.txt") # Weight distribution
# print(wd.shape) # 226 entries: 225 for IPM codes and one for BKLC codes
alpha_all = np.array(['$\\alpha^{%d}$'%i for i in np.arange(256)])
d_all = np.zeros(len(wd))
B_all = np.zeros(len(wd))
L_2 = np.zeros(len(wd), dtype=int)
L_3 = np.zeros(len(wd), dtype=int)
for i in range(len(wd)):
d_all[i] = wd[i][2]
B_all[i] = wd[i][3]
if i<len(wd)-1:
irow, icol = find_ind(i)
L_2[i] = irow
L_3[i] = icol
# Set properties for th, td and caption elements in dataframe
th_props = [('font-size', '14px'), ('text-align', 'left'), ('font-weight', 'bold'), ('background-color', '#E0E0E0')]
td_props = [('font-size', '13px'), ('text-align', 'left'), ('min-width', '80px')]
cp_props = [('font-size', '16px'), ('text-align', 'center')]
# Set table styles
styles = [dict(selector="th", props=th_props), dict(selector="td", props=td_props), dict(selector="caption", props=cp_props)]
cm_1 = sns.light_palette("red", as_cmap=True)
cm_2 = sns.light_palette("purple", as_cmap=True, reverse=True)
#df = pd.DataFrame({'$L_2$': alpha_all[L_2[:-1]], '$L_3$': alpha_all[L_3[:-1]], '$d_{\mathcal{D}}^\perp$': d_all[:-1],
# '$B_{d_{\mathcal{D}}^\perp}$': B_all[:-1], 'Weight Enumerators': wd[:-1]})
pd.set_option('display.max_colwidth', 1000)
pd.set_option('display.width', 400)
We omit the complete table I here to avoid wasting of spaces. Hereafter, we only show all codes with maximized $d_{\mathcal{D}}^\perp=8$.
We focus on the the linear codes with greater $d_{\mathcal{D}}^\perp$, which are better in the sense of side-channel resistance (from our paper).
# Finding the indices of d_C=8
d_index = []
d_index_L2 = []
d_index_L3 = []
d_C = 8
for i in range(len(wd)-1):
if wd[i][2] == d_C:
d_index.append(i)
irow, icol = find_ind(i)
d_index_L2.append(irow)
d_index_L3.append(icol)
#d_index = np.array(d_index)
print(len(d_index))
114
def highlight(s, threshold, column):
is_min = pd.Series(data=False, index=s.index)
is_min[column] = (s.loc[column] <= threshold)
return ['background-color: gold' if is_min.any() else '' for v in is_min]
df_4 = pd.DataFrame({'$L_2$': np.array(alpha_all)[d_index_L2], '$L_3$': np.array(alpha_all)[d_index_L3], '$d_{\mathcal{D}}^\perp$':
d_all[d_index], '$B_{d_{\mathcal{D}}^\perp}$': B_all[d_index], 'Weight Enumerators': wd[d_index]})
df_4 = df_4.sort_values(by=['$B_{d_{\mathcal{D}}^\perp}$'], ascending=True)
(df_4.style
.apply(highlight, threshold=7, column=['$B_{d_{\mathcal{D}}^\perp}$'], axis=1)
.background_gradient(cmap=cm_2, subset=['$B_{d_{\mathcal{D}}^\perp}$' ])
.set_caption('Tab. II Linear codes for IPM with $d_{\mathcal{D}}^\perp=8$.')
.set_table_styles(styles))
$L_2$ | $L_3$ | $d_{\mathcal{D}}^\perp$ | $B_{d_{\mathcal{D}}^\perp}$ | Weight Enumerators | |
---|---|---|---|---|---|
19 | $\alpha^{18}$ | $\alpha^{183}$ | 8 | 7 | [0, 1, 8, 7, 9, 27, 10, 44, 11, 41, 12, 34, 13, 34, 14, 24, 15, 22, 16, 14, 17, 3, 18, 4, 19, 1] |
41 | $\alpha^{72}$ | $\alpha^{90}$ | 8 | 7 | [0, 1, 8, 7, 9, 27, 10, 44, 11, 41, 12, 34, 13, 34, 14, 24, 15, 22, 16, 14, 17, 3, 18, 4, 19, 1] |
105 | $\alpha^{165}$ | $\alpha^{237}$ | 8 | 7 | [0, 1, 8, 7, 9, 27, 10, 44, 11, 41, 12, 34, 13, 34, 14, 24, 15, 22, 16, 14, 17, 3, 18, 4, 19, 1] |
86 | $\alpha^{112}$ | $\alpha^{187}$ | 8 | 10 | [0, 1, 8, 10, 9, 30, 10, 33, 11, 37, 12, 44, 13, 36, 14, 22, 15, 18, 16, 17, 17, 6, 18, 1, 19, 1] |
34 | $\alpha^{68}$ | $\alpha^{180}$ | 8 | 10 | [0, 1, 8, 10, 9, 30, 10, 33, 11, 37, 12, 44, 13, 36, 14, 22, 15, 18, 16, 17, 17, 6, 18, 1, 19, 1] |
102 | $\alpha^{164}$ | $\alpha^{236}$ | 8 | 10 | [0, 1, 8, 10, 9, 20, 10, 49, 11, 41, 12, 36, 13, 28, 14, 22, 15, 30, 16, 9, 17, 8, 18, 1, 19, 1] |
20 | $\alpha^{19}$ | $\alpha^{183}$ | 8 | 10 | [0, 1, 8, 10, 9, 20, 10, 49, 11, 41, 12, 36, 13, 28, 14, 22, 15, 30, 16, 9, 17, 8, 18, 1, 19, 1] |
42 | $\alpha^{72}$ | $\alpha^{91}$ | 8 | 10 | [0, 1, 8, 10, 9, 20, 10, 49, 11, 41, 12, 36, 13, 28, 14, 22, 15, 30, 16, 9, 17, 8, 18, 1, 19, 1] |
51 | $\alpha^{75}$ | $\alpha^{143}$ | 8 | 10 | [0, 1, 8, 10, 9, 30, 10, 33, 11, 37, 12, 44, 13, 36, 14, 22, 15, 18, 16, 17, 17, 6, 18, 1, 19, 1] |
0 | $\alpha^{7}$ | $\alpha^{80}$ | 8 | 11 | [0, 1, 8, 11, 9, 32, 10, 28, 11, 36, 12, 44, 13, 34, 14, 34, 15, 18, 16, 8, 17, 6, 18, 2, 19, 2] |
27 | $\alpha^{66}$ | $\alpha^{145}$ | 8 | 11 | [0, 1, 8, 11, 9, 26, 10, 35, 11, 42, 12, 36, 13, 38, 14, 32, 15, 14, 16, 8, 17, 8, 18, 5] |
49 | $\alpha^{73}$ | $\alpha^{248}$ | 8 | 11 | [0, 1, 8, 11, 9, 32, 10, 28, 11, 36, 12, 44, 13, 34, 14, 34, 15, 18, 16, 8, 17, 6, 18, 2, 19, 2] |
23 | $\alpha^{41}$ | $\alpha^{130}$ | 8 | 11 | [0, 1, 8, 11, 9, 29, 10, 34, 11, 36, 12, 42, 13, 38, 14, 20, 15, 20, 16, 18, 17, 5, 18, 2] |
38 | $\alpha^{71}$ | $\alpha^{175}$ | 8 | 11 | [0, 1, 8, 11, 9, 28, 10, 36, 11, 40, 12, 34, 13, 32, 14, 32, 15, 24, 16, 10, 17, 4, 18, 4] |
75 | $\alpha^{89}$ | $\alpha^{214}$ | 8 | 11 | [0, 1, 8, 11, 9, 29, 10, 34, 11, 36, 12, 42, 13, 38, 14, 20, 15, 20, 16, 18, 17, 5, 18, 2] |
76 | $\alpha^{104}$ | $\alpha^{184}$ | 8 | 11 | [0, 1, 8, 11, 9, 28, 10, 36, 11, 40, 12, 34, 13, 32, 14, 32, 15, 24, 16, 10, 17, 4, 18, 4] |
77 | $\alpha^{110}$ | $\alpha^{176}$ | 8 | 11 | [0, 1, 8, 11, 9, 26, 10, 35, 11, 42, 12, 36, 13, 38, 14, 32, 15, 14, 16, 8, 17, 8, 18, 5] |
89 | $\alpha^{125}$ | $\alpha^{166}$ | 8 | 11 | [0, 1, 8, 11, 9, 29, 10, 34, 11, 36, 12, 42, 13, 38, 14, 20, 15, 20, 16, 18, 17, 5, 18, 2] |
110 | $\alpha^{175}$ | $\alpha^{182}$ | 8 | 11 | [0, 1, 8, 11, 9, 32, 10, 28, 11, 36, 12, 44, 13, 34, 14, 34, 15, 18, 16, 8, 17, 6, 18, 2, 19, 2] |
45 | $\alpha^{72}$ | $\alpha^{247}$ | 8 | 11 | [0, 1, 8, 11, 9, 32, 10, 28, 11, 36, 12, 44, 13, 34, 14, 34, 15, 18, 16, 8, 17, 6, 18, 2, 19, 2] |
4 | $\alpha^{8}$ | $\alpha^{80}$ | 8 | 11 | [0, 1, 8, 11, 9, 32, 10, 28, 11, 36, 12, 44, 13, 34, 14, 34, 15, 18, 16, 8, 17, 6, 18, 2, 19, 2] |
111 | $\alpha^{175}$ | $\alpha^{183}$ | 8 | 11 | [0, 1, 8, 11, 9, 32, 10, 28, 11, 36, 12, 44, 13, 34, 14, 34, 15, 18, 16, 8, 17, 6, 18, 2, 19, 2] |
67 | $\alpha^{79}$ | $\alpha^{189}$ | 8 | 11 | [0, 1, 8, 11, 9, 26, 10, 35, 11, 42, 12, 36, 13, 38, 14, 32, 15, 14, 16, 8, 17, 8, 18, 5] |
69 | $\alpha^{80}$ | $\alpha^{151}$ | 8 | 11 | [0, 1, 8, 11, 9, 28, 10, 36, 11, 40, 12, 34, 13, 32, 14, 32, 15, 24, 16, 10, 17, 4, 18, 4] |
62 | $\alpha^{78}$ | $\alpha^{144}$ | 8 | 12 | [0, 1, 8, 12, 9, 25, 10, 33, 11, 40, 12, 42, 13, 42, 14, 22, 15, 16, 16, 15, 17, 5, 18, 1, 20, 2] |
93 | $\alpha^{130}$ | $\alpha^{200}$ | 8 | 12 | [0, 1, 8, 12, 9, 20, 10, 42, 11, 38, 12, 44, 13, 36, 14, 20, 15, 24, 16, 7, 17, 8, 18, 2, 19, 2] |
87 | $\alpha^{112}$ | $\alpha^{189}$ | 8 | 12 | [0, 1, 8, 12, 9, 29, 10, 29, 11, 38, 12, 44, 13, 38, 14, 26, 15, 16, 16, 15, 17, 5, 18, 1, 19, 2] |
36 | $\alpha^{70}$ | $\alpha^{125}$ | 8 | 12 | [0, 1, 8, 12, 9, 20, 10, 42, 11, 38, 12, 44, 13, 36, 14, 20, 15, 24, 16, 7, 17, 8, 18, 2, 19, 2] |
35 | $\alpha^{69}$ | $\alpha^{180}$ | 8 | 12 | [0, 1, 8, 12, 9, 26, 10, 33, 11, 38, 12, 43, 13, 42, 14, 20, 15, 18, 16, 15, 17, 4, 18, 3, 20, 1] |
58 | $\alpha^{77}$ | $\alpha^{143}$ | 8 | 12 | [0, 1, 8, 12, 9, 29, 10, 29, 11, 38, 12, 44, 13, 38, 14, 26, 15, 16, 16, 15, 17, 5, 18, 1, 19, 2] |
25 | $\alpha^{56}$ | $\alpha^{242}$ | 8 | 12 | [0, 1, 8, 12, 9, 31, 10, 28, 11, 34, 12, 46, 13, 37, 14, 26, 15, 22, 16, 13, 17, 3, 18, 2, 21, 1] |
112 | $\alpha^{186}$ | $\alpha^{199}$ | 8 | 12 | [0, 1, 8, 12, 9, 31, 10, 28, 11, 34, 12, 46, 13, 37, 14, 26, 15, 22, 16, 13, 17, 3, 18, 2, 21, 1] |
28 | $\alpha^{66}$ | $\alpha^{177}$ | 8 | 12 | [0, 1, 8, 12, 9, 25, 10, 33, 11, 40, 12, 42, 13, 42, 14, 22, 15, 16, 16, 15, 17, 5, 18, 1, 20, 2] |
52 | $\alpha^{75}$ | $\alpha^{144}$ | 8 | 12 | [0, 1, 8, 12, 9, 26, 10, 33, 11, 38, 12, 43, 13, 42, 14, 20, 15, 18, 16, 15, 17, 4, 18, 3, 20, 1] |
24 | $\alpha^{55}$ | $\alpha^{185}$ | 8 | 12 | [0, 1, 8, 12, 9, 20, 10, 42, 11, 38, 12, 44, 13, 36, 14, 20, 15, 24, 16, 7, 17, 8, 18, 2, 19, 2] |
85 | $\alpha^{111}$ | $\alpha^{189}$ | 8 | 12 | [0, 1, 8, 12, 9, 25, 10, 33, 11, 40, 12, 42, 13, 42, 14, 22, 15, 16, 16, 15, 17, 5, 18, 1, 20, 2] |
84 | $\alpha^{111}$ | $\alpha^{186}$ | 8 | 12 | [0, 1, 8, 12, 9, 26, 10, 33, 11, 38, 12, 43, 13, 42, 14, 20, 15, 18, 16, 15, 17, 4, 18, 3, 20, 1] |
29 | $\alpha^{66}$ | $\alpha^{178}$ | 8 | 12 | [0, 1, 8, 12, 9, 29, 10, 29, 11, 38, 12, 44, 13, 38, 14, 26, 15, 16, 16, 15, 17, 5, 18, 1, 19, 2] |
8 | $\alpha^{13}$ | $\alpha^{69}$ | 8 | 12 | [0, 1, 8, 12, 9, 31, 10, 28, 11, 34, 12, 46, 13, 37, 14, 26, 15, 22, 16, 13, 17, 3, 18, 2, 21, 1] |
48 | $\alpha^{73}$ | $\alpha^{247}$ | 8 | 13 | [0, 1, 8, 13, 9, 30, 10, 27, 11, 37, 12, 42, 13, 36, 14, 34, 15, 18, 16, 8, 17, 6, 18, 3, 19, 1] |
94 | $\alpha^{149}$ | $\alpha^{167}$ | 8 | 13 | [0, 1, 8, 13, 9, 20, 10, 40, 11, 38, 12, 43, 13, 36, 14, 24, 15, 24, 16, 6, 17, 8, 19, 2, 20, 1] |
5 | $\alpha^{8}$ | $\alpha^{81}$ | 8 | 13 | [0, 1, 8, 13, 9, 30, 10, 27, 11, 37, 12, 42, 13, 36, 14, 34, 15, 18, 16, 8, 17, 6, 18, 3, 19, 1] |
31 | $\alpha^{67}$ | $\alpha^{177}$ | 8 | 13 | [0, 1, 8, 13, 9, 21, 10, 41, 11, 34, 12, 42, 13, 42, 14, 22, 15, 20, 16, 8, 17, 9, 18, 1, 19, 2] |
108 | $\alpha^{174}$ | $\alpha^{182}$ | 8 | 13 | [0, 1, 8, 13, 9, 30, 10, 27, 11, 37, 12, 42, 13, 36, 14, 34, 15, 18, 16, 8, 17, 6, 18, 3, 19, 1] |
63 | $\alpha^{78}$ | $\alpha^{145}$ | 8 | 13 | [0, 1, 8, 13, 9, 21, 10, 41, 11, 34, 12, 42, 13, 42, 14, 22, 15, 20, 16, 8, 17, 9, 18, 1, 19, 2] |
18 | $\alpha^{18}$ | $\alpha^{106}$ | 8 | 13 | [0, 1, 8, 13, 9, 20, 10, 40, 11, 38, 12, 43, 13, 36, 14, 24, 15, 24, 16, 6, 17, 8, 19, 2, 20, 1] |
99 | $\alpha^{164}$ | $\alpha^{177}$ | 8 | 13 | [0, 1, 8, 13, 9, 20, 10, 42, 11, 40, 12, 40, 13, 30, 14, 22, 15, 30, 16, 10, 17, 6, 19, 2] |
73 | $\alpha^{88}$ | $\alpha^{237}$ | 8 | 13 | [0, 1, 8, 13, 9, 20, 10, 40, 11, 38, 12, 43, 13, 36, 14, 24, 15, 24, 16, 6, 17, 8, 19, 2, 20, 1] |
66 | $\alpha^{78}$ | $\alpha^{242}$ | 8 | 13 | [0, 1, 8, 13, 9, 20, 10, 42, 11, 40, 12, 40, 13, 30, 14, 22, 15, 30, 16, 10, 17, 6, 19, 2] |
9 | $\alpha^{13}$ | $\alpha^{91}$ | 8 | 13 | [0, 1, 8, 13, 9, 20, 10, 42, 11, 40, 12, 40, 13, 30, 14, 22, 15, 30, 16, 10, 17, 6, 19, 2] |
82 | $\alpha^{110}$ | $\alpha^{188}$ | 8 | 13 | [0, 1, 8, 13, 9, 21, 10, 41, 11, 34, 12, 42, 13, 42, 14, 22, 15, 20, 16, 8, 17, 9, 18, 1, 19, 2] |
70 | $\alpha^{82}$ | $\alpha^{89}$ | 8 | 14 | [0, 1, 8, 14, 9, 21, 10, 38, 11, 34, 12, 44, 13, 42, 14, 24, 15, 20, 16, 5, 17, 9, 18, 2, 19, 2] |
83 | $\alpha^{111}$ | $\alpha^{184}$ | 8 | 14 | [0, 1, 8, 14, 9, 25, 10, 29, 11, 40, 12, 44, 13, 42, 14, 22, 15, 16, 16, 13, 17, 5, 18, 5] |
55 | $\alpha^{76}$ | $\alpha^{142}$ | 8 | 14 | [0, 1, 8, 14, 9, 26, 10, 29, 11, 38, 12, 43, 13, 42, 14, 24, 15, 18, 16, 13, 17, 4, 18, 3, 20, 1] |
88 | $\alpha^{113}$ | $\alpha^{189}$ | 8 | 14 | [0, 1, 8, 14, 9, 26, 10, 29, 11, 38, 12, 43, 13, 42, 14, 24, 15, 18, 16, 13, 17, 4, 18, 3, 20, 1] |
2 | $\alpha^{7}$ | $\alpha^{173}$ | 8 | 14 | [0, 1, 8, 14, 9, 21, 10, 38, 11, 34, 12, 44, 13, 42, 14, 24, 15, 20, 16, 5, 17, 9, 18, 2, 19, 2] |
46 | $\alpha^{73}$ | $\alpha^{144}$ | 8 | 14 | [0, 1, 8, 14, 9, 25, 10, 29, 11, 40, 12, 44, 13, 42, 14, 22, 15, 16, 16, 13, 17, 5, 18, 5] |
40 | $\alpha^{71}$ | $\alpha^{182}$ | 8 | 14 | [0, 1, 8, 14, 9, 25, 10, 29, 11, 40, 12, 44, 13, 42, 14, 22, 15, 16, 16, 13, 17, 5, 18, 5] |
107 | $\alpha^{166}$ | $\alpha^{248}$ | 8 | 14 | [0, 1, 8, 14, 9, 21, 10, 38, 11, 34, 12, 44, 13, 42, 14, 24, 15, 20, 16, 5, 17, 9, 18, 2, 19, 2] |
30 | $\alpha^{66}$ | $\alpha^{179}$ | 8 | 14 | [0, 1, 8, 14, 9, 26, 10, 29, 11, 38, 12, 43, 13, 42, 14, 24, 15, 18, 16, 13, 17, 4, 18, 3, 20, 1] |
97 | $\alpha^{163}$ | $\alpha^{177}$ | 8 | 15 | [0, 1, 8, 15, 9, 21, 10, 36, 11, 46, 12, 25, 13, 40, 14, 34, 15, 18, 16, 14, 17, 3, 18, 2, 20, 1] |
7 | $\alpha^{9}$ | $\alpha^{81}$ | 8 | 15 | [0, 1, 8, 15, 9, 24, 10, 31, 11, 38, 12, 37, 13, 46, 14, 28, 15, 18, 16, 10, 17, 2, 18, 5, 20, 1] |
109 | $\alpha^{174}$ | $\alpha^{183}$ | 8 | 15 | [0, 1, 8, 15, 9, 24, 10, 31, 11, 38, 12, 37, 13, 46, 14, 28, 15, 18, 16, 10, 17, 2, 18, 5, 20, 1] |
12 | $\alpha^{14}$ | $\alpha^{92}$ | 8 | 15 | [0, 1, 8, 15, 9, 21, 10, 36, 11, 46, 12, 25, 13, 40, 14, 34, 15, 18, 16, 14, 17, 3, 18, 2, 20, 1] |
81 | $\alpha^{110}$ | $\alpha^{187}$ | 8 | 15 | [0, 1, 8, 15, 9, 18, 10, 37, 11, 42, 12, 42, 13, 36, 14, 26, 15, 20, 16, 6, 17, 10, 18, 1, 19, 2] |
79 | $\alpha^{110}$ | $\alpha^{184}$ | 8 | 15 | [0, 1, 8, 15, 9, 23, 10, 29, 11, 46, 12, 37, 13, 36, 14, 32, 15, 18, 16, 10, 17, 5, 18, 3, 20, 1] |
78 | $\alpha^{110}$ | $\alpha^{183}$ | 8 | 15 | [0, 1, 8, 15, 9, 20, 10, 36, 11, 39, 12, 44, 13, 34, 14, 26, 15, 24, 16, 4, 17, 10, 18, 2, 19, 1] |
26 | $\alpha^{58}$ | $\alpha^{125}$ | 8 | 15 | [0, 1, 8, 15, 9, 24, 10, 25, 11, 47, 12, 44, 13, 34, 14, 28, 15, 16, 16, 12, 17, 6, 18, 3, 19, 1] |
44 | $\alpha^{72}$ | $\alpha^{246}$ | 8 | 15 | [0, 1, 8, 15, 9, 24, 10, 31, 11, 38, 12, 37, 13, 46, 14, 28, 15, 18, 16, 10, 17, 2, 18, 5, 20, 1] |
32 | $\alpha^{67}$ | $\alpha^{197}$ | 8 | 15 | [0, 1, 8, 15, 9, 24, 10, 25, 11, 47, 12, 44, 13, 34, 14, 28, 15, 16, 16, 12, 17, 6, 18, 3, 19, 1] |
50 | $\alpha^{74}$ | $\alpha^{145}$ | 8 | 15 | [0, 1, 8, 15, 9, 23, 10, 29, 11, 46, 12, 37, 13, 36, 14, 32, 15, 18, 16, 10, 17, 5, 18, 3, 20, 1] |
47 | $\alpha^{73}$ | $\alpha^{145}$ | 8 | 15 | [0, 1, 8, 15, 9, 20, 10, 36, 11, 39, 12, 44, 13, 34, 14, 26, 15, 24, 16, 4, 17, 10, 18, 2, 19, 1] |
59 | $\alpha^{77}$ | $\alpha^{145}$ | 8 | 15 | [0, 1, 8, 15, 9, 18, 10, 37, 11, 42, 12, 42, 13, 36, 14, 26, 15, 20, 16, 6, 17, 10, 18, 1, 19, 2] |
43 | $\alpha^{72}$ | $\alpha^{182}$ | 8 | 15 | [0, 1, 8, 15, 9, 20, 10, 36, 11, 39, 12, 44, 13, 34, 14, 26, 15, 24, 16, 4, 17, 10, 18, 2, 19, 1] |
39 | $\alpha^{71}$ | $\alpha^{181}$ | 8 | 15 | [0, 1, 8, 15, 9, 23, 10, 29, 11, 46, 12, 37, 13, 36, 14, 32, 15, 18, 16, 10, 17, 5, 18, 3, 20, 1] |
92 | $\alpha^{130}$ | $\alpha^{188}$ | 8 | 15 | [0, 1, 8, 15, 9, 24, 10, 25, 11, 47, 12, 44, 13, 34, 14, 28, 15, 16, 16, 12, 17, 6, 18, 3, 19, 1] |
65 | $\alpha^{78}$ | $\alpha^{241}$ | 8 | 15 | [0, 1, 8, 15, 9, 21, 10, 36, 11, 46, 12, 25, 13, 40, 14, 34, 15, 18, 16, 14, 17, 3, 18, 2, 20, 1] |
33 | $\alpha^{68}$ | $\alpha^{178}$ | 8 | 15 | [0, 1, 8, 15, 9, 18, 10, 37, 11, 42, 12, 42, 13, 36, 14, 26, 15, 20, 16, 6, 17, 10, 18, 1, 19, 2] |
106 | $\alpha^{165}$ | $\alpha^{248}$ | 8 | 16 | [0, 1, 8, 16, 9, 17, 10, 38, 11, 39, 12, 40, 13, 42, 14, 24, 15, 22, 16, 7, 17, 5, 18, 2, 19, 3] |
64 | $\alpha^{78}$ | $\alpha^{240}$ | 8 | 16 | [0, 1, 8, 16, 9, 19, 10, 38, 11, 40, 12, 34, 13, 36, 14, 34, 15, 22, 16, 5, 17, 9, 19, 2] |
90 | $\alpha^{127}$ | $\alpha^{215}$ | 8 | 16 | [0, 1, 8, 16, 9, 26, 10, 26, 11, 40, 12, 40, 13, 36, 14, 29, 15, 24, 16, 15, 17, 2, 22, 1] |
22 | $\alpha^{40}$ | $\alpha^{167}$ | 8 | 16 | [0, 1, 8, 16, 9, 26, 10, 26, 11, 40, 12, 40, 13, 36, 14, 29, 15, 24, 16, 15, 17, 2, 22, 1] |
72 | $\alpha^{88}$ | $\alpha^{128}$ | 8 | 16 | [0, 1, 8, 16, 9, 26, 10, 26, 11, 40, 12, 40, 13, 36, 14, 29, 15, 24, 16, 15, 17, 2, 22, 1] |
96 | $\alpha^{162}$ | $\alpha^{177}$ | 8 | 16 | [0, 1, 8, 16, 9, 19, 10, 38, 11, 40, 12, 34, 13, 36, 14, 34, 15, 22, 16, 5, 17, 9, 19, 2] |
1 | $\alpha^{7}$ | $\alpha^{172}$ | 8 | 16 | [0, 1, 8, 16, 9, 17, 10, 38, 11, 39, 12, 40, 13, 42, 14, 24, 15, 22, 16, 7, 17, 5, 18, 2, 19, 3] |
16 | $\alpha^{15}$ | $\alpha^{93}$ | 8 | 16 | [0, 1, 8, 16, 9, 19, 10, 38, 11, 40, 12, 34, 13, 36, 14, 34, 15, 22, 16, 5, 17, 9, 19, 2] |
71 | $\alpha^{83}$ | $\alpha^{90}$ | 8 | 16 | [0, 1, 8, 16, 9, 17, 10, 38, 11, 39, 12, 40, 13, 42, 14, 24, 15, 22, 16, 7, 17, 5, 18, 2, 19, 3] |
103 | $\alpha^{165}$ | $\alpha^{179}$ | 8 | 17 | [0, 1, 8, 17, 9, 22, 10, 29, 11, 48, 12, 30, 13, 36, 14, 34, 15, 16, 16, 16, 17, 6, 18, 1] |
95 | $\alpha^{161}$ | $\alpha^{176}$ | 8 | 17 | [0, 1, 8, 17, 9, 18, 10, 39, 11, 39, 12, 32, 13, 38, 14, 32, 15, 24, 16, 6, 17, 8, 18, 1, 19, 1] |
113 | $\alpha^{239}$ | $\alpha^{248}$ | 8 | 17 | [0, 1, 8, 17, 9, 21, 10, 34, 11, 33, 12, 40, 13, 44, 14, 30, 15, 20, 16, 6, 17, 7, 19, 3] |
6 | $\alpha^{9}$ | $\alpha^{16}$ | 8 | 17 | [0, 1, 8, 17, 9, 21, 10, 34, 11, 33, 12, 40, 13, 44, 14, 30, 15, 20, 16, 6, 17, 7, 19, 3] |
10 | $\alpha^{14}$ | $\alpha^{90}$ | 8 | 17 | [0, 1, 8, 17, 9, 22, 10, 29, 11, 48, 12, 30, 13, 36, 14, 34, 15, 16, 16, 16, 17, 6, 18, 1] |
68 | $\alpha^{79}$ | $\alpha^{240}$ | 8 | 17 | [0, 1, 8, 17, 9, 18, 10, 39, 11, 39, 12, 32, 13, 38, 14, 32, 15, 24, 16, 6, 17, 8, 18, 1, 19, 1] |
17 | $\alpha^{15}$ | $\alpha^{94}$ | 8 | 17 | [0, 1, 8, 17, 9, 18, 10, 39, 11, 39, 12, 32, 13, 38, 14, 32, 15, 24, 16, 6, 17, 8, 18, 1, 19, 1] |
3 | $\alpha^{7}$ | $\alpha^{246}$ | 8 | 17 | [0, 1, 8, 17, 9, 21, 10, 34, 11, 33, 12, 40, 13, 44, 14, 30, 15, 20, 16, 6, 17, 7, 19, 3] |
57 | $\alpha^{76}$ | $\alpha^{241}$ | 8 | 17 | [0, 1, 8, 17, 9, 22, 10, 29, 11, 48, 12, 30, 13, 36, 14, 34, 15, 16, 16, 16, 17, 6, 18, 1] |
53 | $\alpha^{75}$ | $\alpha^{145}$ | 8 | 17 | [0, 1, 8, 17, 9, 17, 10, 37, 11, 40, 12, 38, 13, 39, 14, 26, 15, 24, 16, 8, 17, 7, 18, 1, 21, 1] |
80 | $\alpha^{110}$ | $\alpha^{185}$ | 8 | 17 | [0, 1, 8, 17, 9, 17, 10, 37, 11, 40, 12, 38, 13, 39, 14, 26, 15, 24, 16, 8, 17, 7, 18, 1, 21, 1] |
37 | $\alpha^{70}$ | $\alpha^{180}$ | 8 | 17 | [0, 1, 8, 17, 9, 17, 10, 37, 11, 40, 12, 38, 13, 39, 14, 26, 15, 24, 16, 8, 17, 7, 18, 1, 21, 1] |
21 | $\alpha^{39}$ | $\alpha^{166}$ | 8 | 18 | [0, 1, 8, 18, 9, 21, 10, 33, 11, 33, 12, 44, 13, 38, 14, 22, 15, 30, 16, 9, 17, 5, 18, 1, 19, 1] |
74 | $\alpha^{89}$ | $\alpha^{128}$ | 8 | 18 | [0, 1, 8, 18, 9, 21, 10, 33, 11, 33, 12, 44, 13, 38, 14, 22, 15, 30, 16, 9, 17, 5, 18, 1, 19, 1] |
91 | $\alpha^{127}$ | $\alpha^{216}$ | 8 | 18 | [0, 1, 8, 18, 9, 21, 10, 33, 11, 33, 12, 44, 13, 38, 14, 22, 15, 30, 16, 9, 17, 5, 18, 1, 19, 1] |
11 | $\alpha^{14}$ | $\alpha^{91}$ | 8 | 19 | [0, 1, 8, 19, 9, 17, 10, 38, 11, 38, 12, 32, 13, 40, 14, 26, 15, 26, 16, 12, 17, 7] |
54 | $\alpha^{75}$ | $\alpha^{240}$ | 8 | 19 | [0, 1, 8, 19, 9, 16, 10, 38, 11, 40, 12, 30, 13, 40, 14, 32, 15, 24, 16, 6, 17, 8, 18, 2] |
61 | $\alpha^{77}$ | $\alpha^{241}$ | 8 | 19 | [0, 1, 8, 19, 9, 17, 10, 38, 11, 38, 12, 32, 13, 40, 14, 26, 15, 26, 16, 12, 17, 7] |
104 | $\alpha^{165}$ | $\alpha^{180}$ | 8 | 19 | [0, 1, 8, 19, 9, 16, 10, 38, 11, 40, 12, 30, 13, 40, 14, 32, 15, 24, 16, 6, 17, 8, 18, 2] |
100 | $\alpha^{164}$ | $\alpha^{178}$ | 8 | 19 | [0, 1, 8, 19, 9, 17, 10, 38, 11, 38, 12, 32, 13, 40, 14, 26, 15, 26, 16, 12, 17, 7] |
13 | $\alpha^{15}$ | $\alpha^{90}$ | 8 | 19 | [0, 1, 8, 19, 9, 16, 10, 38, 11, 40, 12, 30, 13, 40, 14, 32, 15, 24, 16, 6, 17, 8, 18, 2] |
101 | $\alpha^{164}$ | $\alpha^{179}$ | 8 | 20 | [0, 1, 8, 20, 9, 19, 10, 32, 11, 36, 12, 36, 13, 42, 14, 32, 15, 20, 16, 7, 17, 11] |
15 | $\alpha^{15}$ | $\alpha^{92}$ | 8 | 20 | [0, 1, 8, 20, 9, 15, 10, 39, 11, 36, 12, 28, 13, 50, 14, 30, 15, 20, 16, 7, 17, 7, 18, 3] |
98 | $\alpha^{163}$ | $\alpha^{178}$ | 8 | 20 | [0, 1, 8, 20, 9, 15, 10, 39, 11, 36, 12, 28, 13, 50, 14, 30, 15, 20, 16, 7, 17, 7, 18, 3] |
60 | $\alpha^{77}$ | $\alpha^{240}$ | 8 | 20 | [0, 1, 8, 20, 9, 15, 10, 39, 11, 36, 12, 28, 13, 50, 14, 30, 15, 20, 16, 7, 17, 7, 18, 3] |
14 | $\alpha^{15}$ | $\alpha^{91}$ | 8 | 20 | [0, 1, 8, 20, 9, 19, 10, 32, 11, 36, 12, 36, 13, 42, 14, 32, 15, 20, 16, 7, 17, 11] |
56 | $\alpha^{76}$ | $\alpha^{240}$ | 8 | 20 | [0, 1, 8, 20, 9, 19, 10, 32, 11, 36, 12, 36, 13, 42, 14, 32, 15, 20, 16, 7, 17, 11] |
As shown in our paper, the codes satifying two conditions are optimal:
Note that we use two leakage detection metrics SNR (signal-to-noise ratio) and MI (mutual information), and one leakage exploitation metric SR (success rate) to assess the side-channel resistance of IPM with different codes.
As a result of Tab. II, we conclude that the optimal codes for IPM are genetated by $\mathbf{H}=[[L_2, 1, 0], [L_3, 0, 1]]$ where $(L_2, L_3)\in\{(\alpha^{18}, \alpha^{183}), (\alpha^{72}, \alpha^{90}), (\alpha^{165}, \alpha^{237})\}$. Note that by exchanging $L_2$ and $L_3$, the codes are still optimal (we omit the equivalent codes to save spaces here).
All above optimal codes are equivalent and the generator matrix of the first one is: $$ \mathbf{H}_{optimal}=\left( \begin{matrix} \alpha^{18} & 1 & 0 \\ \alpha^{183} & 0 & 1 \end{matrix} \right) \in \mathbb{F}_{2^8}^{2\times 3} = \small\left( \begin{matrix} 1~~0~~1~~0~~0~~1~~1~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0 \\ 0~~1~~0~~1~~0~~0~~1~~1~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0 \\ 1~~0~~0~~1~~0~~0~~0~~1~~0~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0 \\ 1~~1~~1~~1~~0~~0~~0~~0~~0~~0~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0 \\ 0~~1~~1~~1~~1~~0~~0~~0~~0~~0~~0~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0 \\ 0~~0~~1~~1~~1~~1~~0~~0~~0~~0~~0~~0~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0 \\ 0~~0~~0~~1~~1~~1~~1~~0~~0~~0~~0~~0~~0~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0 \\ 0~~0~~0~~0~~1~~1~~1~~1~~0~~0~~0~~0~~0~~0~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0 \\ 1~~1~~1~~1~~1~~0~~1~~1~~0~~0~~0~~0~~0~~0~~0~~0~~1~~0~~0~~0~~0~~0~~0~~0 \\ 1~~1~~0~~0~~0~~1~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~1~~0~~0~~0~~0~~0~~0 \\ 1~~1~~0~~1~~1~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~1~~0~~0~~0~~0~~0 \\ 0~~1~~1~~0~~1~~1~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~1~~0~~0~~0~~0 \\ 1~~0~~0~~0~~1~~1~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~1~~0~~0~~0 \\ 0~~1~~0~~0~~0~~1~~1~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~1~~0~~0 \\ 1~~0~~0~~1~~1~~0~~1~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~1~~0 \\ 1~~1~~1~~1~~0~~1~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~1 \end{matrix} \right) \normalsize\in \mathbb{F}_2^{16\times 24} $$
The BKLC is the short of Best Known Linear Code. Note that the code $[24, 8, 8]$ is NOT unique.
The BKLC is defined as An [n, k] linear code $\mathcal{C}$ is said to be a best known linear [n, k] code (BKLC) if $\mathcal{C}$ has the highest minimum weight among all known [n, k] linear codes.See definition from Magma.
bklc_index = [-1]
cm_3 = sns.light_palette("red", as_cmap=True, reverse=True)
df_bklc = pd.DataFrame({'$L_2$': [' --'], '$L_3$': [' --'], '$d_{\mathcal{D}}^\perp$': d_all[-1], '$B_{d_{\mathcal{D}}^\perp}$':
B_all[-1], 'Weight Enumerators': wd[bklc_index]})
(df_bklc.style
.background_gradient(cmap=cm_3, subset=['$d_{\mathcal{D}}^\perp$', '$B_{d_{\mathcal{D}}^\perp}$'])
.set_caption('Tab. III A BKLC code for IPM with $d_{\mathcal{D}}^\perp=8$.')
.set_table_styles(styles))
$L_2$ | $L_3$ | $d_{\mathcal{D}}^\perp$ | $B_{d_{\mathcal{D}}^\perp}$ | Weight Enumerators | |
---|---|---|---|---|---|
0 | -- | -- | 8 | 130 | [0, 1, 8, 130, 12, 120, 16, 5] |
We can see that this BKLC code is worse than all linear codes with $d_{\mathcal{D}}^\perp=8$ in IPM, since the $B_{d_{\mathcal{D}}^\perp}$ in this BKLC code is much greater than in IPM codes. It is interesting to notice that the BKLC code $[24, 8, 8]$ cannot be generated by any $\mathbf{H}^\perp=[1, L_2, L_3]$ where $L_2, L_3 \in \mathbb{F}_{2^8}\backslash\{0\}$.
The generator matrix of the dual code of this BKLC is: $$ \mathbf{H}_{BKLC}^\perp = \small\left( \begin{matrix} 0~~1~~1~~0~~0~~1~~1~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0 \\ 1~~0~~1~~1~~1~~1~~1~~1~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0 \\ 1~~1~~0~~1~~0~~0~~1~~0~~0~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0 \\ 1~~1~~1~~0~~0~~1~~0~~1~~0~~0~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0 \\ 0~~1~~1~~1~~0~~0~~1~~1~~0~~0~~0~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0 \\ 0~~1~~0~~1~~1~~1~~1~~1~~0~~0~~0~~0~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0 \\ 0~~1~~0~~0~~1~~0~~0~~1~~0~~0~~0~~0~~0~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0 \\ 1~~1~~0~~0~~1~~1~~1~~0~~0~~0~~0~~0~~0~~0~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0 \\ 0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~1~~0~~0~~0~~0~~0~~0~~0 \\ 0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~1~~0~~0~~0~~0~~0~~0 \\ 0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~1~~0~~0~~0~~0~~0 \\ 0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~1~~0~~0~~0~~0 \\ 1~~1~~1~~0~~1~~0~~1~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~1~~0~~0~~0 \\ 1~~1~~1~~1~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~1~~0~~0 \\ 0~~1~~1~~1~~1~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~1~~0 \\ 1~~1~~0~~1~~0~~1~~0~~1~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~0~~1 \end{matrix} \right) \normalsize\in \mathbb{F}_2^{16\times 24} $$