Skip to content

Instantly share code, notes, and snippets.

@kraln
Created July 8, 2018 22:02
Show Gist options
  • Save kraln/2899c6441305432e47edfc49cef796a3 to your computer and use it in GitHub Desktop.
Save kraln/2899c6441305432e47edfc49cef796a3 to your computer and use it in GitHub Desktop.
OpenSecret

OpenSecret concept paper

background

I am concerned about a lot of things, but one thing that I could help is the security of connected (aka IoT) devices. Many devices are brought into this world without the ability to do secure firmware updates, without the ability to verify the authenticity of its command and control server, and without the ability to encrypt its communications in any way. There are some devices which can enable these functions, but they are often available only under an NDA, and are not well documented with public examples. I firmly believe that most engineers are 'lazy', in so far as they are on tight schedules and need to deliver business value, and they like to build on existing work (examples) rather than do novel research. Especially with crypto and security, this has disasterous effects.

Recently, Microchip has released the L11 series microcontroller, which is one of the first available ARM Cortex-M23 cores, with full security (including tamper pins, metalization, and a bunch of other cool stuff). I believe that an open source secure element could be built on top of this microcontroller, and with TrustZone, applications (or applets) could be run alongside the secure storage, acting as a reference for other products.

example use(s)

The secure element could be put on a USB stick, with any usb microcontroller acting as a frontend to the secure element to provide services such as FIDO, true random numbers, secure RTC, etc by presenting files to the filesystem. The USB microcontroller should boot from the secure element, so that a chain of trust can be established.

the host (computer) could choose to put a trusted (aka signed) applet in one of the trust zones, through the usb micro, which could enable cases such as a hardware crypto wallet where the secure element is controlling a screen directly.

another case could be securing the wireless communications of a sensor network. The nodes pass the messages through the secure element to be decrypted, and pass messages to be sent through the secure element--the shared key never needs to be revealed.

desired functionality

  • spi register-based interface to all of the L11's security features
  • ability to load apps to run in trustzone alongside the trusted features
  • firmware should be written in a 'safe-er' language, such as rust
  • firmware should be open source
  • firmware should be securely updatable
  • the device should be able to be put into low power (sleep) mode
  • reference library for external microcontrollers (c, c++, rust?) for using the device for common scenareos
  • reference hardware design (usb stick?)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment