Skip to the content
2 layers68 × 89 mmParanoiaBox, the printed circuit board in 3D

A standalone elliptic curve/AES file encryption and decryption device

Size
68 × 89 mm
Copper layers
2
Thickness
1.6 mm
Parts
60
Nets
62
Pads
211
Tracks, vias
830, 189
Pours
2
Routed
Yes
KiCad
KiCad 4
Created
20 Mar 2020
Updated
28 Jun 2023

Overview

ParanoiaBox is an open-source printed circuit board by profdc9, from the profdc9/ParanoiaBox repository on GitHub. It is a 2-layer board of 68 × 89 mm with 60 parts on 62 nets, routed with 830 tracks and 189 vias.

It is built around the LM1117-3.3, LM7805CT and NE555, with the UF4007 among its other parts. Its parts include 22 resistors, 16 capacitors, 9 connectors, 5 ICs and 4 transistors.

Main components

4

README

README.md

ParanoiaBox

The ParanoiaBox by Daniel L. Marks

The ParanoiaBox is a standalone open hardware/software encryption device based on the STM32F103CBT6 processor. On this device, messages may be composed, encrypted, decrypted, and viewed. The device is an experiment in encryption minimalism, presenting a minimal attack surface by using a small microcontroller rather than a full personal computer with a complex operating system, while providing the functionality needed to transact encrypted messages between humans through insecure networks. The device is connected to a NTSC television and a PS/2 keyboard for user input and control. There are two micro SD card slots, one for ciphertext and the other for plaintext used to transact files. There is a hardware random number generator based on avalanche noise generated in two transistors. A picture of the complete PCB of the device can be seen below:

x

At the top of the board is a RCA composite video connector. At the right is a USB B connector that can be used to program the microcontroller. At the lower right is a female PS/2 keyboard connector. At the bottom are two SD card slots. Finally, at the left is a barrel jack for 7 to 12 volt DC input power. Except for the micro SD card slots, the PCB is all through assembly so it can be assembled more easily using simple tools.

The hardware is licensed under the Creative Commons CC-BY-SA 4.0 license. The software written by D. L. Marks is licensed under the zlib license. All other libraries are licensed under the licenses as described in the corresponding source files. This hardware and software is provided under these licenses to be used at your own risk.

THE HARDWARE AND SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE HARDWARE AND SOFTWARE OR THE USE OR OTHER DEALINGS IN THE HARDWARE AND SOFTWARE.

The project uses Advanced Encryption Standard AES256-GCM Galois Counter Mode as an authenticated symmetric encryption. The keys are derived from shared secrets based on then Elliptic Curve Diffie-Hellmann (ECDH) 25519. The keys are encrypted using a passphrase and AES256-GCM and stored in the flash memory of the microcontroller. The encrypted data and public key certificates are base64 encoded so that they can be transmitted through e-mail as text files. The library used is the Arduino Cryptography Library by Rhys Weatherley:

https://rweather.github.io/arduinolibs/crypto.html

The project uses the stm32duino libraries located here:

https://github.com/rogerclarkmelbourne/Arduino_STM32

All other Arduino libraries are provided in the libraries directory in this project, including those that provide the FAT fs, NTSC video output, PS/2 keyboard input, and cryptography. To enter a message into the microcontroller, there is a full-screen text editor:

x

There is a the built-in full-screen editor used to compose short messages. Files may be selected from the SD cards for editing, encryption, or decryption:

x

This is the key manager screen from which the AES 256 symmetric, ECDH25519 private or public keys are selected:

x

To encrypt/decrypt using AES, a AES key is selected. To encrypt/decrypt using ECDH25519, a private and public key pair are selected. Then one selects a file to encrypt or decrypt. Separate SD cards must be used for encryption and decryption to ensure that both are not available together to be compared. One can export a public key certificate from a private key. After selection, the main screen shows the selected keys:

x

The message is then encrypted by selecting the file from the card in the plaintext slot using the (E)ncrypt option. Then the encrypted file is placed on the card in the ciphertext slot. You can view this file which is text encoded to be easily transmitted over email:

x

Once it has been received, it can be decrypted and viewed, and it looks like the original:

x

Parts

60
QtyValueFootprintReferences
7100 nFCapacitors_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC2, C3, C6, C9, C10, C13, C15
510 uFCapacitors_THT:CP_Radial_D5.0mm_P2.50mmC1, C4, C5, C8, C12
41MResistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR10, R11, R17, R18
4Conn_01x01Connectors:1pinJ3, J4, J5, J6
3100kResistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR8, R12, R19
31kResistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR4, R5, R14
3220RResistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR20, R21, R22
32N3904TO_SOT_Packages_THT:TO-92_Inline_WideQ2, Q3, Q4
21 uFCapacitors_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC14, C18
222RResistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR15, R16
24k7Resistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2
2MicroSD_SPI_CDParanoiaBox:GCT-MEM2055-00-190-01-AU1, U2
1100 pFCapacitors_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC7
1100 uFCapacitors_THT:CP_Radial_D10.0mm_P5.00mmC11
1100 uHInductors_THT:L_Toroid_Horizontal_D5.1mm_P9.00mm_Diameter6-5mm_Amidon-T20L1
110kResistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR3
122kResistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR13
1240RResistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR7
12N2222TO_SOT_Packages_THT:TO-92_Inline_WideQ1
1560RResistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR6
182RResistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR9
1BLUEPILLParanoiaBox:BLUEPILLUB1
1Barrel_JackConnectors:BARREL_JACKJ1
1Conn_01x04Pin_Headers:Pin_Header_Straight_1x04_Pitch2.54mmJ8
1Jumper_NC_DualPin_Headers:Pin_Header_Straight_1x03_Pitch2.54mmJP1
1LM1117-3.3TO_SOT_Packages_THT:TO-220-3_HorizontalU5
1LM7805CTTO_SOT_Packages_THT:TO-220-3_HorizontalU4
1Mini-DIN_6pins_ver4ParanoiaBox:Connector_Mini-DIN_Female_6Pin_2rowsP1
1NE555Housings_DIP:DIP-8_W7.62mm_SocketU3
1RCAJackParanoiaBox:RCAConnectorCommonJ2
1UF4007Diodes_THT:D_DO-41_SOD81_P7.62mm_HorizontalD1
1USB_BConnectors:USB_BJ7

Similar boards

  • 2 layers156.5 × 67.5 mmNixieScanDisplay, the printed circuit board in 3D

    NixieScanDisplay

    profdc9/NixieClock

    A Nixie clock that uses IN-14 tubes and very generic components that can be easily sourced.

    106 parts10
  • 2 layers30 × 100 mmMoskill, the printed circuit board in 3D

    Moskill

    telagod/moskill

    MosKill - Smart Mosquito Swatter with BLE, Kill Counting & Statistics | ESP32-C3 + KiCad PCB + UniApp

    95 parts2
  • 2 layers49.5 × 49.5 mmPcb1, the printed circuit board in 3D

    Pcb1

    kristophertab/pcb_robot

    67 parts
  • 2 layers96.3 × 98 mmAquarium, the printed circuit board in 3D

    Aquarium

    baranovskiykonstantin/aquarium

    Control the lighting and the heating of the aquarium.

    73 parts11
  • 2 layers100 × 70 mmMotorDriver, the printed circuit board in 3D

    MotorDriver

    JeyRunner/actonator

    3D printable robot actuator with belt-driven gearbox and custom FOC driver board.

    177 parts10MIT
  • 4 layers147.8 × 77 mm2xBLDCPicoV3, the printed circuit board in 3D

    2xBLDCPicoV3

    AmericanRework/Pico-2x-BLDC

    One RP2040 Pico drives two brushless motors! SimpleFOC + Halls + 2304 drivers + TO-220 mosfets or IGBTs. Plugs directly into 450x automower motors.

    135 parts7
  • 2 layers373 × 132.3 mmSolarinverter, the printed circuit board in 3D

    Solarinverter

    cpipero/solarinverter

    Kicad Project to build a programmable Solar Inverter

    370 parts5CC0-1.0
  • 2 layers329.9 × 146.6 mmBabyHuey, the printed circuit board in 3D

    BabyHuey

    tristancollins/HiFi-BabyHuey

    An "Engineer's" Baby Huey EL34 PCB

    201 parts5

Questions

How big is the ParanoiaBox PCB?

It measures 68 × 89 mm and has 2 copper layers, 1.6 mm thick.

What parts does the ParanoiaBox use?

60 parts, built around the LM1117-3.3, LM7805CT, NE555 and UF4007. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the ParanoiaBox KiCad files?

From the profdc9/ParanoiaBox repository on GitHub, at the commit this page was made from: the board is board/ParanoiaBox.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the ParanoiaBox design in my own project?

Its repository states no licence, so its author keeps all rights: ask profdc9 before reusing the design.