Hi, this is Luis Cruz, I’ve been featured on Hackaday before (eyeboard: https://hackaday.com/2011/05/26/tracking-eye-movement-by-measuring-electrons-in-the-eye/ -- 8-bit game console: https://hackaday.com/2010/03/26/8-bit-game-console-with-wireless-motion-controller/). I would like to share with you guys one of my latest projects, it’s Cypher. Cypher is a “personal encryption device”, if you will; i.e a portable device that’s designed for encryption (whether it’s for password encryption, file encryption, email encryption with openPGP, etc), the device runs on Linux so it’s pretty versatile. It’s essentially an air-gapped mini-computer. I am unveiling for the first time all of its source code. The whole point of this is to showcase that it is possible to build a fully portable device with minimum resources! And I am making all the material available to anyone who wants it. But just a little bit of background first…
Back in 2018, I started a project with a friend, Mario Di Bartolomeo. He financed the prototyping and I put together a small team to help me design and build a fully portable device for asymmetric encryption. The idea was to develop an open source portable security device so that anyone could build it themselves or customize to however they please. Our inspiration to develop a personal encryption device started with cryptocurrencies. We opened a startup called Megahash just for the development of this specific project. Here’s an early prototype that I put together back in February 2018: https://www.youtube.com/watch?v=ztC02rVpGmI
The project has evolved a lot since 2018. The current prototype features a 32-bit ARM processor (Texas Instruments Sitara Am335x Cortex A8) that runs on Debian, it has a trusted platform module, an IMU (gyrosensor + accelerometer) for added entropy for random number generation, and also has NFC/RFID capabilities. The latter feature is useful for smartphone use or backing up your private keys (e.g 24 words for BIP39) on an NFC card. The device also has a micro USB connection for UART communication, that way you can connect cypher to your computer (e.g for encrypting files). Everything is done within the device, so all the signing and encryption is done within Cypher; the private keys never leave the device.
One interesting thing: With all the available source code, schematics and PCB design, you can build this fully operational portable device for under $150 (excluding equipment), with equipment it could be around $1,000 (which is not too bad for the magnitude of the project!). The most expensive part is the reflow oven (mine costed like $600), but you could probably find it cheaper. If you have a pick and place machine it helps, as well as a hot air rework station and a microscope. I couldn’t buy the pick and place, but we were successful in assembling 5 PCBs. You can also pay a third company to assemble the PCBs but it’s usually more expensive.
Designing a mobile device from scratch seemed like an impossible task for me alone, I was coding day and night and I even hired 2 more people to help me write code, but a small team like that would not get much done. One thing that truly helped us a lot in order to obtain faster results was using the SIP from Octavo (OSD335x-SM), there was a lot of documentation available and that sped up the development process. We also used available components that we wouldn’t have to ask a manufacturer for a unique part: generic lithium batteries, an ILI9488 for the LCD, etc.
Feel free to check the code and don’t hesitate to ask me any questions. I know there are a lot of things that could have been done more efficient (such as the graphics library – the LCD works on a slow SPI port, 48MHz), but keep in mind that this is an ongoing project. And ironically, everything is plain text (not encrypted yet); currently it’s just a mobile device that *can* be secure (I still need to use the IMU to add entropy for RNG, use the trusted...Read more »