GN⁺: 신뢰할 수 있는 무료 리눅스 지원 64비트 RISC-V 셀프 호스팅 컴퓨터
(contrib.andrew.cmu.edu)신뢰할 수 있고, 자유로운 리눅스 호환 셀프 호스팅 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에서 사용하다가 컴파일 시간이 너무 오래 걸려 중단한 경험을 공유함.