An introductory walkthrough into the concepts and workings of Power Analysis using the ChipWhisperer framework. Will take one through breaking the RSA and AES algorithms with Power Analysis, and provide exercises to practice.
Link to the walkthrough.
Made to be part a Master's Course of the Leiden University.
This course expects the reader to be reasonably familiar and comfortable with programming C / Rust and Python. Furthermore, it is highly recommended to have a rough understanding of Computer Architecture and encryption methodologies, although this is not strictly necessary. The walkthrough should take one through the core material and provide references to further reading if unfamiliar topics pop up.
This course makes use of the ChipWhisperer framework to do the power measurements. The course provides example datasets for all exercises for when the reader does not have a ChipWhisperer available, although it is recommended to follow along for the measurements as well. One should be able to do their measurements with an oscilloscope or other devices as well. The theory behind the data analysis should remain the same.
The walkthrough contains how to setup your environment to be able to run measurements on the ChipWhisperer, install all the necessary libraries and even how to create your own binaries to run on the target board. This is followed by an explanation of breaking RSA and AES. Each of which containing their own practice exercises for the reader. Ending with a final assignment, which is mostly handy for universities using this walkthrough to assess the knowledge gained by the student.
The source code here uses the mdBook
project to generate a webpage from markdown files. In order to build from
source, install the mdbook
binary and run the mdbook build
command in the
root directory of this repository. This will create a /book
directory
containing the webpages.
Alternatively, one could also (with the help of mdBook) compile into other formats such as epub and PDF (using the print function on the webpage).
Licensed under a MIT license.
If any mistake or out-of-date content is found, please either submit a issue or pull request in this repository.