<!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>Trusted Volunteer Computing</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Michele Ianni</string-name>
          <email>mianni@dimes.unical.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Elio Masciari</string-name>
          <email>elio.masciari@icar.cnr.it</email>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>DIMES, Universita della Calabria</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>Technology becomes more and more advanced everyday, both from the software and from the hardware perspective. Brand new devices, more powerful and capable of the generation preceding them, are steadily released. Everybody owns laptops, smartphones and many other devices with great compute capabilities, able to easily solve problems a few years ago considered almost impossible. These devices are, however, most of the time underused, resulting in an incredible waste of computational resources. The needs of professional people and scientists are evolving too, alongside the advances of technology. In many elds, from nancial and biomedical simulation to insurance predictions, from 3D rendering to mathematical computations etc huge compute capabilities are still required. Despite the always growing presence of powerful devices and their increasingly cheap prices, in many situations using only our own devices is not enough. The contrast between underused devices and needs of computational resources led to the birth of a new approach: volunteer computing. This approach brings a user to be part of a network, sharing his idle CPU (or GPU) cycles in order to solve a subtask of a problem thus contributing, along with many other users, to the solution of a bigger task. In a very large number of cases, however, volunteer computing needs to tackle some serious security concerns. Many tasks, in fact, deal with sensitive information whose disclosure, even in a minimal part, must be avoided. For this reason still many problems are usually not handled by collaborative networks, since it is not possible, in many cases, to hide con dential data from inputs of every subtask. In this paper we present a way to solve the problem described. Through the use of trusted computing we are able to manage complex problems in a distributed network of volunteer computing devices without the risks related to the spread of sensitive data.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Nowadays we are constantly surrounded by an always growing number of so
called smart devices [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. Everything we use seems to need great compute
capabilities and Internet connection to work properly. Many everyday life objects,
from fridges to cars, from light bulbs to toasters are integrating computers and
providing functionality that several years ago where almost unthinkable. We are
facing a new era, the era of Internet of Things [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], everything is always
connected thus accessible from everywhere. The object that best represents this
revolution is the smartphone. Everybody owns at least one of them, they are
always connected and capable to perform tasks with remarkable performances.
The hardware vendors are unceasingly releasing new generations every season,
with new devices that easily overwhelm their predecessors, both for compute
capabilities and new functionality added. The industry of personal computers
follows an analogous rhythm, releasing more and more powerful devices with
incredible constancy. These devices are becoming a ordable and everybody, due to
the hard rules imposed by our consumer society, have an induced need not only
to buy them, but even upgrading to newer models as soon as the pressure related
to the menace of losing their social position becomes unbearable. However this
then begs the question: do we really need all those compute capabilities? Or at
least, do we need them continuously? The answer is pretty obvious: our devices
are, most of the time, underused. The average user does not take advantage of
all the power embedded in his devices and the waste of resources is huge. On the
other side there exist a lot of people who really need a huge amount of compute
capabilities, that goes far beyond the considerable power of a brand new laptop.
Computer scientists, 3D artists, nancial analysts to cite a few, most of the time
are involved in problems that require a lot of time to be solved and they are
forced to spend time and money to obtain results. From this contrast between
compute resources need and waste a new paradigm has born: volunteer
computing. It is a type of distributed computing in which a user is part of a larger
network. He donates idle CPU (or GPU) cycles, or even storage sometimes, in
order to contribute to one or more "projects". Volunteer computing frameworks
usually have a master/slave structure. When a problem (called job) have to be
solved, one server is responsible of splitting the job in subtasks which are
distributed across the nodes of the network (the volunteer computers). A client
application runs on the volunteer's computer and receives the subtask from the
remote server. After completing the assigned subtask the result is sent back to
the server who merges the partial results to provide a solution for the initial
job. In many cases the system keeps track of the volunteers work in order to
implement a reward policy. Volunteer computing is a well known paradigm that
spans across many di erent application areas. The rst volunteer computing
project was the Great Internet Mersenne Prime Search [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], which was started
in January 1996. From that date many other projects arose [
        <xref ref-type="bibr" rid="ref1 ref19 ref20 ref9">20, 19, 1, 9</xref>
        ]. A
special mention, due to the several hundred thousand volunteers involved, goes
to SETI@home project [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], whose purpose is to analyze radio signals, searching
for signs of extraterrestrial intelligence, and Folding@home [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] which aims to
determine the mechanisms of protein folding, a subject of signi cant academic
interest with major implications for medical research into many types of
disease. One of the biggest steps in volunteer computing history has been made in
2002 with the born of BOINC [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], the Berkeley Open Infrastructure for Network
Computing. It is a project, founded at University of California, Berkeley Space
Sciences Laboratory, whose aim is to provide a complete middleware system for
volunteer computing. BOINC includes everything needed to start a project using
volunteer computing, from the client application to the server software.
Although it is easy, thanks to the middleware available, to start a new project,
volunteer computing is still not expressing its full potential. This is because
this computing paradigm is based on the distribution of problem inputs among
users and there is a serious problem related to data distribution: privacy. Many
projects perfectly suitable for volunteer computing: from nancial simulations
to insurance predictions, from health databases scraping or biomedical modeling
to marketing analysis and so forth most of the time deal with sensitive
information that must remain secret. In many cases the sensitive data is so tightly
connected to the rest of the information that is impossible to hide the former
without altering signi cantly the result of the computation. Most of the times it
is not possible to distribute even a small subset (the input for a subtask) of the
data, because sensitive information can be inferred by its observation or because
the solution of the subtask itself cannot be computed without the rest of the
dataset.
      </p>
      <p>
        Example: In our past experience with distributed computing we faced the
problem of distributed rendering. In order to solve the rendering equation a ray
tracing algorithm (or variants of it) is used [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. The algorithm correctly computes
the value of luminosity of every pixel in the scene by taking into account all
the objects and lights that can a ect the color of the given pixel. In distributed
rendering, even if the rendering of a single tile (a subset of the entire scene) is
requested to a volunteer, he needs to know all the information present in the
entire scene (objects, lights) in order to solve the rendering problem for the pixels
in the tile. It is easy to gure many cases in which the scene to be rendered must
be kept secret, we just need to think about the work of architects, engineers,
graphics, 3D artists and so on.
      </p>
      <p>
        All these security concerns are crucially narrowing the potential of volunteer
computing. The current middleware projects, in fact, are not suitable to deal
properly with sensitive data. Our contribution in this paper is to introduce the
use of trusted computing to extend the power of volunteer computing by
making possible to deal with sensitive data in a safe way. The proposed solution
described in this paper is related to the use of Intel R Software Guard
Extensions [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], but the same concepts are applicable for other environments (e.g. ARM
TrustZone [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]) with slight modi cations on which we are currently working on.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Intel R Software Guard Extensions</title>
      <p>
        It is very common to deal with software applications that need to work with
sensitive data. Operating system's security policy based on permissions are
often not enough to protect secrets. Despite they prevent a user from accessing
other user's les they cannot avoid the access to the sensitive information to
processes running with higher privileges, including the operating system itself
and a plethora of various types of malicious software. To protect the secret data
even in the presence of privileged malware, Intel R designed Software Guard
Extensions (SGX): a security technology introduced in autumn 2015 in their CPUs
based on the Skylake x86 microarchitecture. SGX is a set of CPU instructions
that permit the allocation of private regions of usermode address space, called
enclaves by leveraging trusted hardware. These regions are protected from
processes running even at higher privilege levels and provide con dentiality and
integrity [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. Several protection are guaranteed by Intel R SGX:
{ Enclave memory is encrypted and cannot be read or written from outside
even by processes with high privileges and independently by the CPU mode.
The encryption key, stored in an inaccessible region within the CPU, is
changed every power cycle.
{ The only way to enter in an enclave is through a dedicated instruction, there
is no other way to jump inside an enclave.
{ Enclaves cannot be debugged by software or hardware debuggers.
{ Data within enclaves can only by accessed by code in the same enclave.
      </p>
      <p>
        One of the main drawbacks of this technology is that the applications
running in SGX enclaves are severely restricted compared to normal programs. The
Trusted Computing Base (TCB) of SGX is minimal, it consists of the CPU
(hardware logic, microcode, registers, cache memory) and the software components
used for attestation (see section 4). More in detail the operating system is not
part of the TCB, this means that is not possible to use kernel services or system
calls directly. This is because the operating system is untrusted and a syscall
involves the transfer of control ow from trusted code running in an enclave to
untrusted OS code. The latter could be a malicious kernel exposing crafted
system calls capable of compromising the security of the enclave. As a workaround
SGX includes instructions, called OCALLs, that o er the opportunity to
temporarily exit the enclave and calling untrusted code to perform general purpose
operations like system calls, I/O etc. Several studies (Graphene [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], SCONE [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ],
Haven [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], Panoply [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]) have been released on this topic and many of them
aim at overcoming the burden of switching from enclaves to untrusted OS. The
solutions proposed in those projects are based on a syscall forwarding
mechanism that handle the calls to system services inside the enclave and execute them
outside taking care of switch between two di erent context and the transfer of
the data needed to perform the operation requested. This allows the shielded
execution, within a SGX enclave, of unmodi ed legacy applications written for
traditional operating systems. In our paper we are assuming that, if required by
the algorithm that runs inside the enclave and handles the sensitive data, one
of this syscall forwarding mechanism is implemented and we can run arbitrary
code within the enclave.
      </p>
    </sec>
    <sec id="sec-3">
      <title>Trusted volunteer computing system architecture</title>
      <p>
        The proposed architecture is based on a Client-Server model. The clients of the
system are all the users sharing their compute capabilities in the network. Their
work is coordinated by one or more servers which are in charge of splitting the
task to be executed in subtasks and distributing them among the clients. Usually
in volunteer computing networks the server is responsible of many other actions:
collecting the results from the clients and merging them to obtain the result of
the main task, verifying the correctness of the results provided, enforcing client
management policies based on several factors, such that performances or
reliability, of the volunteer devices, just to cite a few. All these server duties are well
known topics fully covered in literature [
        <xref ref-type="bibr" rid="ref21 ref5 ref6">21, 6, 5</xref>
        ].
      </p>
      <p>The volunteers of the network, who wish to share their computational resources,
can achieve this goal by using a client application on their devices. We focus
our attention on protecting the client application, since they tend to run on
platforms that may not have the same degree of control and security as servers.
Nevertheless, the techniques described here can also be applied in order to
protect assets on the server.</p>
      <p>The client application consists of two di erent parts: a trusted and an untrusted
module. The trusted part of the application runs within the SGX enclave and
handles the sensitive data. It is kept as small as possible, it is composed only
by the algorithms which need to deal directly with the secret assets. The
untrusted part of the application is made up of all the rest: graphical user interface,
libraries and all the functionality needed to communicate with the rest of the
network performing tasks such as signaling presence in the network, handling
connections, managing the amount and the type of the resources shared with
the volunteer network. The trusted and untrusted components of the client
application communicate to each other through well-de ned entry-points. These
are designed to ensure that no secrets are allowed to leak out from the enclave.
The integrity and con dentiality of the data inside the enclave is guaranteed by
the the hardware/software protections of SGX.</p>
      <p>The subtasks to be resolved are sent by the remote server to the client
application. The sensitive data is encrypted (see section 4) and is forwarded by the
untrusted part of the client application to the trusted part. After the completion
of the subtask the results, encrypted, are sent back to the remote server which
merges them with the other results coming from other clients to nally get the
result of the main task.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Provisioning and attestation issues</title>
      <p>
        Since our goal is to provide a way to deal with sensitive information in
volunteer computing networks, we need to tackle some security issues related to the
transfer of this data between server and client. Our threat model is based on the
assumption that every client on the network is untrusted, thus we need to provide
a way to secure the communication among all the parties involved. The SGX
enclave must have the assurance of communicating with a legit remote server
and vice versa (this process is called attestation). They also need to establish a
secure channel to talk each other and to transfer the sensitive data (provisioning
phase). To address the issues described we make use of the services provided by
Intel R SGX [
        <xref ref-type="bibr" rid="ref16 ref3">3, 16</xref>
        ]. On the client machine is running, in fact, the SGX Platform
Software (PSW) that includes also a Quoting Enclave containing an asymmetric
attestation key representing the SGX TCB.
      </p>
      <p>
        In response to the rst request of connection from a client application to the
remote server the latter will send to the client an attestation request containing a
nonce for liveness purposes. This request aim at verifying that the software runs
on a legit SGX enclave as well as ensuring the validity of the enclave and
collecting information about the identity of software being attested. It is the untrusted
part of the client, as explained in section 3 that handles the connection with
the remote server. This part of the application receives the attestation request
and forwards it to the trusted part, running inside the enclave. At this point
the trusted part sends a local attestation to the Quoting Enclave through the
untrusted part. The local attestation consists of a report structure along with
a manifest that include the nonce and a temporary public key CP that is used
later by the remote server. The Quoting Enclave creates a remote-attestation
by verifying, and signing (with the asymmetric attestation key) the local one.
The result of this process is called Quote and is sent (always through the
untrusted part) to the remote server. A veri cation server is used by the remote
server to verify the received Quote. To avoid some privacy concerns related to
this scheme [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ] Intel R adopts an extension called Intel R Enhanced Privacy ID
(EPID) [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. EPID signatures are anonymous and thanks to a group signature
scheme, nobody can uniquely identify the platform where the application is
running by looking at objects signed by the application itself. At the end of the
attestation process the remote server is sure to communicate with a legit secure
enclave. The entire client application running alongside the secure enclave is now
part of the volunteer computing network and it is ready to share its
computational resources to solve the subtasks provided by the remote server. It is still
mandatory, however, to ensure that the communication between client and server
is conducted through a secure channel and is necessary to create this channel
along the remote attestation process to avoid the provisioning of sensitive data
to not attested enclaves. To create this channel the temporary public key CP ,
created by the trusted enclave and delivered to the server inside the Quote is
used. The remote server generates an encryption key E, encrypts it with CP and
sends the result of this operation to the application. Only the trusted part of
the client, running within the enclave, knows the private key associated with CP
and can obtain the encryption key E. The sensitive data, as well as the results of
the subtasks, can be encrypted using E, permitting the secure communication
between the client and the remote server.
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>Conclusions and future work</title>
      <p>In this paper we described a new way to further enhance the power of
volunteer computing networks. By the leverage of Intel R Software Guard Extension
we provided a way to build trusted volunteer computing systems without the
problems related to the spread of secret information. Using the system proposed
it is possible to use computational resources of untrusted devices for solving
tasks that deal with sensitive data. As a future development of the approach
described we are working on extending these ideas to other Trusted Execution
Environments (e.g. ARM TrustZone), since they are integrated in most of the
new smartphones.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Albert</surname>
            <given-names>D</given-names>
          </string-name>
          <string-name>
            <surname>Alexandrov</surname>
          </string-name>
          et al. \
          <article-title>Superweb: Towards a global web-based parallel computing infrastructure"</article-title>
          .
          <source>In: Parallel Processing Symposium</source>
          ,
          <year>1997</year>
          . Proceedings., 11th International. IEEE.
          <year>1997</year>
          , pp.
          <volume>100</volume>
          {
          <fpage>106</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Tiago</given-names>
            <surname>Alves</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Don</given-names>
            <surname>Felton</surname>
          </string-name>
          , et al. \
          <article-title>Trustzone: Integrated hardware and software security"</article-title>
          .
          <source>In: ARM white paper 3</source>
          .4 (
          <issue>2004</issue>
          ), pp.
          <volume>18</volume>
          {
          <fpage>24</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Ittai</given-names>
            <surname>Anati</surname>
          </string-name>
          et al. \
          <article-title>Innovative technology for CPU based attestation and sealing"</article-title>
          .
          <source>In: Proceedings of the 2nd international workshop on hardware and architectural support for security and privacy</source>
          . Vol.
          <volume>13</volume>
          .
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>David P Anderson</surname>
          </string-name>
          . \
          <article-title>Boinc: A system for public-resource computing and storage"</article-title>
          .
          <source>In: Grid Computing</source>
          ,
          <year>2004</year>
          . Proceedings. Fifth IEEE/ACM International Workshop on. IEEE.
          <year>2004</year>
          , pp.
          <volume>4</volume>
          {
          <fpage>10</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>David P Anderson</surname>
          </string-name>
          , Carl Christensen, and Bruce Allen. \
          <article-title>Designing a runtime system for volunteer computing"</article-title>
          .
          <source>In: SC 2006 Conference, Proceedings of the ACM/IEEE. IEEE</source>
          .
          <year>2006</year>
          , pp.
          <volume>33</volume>
          {
          <fpage>33</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>David P Anderson</surname>
          </string-name>
          , Eric Korpela, and Rom Walton. \
          <article-title>High-performance task distribution for volunteer computing"</article-title>
          .
          <source>In: e-Science and Grid Computing</source>
          ,
          <year>2005</year>
          . First International Conference on.
          <source>IEEE</source>
          .
          <year>2005</year>
          , 8{pp.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>David P Anderson</surname>
          </string-name>
          et al. \
          <article-title>SETI@ home: an experiment in public-resource computing"</article-title>
          .
          <source>In: Communications of the ACM 45.11</source>
          (
          <year>2002</year>
          ), pp.
          <volume>56</volume>
          {
          <fpage>61</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Sergei</given-names>
            <surname>Arnautov</surname>
          </string-name>
          et al. \
          <article-title>SCONE: Secure linux containers with Intel SGX"</article-title>
          .
          <source>In: 12th USENIX Symp. Operating Systems Design and Implementation</source>
          .
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Arash</given-names>
            <surname>Baratloo</surname>
          </string-name>
          et al. \
          <article-title>Charlotte: Metacomputing on the web"</article-title>
          .
          <source>In: Future Generation Computer Systems 15.5</source>
          (
          <issue>1999</issue>
          ), pp.
          <volume>559</volume>
          {
          <fpage>570</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>Andrew</given-names>
            <surname>Baumann</surname>
          </string-name>
          , Marcus Peinado, and Galen Hunt. \
          <article-title>Shielding applications from an untrusted cloud with haven"</article-title>
          .
          <source>In: ACM Transactions on Computer Systems (TOCS) 33.3</source>
          (
          <issue>2015</issue>
          ), p.
          <fpage>8</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>Ernie</given-names>
            <surname>Brickell</surname>
          </string-name>
          and
          <string-name>
            <given-names>Jiangtao</given-names>
            <surname>Li</surname>
          </string-name>
          .
          <article-title>\Enhanced privacy ID from bilinear pairing for hardware authentication and attestation"</article-title>
          .
          <source>In: International Journal of Information Privacy, Security and Integrity 2 1</source>
          .1 (
          <issue>2011</issue>
          ), pp.
          <volume>3</volume>
          {
          <fpage>33</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Victor</given-names>
            <surname>Costan</surname>
          </string-name>
          and
          <string-name>
            <given-names>Srinivas</given-names>
            <surname>Devadas</surname>
          </string-name>
          . \
          <source>Intel SGX Explained." In: IACR Cryptology ePrint Archive</source>
          <year>2016</year>
          (
          <year>2016</year>
          ), p.
          <fpage>86</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Andrew</surname>
            <given-names>S Glassner.</given-names>
          </string-name>
          <article-title>An introduction to ray tracing</article-title>
          .
          <source>Elsevier</source>
          ,
          <year>1989</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <article-title>Graphene Library OS for Intel SGX</article-title>
          . https://github.com/oscarlab/ graphene/wiki/Introduction-to-
          <source>Intel-SGX-Support. Accessed: 2017- 03-12.</source>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>Jayavardhana</given-names>
            <surname>Gubbi</surname>
          </string-name>
          et al. \
          <article-title>Internet of Things (IoT): A vision, architectural elements, and future directions"</article-title>
          .
          <source>In: Future generation computer systems 29.7</source>
          (
          <issue>2013</issue>
          ), pp.
          <volume>1645</volume>
          {
          <fpage>1660</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>Simon</given-names>
            <surname>Johnson</surname>
          </string-name>
          et al. \
          <article-title>Intel software guard extensions: EPID provisioning and attestation services"</article-title>
          .
          <source>In: White Paper</source>
          (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Stefan</surname>
            <given-names>M Larson</given-names>
          </string-name>
          et al. \
          <article-title>Folding@ Home and Genome@ Home: Using distributed computing to tackle previously intractable problems in computational biology"</article-title>
          .
          <source>In: arXiv preprint arXiv:0901.0866</source>
          (
          <year>2009</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>Stefan</given-names>
            <surname>Poslad</surname>
          </string-name>
          .
          <article-title>Ubiquitous computing: smart devices, environments and interactions</article-title>
          . John Wiley &amp; Sons,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>Ori</given-names>
            <surname>Regev</surname>
          </string-name>
          and
          <string-name>
            <given-names>Noam</given-names>
            <surname>Nisan</surname>
          </string-name>
          . \
          <article-title>The popcorn market. online markets for computational resources"</article-title>
          .
          <source>In: Decision Support Systems 28.1</source>
          (
          <issue>2000</issue>
          ), pp.
          <volume>177</volume>
          {
          <fpage>189</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Luis</surname>
            <given-names>FG Sarmenta.</given-names>
          </string-name>
          \Bayanihan:
          <article-title>Web-based volunteer computing using Java"</article-title>
          .
          <source>In: International Conference on Worldwide Computing and Its Applications</source>
          . Springer.
          <year>1998</year>
          , pp.
          <volume>444</volume>
          {
          <fpage>461</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>Luis</surname>
            <given-names>FG Sarmenta.</given-names>
          </string-name>
          \
          <article-title>Volunteer computing"</article-title>
          .
          <source>PhD thesis</source>
          . Massachusetts Institute of Technology,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>Shweta</given-names>
            <surname>Shinde</surname>
          </string-name>
          et al. \
          <article-title>Panoply: Low-TCB Linux Applications With SGX Enclaves"</article-title>
          .
          <source>In: 24th Annual Network and Distributed System Security Symposium, NDSS</source>
          <year>2017</year>
          , San Diego, California, USA,
          <source>February 26-March 1</source>
          ,
          <year>2017</year>
          .
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>George</given-names>
            <surname>Woltman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Scott</given-names>
            <surname>Kurowski</surname>
          </string-name>
          , et al. \
          <article-title>The great internet mersenne prime search"</article-title>
          . In: Online],(
          <year>1997</year>
          , March 23) available http://www. mersenne. org (
          <year>2004</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <article-title>Working Document on Trusted Computing Platforms and in particular on the work done by the Trusting Computing Group (TCG group)</article-title>
          .
          <source>Article 29 Data Protection Working Party. European Commission</source>
          , Brussels,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>