Vertrauenswürdiger kostenloser Linux-fähiger 64-Bit-RISC-V-Computer zum Self-Hosting
(contrib.andrew.cmu.edu)Vertrauenswürdiger, freier Linux-kompatibler 64-Bit-RISC-V-Computer zum Self-Hosting
Motivation
-
Ziel: Einen vollständig vertrauenswürdigen Free/OpenSource-Computer aufzubauen
- Jedes Verhalten des Hardware- und Softwaresystems lässt sich vollständig auf offengelegte HDL (Hardware Description Language) und Software-Quellen zurückführen
- Auch der Compiler und die zugehörige Toolchain müssen Free/OpenSource sein und auf dem betreffenden Computersystem gebaut und ausgeführt werden können
- Das heißt, es wird ein selbsthostender Free/OpenSource-Hardware-+Software-Stack benötigt
-
Randbedingungen: Keine Silizium-Foundry besitzen oder kontrollieren
- Da kein eigenes ASIC hergestellt werden kann, werden die „Hardware“-Komponenten auf einem FPGA aufgebaut
- FPGA-Programmierung und Bitstream-Erzeugung sollen mit Free/OpenSource-Werkzeugen erfolgen
-
Vorteile im Hinblick auf Vertrauenswürdigkeit:
- Die Chip-Foundry kann nicht wissen, wofür das FPGA verwendet wird, und nicht wissen, wo sich „privilegierte Bits“ auf dem Chip befinden
- Das hilft dabei, Hardware-Backdoors zur Privilegieneskalation zu verhindern
- FPGA bestehen aus einem regelmäßigen Gitter identischer Komponenten, wodurch visuelle Inspektion (chemisches Abtragen und TEM-Imaging) einfacher ist als bei dedizierten ASICs
-
Begrenzung der Angriffsfläche in der Fertigungsphase:
- Durch die Beschränkung auf buildbare Quellen für bösartige Quellen und/oder Toolchains wird ein vertrauenswürdiges Endprodukt (der ausgelieferte Hardware-+Software-Computer) geschaffen
Weiteres Material und frühe Experimente
-
CReSCT-2020-Paper, Folien und Vortrag: IEEE S&P 2020 citation
-
CMU/SEI-Forschungsreview 2019 Foliensatz und Vortrag
-
Früherer Foliensatz zu Arbeiten an vertrauenswürdigem Computing bei CERT/SEI
-
lowRISC-Projekt:
- Bemühungen, Komponenten auf die jeweiligen Upstream-Projekte zurückzuführen
- Dieses Projekt war eine sehr nützliche Ressource und hat beim Verständnis der Komponenten sehr geholfen
- Zum Zeitpunkt des Schreibens stützt es sich jedoch auf eine geschlossene HDL-Toolchain und verwendet proprietäre IP-Module in der Komponentenliste (DRAM-Controller usw.)
-
yoloRISC:
- RV64IMAC, Rocket-Chip-basierte Blinky-Demo-SoC
- Mit yosys/trellis/nextpnr für das Lattice ECP5 5G Versa Development Board aufgebaut
Meinung von GN⁺
- Freie Hardware und Software: Dieses Projekt ist ein Versuch, vollständig freie und Open-Source-Hardware und -Software aufzubauen, und ist für Nutzer, die Wert auf Vertrauenswürdigkeit und Transparenz legen, äußerst attraktiv.
- Vorteile von FPGA: Durch den Einsatz von FPGA lassen sich Hardware-Backdoors verhindern und die Vertrauenswürdigkeit durch visuelle Inspektion erhöhen.
- Toolchain und IP-Module: Viele Projekte sind derzeit auf geschlossene Toolchains und proprietäre IP-Module angewiesen, was das Streben nach vollständigem Open Source erschwert.
- Technische Herausforderung: Einen selbsthostenden Free/OpenSource-Hardware-+Software-Stack aufzubauen, ist technisch äußerst anspruchsvoll.
- Zukünftiges Potenzial: Dieses Projekt kann einen wichtigen Beitrag zur Entwicklung zukünftiger vertrauenswürdiger Computing-Systeme leisten und großen Einfluss auf die Open-Source-Community haben.
1 Kommentare
Hacker-News-Meinungen
Zusammenfassung ausgewählter Hacker-News-Kommentare
Sicherheit von FPGAs: Es lässt sich verhindern, dass im FPGA-Fertigungsprozess Hardware-Backdoors eingebracht werden. Das System kann zwar vollständig ausfallen, wird aber nicht so tun, als funktioniere es normal, während es seinen Besitzer verrät.
Potenzielles Risiko von FPGAs: In einem FPGA könnte eine versteckte CPU stecken, die vollständigen Lese-/Schreibzugriff auf das FPGA-Programm haben kann. Wenn das System populär wird, steigt die Wahrscheinlichkeit, dass im Fertigungsprozess mehr Informationen gewonnen werden, um privilegierte Bits zu finden.
Verwendung einer Open-Source-Toolchain: Es ist erstaunlich, sich auf einem OrangeCrab-FPGA, das einen RISV-V-Softcore mit einer Open-Source-Toolchain ausführt, in eine Linux-Shell einzuloggen. Früher war so etwas unmöglich.
VexRiscv und SpinalHDL: Es wird ein Design auf Basis von VexRiscv und SpinalHDL verwendet. Wegen des begrenzten SRAMs (512 KB) läuft darauf zwar kein Linux, aber Ethernet und HDMI werden unterstützt. Es wurde ein dem CGA ähnlicher Videoadapter programmiert, der Grafik- und Textmodus unterstützt.
DDC und Vertrauensangriffe: Die Erwähnung von Arbeiten zur Verhinderung von Vertrauensangriffen durch Diverse Double-Compiling (DDC) ist erfreulich. Wer sich für DDC interessiert, sollte sich die entsprechenden Links ansehen.
Neubau des Systems: Es ist sinnvoll, das System selbst neu zu bauen und zu verifizieren, ob die Bitfiles identisch sind. Erstaunlich ist, dass der Neuaufbau mit 512 MB und einer 65-MHz-CPU in 4,5 Stunden möglich sein soll.
Vergleich mit frühen Unix-Workstations: 50–65 MHz und 512 MB sind mit Unix-Workstations aus den frühen 1990er-Jahren vergleichbar. Beim RAM könnte das System sogar besser sein.
LiteX und Kintex-7-FPGA: 2022 wurde mit LiteX etwas Ähnliches gemacht, aber für das Kintex-7-FPGA war Vivado nötig. Am Ende entstand ein Open-Gateware-Laptop, auf dem Linux und Xorg laufen.
Shakti-Projekt: Es wird empfohlen, sich das Shakti-Projekt anzusehen, ein an IIT-Madras in Indien entwickeltes Open-Source-Prozessorentwicklungs-Ökosystem auf Basis von RISC-V.
OSXKVM-Arbeit: Dasselbe Projekt wird von der Person vorangetrieben, die auch an der Ausführung von OSX unter QEMU/KVM gearbeitet hat.
Notwendigkeit einer selbstgehosteten RISC-V-Maschine: Es wird die Ansicht vertreten, dass eine vollständig selbstgehostete RISC-V-Maschine notwendig ist. Der derzeit größte limitierende Faktor ist ein FPGA-Board mit ausreichend RAM.
Schwierigkeit des Self-Hostings: Die Idee von selbstgehosteter Hard- und Software ist gut, aber etwas wie GCC auf einer 60-MHz-CPU zu bauen, ist kaum vorstellbar schwierig. Es wird die Erfahrung geteilt, Gentoo auf einem RockPro64 genutzt und wegen der viel zu langen Kompilierzeiten aufgegeben zu haben.