<!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>An extension of the class of Boolean functions used in symmetric cipher algorithms</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Svetlana Korabel'shchikova</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>F(x, y)=x⊕ y. This function has the following property:</institution>
          <addr-line>F(F(x, y), y) = x</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Northern (Arctic) Federal University named after M.V. Lomonosov Arkhangelsk</institution>
          ,
          <country country="RU">Russia</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2020</year>
      </pub-date>
      <fpage>106</fpage>
      <lpage>109</lpage>
      <abstract>
        <p>-One of the standard cryptographic transformations is the addition modulo two of an open binary text with a key binary sequence. In this paper, we have obtained a description of all Boolean functions from n arguments that are suitable for use in cryptographic transformations instead of the modulo-two addition function (we will call them component-by-component Boolean functions). An example of their use in the cryptographic conversion algorithm GOST R 34.12-2015 is also given. The article proposes an algorithm for generating component-bycomponent Boolean functions from n variables for different values of n and k, where k is the number of the variable whose value the function returns. For the case n=3 and k=1 or k=2, all Boolean functions that replace the addition function modulo 2 are represented. The paper proposes an encryption method based on component-by-component Boolean functions and a pseudo-random sequence generator of elements from the GF(2n-1) field. Using Boolean functions that return the value of one of the arguments when repeated, expands the variety of intermediate variants of round transformations, gives a new variable encryption method, ultimately significantly increasing the cryptographic strength of the cipher.</p>
      </abstract>
      <kwd-group>
        <kwd>boolean functions</kwd>
        <kwd>encryption</kwd>
        <kwd>symmetric cipher</kwd>
        <kwd>GOST R 34</kwd>
        <kwd>12-2015</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
    </sec>
    <sec id="sec-2">
      <title>To date, many works on cryptography have been devoted to</title>
    </sec>
    <sec id="sec-3">
      <title>Boolean functions, the study of certain cryptographic</title>
      <p>properties of Boolean functions, as well as the possibilities
of their use in order to protect information. These issues are
discussed both in scientific articles and in a number of
textbooks for Universities, for example, [1, 2]. For the most
complete overview of the cryptographic properties of</p>
    </sec>
    <sec id="sec-4">
      <title>Boolean functions and available results see [3]. This article</title>
      <p>is a continuation of work [4], in which the authors proposed</p>
    </sec>
    <sec id="sec-5">
      <title>Boolean functions of three arguments that replace the addition operation modulo 2. In [5], the author has previously considered the issues of information security using linear encoding.</title>
    </sec>
    <sec id="sec-6">
      <title>One of the standard cryptographic transformations used in</title>
      <p>various symmetric encryption algorithms is bitwise addition
modulo two of a plaintext represented in binary form with a
key binary sequence. For example, GOST R 34.12-2015 [6]
is a symmetric cipher in which the beginning of the
transformation sequence is the transformation X[k]:</p>
      <p>
        X[k](a) = k ⊕ a, (
        <xref ref-type="bibr" rid="ref1">1</xref>
        )
where k is the round key, a is the plaintext, k, a ∈ V128.
      </p>
    </sec>
    <sec id="sec-7">
      <title>The decryption method consists in the repeated addition modulo 2 of the ciphertext with the same key k:</title>
      <p>
        D X[k](a) = (k ⊕ a) ⊕ k = a. (
        <xref ref-type="bibr" rid="ref2">2</xref>
        )
We use the same Boolean function to encrypt and decrypt
information:
      </p>
      <p>
        (
        <xref ref-type="bibr" rid="ref3">3</xref>
        )
(
        <xref ref-type="bibr" rid="ref4">4</xref>
        )
k1
k2
k9
k10
      </p>
    </sec>
    <sec id="sec-8">
      <title>Permutations S(а) and L(а)</title>
    </sec>
    <sec id="sec-9">
      <title>Permutations S(а) and L(а)</title>
      <p>.
.
.</p>
    </sec>
    <sec id="sec-10">
      <title>Permutations</title>
      <p>S(а) and L(а)
128-bit
open data
block
D(a)</p>
      <p>Nine
rounds of
cryptogra</p>
      <p>phic
transforma
tions
128-bit
encrypted
text block
cipEh(ear)text</p>
      <p>F</p>
    </sec>
    <sec id="sec-11">
      <title>Permutations S(а) and L(а)</title>
    </sec>
    <sec id="sec-12">
      <title>Permutations S(а) and L(а)</title>
    </sec>
    <sec id="sec-13">
      <title>Permutations S(а) and L(а)</title>
      <p>k1
.
.
.
kn
k2
.
.</p>
      <p>.
kn+1
k9
.
.</p>
      <p>.
kn+
8
k10
.
.
.</p>
      <p>kn+9
F
.
.
.</p>
      <p>F
F
Fig. 1. Modification of the encryption algorithm from GOST R
34.122015 using component-wise functions.</p>
      <p>
        Earlier in [4], we proposed 10 Boolean functions of three
variables to replace addition modulo 2. We introduced the
term component-wise functions for them. In general case, a
Boolean function of n variables, which returns the value of
the first argument, must satisfy the condition:
 ( ( 1,  2, … ,   ),  2, … ,   ) =  1. (
        <xref ref-type="bibr" rid="ref5">5</xref>
        )
The figure 1 shows the possible location of the
component functions Fj, which depend on n+ 1 arguments,
in the process of encrypting a 128-bit block of information.
We presented two algorithms: an algorithm from GOST R
34.12-2015 standard (left) and a modification proposed by
the authors (right).
      </p>
      <p>Modern studies of the GOST R 34.12-2015 cipher are
presented in [7- 9] and others. They are mainly devoted to
the study of the cryptographic strength of this encryption
standard, as well as various options for its software
implementation. This article describes all Boolean functions
of n arguments that are suitable for use in symmetric
cryptographic transformations instead of the modulo two
addition function. We proposed an algorithm for their
generation, an encryption method based on component-wise
Boolean functions and a generator of a pseudo-random
sequence of elements of the field GF(2n-1).</p>
    </sec>
    <sec id="sec-14">
      <title>II. THE GENERATION ALGORITHM AND PROPERTIES OF</title>
    </sec>
    <sec id="sec-15">
      <title>COMPONENT-WISE FUNCTIONS</title>
    </sec>
    <sec id="sec-16">
      <title>Condition (5) means that the system of equations:</title>
      <p>
        F(F(0, x2, … , xn), x2, … , xn) = 0
{ , (
        <xref ref-type="bibr" rid="ref6">6</xref>
        )
F(F(1, x2, … , xn), x2, … , xn) = 1
whence it follows that  (0,  2, … ,   ) = 0 if and only if
 (1,  2, … ,   )=1 and vice versa,  (0,  2, … ,   )=1 if and
only if  (1,  2, … ,   ) =0. We will represent the Boolean
function F by the vector of values  ̃ =(0,1,…, 2 −1 ),
written in the order of correspondence with the ordered sets
of variable values from zeros to ones. Then the conditions
obtained mean that if the vector of values of the
componentwise Boolean function is divided into two parts, then the
second part will be inverse to the first. Therefore, the
following statement is true.
      </p>
    </sec>
    <sec id="sec-17">
      <title>Theorem 1. The number of Boolean functions of n</title>
      <p>
        variables satisfying condition (
        <xref ref-type="bibr" rid="ref5">5</xref>
        ) is 22 −1 . A Boolean
function satisfies condition (
        <xref ref-type="bibr" rid="ref5">5</xref>
        ) if and only if the second half
of its value vector is inverse to the first.
      </p>
    </sec>
    <sec id="sec-18">
      <title>Let us prove the first statement. We can define a</title>
    </sec>
    <sec id="sec-19">
      <title>Boolean function of n variables by its vector of values of</title>
      <p>length 2n. Since the second half of the value vector
completely depends on the first (inverse to the first), you
can set it by specifying the first half of the value vector in an
arbitrary way. It has a length of 2n- 1, and the number of
binary vectors of this length is 22 −1.</p>
      <p>Let us prove the second statement of the theorem. The
values of  (0,  2, … ,   ) are in the first half of the vector  ̃,
and in the same order in the second half of the vector  ̃ ̃ are
the values of  (1,  2, … ,   ). From the conditions obtained
above, it follows that  (0,  2, … ,   ) = ̅̅(̅̅1̅,̅̅̅̅,̅̅…̅̅,̅̅̅̅̅), that
2
is, the second half of the vector  ̃ is inverse to the first.</p>
    </sec>
    <sec id="sec-20">
      <title>The theorem is proved.</title>
      <p>Example 1. For n=2 we have 222−1=4 Boolean functions
that return the first argument. We list their value vectors.</p>
    </sec>
    <sec id="sec-21">
      <title>The first half of the vector of values is set arbitrarily; the</title>
      <p>second is completed inversely with the first: 0011, 0110,
1001, 1100.</p>
      <p>We got the following 4 functions: F(x, y)= x, F(x, y)=
x+y, F(x, y)= xy and F(x, y)=  ̅.</p>
      <p>Example 2. For n=3 we have 223−1 =16 Boolean
functions that return the first argument. They have value
vectors: 00001111, 00011110, 00101101, 00111100,
01001011, 01011010, 01101001, 01111000, 10000111,
10010110, 10100101, 10110100, 11000011, 11010010,
11100001 and 11110000.</p>
    </sec>
    <sec id="sec-22">
      <title>Taking into account the requirements for cryptographic</title>
      <p>functions, we come to conclusions from examples 1 and 2.</p>
    </sec>
    <sec id="sec-23">
      <title>Note that the first and the last functions are the negation of</title>
      <p>each other. The second and penultimate functions are related
in a similar way, and so on. Thus, if we are going to use
several component-wise functions in the encryption
algorithm, we will select them only one from each pair.</p>
      <p>
        It is also obvious that some of the functions obtained
contain dummy variables, which is unacceptable for
cryptographic functions. Applying the algorithm for
determining the fictitiousness of the variables x2, ..., xn to the
selected functions, we obtain all Boolean functions that
satisfy condition (
        <xref ref-type="bibr" rid="ref5">5</xref>
        ) and substantially depend on all
variables.
      </p>
    </sec>
    <sec id="sec-24">
      <title>Definition 1. A component-wise (n, k) function, where</title>
      <p>1 k n, is a Boolean function  ( 1,  2, … ,   ), that does
not contain fictitious variables and returns the k-th argument
when it is reused, i.e., satisfying the condition:</p>
      <p>
        F(x1, x2, … , xk−1, F(x1, x2, … , xn), xk+1, … , xn) =
= xk (
        <xref ref-type="bibr" rid="ref7">7</xref>
        )
      </p>
    </sec>
    <sec id="sec-25">
      <title>We formulate an algorithm for generating all</title>
      <p>component-wise functions  ( 1,  2, … ,   ) , that
substantially depend on n variables and return the variable xk
when reused. The input of the algorithm: n is the number of
variables, k is the number of the variable whose value the
function returns.</p>
    </sec>
    <sec id="sec-26">
      <title>The generation algorithm</title>
    </sec>
    <sec id="sec-27">
      <title>Step 1. Enter n, k.</title>
    </sec>
    <sec id="sec-28">
      <title>Step 2. Calculate 2n-1 and generate all possible binary vectors of length 2n-1.</title>
    </sec>
    <sec id="sec-29">
      <title>Step 3. (Checking for fictitiousness of all variables). For verification, we use the algorithm from [10]. We delete all vectors that did not pass verification.</title>
    </sec>
    <sec id="sec-30">
      <title>Step 4. (Adding inverted parts) Run for all vectors remaining after step 3.</title>
    </sec>
    <sec id="sec-31">
      <title>Divide the vector into 2k-1 parts and add the inverse one</title>
      <p>after each part.</p>
    </sec>
    <sec id="sec-32">
      <title>Include all received vectors in the response.</title>
    </sec>
    <sec id="sec-33">
      <title>In the proposed algorithm, we check for fictitiousness of variables only half of the value vector. If the check was successful, then all the variables will be significant for the full value vector generated in step 4.</title>
    </sec>
    <sec id="sec-34">
      <title>Example 3. Here is an example of how the algorithm</title>
      <p>works for n=3, k=2.</p>
      <p>23-1=4, so we generate all binary vectors of length 4:
0000, 0001, 0010, 0011, ..., 1111.</p>
    </sec>
    <sec id="sec-35">
      <title>After step 3, only 10 vectors that have passed verification will remain out of the 16 vectors: 0001,0010,0100,0110, 0111, 1000, 1001, 1011, 1101, 1110.</title>
    </sec>
    <sec id="sec-36">
      <title>Performing step 4, divide each vector into 2 parts, and add an inversion to each part. We get the following result:</title>
      <p>Let us show that we actually got functions that return the
second component. Take, for example, F1(x1, x2, x3),
 ̃1=(00110110). We show that for arbitrary values x1 and x3
and for x2=a, the function F1 returns the value a.</p>
      <p>
        If we take n=3 and k=1 in the algorithm, the first steps
of the algorithm will be the same as in example 3. In step 4,
we do not split the remaining 10 vectors, since 2k-1=20=1.
Add the inverse part to them and get the vectors of the
values of (
        <xref ref-type="bibr" rid="ref1 ref3">3,1</xref>
        ) functions from example 2, with the exception
of six functions containing fictional variables.
( 1,  3)
00
01
10
11
( 1,  3)
      </p>
      <p>All component-wise (n, k) functions are balanced, that is,
they take the values 0 and 1 equally often. However, they
have a different probability of replacing or saving the
plaintext character. So, the function from example 3 with
the value vector  ̃1 =(00110110) changes the value of the
plaintext a only in 2 cases out of 8, that is, it has a 25% the
probability of replacing the plaintext.</p>
      <p>The best characteristics (50% to 50%) of transition
probabilities are those Boolean functions that correspond to
the balanced vectors that remain after step 3 of the above
algorithm.</p>
      <p>
        Example 4. When n=4 of the 256 vectors generated in
step 2, only 220 are checked for the absence of fictive
variables. Of these, 58 vectors are balanced. At n=4, it is
balanced and passes the check for the absence of fictive
variables, for example, the vector 11010100. This means
that (
        <xref ref-type="bibr" rid="ref1 ref4">4,1</xref>
        ) a component-wise function with the value vector
1101010000101011 has a 50% to 50% transition
probability. The same probability of transitions have (
        <xref ref-type="bibr" rid="ref2 ref4">4,2</xref>
        )
component function with the value vector
1101001001001011, (
        <xref ref-type="bibr" rid="ref3 ref4">4,3</xref>
        ) component function with the
value vector 1100011001100011, (
        <xref ref-type="bibr" rid="ref4 ref4">4,4</xref>
        ) component function
with the value vector 1010011001100101.
      </p>
      <p>Let r be a non-negative number less than  . A Boolean
function  from n variables is called r-stable if any of its
subfunctions obtained by fixing at most r variables are
balanced.</p>
      <p>Theorem 2. For any component-wise (n,k) function
 ( 1,  2, … ,   ) the following conditions are equivalent:
 ( 1,  2, … ,   ) has transition probabilities 50%;
 ( 1,  2, … ,   −1, 0,   +1, … ,   ) is balanced;
 ( 1,  2, … ,   ) is 1-stable.</p>
      <p>
        We prove 12. The length of the vector of values of the
function  ( 1,  2, … ,   −1, 0,   +1, … ,   ) is 2 −1 . Let the
vector of values of the function
 ( 1,  2, … ,   −1, 0,   +1, … ,   ) have t units. It is necessary
to prove that  = 2 −2 , i.e., that the number of units is
exactly half the length of the vector. Since (
        <xref ref-type="bibr" rid="ref6">6</xref>
        ) holds, the
vector of values of the function
 ( 1,  2, … ,   −1, 1,   +1, … ,   ) has t zeros. Then the total
number of substitutions is 2t. By condition, the probability
of substitutions is 50%, that is 2 = 2 −1, whence  = 2 −2.
We prove 23. Note that it is the vector of values of the
function  ( 1,  2, … ,   −1, 0,   +1, … ,   ) that we obtain at
step 3 of the algorithm proposed above. Since, by condition,
it is balanced, the inverse vector
 ( 1,  2, … ,   −1, 1,   +1, … ,   ) will also be balanced.
      </p>
      <p>Now we consider the function
 (0,  2, … ,   −1,   ,   +1, … ,   ). It can be divided into two
subfunctions:  (0,  2, … ,   −1, 0,   +1, … ,   ) and
 (0,  2, … ,   −1, 1,   +1, … ,   ) , and the second will be
inverse to the first. Therefore, the combined vector
 (0,  2, … ,   −1,   ,   +1, … ,   ) has an equal number of
zeros and ones. It is proved in a similar way that the vector
of values of the function  (1,  2, … ,   −1,   ,   +1, … ,   ) is
balanced. For the same reason, the vectors of subfunction
values are balanced, which are obtained by fixing one of the
variables  2, … ,   −1,   +1, … ,   . Therefore,
 ( 1,  2, … ,   ) is 1-stable.</p>
      <p>We prove 31. It follows from the condition that the
function  ( 1,  2, … ,   −1, 0,   +1, … ,   ) is balanced, that
is, takes 2 −2 times the value 1 and 2 −2 times the value 0.
In addition, the function  ( 1,  2, … ,   −1, 1,   +1, … ,   ) is
balanced, that is, takes 2 −2 times the value 1 and 2 −2
times the value 0. Then the number of substitutions is 2 −1,
which means the probability of transitions is 50%.
The theorem is proved.</p>
    </sec>
    <sec id="sec-37">
      <title>III. ENCRYPTION OPTIONS BASED ON EXPLODED BOOLEAN</title>
      <p>FUNCTIONS</p>
      <p>
        One of the encryption options using (
        <xref ref-type="bibr" rid="ref1 ref3">3, 1</xref>
        )
componentwise Boolean functions was proposed by us in [4], and is
shown schematically in Figure 1. However, to use
component-wise (n, k) functions for encryption, it is
necessary to have or generate n –1 key binary sequence,
which is not always convenient. Instead, one
pseudorandom sequence of elements of the field GF (2n-1) can be
generated. To do this, you can use, for example, a PSP
generator based on linear registers of shift registers (LFSR).
      </p>
      <p>Let  ( 1,  2, … ,   ) – be a component-wise (n,1)
function, a –be binary plaintext, K be the key SRP of the
elements of the field GF(2n-1). Then the encryption of the
text a is performed elementwise according to the formula:</p>
      <p>
        E(a)=  ( ,  ). (
        <xref ref-type="bibr" rid="ref8">8</xref>
        )
      </p>
      <p>To decrypt, we use the same function  ( 1,  2, … ,   )
and the key sequence K:</p>
      <p>
        D(E(a))=  (  ( ,  ),  )=a. (
        <xref ref-type="bibr" rid="ref9">9</xref>
        )
      </p>
      <p>The organization of calculations largely depends on the
representation of the elements of the field GF (2n- 1),
therefore, we will consider this question in more detail.
Operations on elements of a finite field GF (2m) are easily
performed when they form an index table, where
mdimensional binary vectors are associated with the powers
of a primitive element. Such a representation is also
convenient when dividing field elements into circular
classes, used, for example, to find primitive polynomials or
in algorithms for obtaining the number of noise-resistant
codes [11].</p>
      <p>
        Consider the algorithm for constructing the index table
of the field GF(2m), where m≤30. Input data: m is the degree
of expansion, f(x) is the primitive polynomial of degree m
over GF(
        <xref ref-type="bibr" rid="ref2">2</xref>
        ). At the end of the algorithm, the program
memory contains all 2m-1 nonzero vectors of length m in a
certain order, specifically, in powers of the primitive
element  – the root of the polynomial f(x).
      </p>
      <p>To optimize the speed of calculations, we will store each
vector of coefficients in a 32-bit integer data type. At the
position of the i-th bit in the binary notation of the number,
the i-th coefficient of the vector will be stored. Due to this,
the multiplication of the vector by will be carried out by a
bitwise left shift. The search for the remainder of division
by the primitive polynomial f(x) will be expressed through
the operation of bitwise addition modulo 2. Thus, the
storage of the index table GF(2m) requires about 4 ∙ 2m
bytes of memory.</p>
      <p>Note that the calculation of each subsequent coefficient
vector is performed sequentially. Thus, lines 0, 1, 2, …,
2m3, 2m-2. are filled. In order to calculate the table using
parallel technologies, we break all the rows into k
consecutive blocks. To calculate the j-th block, you need to
calculate the coefficient vector that is the first in this block.
For this, there is no need to find all previous vectors. We use
the binary exponentiation algorithm to significantly speed
up the calculations.</p>
      <p>We tested the work of the program for constructing the
index table of the GF(2m), where m=26, 27, 28, 29 and 30.
The calculations were performed on 4 cores on an NArFU
cluster with 20 computing nodes, each of which had 2
10core Intel Xeon processors and 64 GB of RAM. The table
contains data on the operating time for various m and for a
different number of threads.</p>
      <p>EXECUTION TIME OF SERIAL AND PARALLEL ALGORITHMS</p>
      <p>(IN SECONDS)</p>
      <p>Threads \ m
Sequential algorithm
1 thread
2 threads
3 threads
4 threads
26
0.507
0.535
0.311
0.242
27
0.205
0.403
0.794
1.597
3.283</p>
      <p>From the presented table we can conclude that the
program shows an acceleration of about 2,5 times with
parallel implementation of 4 threads.</p>
    </sec>
    <sec id="sec-38">
      <title>IV. CONCLUSION</title>
      <p>Component-wise (n, k) functions extend the modes of
standard cryptographic transformations, in particular, GOST
R 34.12-2015. Using them instead of the modulo 2 addition
operation increases the possibilities of choosing round
transformations for symmetric ciphers. But a significant
disadvantage of the functions under consideration is a large
redundancy. We believe that consideration of K- digit
component-wise functions will help overcome this
disadvantage. Further research will be aimed at introducing
the encryption method using component-wise functions in
the hardware-software complex.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>N.N.</given-names>
            <surname>Tokareva</surname>
          </string-name>
          , “Simmetrichnaya kriptografiya,” Novosibirsk: NSU,
          <year>2012</year>
          , 232 p.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>S.N.</given-names>
            <surname>Selezneva</surname>
          </string-name>
          , “
          <article-title>Multiplicative complexity of some functions of the algebra of logic,”</article-title>
          <source>Discrete Mathematics</source>
          , vol.
          <volume>26</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>100</fpage>
          -
          <lpage>109</lpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>A.A.</given-names>
            <surname>Gorodilova</surname>
          </string-name>
          , “
          <article-title>From cryptanalysis of a cipher to the cryptographic property of a Boolean function</article-title>
          ,” Applied Discrete Mathematics, vol.
          <volume>3</volume>
          , no.
          <issue>33</issue>
          , pp.
          <fpage>4</fpage>
          -
          <lpage>44</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>I.I.</given-names>
            <surname>Vasilishin</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Yu</surname>
          </string-name>
          . Korabelshchikova, “
          <article-title>Using component-wise function in cryptographical transformation algorithm from Russian national standard</article-title>
          <source>GOST R 34</source>
          .
          <fpage>12</fpage>
          -2015,” CEUR Workshop Proceedings, vol.
          <volume>2212</volume>
          , pp.
          <fpage>392</fpage>
          -
          <lpage>398</lpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>S.Y.</given-names>
            <surname>Korabelshchikova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.V.</given-names>
            <surname>Zyablitseva</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.F.</given-names>
            <surname>Melnikov</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.V.</given-names>
            <surname>Pivneva</surname>
          </string-name>
          , “
          <article-title>Linear codes and some their applications</article-title>
          ,
          <source>” Journal of Physics: Conference Series</source>
          ,
          <volume>012174</volume>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>GOST</surname>
            <given-names>R</given-names>
          </string-name>
          <year>34</year>
          .
          <fpage>12</fpage>
          -
          <lpage>2015</lpage>
          . Information technology. “
          <article-title>Cryptographic information security</article-title>
          . Block ciphers,” M .:
          <string-name>
            <surname>Standartinform</surname>
          </string-name>
          ,
          <year>2015</year>
          , 25 p.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>E.A.</given-names>
            <surname>Ishchukova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.K.</given-names>
            <surname>Babenko</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.V.</given-names>
            <surname>Anikeev</surname>
          </string-name>
          , “
          <source>Fast Implementation and Cryptanalysis of GOST R 34</source>
          .
          <fpage>12</fpage>
          -2015
          <source>Block Ciphers,” 9th International Conference on Security of Information and Networks SIN</source>
          , Newark, Nj, pp.
          <fpage>104</fpage>
          -
          <lpage>111</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>T.</given-names>
            <surname>Isobe</surname>
          </string-name>
          , “
          <article-title>A single-key attack on the full GOST block cipher</article-title>
          ,
          <source>” Journal of Cryptology</source>
          , vol.
          <volume>26</volume>
          , pp.
          <fpage>172</fpage>
          -
          <lpage>189</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>J.</given-names>
            <surname>Kim</surname>
          </string-name>
          , “
          <article-title>On the security of the block cipher GOST suitable for the protection in U-business services,” Personal and ubiquitous computing</article-title>
          , vol.
          <volume>17</volume>
          , pp.
          <fpage>1429</fpage>
          -
          <lpage>1435</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>S.V.</given-names>
            <surname>Yablonskiy</surname>
          </string-name>
          , “Vvedeniye v diskretnuyu matematiku,” M.:
          <string-name>
            <surname>Nauka</surname>
          </string-name>
          ,
          <year>2005</year>
          , 384 p.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>B.F.</given-names>
            <surname>Melnikov</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Yu</surname>
          </string-name>
          . Korabelshchikova, “
          <article-title>Algorithms for estimation the number of noise-immune codes of general and special types,” Informatization and communication</article-title>
          , vol.
          <volume>1</volume>
          , pp.
          <fpage>55</fpage>
          -
          <lpage>60</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>