Experiment `playground' for conducting side-channel research on the RaspberryPi 3 platform.
First things first, get all the stuff running on the Pi. Clone the repo:
git clone https://github.com/jakelongo/sca-pi3.git
Pull in OpenSSL, WolfSSL and WiringPi:
git submodule update --init
Build and install WiringPi:
cd WiringPi
./build
cd ..
Build and install dependencies for wolfSSL:
sudo apt-get install autoconf automake libtool
Build wolfSSL:
./autogen.sh
./configure
make
make check
Patch OpenSSL:
patch -p0 < openssl.patch
Build OpenSSL and optionally set flags from the build table below:
cd openssl
./config [lib] [defs]
make depend
make
sudo make install_sw
lib | defs | Notes |
---|---|---|
-lwiringPi | -DAES_TRIG | Trigger placed around each AES enc/dec call. |
Single core analysis models a best case scenario for an adversary where the DUT is not is not running any other user process. The target process affinity shall be fixed to a single core via the OS scheduler and the remaining cores clocked down to limit interference.
Files single_core
Contents of this repo are as follows:
-
openssl/ - OpenSSL 1.0.1s @57ac73f from https://github.com/openssl/openssl.git
-
wiringPi/ - WiringPi from https://github.com/WiringPi/WiringPi.git the authors personal git was timing out
-
featureTest/ - tests for implemented ARMv8 SoC features on both aarch32|64
-
openssl.patch - changes to the openssl source to aid in the SCA signal exploration phase
-
generatePatch.sh - generates the openssl.patch file (only for setup purposes)