<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Optimization based on S-Boxes Generation</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Alexandr Kuznetsov</string-name>
          <email>kuznetsov@karazin.ua</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yaroslav Derevianko</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nikolay Poluyanenko</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Oleksandr Bagmut</string-name>
          <email>oleksandr.bagmut@karazin.ua</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Various</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>S-boxes</string-name>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>JSC “Institute of Information Technologies</institution>
          ,”
          <addr-line>12 Bakulin str., Kharkiv, 61166</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>V. N. Karazin Kharkiv National University</institution>
          ,
          <addr-line>4 Svobody sq., Kharkiv, 61022</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
      </contrib-group>
      <fpage>120</fpage>
      <lpage>134</lpage>
      <abstract>
        <p>The generation of nonlinear substitutions (S-boxes) is an important task in the design of modern symmetric cryptoalgorithms. (nonlinearity, balance, delta-uniformity, correlation and algebraic immunity, etc.) characterize their resistance to linear, differential, algebraic and other cryptanalysis methods. This article explores a computational particle swarm optimization (PSO) method as applied to the problem of generating nonlinear substitutions. Having a set of possible solutions (particles) and moving these particles in the search space, the PSO tries to improve the possible solution in terms of some quality indicator. We use nonlinearity, balance, delta uniformity, algebraic immunity and linear redundancy as the main indicators, and randomly generated S-boxes are used as a set of particles. This article shows several PSO modifications for generating nonlinear substitutions. At first, we reproduce the previously known PSO modification for generating S-boxes and show its low efficiency. At second, we propose our own PSO implementation and show that this method can actually generate substitutions with high cryptographic properties. The experimental results allow us to establish the influence of the size of the population of particles and the number of iterations of the outer loop on the efficiency of the heuristic generation of nonlinear substitutions. In addition, we explore the similarity of the generated substitution tables with the AES cipher S-box. Nonlinear substitutions, s-boxes, particle swarm optimization, computational search.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>and other
properties characterize resistance of</p>
      <p>
        S-boxes to linear, differential, algebraic and other
cryptanalysis methods. Therefore, the problem of generating substitutions with the required properties
is an important and urgent scientific problem [
        <xref ref-type="bibr" rid="ref7 ref8 ref9">7–9</xref>
        ].
      </p>
      <p>
        Various methods are used to generate cryptographically strong substitutions, see for example
[
        <xref ref-type="bibr" rid="ref10 ref6">6,10,11</xref>
        ]. In one of the latest works [12], it was proposed to use the particle swarm method (PSO).
However, the results shown in this article are not reliable (see for example our comment [13]). However,
the idea of using PSO to generate S-boxes can be useful. The purposes of our article are researching of
the PSO for heuristic generation of nonlinear substitutions, experimental verification of the results, and
justification of some PSO parameters to form S-boxes with the required properties.
      </p>
      <p>2022 Copyright for this paper by its authors.</p>
      <p>Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0).</p>
    </sec>
    <sec id="sec-2">
      <title>2. Particle Swarm Optimization</title>
      <p>Particle swarm optimization - heuristic method of global optimization, which is implemented on the
basis of populations, which is proposed in [14]. PSO is based on "swarm" intelligence, which is a natural
behavior of birds, fishes, insects and others. Swarm particles either fly away or fly together in search of
food before they find a good place, where the food is located. While searching for food, there is always
one bird that feels and seeks food better than others, so such bird is more likely to find a place where
food can be found, which means that it will have better information about the source of food than others.
Since birds constantly share such "good" information in the search process, the flock will eventually
move to a "better" place where food is more likely to be found. In PSO, the movement of "birds" begins
from one location to another, equivalent to a flock, good information is equivalent to the most optimistic
solution, and the expected food is equivalent to the most optimistic solution for the entire operation of
the algorithm.</p>
      <p>This method helps to find the most optimistic solution due to the cooperation of each element of the
population, the “bird.” Quite complex optimization problems can be solved using PSO algorithm. The
advantages allow it to be applied to many areas of optimization alone and in combination with other
existing algorithms. The algorithm is used in such areas as neural network training, optimization of
certain functions, machine learning, signal processing, etc., [15–18].</p>
      <p>In the basic PSO algorithm, the population consists of «N» particles, and the location of each of the
particles corresponds to a potential solution in d -dimensional space. The position of each particle in
the swarm is influenced by both the most optimistic position during its movement (individual
experience, called personal best - pBest of the particle), and the position of the most optimal particle
in its vicinity (experience that is called the best of all - gBest ).</p>
      <p>Flock particles fly into search space due to their exploration and exploitation capabilities and use
pBest and gBest , to find the best solution in PSO. In addition, each particle is characterized by
velocity. The velocity and position of each particle are reviewed after each subsequent iteration of the
algorithm.</p>
      <p>The velocity and position of each particle are determined at each step as:
vk 1  vikd  c1r1( pBestikd  xikd )  c2r2 (gBestikd  xikd )
id
xk1  xikd  vikd1
id
(1)
(2)
where:
 vikd and xikd is velocity and position of the particle « i » at its « k » times and the d-dimension
quantity of its position;
 pBestikd is d -dimension quantity of the individual « i » element at its most optimist position;
</p>
      <p>
        gBestikd is d -dimension quantity of the most optimistic position of the whole «swarm»;
 parameters c1, c2 , r1, r2 are randomly generated within [
        <xref ref-type="bibr" rid="ref1">0,1</xref>
        ] .
      </p>
      <p>In abstract [12] proposed interpretation of PSO for the generation of highly nonlinear S-boxes that
implement bijective mappings S :{0,1}8  {0,1}8 . Although, the authors of this research made mistakes
in calculating the nonlinearity of S-boxes (in particular, see our commentary [13]), we reproduced their
proposed algorithm for computational search of nonlinear substitutions and made our own researches
of the efficiency of PSO.
2.1.</p>
    </sec>
    <sec id="sec-3">
      <title>PSO Implementation to Generate S-Boxes</title>
      <p>According to the description from [12] the generation of S-boxes occurs using the following
algorithm.</p>
      <p>1. Population initialization</p>
      <p>For S-box optimization problem, each individual 8  8 S-box is considered as the particle. The
Sbox population is generated randomly so that the S-Boxes remain bijective. Generation is repeated until
the N -sized population is filled.</p>
      <sec id="sec-3-1">
        <title>2. Calculation of nonlinearity</title>
        <p>Next, nonlinearity is calculated for each block. According to this nonlinearity, the population of
blocks is sorted (in descending order of nonlinearity).</p>
        <p>3. PSO vector initialization</p>
        <p>The velocity vector is filled with zeros and updated at each successful iteration. Each position vector
is initialized using the appropriate S-Box in the population. The velocity vector is updated by formula
(1), and the location vector is updated by formula (2). The vector of the most optimistic positions during
the iteration ( pBest ) is updated for each generated population if the nonlinearity values of the new
blocks are better than the previous ones. The most optimal of all is the particle with the highest
nonlinearity in the population.</p>
        <p>4. Initialization of PSO parameters</p>
        <p>PSO parameters, such as c1 , c2 , r1 and r2 are randomly selected using a Renyi map. During the
optimization phase of the algorithm, these parameters randomly change at each iteration. Another
parameter is the coefficient of inertia (inertial weight), which is given by the formula:
wcurIter  w1  (curIter  1)( mwa2хItwe1r )
(3)
where w1 and w2 is the initial and final value of the coefficient, respectively.</p>
      </sec>
      <sec id="sec-3-2">
        <title>5. Improvement and adjustment</title>
        <p>The velocity and location vectors are updated according to the laws in formulas (1) and (2)
respectively. The process of such improvement generates certain values that are repeated or negative.
To prevent this, the authors use certain processing methods, replacing repeated values with values that
are lacking to preserve the bijectivity. An algorithm for such improvements is not provided in [12].
6. The final step of the iteration</p>
        <p>Next, the nonlinearity value is also calculated for all newly generated blocks, and all S-Boxes,
including those already in the population, are sorted again in descending of nonlinearity. N best blocks
according to the nonlinearity remain in the population, all other blocks are discarding. Vectors pBest
and gBest are updated as above.</p>
        <p>The pseudocode of the algorithm presented in the article [12], is shown in Fig. 1.</p>
        <p>In [13] we showed that the calculation of the nonlinearity of S-Boxes in [12] was incorrect.
According to Fig. 1 nonlinearity is chosen as the main target of optimization. Therefore, the
effectiveness of the use of PSO to generate substitutions can’t be established by publication [12].</p>
        <p>In this article, we reproduced the algorithm shown in Fig. 1 and made some experimental researches
with correct calculation of nonlinearity. Unfortunately, we were unable to form a single S-Box with a
nonlinearity greater than 98, even after numerous experiments. This is a very poor result, which
indicates an unsuccessful PSO interpretation. But this does not mean that the PSO method cannot be
efficiency applied in another interpretation.
2.2.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>New PSO Implementation to Generate S-Boxes</title>
      <p>In this work, we propose a new implementation of PSO. The PSO method modified by us almost
completely repeats algorithm from [12]. The main difference is in the first iteration of the while loop
when forming the first block in the new population, as well as when filling the vectors of the most
optimal blocks. Additionally, we estimate other properties of S-Boxes (algebraic immunity, delta
uniformity, and linear redundancy).</p>
      <p>The essence of the modified algorithm is given below.
1. Population initialization</p>
      <p>As in the algorithm discussed earlier, each 8  8 S-box is considered as the particle. The S-box
population is generated randomly so that the S-Boxes remain bijective. Generation is repeated until the
N -sized population is filled.</p>
      <p>2. Calculation of nonlinearity</p>
      <p>
        Next, nonlinearity is calculated for each block. According to this nonlinearity, the population of
blocks is sorted (in descending order of nonlinearity).
__________________________________________________
Input arguments:
N ← number of blocks in the population
max_itr ← maximum number of iterations
xr ← initial value of Renyi chaotic map
c ← parameter of Renyi map
__________________________________________________
Generation of the initial population of S-boxes:
xr ← renyi_map(xr, c, 100)
population ← zeros(2 × N, 256) // 256 for 8 × 8 S-boxes
for i ← 1 to N
[sboxi, xr] ← gen_sbox(xr, c)
population[i] ← sboxi
end for
population[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] ← aes_sbox
__________________________________________________
Calculation of nonlinearity for each of the particles:
for i ← 1 to N do:
NL[i] ← nonlinearity(population[i])
end for
NL_sorted ← sort(NL) // sorting in descending order
gBest ← population[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
pBesti ← population[i]
Vel ← zeros(N, 256)
Setting the inertial weight w
__________________________________________________
The beginning of the improvement phase:
While (max_itr &gt; 0) do:
xr ← renyi_map(xr, c); c1 ← 2∗xr
xr ← renyi_map(xr, c); c2 ← 2∗xr
xr ← renyi_map(xr, c); r1 ← xr
xr ← renyi_map(xr, c); r2 ← xr
NL ← NL_sorted
for i ← 1 to N do:
for j = 1 to 256 do:
      </p>
      <p>Vel[i][j]
←</p>
      <p>ceil(w∗Vel[i][j] + c1∗r1∗(pBest[i][j] - population[i][j]) +
c2∗r2∗(gBest[j]-population[i][j]))
if (Vel[i][j] &lt; 0)</p>
      <p>Vel[i][j] ← (Vel[i][j] + 256)mod(256)</p>
      <sec id="sec-4-1">
        <title>3. PSO vector initialization</title>
        <p>The velocity vector is filled with zeros and updated at each successful iteration. Each position vector
is initialized using the appropriate S-Box in the population. The velocity vector is updated by formula
(1), and the location vector is updated by formula (2). The difference in our algorithm is that when
forming a new population, the first block of the new population is formed due to the interaction of the
first block of the initial population with itself and changing a small number of values. This gives an
almost zero velocity vector on the first iteration, which allows to gradually deteriorate on subsequent
iterations. In subsequent iterations, if after applying this method the nonlinearity of S-box is higher than
98, the block is further mixed randomly to improve other parameters such as linear redundancy, delta
uniformity and algebraic immunity.</p>
        <p>This is done in order to reach a compromise, so that there are no situations where one parameter is
very good and the others are bad. It is possible to ensure that all parameters are sufficient and satisfy
most conditions using this method.</p>
        <p>The vector of the most optimistic positions during the iteration ( pBest ) is updated for each
generated population if the nonlinearity values of the new blocks are better than the previous ones.</p>
        <p>The most optimal particle in our method is also updated at each iteration and equated to the best
block in the vector of the most optimistic positions pBest .</p>
      </sec>
      <sec id="sec-4-2">
        <title>4. Initialization of PSO parameters</title>
        <p>PSO parameters such as c1 , c2 , r1 and r2 are randomly selected. During the optimization phase of
the algorithm, these parameters randomly change at each iteration. Inertial weight is also (3).
5. Improvement and adjustment</p>
        <p>The following algorithm was developed to preserve the objectivity of S-Boxes (Fig. 2). After
forming a block, each of its elements is checked for coincidence with another element in this block. If
when checking a certain element such an element already exists in this block, then the variable contains
becomes 1, and the value is updated by adding a random value to it, and taking it by modulo 256. This
is repeated as long as only unique values from 0 to 255 remain in the S-Box. The pseudocode of the
algorithm is given below.</p>
        <p>__________________________________________________
for (int i = 0; i &lt; N; ++i)
for (int j = 0; j &lt; size;)</p>
        <p>Updating values by (1) and (2)
int contains;
if (contains == 0)</p>
        <p>tempSbox[j] = X;
end if
else</p>
        <p>tempSbox[j] = myModulusDec((tempSbox[j] + rand()), 256);
end else;
contains = 0;
for (int k = 0; k &lt; j; ++k)
if (tempSbox[k] == tempSbox[j])
contains = 1;
break;
end if
end for
if (!contains)</p>
        <p>j++;
end if
end for
......
end for
__________________________________________________
Figure 2: Algorithm for preserving the bijectivity of population particles</p>
      </sec>
      <sec id="sec-4-3">
        <title>6. The final step of the iteration</title>
        <p>Next, the nonlinearity value is also calculated for all newly generated blocks, and all S-Boxes,
including those already in the population, are sorted again in descending of nonlinearity. N best blocks
according to the nonlinearity remain in the population, all other blocks are discarding. Vectors pBest
and gBest are updated as above.</p>
        <p>The pseudocode of the modified algorithm is shown in Fig. 3.</p>
        <p>Our proposed new modification of PSO allows to form S-boxes with nonlinearity 104, delta
uniformity 8, linear redundancy 0 and algebraic immunity 3 in a relatively short time. As an example,
we give one of the following S-boxes (8-bit output vectors are given in decimal format):
{99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 180,
202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114,
192, 183, 253, 147, 38, 54, 63, 29, 146, 52, 165, 229, 241, 113, 216, 49,
88, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117,
9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83,
209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 51, 207, 208,
239, 170, 251, 67, 77, 166, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81,
163, 64, 143, 221, 28, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205,
12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129,
79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58,
10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55,
109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37,
46, 187, 232, 72, 198, 85, 247, 116, 31, 191, 189, 139, 138, 112, 62, 181,
102, 204, 3, 75, 17, 97, 53, 87, 185, 134, 193, 148, 158, 225, 248, 152,
223, 105, 217, 142, 176, 155, 30, 135, 233, 206, 40, 45, 22, 140, 161, 137,
13, 153, 230, 66, 104, 65, 246, 15, 21, 84, 157, 14, 118}</p>
        <p>The next step in our research was examination of the effect of particle population size and the
number of iterations of the external cycle on the efficiency of heuristic generation of nonlinear
substitutions.</p>
        <p>__________________________________________________
Input arguments:
N ← number of blocks in the population
max_itr ← maximum number of iterations
mode ← mode (0 – algorithm from [12], 1 – modified algorithm)
__________________________________________________
Generation of the initial population of S-boxes:
srand(time(NULL));
int flag = rand()%size;
population ← zeros(2 × N, 256) // 256 for 8 × 8 S-boxes
for i ← 1 to N
[sboxi, xr] ← gen_sbox(i+flag)</p>
        <p>
          Generation occurs using rand () and Fisher-Yates mixing
population[i] ← sboxi
end for
population[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] ← aes_sbox
__________________________________________________
Calculation of nonlinearity for each of the particles:
for i ← 1 to N do:
        </p>
        <p>
          NL[i] ← nonlinearity(population[i])
end for
NL_sorted ← sort(NL) // sorting in descending order
gBest ← population[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]; pBesti ← population[i]; Vel ← zeros(N, 256);
Setting the inertial weight w
__________________________________________________
The beginning of the improvement phase:
While (max_itr &gt; 0) do:
        </p>
        <p>
          Using (3) for w
c1 ← 2∗rand() [
          <xref ref-type="bibr" rid="ref1">0,1</xref>
          ]; c2 ← 2∗rand() [
          <xref ref-type="bibr" rid="ref1">0,1</xref>
          ]; r1 ← rand() [
          <xref ref-type="bibr" rid="ref1">0,1</xref>
          ]; r2 ← rand() [
          <xref ref-type="bibr" rid="ref1">0,1</xref>
          ];
NL ← NL_sorted
for i ← 1 to N do:
for j = 1 to 256 do:
if (mode == 1)
        </p>
        <p>Vel[i][j] ← ceil(w∗Vel[i][j] + c1∗r1∗(gBest[i][j] - population[i][j]) +
c2∗r2∗(gBest[j]-population[i][j]))
end if
if (mode == 0)</p>
        <p>Vel[i][j] ← ceil(w∗Vel[i][j] + c1∗r1∗(pBest[i][j] - population[i][j]) +
c2∗r2∗(gBest[j]-population[i][j]))
end if
if (Vel[i][j] &lt; 0)</p>
        <p>Vel[i][j] ← (Vel[i][j] + 256)mod(256)</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>3. Results of Experimental Research and Discussion</title>
      <p>A new modification of PSO was examined in detail during the experiments. The results of test runs
to search for blocks with the required parameters are given in Tables 1-13.</p>
      <p>Nd, %
–
–
–
–
–
–
–
–
0.8828
–
–
–
0.8828</p>
      <p>–
0.8710
–
–
–
–
0.8789
Nd, %
–
–
–
–
–
–
–
0.8671
–
–
–
–
–
–
–
–
–
–
–
0.8750</p>
      <p>M
not found
not found
not found
not found</p>
      <p>16
not found
not found</p>
      <p>45
not found
not found
not found
not found
not found
not found
not found
not found
not found
60
12
122</p>
      <p>Nd, %
–
–
–
–
0.8632
–
–
0.8710
–
–
–
–
–
–
–
–
–
0.8750
0.8710
0.8789
Nd, %
–
–
–
0.8593
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–</p>
      <p>Nd, %
–
–
–
–
–
–
–
0.8828
–
–
–
–
–
–
–
–
0.8750
–
–
0.8789
Nd, %</p>
      <p>–
0.8710
–
–
–
–
–
0.8828</p>
      <p>–
0.8789
–
–
–
–
–
–
–
–
–
0.8789
The Tables 1-13 indicate:
 N is number of blocks in the population.
 MaxIter is specified number of iterations.
 M is number of iterations to find the required block (or not found).
 T is work time.
 Nd is the number of positions differs from AES.
 Nd, % is coefficient of similarity (in percent) with AES S-Box.</p>
      <p>Below is a summary of the information presented in the form of a histogram (see Fig. 4).</p>
      <p>In Fig. 4 on the x -axis indicates the number of iterations, on the y -axis is the number of blocks in
the population, on z - the number of blocks (with the required parameters) found (as required set:
nonlinearity = 104, algebraic immunity = 3, linear redundancy = 0). As you can see, the larger N and
MaxIter , the more blocks found.</p>
      <p>
        Additionally, the last two columns in Tables 1-13 should be commented on. These columns contain
parameters of difference (absolute and relative) from the values of the algebraic S-box of the AES
cipher [19,20]. This S-box is used as the initial filling of one of the particles of the swarm (see the line
«population[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] ← aes_sbox» in Fig. 1, 3), therefore is a certain initial value when generating
substitutions. The corresponding differences characterize the "distance" of the found S-box from this
initial value.
      </p>
      <p>As you can see, the generated substitution tables are very similar to the AES cipher S-box (almost
90% similarity). S-boxes generated by the algorithm from [21] are also close by this property.
Therefore, it is promising to compare these two generation algorithms for the efficiency of
computational search.</p>
    </sec>
    <sec id="sec-6">
      <title>4. Acknowledgements</title>
      <p>This work was supported in part by the National Research Foundation of Ukraine under Grant
2020.01/0351.</p>
    </sec>
    <sec id="sec-7">
      <title>5. References</title>
      <p>[11]L.D. Burnett, Heuristic Optimization of Boolean Functions and Substitution Boxes for
Cryptography, phd, Queensland University of Technology, 2005. https://eprints.qut.edu.au/16023/
(accessed May 19, 2021).
[12]M. Ahmad, I.A. Khaja, A. Baz, H. Alhakami, W. Alhakami, Particle Swarm Optimization Based
Highly Nonlinear Substitution-Boxes Generation for Security Applications, IEEE Access. 8 (2020)
116132–116147. https://doi.org/10.1109/ACCESS.2020.3004449.
[13]A. Kuznetsov, K. Kuznetsova, Comment on “Particle Swarm Optimization Based Highly
Nonlinear Substitution-Boxes Generation for Security Applications,” in: 2021 11th IEEE
International Conference on Intelligent Data Acquisition and Advanced Computing Systems:
Technology and Applications (IDAACS), Cracow, Poland, September 22-25.
http://www.idaacs.net (accessed October 15, 2021).
[14]J. Kennedy, R. Eberhart, Particle swarm optimization, in: Proceedings of ICNN’95 - International
Conference on Neural Networks, 1995: pp. 1942–1948 vol.4.
https://doi.org/10.1109/ICNN.1995.488968.
[15]M.E.H. Pedersen, A.J. Chipperfield, Simplifying Particle Swarm Optimization, Applied Soft</p>
      <p>Computing. 10 (2010) 618–628. https://doi.org/10.1016/j.asoc.2009.08.029.
[16]Y. Xiaojing, J. Qingju, L. Xinke, Center Particle Swarm Optimization Algorithm, in: 2019 IEEE
3rd Information Technology, Networking, Electronic and Automation Control Conference
(ITNEC), 2019: pp. 2084–2087. https://doi.org/10.1109/ITNEC.2019.8729510.
[17]Z. Yimin, S. Guojun, Y. Xiaoguang, Cloud service selection optimization method based on parallel
discrete particle swarm optimization, in: 2018 Chinese Control And Decision Conference (CCDC),
2018: pp. 2103–2107. https://doi.org/10.1109/CCDC.2018.8407473.
[18]M.E.H. Pedersen, Tuning &amp;amp; simplifying heuristical optimization, phd, University of</p>
      <p>Southampton, 2010. https://eprints.soton.ac.uk/342792/ (accessed August 5, 2021).
[19]J. Daemen, V. Rijmen, Rijndael/AES, in: H.C.A. van Tilborg (Ed.), Encyclopedia of Cryptography
and Security, Springer US, Boston, MA, 2005: pp. 520–524.
https://doi.org/10.1007/0-387-234837_358.
[20]J. Daemen, V. Rijmen, Specification of Rijndael, in: J. Daemen, V. Rijmen (Eds.), The Design of
Rijndael: The Advanced Encryption Standard (AES), Springer, Berlin, Heidelberg, 2020: pp. 31–
51. https://doi.org/10.1007/978-3-662-60769-5_3.
[21]O. Kazymyrov, V. Kazymyrova, R. Oliynykov, A Method For Generation Of High-Nonlinear
SBoxes Based On Gradient Descent, 2013. https://eprint.iacr.org/2013/578 (accessed August 16,
2020).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>B.</given-names>
            <surname>Schneier</surname>
          </string-name>
          , Applied cryptography : protocols, algorithms, and source code in C, New York : Wiley,
          <year>1996</year>
          . http://archive.org/details/appliedcryptogra00schn_328 (
          <issue>accessed July 25</issue>
          ,
          <year>2020</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>A.J.</given-names>
            <surname>Menezes</surname>
          </string-name>
          , P.C. van
          <string-name>
            <surname>Oorschot</surname>
            ,
            <given-names>S.A.</given-names>
          </string-name>
          <string-name>
            <surname>Vanstone</surname>
          </string-name>
          , P.C. van
          <string-name>
            <surname>Oorschot</surname>
            ,
            <given-names>S.A.</given-names>
          </string-name>
          <string-name>
            <surname>Vanstone</surname>
          </string-name>
          , Handbook of Applied Cryptography, CRC Press,
          <year>2018</year>
          . https://doi.org/10.1201/9780429466335.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>S.</given-names>
            <surname>Rubinstein-Salzedo</surname>
          </string-name>
          , Cryptography, Springer International Publishing, Cham,
          <year>2018</year>
          . https://doi.org/10.1007/978-3-
          <fpage>319</fpage>
          -94818-8.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>K.</given-names>
            <surname>Nyberg</surname>
          </string-name>
          ,
          <article-title>Perfect nonlinear S-boxes</article-title>
          , in: D.W. Davies (Ed.),
          <source>Advances in Cryptology - EUROCRYPT '91</source>
          , Springer, Berlin, Heidelberg,
          <year>1991</year>
          : pp.
          <fpage>378</fpage>
          -
          <lpage>386</lpage>
          . https://doi.org/10.1007/3- 540-46416-6_
          <fpage>32</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>W.</given-names>
            <surname>Millan</surname>
          </string-name>
          ,
          <article-title>How to improve the nonlinearity of bijective S-boxes</article-title>
          , in: C.
          <string-name>
            <surname>Boyd</surname>
          </string-name>
          , E. Dawson (Eds.),
          <source>Information Security and Privacy</source>
          , Springer, Berlin, Heidelberg,
          <year>1998</year>
          : pp.
          <fpage>181</fpage>
          -
          <lpage>192</lpage>
          . https://doi.org/10.1007/BFb0053732.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>J.</given-names>
            <surname>Álvarez-Cubero</surname>
          </string-name>
          ,
          <article-title>Vector Boolean Functions: applications in symmetric cryptography</article-title>
          ,
          <year>2015</year>
          . https://doi.org/10.13140/RG.2.2.12540.23685.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>D.</given-names>
            <surname>Souravlias</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.E.</given-names>
            <surname>Parsopoulos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.C.</given-names>
            <surname>Meletiou</surname>
          </string-name>
          ,
          <article-title>Designing bijective S-boxes using Algorithm Portfolios with limited time budgets</article-title>
          , Applied Soft Computing.
          <volume>59</volume>
          (
          <year>2017</year>
          )
          <fpage>475</fpage>
          -
          <lpage>486</lpage>
          . https://doi.org/10.1016/j.asoc.
          <year>2017</year>
          .
          <volume>05</volume>
          .052.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>J. McLaughlin</surname>
          </string-name>
          ,
          <article-title>Applications of search techniques to cryptanalysis and the construction of cipher components, phd</article-title>
          , University of York,
          <year>2012</year>
          . http://etheses.whiterose.ac.uk/3674/ (
          <issue>accessed August 16</issue>
          ,
          <year>2020</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>C.</given-names>
            <surname>Carlet</surname>
          </string-name>
          ,
          <article-title>Vectorial Boolean functions for cryptography, Boolean Models and</article-title>
          Methods in Mathematics, Computer Science, and Engineering. (
          <year>2006</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A.J.</given-names>
            <surname>Clark</surname>
          </string-name>
          ,
          <article-title>Optimisation heuristics for cryptology, phd</article-title>
          , Queensland University of Technology,
          <year>1998</year>
          . https://eprints.qut.edu.au/15777/ (accessed May 19,
          <year>2021</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>