This post concerns the protocol for interacting with the ChipWhisperer boards. Having emailed with Colin, I got asked to create a forum post here. So here is a post to describe the problem.
To start with some background. Currently, I am busy with a thesis on using ChipWhisperer for Hardware Security education. Part of this is writing some documentation for people who are completely new to Side-channel Analysis with some open-ended practice exercises and grade-able assignments. It was important to look at some more obscure encryption algorithms and make algorithm more adjustable. Since the current GitHub repository only covers the conventional algorithms. In my opinion the current way of interacting with and compiling the SimpleSerial protocol is just not suited for this. I am used to Rust-Lang and this made me reasonably spoiled when it comes to this process. I came to work at the implementing the SimpleSerial protocol in Rust. Here I noticed the biggest problem. There is no up-to-date or thorough documentation on this protocol, whilst I feel like it is vital if you want to implement proper implementations of new algorithms.
There are two non-code documentation sources for the protocol, the old wiki (https://wiki.newae.com/SimpleSerial) and the API reference (https://chipwhisperer.readthedocs.io/en/latest/api.html#simple-serial-target). The first contains some info on the different commands available, whilst the second only contains info on how to interact with the Python API. It is quite a lot to ask of users to read into the HAL and SimpleSerial source-code to be able to implement algorithms. Maybe a good reference documentation could also help the ChipWhisperer being easier to use for vulnerability prevention and mitigation. Maybe this could be added as a README.md to the SimpleSerial C library. From what I understood, this protocol is kind of bodgy and being updated constantly when new features are needed. This would of course require some administration when that happens. I would be willing to help on this if it is wanted. This could, in my opinion, be a proper temporary solution. I am looking into creating a pull request for this.
I heard from emailing with Colin, I heard that Alex Dewar is working on a new protocol. I would love to help on this and I suggest creating a tracking/discussion issue on GitHub. This way there is already some documentation on the process and we can use that for eventual reference.
Let me know what you think.