<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article  PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article"><front><journal-meta><journal-id journal-id-type="publisher-id">JCC</journal-id><journal-title-group><journal-title>Journal of Computer and Communications</journal-title></journal-title-group><issn pub-type="epub">2327-5219</issn><publisher><publisher-name>Scientific Research Publishing</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.4236/jcc.2017.56001</article-id><article-id pub-id-type="publisher-id">JCC-75210</article-id><article-categories><subj-group subj-group-type="heading"><subject>Articles</subject></subj-group><subj-group subj-group-type="Discipline-v2"><subject>Computer Science&amp;Communications</subject></subj-group></article-categories><title-group><article-title>
 
 
  Survey on Three Components of Mobile Cloud Computing: Offloading, Distribution and Privacy
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Anirudh</surname><given-names>Paranjothi</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Mohammad</surname><given-names>S. Khan</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Mais</surname><given-names>Nijim</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib></contrib-group><aff id="aff1"><addr-line>Department of Electrical Engineering and Computer Science, Texas A&amp;amp;M University, Kingsville, TX, USA</addr-line></aff><author-notes><corresp id="cor1">* E-mail:<email>adhoc.khan@gmail.com(AP)</email>;</corresp></author-notes><pub-date pub-type="epub"><day>06</day><month>04</month><year>2017</year></pub-date><volume>05</volume><issue>06</issue><fpage>1</fpage><lpage>31</lpage><history><date date-type="received"><day>18,</day>	<month>January</month>	<year>2017</year></date><date date-type="rev-recd"><day>3,</day>	<month>April</month>	<year>2017</year>	</date><date date-type="accepted"><day>6,</day>	<month>April</month>	<year>2017</year></date></history><permissions><copyright-statement>&#169; Copyright  2014 by authors and Scientific Research Publishing Inc. </copyright-statement><copyright-year>2014</copyright-year><license><license-p>This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/</license-p></license></permissions><abstract><p>
 
 
  Mobile Cloud Computing (MCC) brings rich computational resource to mobile users, network operators, and cloud computing providers. It can be represented in many ways, and the ultimate goal of MCC is to enable execution of rich mobile application with rich user experience. Mobility is one of the main characteristics of MCC environment where user can be able to continue their work regardless of movement. This literature review paper presents the state-of-the-art survey of MCC. Also, we provide the communication architecture of MCC and taxonomy of mobile cloud in which specifically concentrates on offloading, mobile distribution computing, and privacy. Through an extensive literature review, we found that MCC is a technologically beneficial and expedient paradigm for virtual environments in terms of virtual servers in a distributed environment, multi-tenant architecture and data storing in a cloud. We further identified the drawbacks in offloading, mobile distribution computing, privacy of MCC and how this technology can be used in an effective way.
 
</p></abstract><kwd-group><kwd>Cloud Computing</kwd><kwd> Mobile Cloud Computing</kwd><kwd> Offloading</kwd><kwd> Distribution and Privacy</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>Smartphones are becoming popular and its users are increasing rapidly every year. Features of smart phones include touch screen interface, Wi-Fi, high speed processors, GPS, etc. Popularity of smartphones allows developers to develop mobile applications in various domains like sports, games, finance, education, etc. [<xref ref-type="bibr" rid="scirp.75210-ref1">1</xref>] . Still these devices are suffered from issues like limited storage space, limited bandwidth and energy due to development of complex mobile applications. To solve these issues cloud computing techniques were introduced. Some of the popular cloud service providers are Amazon, Windows, Google, etc. Heavy Reading [<xref ref-type="bibr" rid="scirp.75210-ref2">2</xref>] and ABI research [<xref ref-type="bibr" rid="scirp.75210-ref3">3</xref>] suggested that revenue of MCC market $68 billion in 2017.</p><p>MCC is the combination of cloud computing, mobile computing and wireless networks. Advantages of MCC over cloud computing are:</p><p>1) Flexibility: Due to flexibility, users can access the data using their devices from any part of the world. But the user should have proper internet connectivity.</p><p>2) Data availability: Data availability allows the user to access their data at any time. It also provides the facility of multiple users accessing the same data simultaneously.</p><p>3) Multiple platforms: MCC also provides support for multiple platforms. It allows users to access their data in cloud irrespective of any platform.</p><p>Current cloud computing provides following facilities to the user: 1) Executing operations on cloud, 2) Large storage capacity, 3) Backup, 4) Traffic counting, 5) Ability to choose datacenters. Cloud providers mainly concentrate on areas like throughput, memory, availability of server, storage, etc. Also, they are providing three basic services for MCC:</p><p>1) Platform service: Platform as a Service (PaaS) provides hardware and software for the user to create, modify, run their applications. Main advantage of Paas is that it allows user to execute and complete their tasks without having appropriate software or hardware.</p><p>2) Application services: Application services are also known as Software as a Service (Saas). It provides software application to the user whenever they need it over the internet. It gained more popularity in software market due to software on demand. The main advantage of using Saas is: 1) Cost savings, 2) Efficiency. It also eliminates the issue of individual user license and thereby reduces the expense of an organization.</p><p>3) Context-rich services: Mobile applications are becoming popular and providing context aware services to its users. To support this, MCC providers are providing context rich services to the users. It includes congestion detection, discovering parking space, etc.</p><p>Papers [<xref ref-type="bibr" rid="scirp.75210-ref4">4</xref>] [<xref ref-type="bibr" rid="scirp.75210-ref5">5</xref>] [<xref ref-type="bibr" rid="scirp.75210-ref6">6</xref>] [<xref ref-type="bibr" rid="scirp.75210-ref7">7</xref>] have not discussed in detail about various techniques involved in MCC. This paper gives the overall idea about offloading, mobile distribution, and privacy in the cloud. Further this paper gives information about various factors affecting MCC and future of cloud computing environment.</p><p>Rest of the paper is organized as follows: Section 2 discusses about current mobile cloud architecture and programming model; Section 3 discusses about Offloading mobile applications in cloud; Section 4 focuses on Mobile distribution computing and cloud; Section 5 discusses about Privacy in cloud and user authentication. Finally, we presented the conclusion and future work in Section 6.</p></sec><sec id="s2"><title>2. Current Mobile Cloud Architecture and Programming Models</title><p>Mobile cloud architecture:</p><p>Current mobile cloud computing architecture includes following components: 1) Regional Data center (RDC), 2) Wireless core, 3) Base stations. It is repre- sented in <xref ref-type="fig" rid="fig1">Figure 1</xref>. MCC architecture allows users to offload their operations on cloud [<xref ref-type="bibr" rid="scirp.75210-ref8">8</xref>] . Example: Global Positioning System [GPS], multiplayer games, etc. [<xref ref-type="bibr" rid="scirp.75210-ref9">9</xref>] . But, it is most suitable for heterogeneous environments [<xref ref-type="bibr" rid="scirp.75210-ref10">10</xref>] .</p><p>RDC: It is used in home computer systems and its associated elements like storage and telecommunication systems. RDC consists of various security devices, power supplies, environment controls, etc. Cloud data centers are distributed in different locations around the world [<xref ref-type="bibr" rid="scirp.75210-ref11">11</xref>] .</p><p>Wireless core network: Routing the telephone calls across PST is the main function of wireless core network. Also, it provides various services to users who are connected in a network.</p><p>Programming models:</p><p>Existing programming models in MCC are: 1) Clone cloud, 2) MAUI, 3) Odessa, 4) Orleans, 5) RESTFUL [<xref ref-type="bibr" rid="scirp.75210-ref9">9</xref>] . These programming models are briefly discussed below. <xref ref-type="table" rid="table1">Table 1</xref> illustrates comparison of programming model based on blocking state, cloud state and remote execution unit.</p><table-wrap id="table1" ><label><xref ref-type="table" rid="table1">Table 1</xref></label><caption><title> Programming model comparison</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Models</th><th align="center" valign="middle" >Blocking</th><th align="center" valign="middle" >Cloud state</th><th align="center" valign="middle" >Remote exec. Unit</th></tr></thead><tr><td align="center" valign="middle" >Clone Cloud</td><td align="center" valign="middle" >Yes</td><td align="center" valign="middle" >Full thread</td><td align="center" valign="middle" >Thread</td></tr><tr><td align="center" valign="middle" >MAUI</td><td align="center" valign="middle" >Yes</td><td align="center" valign="middle" >Partial</td><td align="center" valign="middle" >Method</td></tr><tr><td align="center" valign="middle" >Odessa</td><td align="center" valign="middle" >Yes</td><td align="center" valign="middle" >Partial</td><td align="center" valign="middle" >App task</td></tr><tr><td align="center" valign="middle" >Orleans</td><td align="center" valign="middle" >No</td><td align="center" valign="middle" >Partial</td><td align="center" valign="middle" >Grains</td></tr><tr><td align="center" valign="middle" >RESTful</td><td align="center" valign="middle" >No</td><td align="center" valign="middle" >No</td><td align="center" valign="middle" >Cloud task</td></tr></tbody></table></table-wrap><p>1) Clone cloud: Clone cloud allows its users to have own copy of their cloud. By providing this facility, user will have full control over their clouds. Clone cloud consists of solver, profiler and analyzer. Solver in clone cloud is responsible for offloading the data on cloud. It will be based on dynamic profiler and static analyzer.</p><p>2) MAUI: This programming model is based on Microsoft.NET framework. Profiler in MAUI framework makes remotable decisions. Resource demanding process can be accessed with the help of Remote Procedure Call (RPC). This model is platform and language independent.</p><p>3) Odessa: It is a parallel processing framework where developers have to arrange their applications in the form of data flow graph. In graph, vertices are called as stages and edges are called as connectors. In Odessa, connectors give information about data dependency between stages. This programming model is mostly suitable for media applications. Existing applications cannot be accessed in Odessa framework.</p><p>4) Orleans: It is the reliable framework for establishing scalable, elastic applications on cloud. Orleans consists of grains, which uses asynchronous messages for communication. Application developer in Orleans mainly concentrates on logic since it provides scalability, reliability and availability during its runtime. It is one of the promising programming models in MCC environment.</p><p>5) RESTFUL: This programming model is developed due to media processing applications often requires components for gesture recognition, face recognition, etc. In this model, appropriate functions can be invoked whenever they are needed. It can be done by using http or https protocol.</p></sec><sec id="s3"><title>3. Offloading Mobile Applications in Cloud</title><p>In recent days, cloud computing research has been moved towards how to make offloading decisions rather than concentrating on making offloading feasible. Analytical model helps in making these decisions [<xref ref-type="bibr" rid="scirp.75210-ref12">12</xref>] [<xref ref-type="bibr" rid="scirp.75210-ref13">13</xref>] . Offloading and parallelism are the two main factors that impact the system performance. In this section we illustrated the existing frameworks suitable for offloading in mobile application environment.</p><p>Offloading: Transferring computations to servers available on the cloud are called offloading [<xref ref-type="bibr" rid="scirp.75210-ref8">8</xref>] . Offloading decisions can be done in two ways 1) Manually by the developers [<xref ref-type="bibr" rid="scirp.75210-ref14">14</xref>] 2) Automatically using tools [<xref ref-type="bibr" rid="scirp.75210-ref15">15</xref>] .</p><sec id="s3_1"><title>3.1. Odessa Framework</title><p>Odessa is a lightweight framework, designed for mobile applications [<xref ref-type="bibr" rid="scirp.75210-ref17">17</xref>] . Odessa makes offloading more flexible. Mobile application has three main requirements: 1) Crisp response, 2) Continuous data processing 3) Algorithms should be computed intensive. This framework provides three major contributions: 1) Odessa contributes to offloading and parallelism decisions. 2) Odessa designs a light weight mobile interactive perception applications. 3) It works well across variety of execution environments. The authors used three different applications to measure their system performance. The applications are described below in detail.</p>Interactive Perception Applications<p>Face Recognition:</p><p>Face recognition application is represented in <xref ref-type="fig" rid="fig2">Figure 2</xref>(a). Face detector and classifier are the main components involved in it. Face detector is used to detect faces using OpenCV [<xref ref-type="bibr" rid="scirp.75210-ref18">18</xref>] , Haar classifier and face classifier will classify the faces detected by face detector using a dedicated algorithm.</p><p>Object and Pose Recognition:</p><p>Object and Pose recognition application is represented in <xref ref-type="fig" rid="fig2">Figure 2</xref>(b). Four</p><p>main components are involved in it. First, the image will go through a downscale to extract SIFT features [<xref ref-type="bibr" rid="scirp.75210-ref20">20</xref>] . Second, the extracted SIFT features will be compared with previously constructed 3D models. Object features are clustered by position to isolate different occurrences. RANdom SAmple Consensus (RANSAC) algorithm identifies each occurrence of image with estimated 6D posture.</p><p>Recognition of Gesture:</p><p>Gesture recognition application is represented in <xref ref-type="fig" rid="fig2">Figure 2</xref>(c). Face detection and motion extraction are the major components involved in it. It extracts SIFT features to encode optical flow. These features are then filtered by positions to compare with previously generated histograms. The histograms are used as an input for machine identifies the control gestures.</p></sec><sec id="s3_2"><title>3.2. Sprout</title><p>Sprout is a distributed system used for stream processing [<xref ref-type="bibr" rid="scirp.75210-ref21">21</xref>] . It is used to create and execute parallel processing applications [<xref ref-type="bibr" rid="scirp.75210-ref17">17</xref>] . The main goal of sprout is to support processing of high streaming data. Two important features of sprout are: 1) Automated data transfer, 2) Parallelism support. Also, sprout provides the mechanism of adjusting applications dynamically at run time, changes the degree of parallelism, migrating processing stages between machines.</p></sec><sec id="s3_3"><title>3.3. Odessa Design</title><p>Odessa uses the concepts of offloading, pipelining and data parallelism to improve its performance and accuracy. Odessa has three main goals they are</p><p>1) To satisfy the need of mobile applications Odessa should accomplish low make span and high throughput.</p><p>2) It should concentrate on input complexity change, device capability and network conditions.</p><p>3) It should have low communication and computation overhead.</p></sec><sec id="s3_4"><title>3.4. ThinkAir Framework</title><p>ThinkAir is one of the simplest frameworks in Mobile Cloud Computing (MCC) [<xref ref-type="bibr" rid="scirp.75210-ref22">22</xref>] , represented in <xref ref-type="fig" rid="fig3">Figure 3</xref>. It allows developers to migrate their software to the cloud. Smart phone virtualization and method-level computation offloading are two main concepts adopted by ThinkAir. Offloading in ThinkAir removes the restrictions caused by CloneCloud during the process of offloading [<xref ref-type="bibr" rid="scirp.75210-ref22">22</xref>] . It also on-demand resource allocation for efficient performance of an application. Parallelism is attained by dynamically creating, destroying virtual machines in the cloud.</p></sec><sec id="s3_5"><title>3.5. ThinkAir Design</title><p>ThinkAir framework is designed based on following parameters: 1) Mobile broad band connectivity and speeds are increasing continuously, 2) Capabilities of smart phones are increasing, 3) Cloud computing is becoming more popular, and provide resources to users at low cost. The design goals of ThinkAir are:</p><p>1) Adaptation</p><p>ThinkAir framework easily adapts according to environment and it also avoids interference of correct executing software.</p><p>2) Ease of Use</p><p>ThinkAir framework provides simple interface for developers to avoid the issue of misusing framework [<xref ref-type="bibr" rid="scirp.75210-ref22">22</xref>] and it increased competition among developers.</p><p>3) Performance improvement</p><p>ThinkAir framework improves performance and efficiency of mobile devices by binding smartphones to the cloud.</p><p>4) Dynamic scaling</p><p>ThinkAir provides the feature of calculating computational power dynamically at server side. It also provides parallel executions to improve the performance.</p><p>This framework has three major components: 1) Execution Environment, 2) Application servers, 3) Profilers.</p></sec><sec id="s3_6"><title>3.6. Compilation and Execution</title><p>Compilation and Execution section of ThinkAir deals with three major areas: 1) Programmer API, 2) Compiler, 3) Execution controller.</p><p>1) Programmer API</p><p>ThinkAir contains library with compiler since the developer can access execution environment indirectly. Method considered for offloading is commented with @Remote. ThinkAir code generator generates necessary remote able method with utility functions by taking source file as input and execution controller is used for method invocation and detects the given method is suitable for offloading or not.</p><p>2) Compiler</p><p>ThinkAir Compiler consists of two parts 1) Remoteable Code Generator, 2) Native Development Kit (NDK). Remoteable code generator used for annotated code translation and Native Development Kit (NDK) used for native code support in cloud.</p><p>3) Execution Controller</p><p>Execution controller executes remotable methods and makes offloading decisions. Offloading decision depends on the data collected during past execution, the current environment and user’s policies. There are four such policies combine with execution time, energy and cost. The four policies are, 1) Execution Time, 2) Energy, 3) Execution time and energy, 4) Execution time, energy, and cost.</p><p>4) Execution Flow</p><p>Execution Controller starts with profiler to provide data for future invocations and it decides this invocation is suitable for offloading or not. If it is suitable for offloading, then it can be migrated to the cloud using java reflection technique. If it is not suitable for offloading or if connection fails, then execution will back to local execution environment (i.e., smart phone) by eliminating the data collected by the profiler.</p></sec></sec><sec id="s4"><title>4. Mobile Distribution Computing and Cloud</title><p>Mobile distribution computing will provide access to widely distributed resources. Distribution computing has the advantages of scalability, fault tolerance, and load balancing. In many situations processing tasks needs to be distributed. However, in distribution computing there is chance of communication failure because it could fail at any time. This section gives the information about various distribution techniques used in the cloud.</p><sec id="s4_1"><title>4.1. Clone 2 Clone (C2C)</title><p>Clone 2 Clone (C2C) [<xref ref-type="bibr" rid="scirp.75210-ref23">23</xref>] provides distributed peer to peer platform for smartphones. Performance measurement of C2C in private and public clouds shows that it is possible to implement C2C in distributed environment with 3 times lesser cellular traffic. In addition, it also saves 99%, 80% and 30% of the battery respectively.</p></sec><sec id="s4_2"><title>4.2. C2C: Architecture Design</title><p>C2C platform needs a mechanism to enable peer to peer networking, to notify others about the presence of others. In C2C, CloneDS (i.e., Clone Directory Services) maps its users to clones and clones to IPs. To establish a connection in C2C platform, request a clone with public IP and key pair. Key pair can be public key or private key. C2C architecture is represented in <xref ref-type="fig" rid="fig4">Figure 4</xref> and it consists of five basic steps: 1) DS register, 2) DS lookup, 3) C2C Connect, 4) User lookup, 5) User clone connection.</p><p>DS register: Clone id, public key, IP address and device id will be send to clone DS from the clone.</p><p>DS lookup: Clone A obtains a list signed by CloneDS. The list contains the details of signed clones with their IP address and public keys.</p><p>C2C connect: Peer to peer connection will be established with other clones from clone A.</p><p>User lookup: User A can always get her clone’s IP through a CloneDS lookup.</p><p>User clone connection: It establish a connection with user through Public IP.</p></sec><sec id="s4_3"><title>4.3. C2C and Security</title><p>In C2C, communication between the user and clone is secured by the shared symmetric key. This architecture provides trust to the users through CloneDS but some destructive cloud providers use this opportunity by connecting user to harmful ones.</p></sec><sec id="s4_4"><title>4.4. CloneDoc Framework</title><p>CloneDoc and SPORC [<xref ref-type="bibr" rid="scirp.75210-ref24">24</xref>] provide more complexity to the system, but the main advantage of using such system is that it will improve the battery performance by reducing its usage. CloneDoc receives the operations from user’s smart phones and keeps the device updated. The clone maintains two states 1) pending queue, 2) committed queue [<xref ref-type="bibr" rid="scirp.75210-ref25">25</xref>] . The clone in C2C delivers operation received from device to server and again send backs the result to appropriate devices. To handle these tasks, it maintains a queue. It should be managed in such a way that</p><p>delay should be minimum. CloneDoc contains a protocol to solve this problem. It is commonly known as clone user consistency protocol. In CloneDoc, clone is also responsible for detecting server malfunction. Detecting server malfunction contains checking of encryption and decryption operation, sequence numbers, etc.</p></sec><sec id="s4_5"><title>4.5. Code in the Air</title><p>Code In The Air (CITA) [<xref ref-type="bibr" rid="scirp.75210-ref26">26</xref>] is a system which simplifies the rapid development tasking applications. It can be handled by both expert users, non-expert users. In CITA non expert users specify their tasks easily over phone and expert users specify their tasks by writing server side scripts. Current approaches have two major problems: 1) Poor abstraction, 2) Poor programming support. CITA helps developers as well as end users.</p></sec><sec id="s4_6"><title>4.6. CITA Architecture</title><p>CITA architecture has following 3 components, 1) Tasking framework, 2) Activity layer, 3) Push communication and it is represented in <xref ref-type="fig" rid="fig5">Figure 5</xref>.</p><p>Tasking framework: It allows developers to write and compile scripts. Compilation of scripts can be done in server side. CITA also provides JavaScript interface for its developers to manipulate different devices in single program. Backend of CITA deals with device coordination and efficient execution of code on different devices</p><p>Activity layer: Activity layer in CITA provides an extensive abstraction to high level activities and also it provides facility of energy efficient recognition of an activity.</p><p>Push communication: it improves on the energy and load shortcomings of existing systems.</p></sec><sec id="s4_7"><title>4.7. CITA Activity Layer</title><p>CITA contains an activity layer. The main purpose of activity layer is to express conditions.</p><sec id="s4_7_1"><title>4.7.1. Place Hierarchies</title><p>CITA uses a built-in location hierarchy, it identifies three types of locations: 1) Room level, Floor level 3) Building level. These hierarchies are having different implementations.</p><p>Room level location hierarchy: It is used to match a named location if Wi-Fi signal strength is good.</p><p>Floor level location hierarchy: It is used during overlapping of Wi-Fi signals.</p><p>Building level location hierarchy: It is used to refer the buildings or large bounding box on a map.</p><p>CITA contains two activity detectors: 1) enterPlace, 2) leavePlace. It will be called when a user enters and leaves a location respectively [<xref ref-type="bibr" rid="scirp.75210-ref26">26</xref>] .</p></sec><sec id="s4_7_2"><title>4.7.2. Activity Composition</title><p>CITA allows developers and users to create high level activities using logical predicates [<xref ref-type="bibr" rid="scirp.75210-ref26">26</xref>] . This is one of the advantages of CITA because it provides reusability. Developers and end users can reuse activity modules created by other developers to write their own activities. CITA supports AND, OR, NOT, WITHIN, FOR, NEXT primitives.</p></sec></sec><sec id="s4_8"><title>4.8. Dial to Deliver Push Service</title><p>CITA provides an asynchronous message delivery service to mobile devices from CITA server [<xref ref-type="bibr" rid="scirp.75210-ref26">26</xref>] but it has three major problems.</p><p>1) The information to be delivered is very less.</p><p>2) TCP connection in mobile devices leads to timeout due to long waiting time.</p><p>3) Current push notifications limits notifications of specific types.</p><p>CITA uses standard telephone service. It contains the registered users phone numbers. To verify the user, CITA server initiates a voice call on the other end CITA client verify the phone number. If the number matches it wakes up the client. The main disadvantage of using this service is, load on the network will be increased.</p></sec><sec id="s4_9"><title>4.9. WhereStore</title><p>WhereStore provides location based storage for mobile devices. It uses the technique of filtered replication to distribute location history among mobile devices [<xref ref-type="bibr" rid="scirp.75210-ref27">27</xref>] . WhereStore reduces energy consumption by exchanging data in clouds. Location specific applications are the one differentiates computer from mobile phones [<xref ref-type="bibr" rid="scirp.75210-ref28">28</xref>] . The following applications are benefitted from WhereStore framework: 1) Web applications, 2) Media player, 3) Live traffic and sensing applications.</p></sec><sec id="s4_10"><title>4.10. Where Store Background</title><p>WhereStore is designed using two techniques: 1) location prediction, 2 Replication system [<xref ref-type="bibr" rid="scirp.75210-ref27">27</xref>] .</p><sec id="s4_10_1"><title>4.10.1. Replication</title><p>Replication system uses collection as its major technique. It is used to maintain data synchronization between peers. Collection in a replication system has user data and meta data. It will be represented as separate items. In a filtered system, filter identifies the subset where the data is stored exactly. Consider the example of separating the JPEG images according to geographical region. It can be done by identify the images according to the geotag attached in it. There are two major goals involved in filtered replication system:</p><p>1) Each clone stores exactly matching item in its filter.</p><p>2) In each clone version of items should be same.</p></sec><sec id="s4_10_2"><title>4.10.2. Predicting Location</title><p>GPS in mobile devices provides location based services to the user. Location based services provides the advantages of tracking the user [<xref ref-type="bibr" rid="scirp.75210-ref29">29</xref>] [<xref ref-type="bibr" rid="scirp.75210-ref30">30</xref>] . The main idea of using location prediction in WhereStore is to predict the future location of the user by matching past location history of the user with present location [<xref ref-type="bibr" rid="scirp.75210-ref31">31</xref>] .</p></sec></sec><sec id="s4_11"><title>4.11. WhereStore System Framework</title><p>WhereStore provides dynamic data storage for its user’s. It will be based on two parameters: 1) past location of the user, 2) present location of the user. The conceptual view of WhereStore is represented in <xref ref-type="fig" rid="fig6">Figure 6</xref>. WhereStore provides complete control to its user. Here, data will be grouped according to the graphical regions where the is likely to stay. It ensures availability of data in user’s current location. WhereStore provides complete transparent mechanism for data placement when compared to other frameworks.</p><p>WhereStore will be located top of the replication system and location service. In which, replication layer consists of various collections. Each application in WhereStore has separate collections. The replication layer creates clones (i.e., replicas) for mobile devices and cloud. Each clone has its own storage capacity and filter. Storage capacity of each clone specifies the maximum number of bytes. WhereStore semantics are same as cache (i.e.,) the cloud can be accessed only when the item is not available in a local environment. The filter located in each clone will be adjusted according to the current location of user.</p><sec id="s4_11_1"><title>4.11.1. Types of Data</title><p>WhereStore acts on groups, regions and items. Each item can be identified using its key and priority associated to it. Data can be divided into several items. Groups are set of items and regions gives information about different geographical area. WhereStore has a separate interface to create application, maintain regions and groups. According to the geographical areas regions will be created and each region will be associated with multiple groups.</p></sec><sec id="s4_11_2"><title>4.11.2. Filters</title><p>Filters in WhereStore specify the items stored in a given location. It has set of filters each possible future location. Future locations will be identified using current location based on the location prediction system. Consider (l<sub>1</sub>, l<sub>2</sub>, l<sub>3</sub>, … l<sub>n</sub>) be the future location with probability p<sub>i</sub>. WhereStore create new filters (f<sub>i</sub>) for each possible future location. When the devices location changes new set of filters which is computed and updated recently will be passed into the replication. Each replication system has its own probability p<sub>i </sub>and maximum storage capacity. The rank of items will be based on occurrences. If a particular item is located in more filters, rank will be high.</p></sec><sec id="s4_11_3"><title>4.11.3. Cloud Synchronization</title><p>Data exchange is performed in replication platform using synchronization established between cloud and smartphones. It provides the advantage to the smartphone by having only items which matches exactly with filter. Smartphones suffers due to limited storage capacity. To utilize the space in a proper manner, smartphones filter will be evaluated in a cloud. Each filter will be associated with a cloud calculates the set of items matches with filter and rank will be provided to each item. Storage capacity of each item calculated according to the rank.</p></sec></sec><sec id="s4_12"><title>4.12. Implementation of WhereStore</title><p>WhereStore implementation is based on clientserver architecture. Here, cloud act as server and user’s mobile device act as client. The client has two major components 1) location, 2) Replication. Location specifies the information about future smartphone location and contains information of local cache memory on cloud. Architecture of WhereStore is represented in <xref ref-type="fig" rid="fig7">Figure 7</xref>. Whenever application interacts with WhereStore configuration file needs to be provided. Configuration file specifies replication at a particular location. Filters will be updated</p><p>based on input given by the configuration file. Later the updated filter will be used by the replication system.</p><sec id="s4_12_1"><title>4.12.1. Mobile Phone Data Access</title><p>WhereStore use existing data storage for accessing data. There are numerous existing applications stores the data in their own way. WhereStores uses the concept of Cimbiosys as replication system [<xref ref-type="bibr" rid="scirp.75210-ref32">32</xref>] . It uses callback mechanism for accessing the data and implemented whenever needed. Cimbiosys determines the data to be broadcasted during the synchronization process. Wherestore is responsible for creating metadata whenever new item added into it.</p></sec><sec id="s4_12_2"><title>4.12.2. Synchronization of Cache</title><p>In WhereStore, Cimbiosys synchronization exchange messages based on a technique called pull style exchange. It will be done in one way. Here, target clone will establish a synchronization with source clone. The connection will be established by sending a request message. Once the connection gets established, source clone starts checking any of its tem is are not admitted by target clone. If any of such items exist, source clone will return the corresponding item to target clone. The current Cimbiosys model can be expressed in two ways: 1) modification of sync request from mobile device to cloud, 2) modify the filter based on Cimbiosys.</p></sec><sec id="s4_12_3"><title>4.12.3. Location Prediction</title><p>WhereStore uses location prediction technique to predict its user’s possible future location. It can be achieved by using StarTrack framework [<xref ref-type="bibr" rid="scirp.75210-ref33">33</xref>] . In StarTrack framework, location of a user will be captured periodically using smartphones. The captured location will be forwarded to cloud where StarTrack servers will be located. StarTrack server will convert the location it is received from smartphones into tracks. It provides a API (Application Program Interface) to perform operations on tracks. In order to identify where the user will be located in a future, StarTrack uses a technique called place transition graph. This technique will be created based on the tracks generated by StarTrack framework. It also has the detail of places that are visited by the users frequently. Latitude and Longitude pair will be used to create this FrequentPlaces. It will be created based on the tracks. Place transition graph will be constructed based on FrequentPlaces. Usually it will be represented in the form adjacency matrix. First, all the element in the matrix will be initialized as zero. Then, set the corresponding value of each item by combining start and end points. Finally, normalize the value in each row according to the probability. This normalization can be done by adding the trip frequencies of each row and divide each frequency with sum of row.</p></sec></sec><sec id="s4_13"><title>4.13. Virtual Machine Synchronization (VMsync)</title><p>The utility of the mobile device will increase if the user wants to switch from one device to another device. For example, user is able to continue the operation in the second mobile device absolutely where the user left in first mobile device without any delay. VMsync [<xref ref-type="bibr" rid="scirp.75210-ref34">34</xref>] used to synchronize virtual machines (VMs). This synchronization will take place among mobile devices. In device switching, VMs encapsulates computation state and data for a complete operating system and applications associated with it. In VMs application state also getting synchronized along with mobile devices. System level VMs are used in now days to provide improved security and manageability. In order to reduce the delay and make image consistent, VMsync is used. It will transfer the changes made in active VM to other mobile devices. The most important component in VMsync architecture is known as daemon. The main purpose of daemon is to monitor the memory and filesystem of VM. If any changes made, it will report the changes to the server. Server will be located on the cloud, and it will send the changes to devices.</p></sec><sec id="s4_14"><title>4.14. Preliminary Design of VMsync</title><p>The main function of VMsync is to handle VM images across various mobile devices and reducing time between switching devices. It uses method called Switch Penalty to perform device migration. The disadvantage of using this method is, data transfer cost is high. VMsync architecture is represented in <xref ref-type="fig" rid="fig8">Figure 8</xref>. It contains multiple hosts and provides following facilities to the user: 1) Virtualization support, 2) Resource rich server, 3) Synchronization between devices. Initially, VMsync had only one active device. This device is used to update server regarding memory, file system changes over a periodic time. It can be done only when the device is active. This process is known as checkpoint.</p><p>VMs other than active VM are known as standby VM. These VMs are getting updated with the help of synchronization server periodically. But, during the updating process device should be connected to network. Synchronization daemon used to monitor this process. VMs should be designed in a way that it can balance data transfer and computational overhead. Modern mobile operating systems like Windows, Android, iOS, provides support for different hardware manufactured by various companies. This functionality can provide the facility adapting changes in hardware during runtime in future.</p></sec><sec id="s4_15"><title>4.15. Wireless Mesh Networks (WMN)</title><p>Wireless Mesh Networks (WMN) provides a low cost, next generation wireless networking, and also it provides a high speed internet access. Wireless Mesh Network supports wide range of mobile applications. Wireless Mesh Networking with Mobile Cloud Computing (WM-MCC) is considered to be a best solution for large scale big data applications [<xref ref-type="bibr" rid="scirp.75210-ref35">35</xref>] . In Wireless Mesh Networks mobile client is connected to a Base Transceiver Station (BTS) and it access the mesh network via mesh router. While mesh routers will be connected to each other and it will communicate with cloud through internet. The cloud service platform in wireless mesh networks provides data query services.</p></sec></sec><sec id="s5"><title>5. Privacy in Cloud</title><p>Privacy is a major component in MCC. The user needs to understand the standards and procedures provided by the cloud provider to protect their data from threats. The number of businesses and individuals that are moving their data and performing computation on cloud is increasing. Although the cloud computing provides numerous benefits, security remains as one of the major challenge when data and computation are utilized by untrusted third parties [<xref ref-type="bibr" rid="scirp.75210-ref36">36</xref>] . The following section provides the information about different security approaches used in the cloud to protect user data.</p><sec id="s5_1"><title>5.1. Secure Outsourcing of Collective Sensing and Systematic Applications to the Cloud (p-Cloud)</title><p>Two main approaches were proposed to provide security. i) StreamForce, ii) CloudMine.</p><p>Streamforce: It is an access control system for sharing of data over malicious and untrusted clouds. This approach is designed with three goals:</p><p>1. To provide support to specify and impose fine grained access control policies.</p><p>2. To outsource data to cloud if access control methods are enforced.</p><p>3. When handling most expensive computations system will be efficient.</p><p>CloudMine: It is an on-demand and cloud-based service with which different data owners achieve secure analysis over their collective data. This approach supports three essential functions: 1) sum, 2) set union and intersection, 3) scalar product. CloudMine attains three security promises,</p><p>1. It provides data confidentiality in contrast to colluding, semi-honest data owners and semi-honest clouds.</p><p>2. Protection is provided to outputs of joint computation against semi-honest clouds.</p><p>3. Data owners can accurately identify if the cloud has been lazy.</p></sec><sec id="s5_2"><title>5.2. System Model for p-Cloud Approach</title><p><xref ref-type="fig" rid="fig9">Figure 9</xref> represents our system model for deploying collective applications to un-trusted clouds. It includes two entities: 1) client, 2) cloud. On the cloud, a collective task that consists of joint data and computation from different clients is performed. The attacker cloud consists of the un-trusted cloud and clients. There are three levels of un-trustworthiness:</p><p>1. Curious but Honest</p><p>2. Curious and Lazy</p><p>3. Fully Malicious</p><p>Curious and lazy model allows the attackers to compromise while operating carrying out outsourced undertakings. Particularly, the cloud attempts to learn sensitive information and does not effectively corrupts the computation, but rather it tries to do as limited as possible while charging the customers for the same. This model is legitimized by the economic incentives to overcharge clients without being distinguished, however, there are three security properties relating to this framework.</p><p>1. The outsourced data should be protected for input privacy.</p><p>2. The outputs should be protected for output privacy.</p><p>3. Three parameters are included in integrity. Namely: a) Correctness, b) Completeness and c) Freshness.</p><p>Streamforce approach accomplishes input and output privacy as well as correctness in the curious but honesty model. CloudMine accomplishes similar properties yet in the curious and lazy adversary model.</p></sec><sec id="s5_3"><title>5.3. Streamforce Approach</title><p>Streamforce approach utilizes a fine grained access control system to share data in un-trusted clouds. Implement fine-grained access control in collective applications that are out-sourced to an un-trusted cloud. There are two roles assigned to client. Namely a) Data Users, b) Data Owners. An access agreement P is given to user and the owner is provided with private data x along with related attribute I. When the data attribute fulfills the strategy, i.e. P(I) = True, then an authorized client can get access to x. First, the owner sends c = f(x;I) to cloud by using a encoding function f. Later, the cloud changes the encoded data as t = π(c). Lastly, the client assesses a function g(t). In this setting, input privacy infers that the cloud cannot learn x from c. From output privacy and correctness, it is implied that the access control methodology is secure, that is the unauthorized access is not permitted: g(t) = x ↔P(I) = True.</p><p><xref ref-type="fig" rid="fig1">Figure 1</xref>0 illustrates the design space for access control implementation on a cloud domain. It is described into three measurement strategy. Namely: a) fine- graininess, b) cloud reliability and c) cloud/customer work proportion. Trusted cloud can accomplish best fine-graininess. It supports an extensive variety of approaches and accomplishes best work proportion. Streamforce is particularly intended for stream data. It is outlined with three goals:</p><p>1) It supports specification and enforcement of fine-grained access control policies.</p><p>2) Access control policies are enforced when data is outsourced to the cloud.</p><p>3) System is efficient when handling most expensive computations.</p><p>Streamforce security depends on three main encryption strategies. Namely: a) Deterministic ε<sub>d</sub>, b) proxy attribute-based ε<sub>p</sub> and c) sliding window ε<sub>w</sub>.</p><p>Deterministic Encryption technique (DET): It is a private-key strategy that is semantically secure while encoding multiple plaintexts. ε<sub>d</sub> = (Gen, EncDec), ε<sub>d</sub>∙Enc(m) = ε<sub>d</sub>. E n c ( m ′ ) ↔ m = m ′ . The Proxy Attribute Based Encryption technique (PABE) broadens the idea of Key Policy Attribute Based Encryption (KP-ABE). ε<sub>p</sub> = (Gen, KeyGen, Enc; Trans, Dec) [<xref ref-type="bibr" rid="scirp.75210-ref37">37</xref>] . Specifically, a master key MK is generated by Gen(.), a transformation key TK is generated by KeyGen (MK, P) and a predicate P is given by decryption key SK. By utilizing the attributes A, Enc (m, A) encrypts m. Trans (TK; CT) partly decodes the ciphertext, which is later decrypted by Dec(SK,CT’).</p><p>Decryptions and transformation are effective if P(A) = True. Streamforce utilize the strategy provided in [<xref ref-type="bibr" rid="scirp.75210-ref38">38</xref>] . The Sliding Window Encryption technique (WE) permits a client to decrypt just the aggregate of window of ciphertexts but not the individual ciphertexts, ε<sub>w</sub> = (Gen, Enc, Dec). Assume that p(M, ws)[i] and s(M, ws)[i] are the product and sum of i<sup>th</sup> window sliding windows upon a sequence M. The general public parameters and the private keys are created by Gen(k). M is encrypted by Enc (M = (m<sub>0</sub>,m<sub>1</sub>, ….,m<sub>n-1</sub>),W) by utilizing a set of window sizes W, whose outcome is CT = (c<sub>0</sub>, c<sub>1</sub>, c<sub>2</sub>,…). CT is decrypted by Dec (ws,CT, SK<sub>ws</sub>) for the window size ws by utilizing the private key SK<sub>ws</sub>. s(M; ws) [i] for all I is the outcome, which is the aggregate of the sliding window.</p><p>Secure query administrator</p><p>Encryption is determined as a strategy that is used to secure data confidentiality in contrast to the cloud and unauthorized client access. However, straightly presenting encryption details to system entities is not considered as a perfect reflection for access control. Rather, Streamforce models and authorizes access control strategies by means of an arrangement of secure inquiry administrators like: 1) secure Map, 2) Filter, 3) Join and 4) Aggregate.</p><p>Evaluation</p><p>Execute a model of Streamforce over Epser (An open source stream process- ing engine proficient of handling millions of data items every second). Make a benchmark dataset similar to stock market data and containing one million tuples that belong to 100 streams<sup>7</sup>. Throughput and latency of Streamforce are examined through the experiments conducted on Amazon EC2 with 6 multiple policies (T1-T6). The throughputs for various strategies on a single cloud server are demonstrated in <xref ref-type="fig" rid="fig1">Figure 1</xref>1. The maximum throughput is observed for simple strategy using Map operator, which is 250 tuples/sec. This analyzes ineffectively against Esper's execution on plaintext data. In addition, experiment is also carried with different cloud servers and the outcomes demonstrated scalability for both latency and throughput. We shared the workload in- two ways when more cloud servers are added. They are: a) Simple: based on stream, b) Balanced: based on computation load.</p></sec><sec id="s5_4"><title>5.4. Practical Confidentiality in Preserving Big Data Analysis</title><p>Cloud Computing provides support to Big Data Analysis [<xref ref-type="bibr" rid="scirp.75210-ref39">39</xref>] via data flow languages known as Pig Latin [<xref ref-type="bibr" rid="scirp.75210-ref40">40</xref>] . It is of great value to manage sensitive data only</p><p>in an encrypted from in the cloud and to perform reasonable data analysis. Crypsis, is a runtime system for Pig Latin which allows corresponding scripts to be executed efficiently by utilizing cloud resources however without exposing input data in the same form. Crypsis can broaden the scope of encryption empowered big data analysis depending on the following point of view:</p><p>i) Perspective of Extended Program</p><p>Multiple opportunities to operate in encrypted mode are identified by Crypsis by evaluating entire data flow programs.</p><p>ii) Perspective of Extended System</p><p>Cloud resources can be performed by Crypsis instead of giving up and driving users to run the entire data flow programs on their end. This can be done by considering the chance of performing small computations on user end.</p><p>Three main Contributions for preserving big data analysis</p><p>1) Without sacrificing confidentiality propose an architecture for executing Pig Latin scripts</p><p>2) Outline a novel-field sensitive program to study and transform to Pig Latin scripts that can distinguish operation with effects.</p><p>3) Current fundamental assessment results for implementing the solution depending on run time Pig Latin scripts obtained from an open source Apache PigLatin.</p></sec><sec id="s5_5"><title>5.5. Background: PigLatin</title><p>Apache Pig is a data examination platform. It incorporates the Pig runtime framework for high-level data flow language Pig Latin [<xref ref-type="bibr" rid="scirp.75210-ref40">40</xref>] . Pig permits data experts to query big data without the complication of writing MapReduce programs. No fixed schema is required to be operated by Pig. All these properties of Pig Latin and in addition its wide reception made it to be chosen as the data flow language for Crypsis.</p><p>Data types and Statements</p><p>Pig Latin includes simple types (e.g., int, long), and complex types (e.g., bag, tuple, map). In addition, field can be a data item like a tuple, bag, map. Pig Latin statements also work with relations; relations are simply a bag of tuples.</p><p>Expressions and Operators</p><p>Relations are established by loading an input file or by applying relational operators to different relations. Examples of relational operators are JOIN, GROUPBY, FOREACH. etc. Operators in Pig Latin can likewise incorporate casts, arithmetic operators (e.g., +, −, \, *), comparisons, as well as LOAD and STORE operators.</p><p>Functions</p><p>Pig Latin incorporates built-in functions (e.g., ABS, COS AVG) and allows users to define their own user defined functions (UDFs) if needed.</p></sec><sec id="s5_6"><title>5.6. Architecture and System Overview</title><p>Crypsis is having an adversary capable of fully manipulating the cloud infrastructure. The adversary can see encrypted data and Pig Latin scripts that operate on the data and it can control the computation software and control the cloud infrastructure. Crypsis ensures confidentiality in the presence of adversary. <xref ref-type="fig" rid="fig1">Figure 1</xref>2 illustrates the architecture of Crypsis prototype.</p><p>1. Transformation of program</p><p>The client presents a source Pig Latin script that works on unencrypted information. This is evaluated by Crypsis in order to find the suitable encryption scheme through which the input data must be encrypted. Calls to Crypsis UDFs which implement operations on encrypted data are used to replace the operators in source script. The constants are supplanted using their encrypted values in order to create an objective script that can be executed on encrypted data.</p><p>2. Encryption techniques missing in cloud</p><p>The parts of input data that are encrypted previously and stored in cloud are tracked by an encryption service which contains an input data encryption sche-</p><p>ma. Depending on the input data encryption schema as well as the recommended encryption schemes assumed in previous step, the encryption service determines the encryption schemas lacking in the cloud.</p><p>3. Encryption, Sending data to cloud</p><p>Various encryption schemes which are enabled through diverse cryptosystems are used by Crypsis.</p><p>1) Randomized encryption (RAN) is the main encryption scheme which does not support operators and best secure encryption scheme. One way to execute RAN is by utilizing Blowfish [<xref ref-type="bibr" rid="scirp.75210-ref41">41</xref>] in order to encrypt integer values by exploiting the benefits of its limited 64-bit block size and also by utilizing AES [<xref ref-type="bibr" rid="scirp.75210-ref42">42</xref>] in order to encrypt the remaining.</p><p>2) Deterministic encryption (DET) let’s fairness comparisons upon encrypted data. First, develop DET utilizing AES and Blowfish permutation block ciphers for estimations of 12 bits and 64 bits respectively. Then, pad minute values properly to coordinate the normal block size. The approach for values greater than 128 bits, check the approach utilized in CryptDB [<xref ref-type="bibr" rid="scirp.75210-ref43">43</xref>] . Later, implement the Order Preserving Encryption (OPE) scheme that permits to arrange correlations utilizing the order preserving symmetric encryption usage from CryptDB. Paillier cryptosystem to implement additive homo-morphic encryption (AHE) which allows additions over encrypted data and ElGamal [<xref ref-type="bibr" rid="scirp.75210-ref44">44</xref>] cryptosystem to implement multiplicative homomorphism encryption (MHE).</p><p>4. Execution</p><p>When all required encrypted data is loaded in the cloud, the execution handler requests to start executing the job.</p><p>5. Crypsis UDFs</p><p>Crypsis does not impose any changes to the PigLatin service. Instead, operations on encrypted data are handled by a set of pre-defined UDFs stored in the cloud storage along with the encrypted data.</p><p>6. Re-encryption</p><p>At the time of target script execution, it is possible that intermediate data are generated after some operations are performed. Encryption scheme of the particular data relies upon the previous operation executed on that data. This situation is handled by Crypsisthrough re-encryption of intermediate data. In particular, this intermediate data is directed to the user where this data can be decrypted without any risk. Later, the decrypted data is encrypted using the specific encryption scheme and then again sent to cloud. After the re-encryption is finished, execution of target script is continued.</p><p>7. Results</p><p>Results are again sent to user when the job is finished.</p></sec><sec id="s5_7"><title>5.7. Program and Transformation Analysis</title><p>Analysis and process involved in PigLatinCrypsis are represented briefly in Listing 1. It has two input files: input1, input2. Input1 has two arguments and input 2 has one argument. Line 3 in script is used to filter all rows less than or equal to 10. The subsequent lines (i.e., Line 4 and Line 5) perform addition operation on second argument of input1 by grouping first argument. Each group sum will be performed in Line 6 using input 2. Finally, Line 7 displays the result stored in output file. <xref ref-type="fig" rid="fig1">Figure 1</xref>3 illustrates outline of the different steps and intermediate data structures in program transformation.</p><p>Input script analysis</p><p>First, Crypsis checks the user submitted source (PigLatin) script for syntax errors and generates a directed, acyclic data flow (DAG) representation of it. The data flow representation uses relations as vertices and the data flow between relations as the edges. Also generate two additional data structures: 1) MET (Map of Expression Trees) 2) SAF (Set of Annotated Fields) [<xref ref-type="bibr" rid="scirp.75210-ref40">40</xref>] . Source script expressions will be stored in MET. In data flow graph, each vertex has keys for all expressions. SAF contains one entry for each field specified for each relation. In input script analysis, AF (Annotated Field) is used to represent individual entries.</p><disp-formula id="scirp.75210-formula1"><graphic  xlink:href="//html.scirp.org/file/1-1730556x18.png"  xlink:type="simple"/></disp-formula><p>Listing 1. Source pig latin script S<sub>1</sub>.</p><disp-formula id="scirp.75210-formula2"><graphic  xlink:href="//html.scirp.org/file/1-1730556x19.png"  xlink:type="simple"/></disp-formula><p>Listing 2. Transformed pig latin script.</p><p>Encryption analysis</p><p>The program transformation component identifies the encryption scheme required for each field. It identifies the encryption of each field by observing MET. In script, all operators are already registered with encryption technique. But, some relational operators involved in PigLatin require precise encryption schemes.</p><p>Script transformation</p><p>After knowing encryption scheme required for each field, decision will be made for which encrypted file to be loaded. Script checks valid encryption technique, if it is not available re-encrypt operation will be initialized. It calls encryption scheme to change the required fields into a specific encryption technique. The transformed PigLatin script is represented in Listing 2.</p></sec><sec id="s5_8"><title>5.8. Evaluation of Big Data Analysis</title><p>Micro-benchmarks</p><p>Construct a micro-benchmark that compares unencrypted data with encrypted data based on the size and time requires to execute. It is represented in <xref ref-type="table" rid="table2">Table 2</xref>. The evaluation of this micro-benchmark was performed on a single machine with two 32 bit CPUs and 3 GB of RAM. While running benchmark, one problem we faced was in PigLatin scripts that projects the value of map fields using chararrayconstants as keys (map#’key’).</p><p>PigMix</p><p>Run the Apache PigMix2 [<xref ref-type="bibr" rid="scirp.75210-ref45">45</xref>] benchmark to calculate the Crypsis performance. PigMix2 is a set of 17 Pig Latin scripts that tests the latency and scalability of the Pig runtime. The experiment was performed using Amazon EC2 [<xref ref-type="bibr" rid="scirp.75210-ref46">46</xref>] .</p></sec><sec id="s5_9"><title>5.9. Information Leakage</title><p>Information leakage [<xref ref-type="bibr" rid="scirp.75210-ref47">47</xref>] gives the information about how the privacy is getting disturbed in mobile environment. Two types of attacks are possible in mobile environment: 1) External attack, 2) Internal attack. Both attacks are used to extract the user information. It is possible to perform these attacks without the user using devices of attacker.</p><table-wrap id="table2" ><label><xref ref-type="table" rid="table2">Table 2</xref></label><caption><title> Comparing size of data and latency of addition and multiplication operations over plaintext and encrypted data. †^ is the number of operations performed in multiples of 1000. ‡NE denotes no encryption or plaintext data</title></caption><table><tbody><thead><tr><th align="center" valign="middle"  rowspan="2"  ></th><th align="center" valign="middle"  colspan="3"  >Size (KB)</th><th align="center" valign="middle"  colspan="4"  >Time (ms)</th></tr></thead><tr><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle"  colspan="2"  >Add</td><td align="center" valign="middle"  colspan="2"  >Multiply</td></tr><tr><td align="center" valign="middle" >^<sup>†</sup></td><td align="center" valign="middle" >NE<sup>‡</sup></td><td align="center" valign="middle" >AHE</td><td align="center" valign="middle" >MHE</td><td align="center" valign="middle" >NE</td><td align="center" valign="middle" >AHE</td><td align="center" valign="middle" >NE</td><td align="center" valign="middle" >MHE</td></tr><tr><td align="center" valign="middle" >2</td><td align="center" valign="middle" >269</td><td align="center" valign="middle" >12,071</td><td align="center" valign="middle" >12,153</td><td align="center" valign="middle" >32</td><td align="center" valign="middle" >477</td><td align="center" valign="middle" >32</td><td align="center" valign="middle" >2267</td></tr><tr><td align="center" valign="middle" >4</td><td align="center" valign="middle" >538</td><td align="center" valign="middle" >24,142</td><td align="center" valign="middle" >24,306</td><td align="center" valign="middle" >63</td><td align="center" valign="middle" >895</td><td align="center" valign="middle" >62</td><td align="center" valign="middle" >4118</td></tr><tr><td align="center" valign="middle" >6</td><td align="center" valign="middle" >807</td><td align="center" valign="middle" >36,212</td><td align="center" valign="middle" >36,459</td><td align="center" valign="middle" >92</td><td align="center" valign="middle" >1314</td><td align="center" valign="middle" >90</td><td align="center" valign="middle" >5978</td></tr><tr><td align="center" valign="middle" >8</td><td align="center" valign="middle" >1076</td><td align="center" valign="middle" >48,283</td><td align="center" valign="middle" >48,611</td><td align="center" valign="middle" >121</td><td align="center" valign="middle" >1730</td><td align="center" valign="middle" >118</td><td align="center" valign="middle" >7818</td></tr><tr><td align="center" valign="middle" >10</td><td align="center" valign="middle" >1345</td><td align="center" valign="middle" >60,354</td><td align="center" valign="middle" >60,764</td><td align="center" valign="middle" >150</td><td align="center" valign="middle" >2147</td><td align="center" valign="middle" >147</td><td align="center" valign="middle" >9658</td></tr></tbody></table></table-wrap></sec><sec id="s5_10"><title>5.10. Background of Mobile Analytic Service</title><p>Background of mobile analytic service concentrates on developers, users, applications, networks, etc. This section deals with app ecosystem and mobile analytics.</p><sec id="s5_10_1"><title>5.10.1. App Ecosystem</title><p>Application developers use a technique called ad networks to increase the profit of applications. Recent study shows that, top applications available in Android Market (i.e., 52.1% of applications) are enclosed with at least one ad networks. App ecosystem is represented in <xref ref-type="fig" rid="fig1">Figure 1</xref>4. It illustrates the flow of information among users. Mobile applications are enclosed with analytic library. Main function of analytic library is to collect attributes related user and send it to the servers maintained by analytic companies. The information will be processed and will be given to ad networks like Flurry, Google Ad, etc. to provide appropriate ad for the user.</p></sec><sec id="s5_10_2"><title>5.10.2. Mobile Analytics and Tracking</title><p>Mobile analytics are used to measure the performance of the applications based on prior knowledge about users, applications, etc. Dashboard performance of flurry is represented in <xref ref-type="fig" rid="fig1">Figure 1</xref>5. It gives the information about various interests of a user.</p></sec></sec><sec id="s5_11"><title>5.11. User Profile Extraction</title><p>User profile extraction used to extract various information about users. Different services are used to collect distinct information about users (i.e., name, age, etc.). In order to extract information about user, first step is to act on behalf of user. Next step for google is to extract the user profile illustrated by google. For flurry, target information should be send to analytics application which in turn extracts user profile.</p><sec id="s5_11_1"><title>5.11.1. Device id Spoofing</title><p>Getting access to device id.</p><p>Device id of an android user can be accessed by using two different methods.</p><p>1) It can be obtained by grabbing message send by third party.</p><p>2) It can be extracted by capturing identifier of a target device.</p><p>Device id spoofing</p><p>Android users can be easily identified by combining device id with device information. It is possible to device information using the methods described above. Once the information about the device is available, device id spoofing will be done by changing the values in identifying parameters. It is represented in <xref ref-type="table" rid="table3">Table 3</xref>.</p></sec><sec id="s5_11_2"><title>5.11.2. Extracting User Information</title><p>Google:</p><p>One main advantage of using android is, it allows users to manage their application preferences. This facility extracts user information from Google server. Using this opportunity, anyone can access user profile.</p><p>Flurry:</p><p>Unlike Google, Flurry will not allow its users to access their information. Profile extraction of Flurry is represented in <xref ref-type="fig" rid="fig1">Figure 1</xref>6. Here, spoofing will be done by identifying target device id. After identifying the id, it will make the Flurry to generate report message (appID<sub>x</sub>). All user information can be accessed using this technique. Another method of extracting user profile is by extracting audience report. It can be done by capturing report (P<sub>t</sub>) at time t. Flurry also provides an additional feature to distinguish user according to age, name, group, etc.</p></sec></sec><sec id="s5_12"><title>5.12. Deceiving User Profiles</title><p>Second attack targets analytic results. It will attack analytic service and provides inappropriate ads to the user. It will be done by identifying target device and de- stroy the user information by supplying irrelevant usage reports. This attack will reduce the benefits of ad companies.</p><table-wrap id="table3" ><label><xref ref-type="table" rid="table3">Table 3</xref></label><caption><title> Android path identifier</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Parameter</th><th align="center" valign="middle" >File path in Android file system</th></tr></thead><tr><td align="center" valign="middle" >Android ID</td><td align="center" valign="middle" >/data/data/com.android.providers.settings/databases/settings.db</td></tr><tr><td align="center" valign="middle" >ro.build.id</td><td align="center" valign="middle"  rowspan="6"  >/system/build.prop</td></tr><tr><td align="center" valign="middle" >ro.build.version.release</td></tr><tr><td align="center" valign="middle" >ro.product.brand</td></tr><tr><td align="center" valign="middle" >ro.product.name</td></tr><tr><td align="center" valign="middle" >ro.product.device</td></tr><tr><td align="center" valign="middle" >ro.product.model</td></tr></tbody></table></table-wrap>Attacking Technique<p>This attack will be done in two ways: 1) validating user information, 2) implementing ad influence attack. Both way uses following steps.</p><p>Training</p><p>In this method, attackers create new user profiles and train them according to different categories. By doing this, ad developers (i.e., Google and Flurry) will be updating user profile according to the reports they received from various categories. The response time will be different for both ad developers. Google takes 6 hours to update user profile and Flurry takes one week to update its user profile.</p><p>Collecting Ads</p><p>HTTP protocol is used to deliver ads to the users who are using Google or Flurry. Attackers will run tcpdump to extract ads from TCP but it is possible only in Google. In Flurry, redirection methods will be done to get ads.</p></sec><sec id="s5_13"><title>5.13. User Authentication in MCC</title><p>In MCC user authentication is used to validate the user identity. Authentication is used to protect the user against privacy and security issues [<xref ref-type="bibr" rid="scirp.75210-ref48">48</xref>] . It is used to prevent unauthorized access of the user. We have to concentrate security on three major components in MCC. The three components are cloud, wireless communication and mobile device. The efficient algorithm will have the following qualities least possible computing, memory and storage over heads. The purpose of authentication algorithm is to reduce the security threats in mobile devices. Some of the threats commonly occurred in mobile devices are denial of service, loss of device, malfunction of device etc. [<xref ref-type="bibr" rid="scirp.75210-ref48">48</xref>] . The authentication in MCC varies in following scenarios when compared with cloud computing: 1) resource limitations, 2) sensors, 3) high mobility, 4) network heterogeneity.</p></sec></sec><sec id="s6"><title>6. Conclusion and Future Work</title><p>In this paper, we have reviewed and explained in detail about offloading, mobile distribution and privacy in MCC. Also, to implement next generation wireless networking with low cost, we explained Wireless Mesh Networking with MCC (WM-MCC). After reviewing various aspects, we found that MCC can be used to provide efficient data storage and processing but the factors affecting MCC are computation power, bandwidth, security and energy. We also found that use of encryption method in offloading and remote execution leads to performance degradation.</p><p>New research and expansions programs are required to make offloading decisions more feasible and improve security in the mobile cloud. Furthermore, users want to migrate their data from smartphone to cloud but this migration poses some technical issues. Hence, we need a concrete effort from academia and industry to improve these shortcomings.</p></sec><sec id="s7"><title>Cite this paper</title><p>Paranjothi, A., Khan, M.S. and Nijim, M. (2017) Survey on Three Components of Mobile Cloud Com- puting: Offloading, Distribution and Privacy. Journal of Computer and Communications, 5, 1-31. https://doi.org/10.4236/jcc.2017.56001</p></sec></body><back><ref-list><title>References</title><ref id="scirp.75210-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">Zhao, W., Sun, Y. and Dai, L. (2010) Improving Computer Basis Teaching through Mobile Communication and Cloud Computing Technology. Proceedings of the 3rd International Conference on Advanced Computer Theory and Engineering (ICACTE’10).</mixed-citation></ref><ref id="scirp.75210-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">Heavy Reading Real World Research (2013) The Mobile Cloud Market Outlook to 2017</mixed-citation></ref><ref id="scirp.75210-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">ABI (2009) Mobile Cloud Computing Subscribers to Total Nearly One Billion by 2014, Tech. Rep., ABI Research.</mixed-citation></ref><ref id="scirp.75210-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">Mobile Cloud Computing: A Survey, State of Art and Future Directions M. Reza Rahimi . JianRen . Chi Harold Liu . Athanasios V. Vasilakos . NaliniVenkatasubramanian.</mixed-citation></ref><ref id="scirp.75210-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">Fernando, N., Loke, S.W. and Rahayu, W. (2013) Mobile Cloud Computing: A Survey. Future Generation Computer Systems, 29, 84-106.</mixed-citation></ref><ref id="scirp.75210-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">Fernando, N., Loke, S.W. and Rahayu, W. (2013) Mobile Cloud Computing: A Survey. Future Generation Computer Systems, 29, 84-106.</mixed-citation></ref><ref id="scirp.75210-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">Wilbaut, C., Hanafi, S. and Salhi, S. (2008) A Survey of Effective Heuristics and Their Application to a Variety of Knapsack Problems. IMA Journal of Management Mathematics, 19, 227-244. https://doi.org/10.1093/imaman/dpn004</mixed-citation></ref><ref id="scirp.75210-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">Kchaou, H., Kechaou, Z. and Alimi, A.M. (2015) Towards an Offloading Framework Based on Big Data Analytics in Mobile Cloud Computing Environments. Procedia Computer Science, 53, 292-297.  
https://doi.org/10.1016/j.procs.2015.07.306</mixed-citation></ref><ref id="scirp.75210-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">Bahl, P., et al. (2012) Advancing the State of Mobile Cloud Computing. Proceedings of the 3rd ACM Workshop on Mobile Cloud Computing and Services, Low Wood Bay, 25 June 2012, 21-28. https://doi.org/10.1145/2307849.2307856</mixed-citation></ref><ref id="scirp.75210-ref10"><label>10</label><mixed-citation publication-type="other" xlink:type="simple">Verbelen, T., et al. (2012) Cloudlets: Bringing the Cloud to the Mobile User. Proceedings of the 3rd ACM Workshop on Mobile Cloud Computing and Services, ACM. https://doi.org/10.1145/2307849.2307858</mixed-citation></ref><ref id="scirp.75210-ref11"><label>11</label><mixed-citation publication-type="other" xlink:type="simple">Chen, M., Jin, H., Wen, Y. and Leung, V.C.M. (2013) Enabling Technologies for Future Data Center Networking: A Primer. IEEE Network, 27, 8-15. 
https://doi.org/10.1109/MNET.2013.6574659</mixed-citation></ref><ref id="scirp.75210-ref12"><label>12</label><mixed-citation publication-type="other" xlink:type="simple">Kumar, K. and Lu, Y.-H. (2010) Cloud Computing for Mobile Users: Can Offloading Computation Save Energy? IEEE Computer, 43, 51-56. 
https://doi.org/10.1109/MC.2010.98</mixed-citation></ref><ref id="scirp.75210-ref13"><label>13</label><mixed-citation publication-type="other" xlink:type="simple">Yang, K., Ou, S. and Chen, H.-H. (2008) On Effective Offloading Services for Resource-Constrained Mobile Devices Running Heavier Mobile Internet Applications. IEEE Communications Magazine, 46, 56-63.  
https://doi.org/10.1109/MCOM.2008.4427231</mixed-citation></ref><ref id="scirp.75210-ref14"><label>14</label><mixed-citation publication-type="other" xlink:type="simple">Cuervo, E., Balasubramanian, A., Cho, D., Wolman, A., Saroiu, S., Chandra, R. and Bahl, P. (2010) MAUI: Making Smartphones Last Longer with Code Offload. ACM MobiSys’10, 49-62. https://doi.org/10.1145/1814433.1814441</mixed-citation></ref><ref id="scirp.75210-ref15"><label>15</label><mixed-citation publication-type="other" xlink:type="simple">Chun, B.-G., Ihm, S., Maniatis, P., Naik, M. and Patti, A. (2011) CloneCloud: Elastic Execution between Mobile Device and Cloud. ACM EuroSys’11, 301-314. 
https://doi.org/10.1145/1966445.1966473</mixed-citation></ref><ref id="scirp.75210-ref16"><label>16</label><mixed-citation publication-type="other" xlink:type="simple">Huang, B.-K., et al. (2015) A Cloud-Based Offloading Service for Computation-Intensive Mobile Applications. IEEE 21st International Conference on Embedded and Real-Time Computing Systems and Applications (RTCSA), 19-21 August 2015.  
https://doi.org/10.1109/rtcsa.2015.17</mixed-citation></ref><ref id="scirp.75210-ref17"><label>17</label><mixed-citation publication-type="other" xlink:type="simple">Ra, M.R., Sheth, A., Mummert, L., Pillai, P., Wetherall, D. and Govindan, R. (2011) Odessa: Enabling Interactive Perception Applications on Mobile Devices. Proceedings of the 9th International Conference on Mobile Systems, Applications, and Services, Bethesda, 28 June-1 July 2011, 43-56.  
https://doi.org/10.1145/1999995.2000000</mixed-citation></ref><ref id="scirp.75210-ref18"><label>18</label><mixed-citation publication-type="other" xlink:type="simple">Bradski, G. and Kaehler, A. (2008) Learning OpenCV: Computer Vision with the OpenCV Library. O’Reilly Media.</mixed-citation></ref><ref id="scirp.75210-ref19"><label>19</label><mixed-citation publication-type="other" xlink:type="simple">Romea, A.C., Berenson, D., Srinivasa, S. and Ferguson, D. (2009) Object Recognition and Full Pose Registration from Single Image for Robotic Manipulation. IEEE International Conference on Robotics and Automation.</mixed-citation></ref><ref id="scirp.75210-ref20"><label>20</label><mixed-citation publication-type="other" xlink:type="simple">Lowe, D. (2004) Distinctive Image Features from Scale-Invariant Keypoints. International Journal on Computer Vision (IJCV), 60, 91-110. 
https://doi.org/10.1023/B:VISI.0000029664.99615.94</mixed-citation></ref><ref id="scirp.75210-ref21"><label>21</label><mixed-citation publication-type="other" xlink:type="simple">Pillai, P.S., Mummert, L.B., Schlosser, S.W., Sukthankar, R. and Helfrich, C.J. (2009) "SLIPstream: Scalable Low-Latency Interactive Perception on Streaming Data. ACM International Workshop on Network and Operating System Support for Digital Audio and Video.</mixed-citation></ref><ref id="scirp.75210-ref22"><label>22</label><mixed-citation publication-type="other" xlink:type="simple">Kosta, S., Aucinas, A., Hui, P., Mortier, R. and Zhang, X. (2012) Thinkair: Dynamic Resource Allocation and Parallel Execution in the Cloud for Mobile Code Offloading. In INFOCOM, 2012 Proceedings IEEE, 945-953.</mixed-citation></ref><ref id="scirp.75210-ref23"><label>23</label><mixed-citation publication-type="other" xlink:type="simple">Kosta, S., Perta, V.C., Stefa, J., Hui, P. and Mei, A. (2013) Clone2clone (c2c): Peer-to-Peer Networking of Smartphones on the Cloud. In 5th USENIX Workshop on Hot Topics in Cloud Computing (HotCloud13).</mixed-citation></ref><ref id="scirp.75210-ref24"><label>24</label><mixed-citation publication-type="other" xlink:type="simple">Feldman, A.J., Zeller, W.P., Freedman, M.J. and Felten, E.W. Sporc: Group Collaboration Using Untrusted Cloud Resources. In Proc. OSDI’10.</mixed-citation></ref><ref id="scirp.75210-ref25"><label>25</label><mixed-citation publication-type="other" xlink:type="simple">Ellis, C.A. and Gibbs, S.J. (1989) Concurrency Control in Groupware Systems. SIGMOD REC, 18, 399-407. https://doi.org/10.1145/66926.66963</mixed-citation></ref><ref id="scirp.75210-ref26"><label>26</label><mixed-citation publication-type="other" xlink:type="simple">Ravindranath, L., Thiagarajan, A., Balakrishnan, H. and Madden, S. (2012) Code in the Air: Simplifying Sensing and Coordination Tasks on Smartphones. Proceedings of the Twelfth Workshop on Mobile Computing Systems &amp; Applications, p. 4, ACM.</mixed-citation></ref><ref id="scirp.75210-ref27"><label>27</label><mixed-citation publication-type="other" xlink:type="simple">Stuedi, P., Mohomed, I. and Terry, D. (2010) WhereStore: Location-Based Data Storage for Mobile Devices Interacting with the Cloud. Proceedings of the 1st ACM Workshop on Mobile Cloud Computing &amp; Services: Social Networks and Beyond, p. 1, ACM.</mixed-citation></ref><ref id="scirp.75210-ref28"><label>28</label><mixed-citation publication-type="other" xlink:type="simple">Trestian, I., Ranjan, S., Kuzmanovic, A. and Nucci, A. (2009) Measuring Serendipity: Connecting People, Locations and Interests in a Mobile 3g Network. Proceedings of the 9th ACM SIGCOMM Conference on Internet Measurement Conference, New York, 267-279. https://doi.org/10.1145/1644893.1644926</mixed-citation></ref><ref id="scirp.75210-ref29"><label>29</label><mixed-citation publication-type="other" xlink:type="simple">Ananthanarayanan, G., Haridasan, M., Mohomed, I., Terry, D. and Thekkath, C.A. (2009) Startrack: A Framework for Enabling Track-Based Applications. Proceedings of the 7th International Conference on Mobile Systems, Applications, and Services, New York, 207-220. https://doi.org/10.1145/1555816.1555838</mixed-citation></ref><ref id="scirp.75210-ref30"><label>30</label><mixed-citation publication-type="other" xlink:type="simple">Mun, M., Reddy, S., Shilton, K., Yau, N., Burke, J., Estrin, D., Hansen, M., Howard, E., West, R. and Peir, P.B. (2009) The Personal Environmental Impact Report, as a Platform for Participatory Sensing Systems Research. MobiSys’09: Proceedings of the 7th International Conference on Mobile Systems, Applications, and Services, New York, 55-68. https://doi.org/10.1145/1555816.1555823</mixed-citation></ref><ref id="scirp.75210-ref31"><label>31</label><mixed-citation publication-type="other" xlink:type="simple">Krumm, J. and Horvitz, E. (2007) Predestination: Where Do You Want to Go Today? Computer, 40, 105-107.</mixed-citation></ref><ref id="scirp.75210-ref32"><label>32</label><mixed-citation publication-type="other" xlink:type="simple">Ramasubramanian, V., Rodeheer, T.L., Terry, D.B., Walraed-Sullivan, M., Wobber, T., Marshall, C.C. and Vahdat, A. (2009) Cimbiosys: A Platform for Content-Based Partial Replication. NSDI’09: Proceedings of the 6th USENIX Symposium on Networked Systems Design and Implementation, Berkeley, 261-276.</mixed-citation></ref><ref id="scirp.75210-ref33"><label>33</label><mixed-citation publication-type="other" xlink:type="simple">Ananthanarayanan, G., Haridasan, M., Mohomed, I., Terry, D. and Thekkath, C.A. Startrack: A Framework for Enabling Track-Based Applications. MobiSys’09: Proceedings of the 7th International Conference on Mobile Systems, Applications, and Services, New York, 207-220. https://doi.org/10.1145/1555816.1555838</mixed-citation></ref><ref id="scirp.75210-ref34"><label>34</label><mixed-citation publication-type="other" xlink:type="simple">Bickford, J. and Cáceres, R. (2013) Towards Synchronization of Live Virtual Machines among Mobile Devices. Proceedings of the 14th Workshop on Mobile Computing Systems and Applications, p. 13, ACM.  
https://doi.org/10.1145/2444776.2444794</mixed-citation></ref><ref id="scirp.75210-ref35"><label>35</label><mixed-citation publication-type="other" xlink:type="simple">Lin, H., et al. (2015) A Trustworthy Access Control Model for Mobile Cloud Computing Based on Reputation and Mechanism Design. Ad Hoc Networks, 35, 51-64. 
https://doi.org/10.1016/j.adhoc.2015.07.007</mixed-citation></ref><ref id="scirp.75210-ref36"><label>36</label><mixed-citation publication-type="other" xlink:type="simple">Dinh, T.T.A. and Datta, A. (2013) Towards Secure Outsourcing of Collaborative Sensing and Analytic Applications to the Cloud-the pCloud Approach. Proceedings of the First International Workshop on Middleware for Cloud-Enabled Sensing, p. 2, ACM. https://doi.org/10.1145/2541603.2541606</mixed-citation></ref><ref id="scirp.75210-ref37"><label>37</label><mixed-citation publication-type="other" xlink:type="simple">Goyal, V., Pandey, O., Sahai, A. and Waters, B. (2006) Attribute-Based Encryption for Fine-Grained Access Control of Encrypted Data. In CCS’06.</mixed-citation></ref><ref id="scirp.75210-ref38"><label>38</label><mixed-citation publication-type="other" xlink:type="simple">Green, M., Hohenberger, S. and Waters, B. (2011) Outsourcing the Decryption of Abeciphertexts. In USENIX Security.</mixed-citation></ref><ref id="scirp.75210-ref39"><label>39</label><mixed-citation publication-type="other" xlink:type="simple">Stephen, J.J., Savvides, S., Seidel, R. and Eugster, P. (2014) Practical Confidentiality Preserving Big Data Analysis. Proceedings of the 6th USENIX Conference on Hot Topics in Cloud Computing, USENIX Association, 10.</mixed-citation></ref><ref id="scirp.75210-ref40"><label>40</label><mixed-citation publication-type="other" xlink:type="simple">Olston, C., Reed, B., Srivastava, U., Kumar, R. and Tomkins, A. (2008) Pig Latin: A Not-So-Foreign Language for Data Processing. In SIGMOD.</mixed-citation></ref><ref id="scirp.75210-ref41"><label>41</label><mixed-citation publication-type="other" xlink:type="simple">Schneier, B. (1994) Description of a New Variable-Length Key, 64-Bit Block Cipher (Blowfish). In Fast Software Encryption. Springer-Verlag, 191-204.</mixed-citation></ref><ref id="scirp.75210-ref42"><label>42</label><mixed-citation publication-type="other" xlink:type="simple">Daemen, J. and Rijmen, V. (2002) The Design of Rijndael: AES—The Advanced Encryption Standard. Springer-Verlag, Berlin, Heidelberg, New York.</mixed-citation></ref><ref id="scirp.75210-ref43"><label>43</label><mixed-citation publication-type="other" xlink:type="simple">Popa, R.A., Redfield, C.M.S., Zeldovich, N. and Balakrishnan, H. (2011) CryptDB: Protecting Confidentiality with Encrypted Query Processing. In SOSP.</mixed-citation></ref><ref id="scirp.75210-ref44"><label>44</label><mixed-citation publication-type="other" xlink:type="simple">Elgamal, T. (1985) A Public-Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms. IEEE Transactions on Information Theory, 31, 4.</mixed-citation></ref><ref id="scirp.75210-ref45"><label>45</label><mixed-citation publication-type="other" xlink:type="simple">Ouaknine, K., Carey, M. and Kirkpatrick, S. (2015) The PigMix Benchmark on Pig, MapReduce, and HPCC Systems. IEEE International Congress on Big Data (Big Data Congress), 27 June-2 July 2015.  
https://doi.org/10.1109/bigdatacongress.2015.99</mixed-citation></ref><ref id="scirp.75210-ref46"><label>46</label><mixed-citation publication-type="other" xlink:type="simple">Marathe, A., et al. (2016) Exploiting Redundancy and Application Scalability for Cost-Effective, Time-Constrained Execution of HPC Applications on Amazon EC2. IEEE Transactions on Parallel and Distributed Systems, 27, 2574-2588.  
https://doi.org/10.1109/TPDS.2015.2508457</mixed-citation></ref><ref id="scirp.75210-ref47"><label>47</label><mixed-citation publication-type="other" xlink:type="simple">Chen, T., Ullah, I., Kaafar, M.A. and Boreli, R. (2014) Information Leakage through Mobile Analytics Services. Proceedings of the 15th Workshop on Mobile Computing Systems and Applications, p. 15, ACM.  
https://doi.org/10.1145/2565585.2565593</mixed-citation></ref><ref id="scirp.75210-ref48"><label>48</label><mixed-citation publication-type="other" xlink:type="simple">Alizadeh, M., et al. (2015) Authentication in Mobile Cloud Computing: A Survey. Journal of Network and Computer Applications.</mixed-citation></ref></ref-list></back></article>