1P by neo 2달전 | favorite | 댓글 1개

신뢰할 수 있고, 자유로운 리눅스 호환 셀프 호스팅 64비트 RISC-V 컴퓨터

동기

  • 목표: 완전히 신뢰할 수 있는 Free/OpenSource 컴퓨터를 구축하는 것

    • 하드웨어와 소프트웨어 시스템의 모든 행동이 완전히 공개된 HDL(하드웨어 설명 언어)과 소프트웨어 소스에 기인함
    • 컴파일러와 관련된 툴체인도 Free/OpenSource여야 하며, 해당 컴퓨터 시스템에서 빌드 및 실행 가능해야 함
    • 즉, 셀프 호스팅 Free/OpenSource 하드웨어+소프트웨어 스택이 필요함
  • 제약 조건: 실리콘 파운드리를 소유하거나 제어하지 않음

    • 자체 ASIC을 제작할 수 없으므로, FPGA에서 "하드웨어" 구성 요소를 구축할 것
    • FPGA 프로그래밍 및 비트스트림 생성은 Free/OpenSource 도구를 사용하여 수행할 것
  • 신뢰성 측면에서의 이점:

    • 칩 파운드리는 FPGA가 무엇에 사용될지 알 수 없으며, "특권 비트"가 칩의 어디에 배치될지 알 수 없음
    • 이는 특권 상승 하드웨어 백도어를 방지하는 데 도움이 됨
    • FPGA는 동일한 구성 요소의 규칙적인 그리드로 구성되어 있어, 전용 ASIC보다 시각적 검사(화학적 제거 및 TEM 이미징)가 더 용이함
  • 제작 단계 공격 표면 제한:

    • 악의적인 소스 및/또는 툴체인을 빌드 가능한 소스로 제한하여, 신뢰할 수 있는 최종 제품(배포된 하드웨어+소프트웨어 컴퓨터)을 만듦

추가 자료 및 초기 실험

  • CReSCT 2020 논문, 슬라이드 및 발표: IEEE S&P 2020 인용

  • CMU/SEI 연구 리뷰 2019 슬라이드 데크 및 발표

  • CERT/SEI에서의 신뢰할 수 있는 컴퓨팅 작업에 대한 이전 슬라이드 데크

  • lowRISC 프로젝트:

    • 구성 요소를 해당 업스트림 프로젝트로 리베이스하려는 노력
    • 이 프로젝트는 매우 유용한 자원이었으며, 구성 요소를 이해하는 데 큰 도움이 되었음
    • 그러나 작성 시점에는 폐쇄형 HDL 툴체인에 의존하며, 구성 요소 목록에 독점 IP 모듈(DRAM 컨트롤러 등)을 사용함
  • yoloRISC:

    • RV64IMAC, Rocket-Chip 기반 블링키 데모 SoC
    • Lattice ECP5 5G Versa 개발 보드를 위해 yosys/trellis/nextpnr를 사용하여 구축됨

GN⁺의 의견

  • 자유로운 하드웨어와 소프트웨어: 이 프로젝트는 완전히 자유롭고 오픈소스인 하드웨어와 소프트웨어를 구축하려는 시도로, 신뢰성과 투명성을 중시하는 사용자에게 큰 매력을 가짐.
  • FPGA의 장점: FPGA를 사용함으로써 하드웨어 백도어를 방지하고, 시각적 검사를 통해 신뢰성을 높일 수 있음.
  • 툴체인과 IP 모듈: 현재 많은 프로젝트가 폐쇄형 툴체인과 독점 IP 모듈에 의존하고 있어, 완전한 오픈소스를 추구하는 데 어려움이 있음.
  • 기술적 도전: 셀프 호스팅 Free/OpenSource 하드웨어+소프트웨어 스택을 구축하는 것은 기술적으로 매우 도전적인 작업임.
  • 미래의 가능성: 이 프로젝트는 미래의 신뢰할 수 있는 컴퓨팅 시스템 개발에 중요한 기여를 할 수 있으며, 오픈소스 커뮤니티에 큰 영향을 미칠 수 있음.
Hacker News 의견

해커뉴스 댓글 모음 요약

  • FPGA의 보안성: FPGA 제조 공정에서 하드웨어 백도어를 심는 것을 방지할 수 있음. 시스템이 완전히 멈출 수는 있지만, 정상적으로 작동하는 척하면서 주인을 배신하지는 않음.

  • FPGA의 잠재적 위험: FPGA에 숨겨진 CPU가 있을 수 있으며, 이는 FPGA 프로그램에 대한 완전한 읽기/쓰기 접근 권한을 가질 수 있음. 시스템이 인기를 끌면 제조 공정에서 더 많은 정보를 얻어 특권 비트를 찾을 가능성이 높아짐.

  • 오픈 소스 툴체인 사용: 오픈 소스 툴체인을 사용하여 RISV-V 소프트코어를 실행하는 OrangeCrab FPGA에서 리눅스 셸에 로그인하는 것이 놀라움. 과거에는 불가능했던 일임.

  • VexRiscv와 SpinalHDL: VexRiscv와 SpinalHDL을 기반으로 한 디자인을 사용 중이며, 제한된 SRAM(512KB) 때문에 리눅스를 실행하지는 않지만 이더넷과 HDMI를 지원함. CGA와 유사한 비디오 어댑터를 코딩하여 그래픽과 텍스트 모드를 지원함.

  • DDC와 신뢰 공격: 다양한 이중 컴파일(DDC)을 통해 신뢰 공격을 방지하는 작업에 대한 언급이 기쁨. DDC에 관심이 있다면 관련 링크를 참조할 것을 권장함.

  • 시스템 재구축: 시스템을 자체적으로 재구축하고 비트파일이 동일한지 검증하는 것이 좋음. 512MB에서 65MHz CPU로 4.5시간 만에 재구축할 수 있다는 점이 놀라움.

  • 초기 Unix 워크스테이션과 비교: 50-65MHz와 512MB는 1990년대 초반의 Unix 워크스테이션과 비교할 만함. RAM 측면에서는 더 나을 수 있음.

  • LiteX와 Kintex-7 FPGA: 2022년에 LiteX를 사용하여 비슷한 작업을 했지만, Kintex-7 FPGA는 Vivado가 필요했음. 결과적으로 리눅스와 Xorg를 실행하는 오픈 게이트웨어 노트북을 만들었음.

  • Shakti 프로젝트: 인도 IIT-Madras에서 개발한 RISC-V 기반의 오픈 소스 프로세서 개발 생태계인 Shakti 프로젝트를 참조할 것을 권장함.

  • OSXKVM 작업: QEMU/KVM에서 OSX를 실행하는 작업을 한 사람과 동일한 사람이 이 프로젝트를 진행함.

  • 자체 호스팅 RISC-V 머신 필요성: 완전한 자체 호스팅 RISC-V 머신이 필요하다는 의견. 현재 가장 큰 제한 요소는 충분한 RAM을 가진 FPGA 보드를 찾는 것임.

  • 자체 호스팅의 어려움: 자체 호스팅 하드웨어와 소프트웨어 아이디어는 좋지만, 60MHz CPU에서 GCC 같은 것을 빌드하는 것은 상상할 수 없을 정도로 어려움. Gentoo를 RockPro64에서 사용하다가 컴파일 시간이 너무 오래 걸려 중단한 경험을 공유함.