Computadora RISC-V de 64 bits autoalojada, confiable, libre y compatible con Linux
(contrib.andrew.cmu.edu)Computadora RISC-V de 64 bits autoalojada, confiable, libre y compatible con Linux
Motivación
-
Objetivo: construir una computadora Free/OpenSource completamente confiable
- Todo el comportamiento de los sistemas de hardware y software debe derivarse por completo de HDL (lenguaje de descripción de hardware) y del código fuente de software totalmente públicos
- El compilador y la cadena de herramientas relacionada también deben ser Free/OpenSource, y deben poder compilarse y ejecutarse en ese sistema informático
- Es decir, se necesita una pila de hardware + software Free/OpenSource autoalojada
-
Restricción: no se posee ni se controla una fundición de silicio
- Como no se puede fabricar un ASIC propio, los componentes de "hardware" se construirán en un FPGA
- La programación del FPGA y la generación del bitstream se realizarán usando herramientas Free/OpenSource
-
Ventajas desde la perspectiva de la confiabilidad:
- La fundición de chips no puede saber para qué se usará el FPGA ni dónde estarán ubicados los "bits privilegiados" dentro del chip
- Esto ayuda a prevenir puertas traseras de hardware para escalación de privilegios
- Los FPGA están compuestos por una cuadrícula regular de los mismos componentes, por lo que son más fáciles de inspeccionar visualmente (eliminación química e imágenes TEM) que un ASIC dedicado
-
Limitación de la superficie de ataque en la etapa de fabricación:
- Al limitar las fuentes maliciosas y/o la toolchain a código fuente que pueda compilarse, se obtiene un producto final confiable (una computadora distribuida de hardware + software)
Material adicional y experimentos iniciales
-
Artículo, diapositivas y presentación de CReSCT 2020: cita de IEEE S&P 2020
-
Presentación y conjunto de diapositivas de revisión de investigación 2019 de CMU/SEI
-
Conjunto de diapositivas previo sobre trabajo de computación confiable en CERT/SEI
-
Proyecto lowRISC:
- Esfuerzo por rebasar los componentes sobre sus proyectos upstream correspondientes
- Este proyecto ha sido un recurso muy útil y ayudó mucho a entender los componentes
- Sin embargo, al momento de escribir esto, depende de una toolchain HDL cerrada y usa módulos IP propietarios (como controladores DRAM) en su lista de componentes
-
yoloRISC:
- SoC de demostración blinky basado en Rocket-Chip con RV64IMAC
- Construido para la placa de desarrollo Lattice ECP5 5G Versa usando yosys/trellis/nextpnr
Opinión de GN⁺
- Hardware y software libres: este proyecto busca construir hardware y software completamente libres y de código abierto, lo que resulta muy atractivo para quienes priorizan la confiabilidad y la transparencia.
- Ventajas del FPGA: al usar un FPGA, se pueden prevenir puertas traseras de hardware y aumentar la confiabilidad mediante inspección visual.
- Toolchain y módulos IP: actualmente muchos proyectos dependen de toolchains cerradas y módulos IP propietarios, lo que dificulta perseguir una solución completamente de código abierto.
- Desafío técnico: construir una pila de hardware + software Free/OpenSource autoalojada es una tarea técnicamente muy desafiante.
- Posibilidades futuras: este proyecto puede hacer una contribución importante al desarrollo de sistemas de computación confiables del futuro y podría tener un gran impacto en la comunidad de código abierto.
1 comentarios
Comentarios de Hacker News
Resumen de comentarios de Hacker News
Seguridad de los FPGA: Se puede evitar insertar puertas traseras de hardware durante el proceso de fabricación del FPGA. El sistema puede dejar de funcionar por completo, pero no va a fingir que funciona normalmente mientras traiciona a su dueño.
Riesgos potenciales de los FPGA: Podría haber una CPU oculta dentro del FPGA, y esta podría tener acceso completo de lectura/escritura al programa del FPGA. Si el sistema gana popularidad, aumenta la posibilidad de obtener más información del proceso de fabricación para encontrar bits privilegiados.
Uso de una toolchain de código abierto: Sorprende poder iniciar sesión en un shell de Linux en un OrangeCrab FPGA ejecutando un softcore RISC-V con una toolchain de código abierto. Antes era algo imposible.
VexRiscv y SpinalHDL: Se está usando un diseño basado en VexRiscv y SpinalHDL y, aunque no ejecuta Linux por la SRAM limitada (512 KB), sí soporta Ethernet y HDMI. También se codificó un adaptador de video similar a CGA para soportar modos gráficos y de texto.
DDC y ataques a la confianza: Da gusto ver una mención al trabajo para prevenir ataques a la confianza mediante Diverse Double-Compiling (DDC). Si te interesa DDC, recomiendan revisar los enlaces relacionados.
Reconstrucción del sistema: Conviene reconstruir el sistema por cuenta propia y verificar si el bitfile es idéntico. Sorprende que pueda reconstruirse en 4.5 horas con 512 MB y una CPU de 65 MHz.
Comparación con estaciones de trabajo Unix tempranas: 50-65 MHz y 512 MB son comparables con estaciones de trabajo Unix de principios de los 90. En RAM, incluso podría ser mejor.
LiteX y FPGA Kintex-7: En 2022 se hizo algo parecido usando LiteX, pero el FPGA Kintex-7 requería Vivado. Al final, se creó una laptop con gateware abierto que ejecuta Linux y Xorg.
Proyecto Shakti: Recomiendan revisar el proyecto Shakti, un ecosistema de desarrollo de procesadores open source basados en RISC-V desarrollado en IIT-Madras, India.
Trabajo en OSXKVM: Esta persona es la misma que trabajó en ejecutar OSX en QEMU/KVM y ahora está llevando adelante este proyecto.
Necesidad de una máquina RISC-V self-hosting: Hay opiniones de que hace falta una máquina RISC-V completamente self-hosting. La mayor limitación hoy es encontrar una placa FPGA con suficiente RAM.
Dificultad del self-hosting: La idea de hardware y software self-hosting suena bien, pero compilar algo como GCC en una CPU de 60 MHz parece increíblemente difícil. También se comparte la experiencia de haber usado Gentoo en una RockPro64 y abandonarlo porque los tiempos de compilación eran demasiado largos.