Smartphones are fast becoming a full-fledged computing platform that our society depends upon. Smartphone applications that access data and computing resources in the "cloud" are inevitable given the processing and storage limitations on the phones. Today the burden of partitioning smartphone applications between the phone and the cloud lies squarely with the programmer. This manual approach to partitioning applications is fundamentally limited and will not scale up to allow smartphones to become a truly rich and robust computing platform. Manual partitioning is tedious and error prone. Moreover, manual partitioning requires the programmer to make important decisions that cannot be properly made until run time.
This project explores the requirements, design, and implementation of a programming system for cloud-enabled smartphone applications that is inherently adaptive, partitioning applications transparently in order to cope with a diverse set of dynamic constraints. The project is studying cloud-enabled smartphone applications from a variety of domains in order to understand application requirements, constraints, and tradeoffs in practice. The project is also pursuing programming models that allow developers to flexibly and declaratively express an application's components along with their dependencies and constraints. Finally, the project is developing a prototype system architecture that collaboratively executes an application on the phone and the cloud subject to the application's requirements. Within a decade, smartphones will transform the way health and lifestyle choices are delivered to much of the population. This project is helping to enable this transformation by making a rich class of smartphone applications much easier to create, adapt, and understand.
Modern smartphones augment traditional mobile phones with PC-like storage capabilities and computing power. Combined with the increased penetration of WiFi access and the immense computation and storage resources available via the "cloud", smartphones are fast becoming a full-fledged computing platform that our society depends upon. This proposal focuses on cloud-enabled smartphone applications, those that augment data and computing resources on the phone with those in the "cloud". As smartphones gain popularity, mobile applications, or "apps", are rapidly becoming the cornerstone of what defines the user?s experience. Already, there are apps available for various phone platforms that provide useful capabilities like speech recognition, restaurant recommendations, automatic logging of workouts, etc. Many of these capabilities place large demands on smartphone resources. To address this challenge, many developers have started to offload compute-intensive applications or libraries to the cloud. This requires significant programming effort, since developers now have to manually reason, for every application, which application components run on the phone and which on the cloud. Moreover, in many cases, it is not clear if the same offloading strategy for a given app will work for all network conditions and inputs. The first outcome of the project is a suite of methods to assess the complexity of mobile applications, with the aim of deciding when to offload computation to the cloud. Some of these methods characterize application complexity by an estimate of the number of operations it will perform, while other methods characterize application complexity in terms of a set of "features" about the application and its inputs. These methods have been found to be useful under different circumstances, enabling offloading decisions that lead to significant energy savings on the smartphone. Two other outcomes of the project have focused on ensuring privacy. Many smartphone (as well as desktop and web-based) applications rely on the cloud to perform significant parts of their computation. Through services such as Amazon's EC2, the cloud has become a general utility that allows users to easily build large-scale, highly parallelizable applications. However, such "public clouds" pose clear privacy risks, since users must trust cloud providers with their data and must trust that their data is isolated from the computations of other users. The second outcome of the project is an approach to preserving data confidentiality for cloud computations. The key idea is to encrypt private user data in such a way that the cloud computation can operate directly on the encrypted data. This is achieved by employing forms of "homomorphic encryption". Hence users can simply decrypt the result obtained from the cloud, and unencrypted private data need never leave the phone. The outcome of the project is a a tool, called MrCrypt, which automatically transforms cloud computations developed for the popular Hadoop MapReduce framework to execute on homomorphically encrypted data. The third outcome of the project was motivated by the popularity of photo sharing. Users can share photos either through cloud-based photo sharing services like Flickr or Picasa, or popular social networking services like Facebook or Google+. However, this development has generated privacy concerns. Private photos have been leaked from a prominent photo sharing site. Furthermore, widespread concerns have been raised about the application of face recognition technologies in Facebook. Despite these privacy threats, it is not clear that the usage of photo sharing services (PSPs) will diminish in the near future. This is because photo sharing services provide several useful functions (like scaling and cropping images before downloads) that, together, make for a seamless photo browsing experience. The third outcome of the project is a privacy-preserving photo sharing algorithm (and an associated system) that ensures photo privacy without sacrificing the latency, storage, and bandwidth benefits provided by PSPs. Our work has resulted in the design of the P3 algorithm, which prevents leaked photos from leaking information, and reduces the efficacy of automated processing (e.g., face detection, feature extraction) on photos, while still permitting a PSP to apply image transformations. We have implemented this capability on the Android system, and a screenshot of the app is attached. This work was featured on NSF’s Discovery Files: www.nsf.gov/news/mmg/mmg_disp.cfm?med_id=74142&from=search_list