<!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>Interaction support system of network aplications</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Oleksii R. Rudkovskyi</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Galina G. Kirichek</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>Donetsk National Technical University</institution>
          ,
          <addr-line>2 Shybankova Sq., Pokrovsk, 85300</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>National University “Zaporizhzhia Polytechnic”</institution>
          ,
          <addr-line>64 Zhukovsky St., Zaporizhia, 69063</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
      </contrib-group>
      <fpage>11</fpage>
      <lpage>23</lpage>
      <abstract>
        <p>In this article implemented a method of organizing a distributed network to launch and support the work of applications. In the process of building the network model, diferent algorithms were used, at the same time encryption algorithms are used (Elliptic curve Difie-Hellman and Advanced Encryption Standard), Secure Hash Algorithm 1 algorithms for hashing, onion routing algorithm and other. Transmission Control Protocol transport protocol is used to send data between nodes of the network. Methods and application for creating and launching other applications have been implemented in the Java language. Linux containers and Docker are used to isolate diferent applications running on the network. In this way, diferent applications written using diferent programming languages can run without afecting other running applications and client's operation system. Application's data is stored on the network distributed with and without encryption.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Docker</kwd>
        <kwd>distributed networks</kwd>
        <kwd>encryption</kwd>
        <kwd>Java</kwd>
        <kwd>TCP</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        In today’s world it is impossible to imagine the operation of data transmission devices for
various purposes without a network connection. It is even more dificult to imagine performing a
large number of tasks without using the usual services, such as e-mail, cloud storage, various
messengers, web applications, etc. In addition, the development of data transmission systems
has reached a level where almost any object can be connected to the network. This constantly
increases the amount of trafic and data that needs to be stored or processed. Therefore, with
the development of information technology and data transmission methods, the issues of
further development of networks and support of secure data transmission systems are becoming
more and more urgent and acute [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>
        One of the problems of the modern Internet is the rapid development of the Internet of
Things. According to the latest forecasts for the next few years, the number of devices
connected to the Internet will increase several times. With the new version of the internet protocol
(IP) IPv6, the number of addresses compared to IPv4, increased at times, but in the near future,
this volume of addresses may be exhausted, according to the rate of growth of the Internet
of things. The reasons for the acceleration of filling IPv6 also include legislation of individual
countries or alliances, the development of astronautics and the colonization of other planets
[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>
        Currently, almost all applications run in the form of client-server services. These services
allow you to exchange messages, transfer files, receive news and publish them. Services can
interact with both users and other services. But now the services are poorly protected and,
after attacks by attackers, may lose confidential information left by users. In addition to public
information, attackers steal bank card data, private files, etc., so the protection of this data is
a priority for companies. In addition, it is constantly necessary to address the availability and
speed of information transfer [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>Thus, it is relevant to solve the problems of increasing the speed of information processing,
supporting the security of transmission, storing and processing data, as well as executing server
applications as close as possible to the client in order to reduce the delays between executing
requests and receiving responses (critical for the operation of some categories of IoT devices).</p>
    </sec>
    <sec id="sec-2">
      <title>2. Objectives and solutions</title>
      <sec id="sec-2-1">
        <title>2.1. Objectives</title>
        <p>The purpose of this work is to research and implement software that can support
communication of network devices and applications, by developing protocol of distributed system to
improve work on services and their communication with devices. The object of this research
is the process of software implementation that support distributed communication between
devices and applications. The subject of research are the models, methods and software tools
for organizing the interaction of devices and applications in a distributed environment.</p>
        <p>
          Currently, familiar virtual or dedicated machines (VPS and VDS) are used as a server
infrastructure for applications, but recently containers are gaining more and more popularity due to
the ease of scaling, security and speed of work [
          <xref ref-type="bibr" rid="ref4 ref5">4, 5</xref>
          ]. At the same time, the Internet is actively
developing decentralized and distributed system on which it is also possible to create
applications. These applications use a distributed database (usually blockchain), which guarantees
the security of data storage, and allow interaction with applications with diferent devices and
programs that are capable of performing certain calculations to participate in the system
itself. The problem is that traditional technologies are not secure enough, and new distributed
systems do not provide the same capabilities for creating and interacting with programs that
traditional ones provide. For example, the Ethereum network provides the ability to develop
applications that are able to receive data from outside and trigger events that other programs
can process, but these programs are extremely limited in functionality and are not able to
interact with other devices on the Ethereum network or with devices from Internet and are not
capable of performing any resource-intensive tasks [
          <xref ref-type="bibr" rid="ref6 ref7">6, 7</xref>
          ].
        </p>
        <p>The research is aimed at finding a solution that combines two approaches to developing and
launching applications, providing a high level of security in the form of a distributed network
and providing many opportunities for developers as traditional servers provides.</p>
        <p>As the platform of distributed network many diferent independent devices (personal
computers, mobile phones, servers, etc.), which contain launched specific software, is used. On
launching the application and while it works, devices connecting to each other and always
ready to participate in processing or transferring a data. Device can support multiple roles: be
a binder (intermediate) node, store data, launch applications or be a client who requests some
calculations. Special algorithms are used to define a role for each node.</p>
        <p>Before launching client’s application, network should detect involved, active devices, find
needed for processing requests nodes, connect involved nodes into one network and, after
that, should launch needed applications. At the same time, while working, devices additionally
divided to next types: computer node (executes needed application, in network can be one or
more nodes of this type); client node (node, which requests calculations or that can receive
calculated data); router (intermediate device that connect other nodes and control process of
calculation).</p>
        <p>For diferent types of nodes authors recommends to use diferent types of packets. In this
case, router (intermediate device) should support safety of data transmission without having
access to them in the same time. Based on the fact, that the network is distributed, we consider
in advance any node in the network to be compromised and unsafe. Therefore, considering
this fact, for solving safety problem when transferring data in distributed network in work
proposed to use special algorithms for transferring and encrypting data.</p>
      </sec>
      <sec id="sec-2-2">
        <title>2.2. Solutions for building a system</title>
        <p>Consider several popular programming languages and applications that are suitable for
realization of this task.</p>
        <p>
          Java - a cross-platform programming language used for desktop and mobile devices
supports a set of existing libraries for cryptography and network. Python is also a cross-platform,
interpreted language, but slower. C++ is a low-level language, productive and with a large
number of ready-made libraries, but more dificult to write program code [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. After the
analysis, the Java programming language was selected as cross-platform, object-oriented, popular,
simple and fast enough [
          <xref ref-type="bibr" rid="ref10 ref9">9, 10</xref>
          ]. It allows you to run an application on many operating systems
(Windows, Linux, macOS, etc.).
        </p>
        <p>
          In the analysis of existing methods and encryption algorithms are considered the most
popular AES, RSA, 3DES, and ECDH. A high level of security is provided by the asynchronous RSA
or ECDH algorithm. At the same time, ECDH has high security with a shorter key length, and
the RSA algorithm works faster. Since both algorithms do not allow encrypting large amounts
of data, to solve the problem, we use a common encryption key and the synchronous AES
algorithm as the safest and fastest [
          <xref ref-type="bibr" rid="ref11 ref12">11, 12</xref>
          ].
        </p>
        <p>
          When choosing an isolated environment, virtualization methods using virtual machines and
Linux containers are considered [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. Virtualization consumes a lot of resources, which is why
the number of concurrent virtual areas is very limited. Containers give access to all the
resources of a node, are faster, and support the simultaneous operation of dozens of isolated
areas [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. When conducting research, Docker was chosen as an isolated environment, using
Linux containers, as the most productive and not limiting the work of programs [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ].
        </p>
        <p>TCP is used as a data transfer protocol. For testing the system, a virtual machine created
in VirtualBox with Ubuntu installed was selected. As a platform for transferring data overlay
network is used. In this case, data transmission functions are assigned to the lower levels, thus
abstracted from the network, operating systems and technologies. The same data is sent over
the same algorithm regardless of the kind of network technology used by the client.</p>
        <p>The next functionality that should be implemented in the network is the self-organization
of nodes. As nodes are independent of each other, network should automatically detect role of
each node. For this purpose we use indicators of a node: free disk space (taking into account the
limitations of each individual client of the network), installed software, number of processors
and core, RAM size.</p>
        <p>
          If storage is not full, by more than a certain percentage, node can receive files for storage,
what he notify the nearest devices about. Otherwise, node work as distributor - he can send
ifles on request, if they exists in local storage, but can’t receive new files. In case if node
should receive new file, but storage is full, node makes a decision to clear storage and delete
unnecessary information. To do that, node asks the network for deleting a file. Only after
receiving confirmation from some number of devices that file can be deleted, node deletes this
ifle [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ].
        </p>
        <p>As diferent operating system and end nodes can launch diferent set of programs, a node
store information about software that he can launch. Program, which should be executed,
wherein store minimal set of needed and observed parameters. While launching a program,
node make verification and, in case if his parameters are satisfy minimal requirements, a
program starts. Otherwise, the request is redirected to the network until a node is found that can
launch the application.</p>
        <p>On a device at the same time can work many client’s applications with diferent roles. Each
application has a unique address within the network. With the constant growth of the number
of devices connected to the global network, the use of existing routing methods, taking into
account the peculiarities of the network being implemented, is impossible. Although IPv6
can satisfy a large number of users on the Internet, in the future, the process of combining
and simultaneously using diferent networks (Ethernet and Bluetooth) may require an internal
routing system. In this case, it is proposed to use the public key of the encryption algorithm as
the node address in the implemented network. This approach allows both to securely encrypt
data, since the encryption keys are not sent in the usual form, and to provide multiple addresses
for one physical device. In addition, using this approach guarantees anonymity, since it is
impossible to determine the user’s location address, or any other information about the user.</p>
        <p>
          Therefore, to generate a shared key, while device working in the network and encrypt a data,
we use a pair keys (public and private) and public key of another client. Since the public key
is an address of a device, and pair keys are stored only on one device and never passed on to
anyone, this approach is most secure. After generating a shared key, the application encrypts
the data sent with it. Second client, after generating a key using his own pair keys and address
of the device who sent a data, will receive the same key [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ].
        </p>
        <p>In this case, if the sender and the recipient of the data are specified correctly, that is, the data
is not sent from a foreign node, which is masked as the sender, the recipient can decrypt the
data without any problems. This also applies to protect data from substitution or alteration,
since in case of data change you also need to have access to the sender’s key pair to generate
the correct shared key and to encrypt the message itself. Moreover, if the data is distorted, the
recipient will not be able to decrypt it, or will decrypt it with interference. Thus, the process
of encryption and decryption makes the system itself suficiently protected from interception
and data substitution.</p>
        <p>
          For key pair and shared key generation cryptographic algorithm ECDH is used [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ]. As you
can see in figure 1, if compare to other algorithms, for example with RSA, the ECDH algorithm
has a higher level of security with the same key size.
        </p>
        <p>
          Although the ECDH algorithm is safe, it nevertheless does not allow encrypting large amounts
of data since the maximum size of input data is limited by the key length. In addition, the
creation of an encrypted message takes a long time, compared to other algorithms. To solve this
problem, AES encryption algorithm and a shared key for the two devices are usually used.
Algorithm AES can be considered cryptographically secure, and shared key generation without
sharing parts of the keys through network makes it much secure and faster, depriving it of its
main drawback - transmission of the key over the network [
          <xref ref-type="bibr" rid="ref17 ref18">17, 18</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Stages of System Implementation</title>
      <p>The nodes themselves can act as routers for devices that are unable to generate keys and
encrypt data quickly enough. For example, microcontrollers cannot do all needed calculations
fast enough, so as not to slow down its own functions.</p>
      <sec id="sec-3-1">
        <title>3.1. Process of generation key pair for devices</title>
        <p>To solve this issue node, to which a similar device is connected to directly, generates new keys
that are associated with this device. Thus, devices get their own keys and become
indistinguishable for other clients. Algorithm of generating these keys illustrated in figure 2.</p>
        <p>
          Using these algorithms and methods allows
using of the implemented network with almost any
end device, regardless of its own performance
[
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. The used methods make it possible to safely
transfer data in a given network, while the
computation of data, at almost any end node of the
system, minimizes the delay in data transmission
between the client and the node that processes the
data itself, since such a node can be a neighboring
device located in close proximity to the client.
        </p>
        <p>In addition, these methods and algorithms
guarantee the anonymity of clients and adapted
to work in the notoriously compromised
environment.</p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Description of client software modeling process</title>
        <sec id="sec-3-2-1">
          <title>During the research and before implementation, the client software was modeled and a diagram of the required classes was obtained, which is shown in figure 3.</title>
          <p>For proper operation of the client running on it
and perform all functions of the system
application needs to support needed interfaces regarding
to operating system and end device, that runs the
application.</p>
          <p>Since the system provides information transfer
network, it is necessary to describe the format of
information.
3.3. The
process of launching applications</p>
        </sec>
        <sec id="sec-3-2-2">
          <title>The main tasks of the application are the ex</title>
          <p>change commands and their processing. The
command is transmitted using the JSON data format,
which is cross-platform and allows the same
identification of data regardless of the platform and
programming language.</p>
          <p>The command consists of four parts: the length
of the header, header, data and an additional field.</p>
          <p>The header length field stores information about
the command transmission path, the size of the
data field and the additional field in bytes, as well
as information necessary for the correct processing of the request and is used for the correct
delivery of the header itself. The data field stores the payload as a command if it is transmitted.
Only the header and data are sent in JSON format, in plain text. The additional field stores data
that cannot be expressed as text (such as binaries). Having received and correctly read all four
parts of the command, the application can process it correctly.</p>
          <p>
            If the command is for the current device, the text from JSON is converted to an object of the
desired type. Further, depending on the object, either a specific class method is called, or the
data is passed on [
            <xref ref-type="bibr" rid="ref20 ref21">20, 21</xref>
            ].
          </p>
          <p>To launch additional client’s applications, a special system command is used. It specifies
application and status IDs, as well as initial data. Upon receiving the command, the node reads
from the system the application description file, which contains the fields: tag image of the
container; command to run the application; link to the first part of the application file and the
hash sum of the file (optional); a list of auxiliary files and links to the initial bytes of these
ifles and the hash sum of the file (optional). Upon receiving the file, the node checks whether
the image has already been downloaded. If the image is loaded earlier – goes to the next step,
otherwise - reads the image and in case of error interrupts the work and reports the error to
the client. The following is the method of checking and loading the image:
public boolean isImageStoredLocally(String tag) {</p>
          <p>Process process = null;
System.out.println("Checking tag: " + tag);
try {
process = Runtime.getRuntime().exec("docker images -q
" + tag);
} catch (IOException e) {</p>
          <p>return false;
}
BufferedReader bufferedReader = new BufferedReader(new
InputStreamReader(process.getInputStream()));
try {</p>
          <p>String imageId = bufferedReader.readLine();
if (imageId == null) {</p>
          <p>return false;
}
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
public boolean pullImage(String tag) {</p>
          <p>String command = " docker pull " + tag + " &gt; /dev/null
2&gt;&amp;1 &amp;&amp; echo \"success\" || echo \"failed\"";
Process process = null;
System.out.println("Checking tag: " + tag);
try {
process = Runtime.getRuntime().exec("docker images -q
" + tag);
} catch (IOException e) {</p>
          <p>System.out.println("Can’t execute command: " + command);
return false;
}
BufferedReader bufferedReader = new BufferedReader(new
InputStreamReader(process.getInputStream()));
try {</p>
          <p>String response = bufferedReader.readLine();
return response.equals("success");
} catch (IOException e)
{
e.printStackTrace();
}
return false;
}
After downloading the image, the node generates a unique identifier – the startup ID. This
ID is used to interact with the application. In order to send application data, you need to know
both the address of the node on which the application is running and the startup ID, because
multiple copies of the application can run on diferent nodes for diferent users.</p>
          <p>
            To establish a connection between an application running in isolation and an application
that manages a network client, the node listens for standard output from the isolated
environment. If the first line contains the required sequence, then a connection with the application is
established, since it is assumed that at this time the applications are already ready to connect
to each other [
            <xref ref-type="bibr" rid="ref22 ref23">22, 23</xref>
            ]. All other lines are redirected to the user who requested the execution.
However, the application does not write anything to the sandbox standard input, which
prevents applications from running in terminal mode. The following is a simplified source code
of the method for launching an application in an isolated environment and connecting to the
application that is executed:
if (isImageExists) {
try {
          </p>
          <p>Process dockerProcess = docker.run(appDescriptor.container,
appInstanceId, appDescriptor.command, this.args);
System.out.println("==&gt; Connecting to application");
BufferedReader bufferedReader = new BufferedReader(new
InputStreamReader(dockerProcess.getInputStream()));
String line = null;
boolean isFirstLine = true;
while ((line = bufferedReader.readLine()) != null) {
if (isFirstLine) {
appSocket = new AppSocket(this);
if (appSocket.isConnected())
{
appSocket.setOnCommand(this::onCommandFromContainer);</p>
          <p>appSocket.bind();
}
String[] args = {};
appSocket.sendCommand("onStart", args);
ApplicationEvent applicationEvent = new ApplicationEvent();
applicationEvent.eventArgs = args;
applicationEvent.eventName = "onStart";
Gateway.getInstance()
.sendData(packetHeader.reverse,
applicationEvent, new byte[0],
packetHeader.targetId)</p>
          <p>.send();
isFirstLine = false;
}
else
{
}</p>
          <p>response.line = line;
Gateway.getInstance()
.sendData(packetHeader.reverse, response,
new byte[0], packetHeader.targetId)</p>
          <p>.send();
}
System.out.println("==&gt; App finished his work");
docker.cleanUp(appInstanceId);
}
}
catch (IOException e)
{
e.printStackTrace();</p>
          <p>}</p>
          <p>After starting the sandbox, applications have access to almost all the capabilities of the end
device on which they run. For example, an application has access to multithreading, RAM and
memory, video memory and video adapter, to the network itself and devices connected to it.
However, at the same time, the application does not have access to the rest of the operating
system, i.e. it cannot receive anything outside its area. It can see the total amount of used
memory, but it cannot see what exactly the memory is occupied. In this case, it is impossible
to access the user’s files.</p>
          <p>It is also impossible to get information on connections outside the isolated environment, but
it is possible within the isolated part. In fact, the application works in a virtual area, but without
a virtualization layer and therefore does not have performance limitations in comparison with
conventional virtual machines, but, if necessary, can use any capabilities of the operating
system. In addition, it is possible to install third-party software, which is subsequently removed
along with the removal of the sandbox and all data that is generated by the application and
which is not stored in distributed memory or another area.</p>
        </sec>
      </sec>
      <sec id="sec-3-3">
        <title>3.4. Applying and testing the system</title>
        <p>Research was carried out on a Mac mini. ESP8266 and ESP32 boards were used as devices,
which were connected to a computer using a WiFi network. For testing, a program developed
that calculates the factorial of large numbers (figure 4).</p>
        <p>The developed system can be applied wherever there may be any calculations. Using this
system, low-power devices can request heavy computations, which significantly expands the
list of tasks that these devices can solve.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Conclusions</title>
      <p>In this article improved the devices and applications interaction process in distributed systems,
a model of a distributed system is created, and implemented a software protocol to support the
interaction of network devices and applications. Methods of interaction of system parts and
application components are developed.</p>
      <p>The security of data transmission and their processing are one of the key in modern systems
and data transmission networks, therefore, the greatest attention is paid to solving this
problem in the process of implementing the system and algorithms of its operation. Application
of the developed encryption and data transmission methods are increasing security of data
transmission due to multi-layer encryption, and the use of an isolated environment makes the
process of executing client applications independent of the host operating system and other
applications that can be launched and can interfere with or intercept data. In the process of
further research, it is planned to expand the capabilities of the system, namely to add
support for graphical applications, parallelize processes on network devices and implement more
functionality for interacting with the system and IoT devices.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>A.</given-names>
            <surname>Amer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Abu</surname>
          </string-name>
          ,
          <article-title>Comparison study between ipv4 &amp; ipv6</article-title>
          ,
          <source>International Journal of Computer Science Issues (IJCSI) 9</source>
          (
          <year>2012</year>
          )
          <fpage>314</fpage>
          -
          <lpage>317</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>G.</given-names>
            <surname>Kirichek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Tymoshenko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Rudkovskyi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Hrushko</surname>
          </string-name>
          ,
          <article-title>Decentralized system for run services</article-title>
          ,
          <source>in: Proceedings of the Second International Workshop on Computer Modeling and Intelligent Systems</source>
          , CMIS '
          <year>2019</year>
          , CEUR Workshop Proceedings 2353,
          <string-name>
            <surname>Zaporizhzhia</surname>
          </string-name>
          , Ukraine,
          <year>2019</year>
          , pp.
          <fpage>860</fpage>
          -
          <lpage>872</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>G.</given-names>
            <surname>Kirichek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Skrupsky</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Tiahunova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Timenko</surname>
          </string-name>
          ,
          <article-title>Implementation of web system optimization method</article-title>
          ,
          <source>in: Proceedings of the Third International Workshop on Computer Modeling and Intelligent Systems</source>
          , CMIS '
          <year>2020</year>
          , CEUR Workshop Proceedings 2608,
          <string-name>
            <surname>Zaporizhzhia</surname>
          </string-name>
          , Ukraine,
          <year>2020</year>
          , pp.
          <fpage>199</fpage>
          -
          <lpage>210</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>W.</given-names>
            <surname>Felter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ferreira</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Rajamony</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Rubio</surname>
          </string-name>
          ,
          <article-title>An updated performance comparison of virtual machines and linux containers, in: 2015 IEEE international symposium on performance analysis of systems and software</article-title>
          ,
          <source>ISPASS '</source>
          <year>2015</year>
          , IEEE, Philadelphia, PA, USA,
          <year>2015</year>
          , pp.
          <fpage>171</fpage>
          -
          <lpage>172</lpage>
          . doi:
          <volume>10</volume>
          .1109/ISPASS.
          <year>2015</year>
          .
          <volume>7095802</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>T.</given-names>
            <surname>Mauro</surname>
          </string-name>
          , Adopting Microservices at Netflix: Lessons for Architectural Design,
          <year>2015</year>
          . https://www.https://www.nginx.com/blog/ microservices-at
          <article-title>-netflix-architectural-best-practices/.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A.</given-names>
            <surname>Gencer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Basu</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Eyal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. V.</given-names>
            <surname>Renesse</surname>
          </string-name>
          , E. Sirer,
          <article-title>Decentralization in bitcoin and ethereum networks</article-title>
          ,
          <source>in: International Conference on Financial Cryptography and Data Security, FC '2018</source>
          , Springer, Berlin, Heidelberg,
          <year>2018</year>
          , pp.
          <fpage>439</fpage>
          -
          <lpage>457</lpage>
          . doi:
          <volume>10</volume>
          .1007/ 978-3-
          <fpage>662</fpage>
          -58387-6_
          <fpage>24</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>A.</given-names>
            <surname>Antonopoulos</surname>
          </string-name>
          , G. Wood, Mastering Ethereum:
          <article-title>Building Smart Contracts and DApps</article-title>
          ,
          <string-name>
            <surname>O'Reilly Media</surname>
          </string-name>
          , Inc,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>G.</given-names>
            <surname>Kirichek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Kurai</surname>
          </string-name>
          ,
          <article-title>Implementation quadtree method for comparison of images</article-title>
          , in: 14th International Conference on Advanced Trends in Radioelecrtronics, Telecommunications and Computer Engineering, TCSET '
          <year>2018</year>
          , IEEE, Slavske, Ukraine,
          <year>2018</year>
          , pp.
          <fpage>129</fpage>
          -
          <lpage>132</lpage>
          . doi:
          <volume>10</volume>
          .1109/TCSET.
          <year>2018</year>
          .
          <volume>8336171</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>M.</given-names>
            <surname>Kumar</surname>
          </string-name>
          ,
          <article-title>Energy Eficiency of Java Programming Language</article-title>
          , Wayne State University,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>D.</given-names>
            <surname>Abts</surname>
          </string-name>
          , Masterkurs Client/Server-Programmierung mit Java: Anwendungen entwickeln mit Standard-Technologien, Springer-Verlag,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>C. P.</given-names>
            <surname>Mayer</surname>
          </string-name>
          ,
          <article-title>Security and privacy challenges in the internet of things</article-title>
          ,
          <source>Electronic Communications of the EASST</source>
          <volume>17</volume>
          (
          <year>2009</year>
          )
          <fpage>1</fpage>
          -
          <lpage>12</lpage>
          . doi:
          <volume>10</volume>
          .14279/tuj.eceasst.
          <volume>17</volume>
          .208.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>W.</given-names>
            <surname>Jansen</surname>
          </string-name>
          ,
          <string-name>
            <surname>T.</surname>
          </string-name>
          <article-title>Grance, Guidelines on security and privacy in public cloud computing</article-title>
          ,
          <source>in: NIST Special Publication</source>
          <volume>800</volume>
          -144, U.S. Department of Commerce, NIST Pubs,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>N.</given-names>
            <surname>Pathania</surname>
          </string-name>
          ,
          <article-title>Setting up jenkins on docker and cloud</article-title>
          , in: Pro Continuous Delivery, Apress, Berkeley, CA,
          <year>2017</year>
          , pp.
          <fpage>115</fpage>
          -
          <lpage>143</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>M.</given-names>
            <surname>Miraz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ali</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Excell</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Picking</surname>
          </string-name>
          ,
          <article-title>Internet of nano-things, things and everything: future growth trends</article-title>
          ,
          <source>in: Future Internet</source>
          , volume
          <volume>10</volume>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>G.</given-names>
            <surname>Kirichek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Kyrychek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Hrushko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Timenko</surname>
          </string-name>
          ,
          <article-title>Implementation the protection method of data transmission in network</article-title>
          ,
          <source>in: IEEE International Conference on Advanced Trends in Information Theory</source>
          , ATIT '
          <year>2019</year>
          , IEEE, Kyiv, Ukraine,
          <year>2019</year>
          , pp.
          <fpage>129</fpage>
          -
          <lpage>132</lpage>
          . doi:
          <volume>10</volume>
          .1109/ ATIT49449.
          <year>2019</year>
          .
          <volume>9030482</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>A.</given-names>
            <surname>Corbellini</surname>
          </string-name>
          ,
          <article-title>Elliptic curve cryptography: a gentle introduction</article-title>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>B.</given-names>
            <surname>Gulmezogluk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Inci</surname>
          </string-name>
          , G. Irazoqui,
          <string-name>
            <given-names>T.</given-names>
            <surname>Eisenbarth</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Sunar</surname>
          </string-name>
          ,
          <article-title>Cross-vm cache attacks on aes</article-title>
          ,
          <source>in: IEEE Transactions on Multi-Scale Computing Systems</source>
          , volume
          <volume>10</volume>
          , IEEE,
          <year>2016</year>
          , pp.
          <fpage>211</fpage>
          -
          <lpage>222</lpage>
          . doi:
          <volume>10</volume>
          .1109/TMSCS.
          <year>2016</year>
          .
          <volume>2550438</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>S.</given-names>
            <surname>Kumark</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Girimondo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Weimerskirch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Paar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Patel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Wander</surname>
          </string-name>
          ,
          <article-title>Embedded endto-end wireless security with ecdh key exchange</article-title>
          ,
          <source>in: IEEE 2003 46th Midwest Symposium on Circuits and Systems</source>
          , volume
          <volume>2</volume>
          , IEEE, Cairo, Egypt,
          <year>2003</year>
          , pp.
          <fpage>786</fpage>
          -
          <lpage>789</lpage>
          . doi:
          <volume>10</volume>
          .1109/ MWSCAS.
          <year>2003</year>
          .
          <volume>1562404</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>G.</given-names>
            <surname>Kirichek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Harkusha</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Timenko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Kulykovska</surname>
          </string-name>
          ,
          <article-title>System for detecting network anomalies using a hybrid of an uncontrolled and controlled neural network</article-title>
          ,
          <source>in: Proceedings of the Computer Science &amp; Software Engineering: Proceedings of the 2nd Student Workshop</source>
          , CS&amp;SE@SW '
          <year>2019</year>
          , CEUR Workshop Proceedings 2546,
          <string-name>
            <surname>Kryvyi</surname>
            <given-names>Rih</given-names>
          </string-name>
          , Ukraine,
          <year>2019</year>
          , pp.
          <fpage>138</fpage>
          -
          <lpage>148</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>S.</given-names>
            <surname>Sriparasa</surname>
          </string-name>
          , JavaScript and JSON essentials, Packt Publishing,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>F.</given-names>
            <surname>Pezoa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Reutter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Suarez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ugarte</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Vrgoč</surname>
          </string-name>
          ,
          <article-title>Foundations of json schema</article-title>
          ,
          <source>in: Proceedings of the 25th International Conference on World Wide Web, WWW '16</source>
          ,
          <year>2016</year>
          , pp.
          <fpage>263</fpage>
          -
          <lpage>273</lpage>
          . doi:
          <volume>10</volume>
          .1145/2872427.2883029.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>D.</given-names>
            <surname>Merkel</surname>
          </string-name>
          ,
          <article-title>Docker: lightweight linux containers for consistent development and deploymentno-things, things and everything: future growth trends, in: Linux journal</article-title>
          , volume
          <year>2014</year>
          ,
          <year>2014</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>5</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>T.</given-names>
            <surname>Bui</surname>
          </string-name>
          ,
          <article-title>Analysis of docker security</article-title>
          , in: Aalto University T-
          <volume>110</volume>
          .5291 Seminar on Network Security,
          <source>arXiv preprint arXiv: 1501.02967v1</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>