Encounter-based Networking - Secure Device Discovery and Recognition
C++ Java Makefile C
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
awake
include
jni
source
third-party
.gitignore
README.txt

README.txt

This is our research prototype code used in the evaluation of our secure
device discovery and recognition (SDDR) protocol, as presented in our
paper:

SDDR: Light-Weight, Secure Mobile Encounters
Matthew Lentz, Viktor Erdelyi, Paarijaat Aditya,
Elaine Shi, Peter Druschel, Bobby Bhattacharjee
USENIX Security Symposium 2014


###########################################################################
# Android Pre-Requisites
###########################################################################

A Galaxy Nexus smartphone. (Note: While this software should run on other
devices, we have not attempted to build or run it for anything other than
the Galaxy Nexus.)

Download/Install: Android SDK
(We require android-16 support)

Download/Install: Android NDK
(We used version r9)

Download/Build: Android Source for android-4.1.2 on Galaxy Nexus ("maguro")
(See https://source.android.com/source/building.html)

Download/Install: Galaxy Nexus ("maguro") Factory Image for 4.1.2
(See https://developers.google.com/android/nexus/images)

Software to root the device. The "adb" commands, as well as our SDDR
application, assume that they are executed on a root privileges on the
device.


###########################################################################
# AWake Application
###########################################################################

In order to let the device suspend between SDDR protocol actions (e.g.,
discovery), the AWake java application must be built and installed on the
phone. Use the following commands:

cd <Root Directory>/awake
android update project --path .
ant debug
adb install -r bin/AWake-debug.apk


###########################################################################
# Third-party Libraries w/ Custom Makefiles
###########################################################################

Use the following commands to build the third-party libraries for Android.
This must only be done for GMP and Google Protocol Buffers, since other
Makefiles were simple enough to port to the Android.mk format.

NOTE: This assumes that $NDKROOT points to the root directory of the NDK.

$NDKROOT/build/tools/make-standalone-toolchain.sh \
--toolchain=arm-linux-androideabi-4.8 \
--platform=android-14 \
--install-dir=/tmp/ndkchain

export PATH=/tmp/ndkchain/bin:$PATH

cd <Root Directory>/third-party/gmp
./configure --host=arm-linux-androideabi
make -j4

cd <Root Directory>/third-party/google
./configure --host=arm-linux-androideabi
make -j4


###########################################################################
# SDDR Application
###########################################################################

Use the following commands to build and install the application:

cd <Root Directory>
export AOSP_ROOT=<Root Directory of Android 4.1.2 Source>
ndk-build -j4

adb root
adb remount
adb push libs/armeabi-v7a/sddr /system/xbin
adb push libs/armeabi-v7a/libgnustl_shared.so /system/lib


###########################################################################
# jl10psicompare Application
###########################################################################

This application builds with the above SDDR application. Use the following
commands to install the application:

cd <Root Directory>

adb root
adb remount
adb push libs/armeabi-v7a/jl10psicompare /system/xbin
adb push libs/armeabi-v7a/libgnustl_shared.so /system/lib
adb push third-party/jl10psi/dsa.1024.priv /data/local
adb push third-party/jl10psi/dsa.1024.pub /data/local


###########################################################################
# Replicating Experiments in USENIX Security 2014 Paper
###########################################################################

[[Figure 2: Protocol execution times of PSI vs SDDR...]]

Modify jni/Android.mk to remove the "-DLOG_W_ENABLED -DLOG_D_ENABLED" flags
to prevent log messages from influencing the results.

Run the following command for advertised set sizes of 2**N, for N in [0,8],
and <# Discoveries> in [0,1]:

> sddr -r BT2 -c None -b <Size of Advertised Set> --psicmp <# Discoveries>

Run the following command for the entire set of PSI times (across all
advertised set sizes):

> jl10psicompare


[[Table 2: Average power and energy consumed by various components...]]
[[Table 3: Energy and battery life consumption for different states...]]
[[Figure 3: Power traces from running the SDDR and DH+PSI protocols...]]

For SDDR over BT2.1 use the following command:

> sddr -r BT2 -c None -b 256 --churn

For DH+PSI over BT2.1 use the following command:

> sddr -r BT2PSI -c None -b 256 --churn

For ResolveAddr in BT4.0 use the following command:

> sddr -r BT4AR -c None -b 256 --churn


[[Figure 4: Estimated daily battery life consumption while running...]]

None. This is based on results from Table 2 and 3, but also looking at 1,3
devices instead of just 5 nearby devices for use in extrapolating the
energy costs associated with the SDDR protocol according to Equation 1.


[[Smokescreen Conservative Energy Estimates]]

Currently this requires modifying the EbNRadioBT2NR.cpp code to ignore
processing the result from the name request. We will update this with an
option in the main manu shortly.