Talos for Android
Talos Framework for Android Applications and/or Smartphone-as-Gateway IoT Applications.
This repository contains serveral parts of the talos framwork. The individual parts are partitioned by folders.
The TalosAndroid folder contains the three example apps the Sensor App, the Fitbit App and the Ava Health App. Each of this apps uses the talos andoird library for querying and inserintg encrypted to the cloud. The module can be found here. We implemented and optimized the following ciphers for Android (partly native in C and Java):
- optimized additive homomorphic EC-ELGamal
- proxy-re-encryption (PRE) (allows addition and sharing)
- mutable order-preserving-ecnryption mOPE (range queries)
- Paillier (for comparison to EC-ElGamal (native + Java))
This folder contains experimental code, and contains some ciphers that we were evaluating.
- additive homomorphic EC-ELGamal in C implemented with relic and wrapper for Java+Android
- proxy-re-encryption (PRE) in C implemented with relic and wrapper for Java+Android
- a key homomorphic cipher
- experimental code with ORE, an order preserving scheme
- Pollard Kangoroo in C
In the TalosCloud folder are the java web application and the MySQL user defined functions (UDF's). The Java application implements the TalosCloud logic and provides a REST api for the android libary. The UDF's are used for the aggreagation and operations over the encrypted data.
Various helper and instalöation scripts are located in the TalosHelper folder.
Setup Example Applications
We provide three example Android applications, the Sensor App, the Fitbit App and the Ava Health App. Before running the applications several things have to be considered, which we will outline in the following tutorial.
Install Talos Cloud and Dependencies
In a first step, we need to setup the Talos Cloud environment. We recommend using the Ubuntu operating system. You can either use a local machine or a cloud service such as AWS EC2, Azure etc. Make sure you know the IP of your machine (Needed by the Android applications)
First run the Cloud installation script installTalosCloud.sh, which install a glassfish 4 JAVA Application server, the MySQL database, and the Talos dependencies.
After a successful installation, a glassfish 4 deamon should be running and you can access it's admin page on localhost:4848. In a second step, we deploy the Java BE applications and the databases for the example applications by running the installExampleAppsBE.sh script.
After successfully completing this two steps, a MySQL server should be running containing the example application databases and functions and a glassfish 4 application server instance runs the three backend applications. You are ready for deploying the android applications.
Install a Talos Android Example Application
As mentioned above we provide three example Application. In this section, we focus on the Sensor App. You need an ARM-based Android smartphone and a computer with Android Studio installed.
Install the Android Studio IDE.
Open the TalosModuleApp Project and download the required sdks. Should be proposed by the IDE.
Our example applications use the Google-Sign service from Google. In order to use it, you have to register your API credentials for each Example App. For this, you need a google account (its free). Follow the steps in the workflow and fill in the missing values. (the app package name is ch.ethz.inf.vs.talsomoduleapp). After the completion, you should have a google sign in file.
Put the service google-services.json file in the app directory of the project.
Fill in the missing metadata in the strings.xml android resource file. You should provide the IP/DNS address of your Talos Cloud Server and the Google Service API id for the web client (should look like this: blablabla.apps.googleusercontent.com). (!Important the server API key and not the client API key).
Also, edit the web client id in the BE config file located in /glassfish4/glassfish/domains/domain1/config/app_name.properties on your Talos Cloud Server.
Deploy your application on the arm based smartphone. (!Only ARM architecture supported for easy setup, native libraries are precompiled for arm based systems)
The setup procedure is similar for the Fitbit and AvaApp. There is a small exception for the Fitbit app. In order to get the data from your Fitbit account, you have to register for using the Fitbit API. The provided key has to be added to the strings.xml file.