Andrew Huang (), a well-known advocate for free hardware, is the recipient of the , open platform āā, designed for creating concepts of new mobile devices. Similar to how Raspberry Pi and Arduino allow for the development of Internet of Things devices, Precursor aims to provide the means to design and build various mobile devices for personal needs.
Unlike other projects, Precursor offers enthusiasts not just a board but a complete prototype of a portable device with an aluminum casing measuring 69 x 138 x 7.2 mm, an LCD screen (336Ć536), a battery (1100 mAh Li-Ion), a miniature keyboard, a speaker, a vibration motor, an accelerometer, and a gyroscope. The computing module comes not with a ready processor but with a software-defined SoC based on Xilinx XC7S50, which enables emulation of a 32-bit RISC-V CPU running at 100 MHz. There are no limitations on emulating other hardware components, for example, the operation of various processors, from 6502 and Z-80 to AVR and ARM, as well as sound chips and various controllers. The board includes 16 MB SRAM, 128 MB Flash, Wi-Fi Silicon Labs WF200C, USB type C, SPI, I²C, GPIO.
Among the security features, there are two hardware random number generators. Interestingly, the device is fundamentally supplied without a built-in microphone ā it is implied that sound input is only possible with an explicit connection of a headset; if the headset is disconnected, it is physically impossible to eavesdrop, even if the device's software has been compromised.
The wireless communication chip (Wi-Fi) is hardware-isolated from the rest of the platform and operates in a separate environment. To protect against unauthorized access, a locking case is also utilized, a separate RTC to monitor integrity, and standby motion monitoring (with always-on accelerometer and gyroscope). There is also a self-destruct circuit and instant data wipe feature, activated using an AES key.
The FHDL language is used to describe hardware components. (Fragmented Hardware Description Language), based on Python. Migen is part of the , which provides infrastructure for creating electronic circuits. A reference SoC has been prepared based on Precursor using FPGA and LiteX, , featuring a 100 MHz CPU VexRISC-V RV32IMAC, as well as an embedded controller,
Betrusted-EC with an 18 MHz LiteX VexRISC-V RV32I core.
The Betrusted SoC includes a built-in set of cryptographic primitives, such as a pseudo-random number generator, AES-128, -192, -256 with ECB, CBC, and CTR modes, SHA-2 and SHA-512, based on elliptic curves Curve25519. The cryptographic engine is written in SystemVerilog and based on cryptographic cores from the .
Precursor is positioned as a platform for creating and verifying prototypes, while Betrusted is one of the ready-made mobile devices created on the basis of Precursor. Since traditional enclaves used for isolated storage of cryptographic keys do not protect against high-level attacks, such as password collection using keyloggers or access to messages through screen capture, Betrusted's enclave implementation includes user interaction elements (, Human-Computer Interaction), ensuring that secret data that can be read by a person is never stored, displayed, or transmitted outside the secure device.
Betrusted does not aim to replace a mobile phone but rather forms a secure enclave with input and output that is auditable. For example, an external smartphone can be used via Wi-Fi as an untrusted data transmission channel, but the encrypted messages sent are only input on the built-in keyboard of the Betrusted device, and received messages are displayed only on the built-in screen.
All components of Precursor and Betrusted are open and available for modification and experimentation under the , which requires that all derivative works be shared under the same license. The full project documentation is also open, including and the complete project documentation the finished implementation of the and (). Models for 3D printing of the case are available. A set of firmware and specialized and specialized Xous based on a microkernel.
Source: opennet.ru
