1 puntos por GN⁺ 2024-05-20 | 1 comentarios | Compartir por WhatsApp

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

 
GN⁺ 2024-05-20
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.