[논문 리뷰] Fuzzing Hardware Like Software
논문은 RTL 하드웨어를 소프트웨어 모델로 변환하고 오픈 소스 소프트웨어 퍼저로 그 모델들을 퍼징해 두 자릿수 두 배(즉, 100배) 더 빠른 FSM 커버리지와 OpenTitan IP 블록에서의 HDL 라인 커버리지를 높이는 하드웨어 퍼징 방법을 제안한다.
Hardware flaws are permanent and potent: hardware cannot be patched once fabricated, and any flaws may undermine any software executing on top. Consequently, verification time dominates implementation time. The gold standard in hardware Design Verification (DV) is concentrated at two extremes: random dynamic verification and formal verification. Both struggle to root out the subtle flaws in complex hardware that often manifest as security vulnerabilities. The root problem with random verification is its undirected nature, making it inefficient, while formal verification is constrained by the state-space explosion problem, making it infeasible against complex designs. What is needed is a solution that is directed, yet under-constrained. Instead of making incremental improvements to existing DV approaches, we leverage the observation that existing software fuzzers already provide such a solution, and adapt them for hardware DV. Specifically, we translate RTL hardware to a software model and fuzz that model. The central challenge we address is how best to mitigate the differences between the hardware execution model and software execution model. This includes: 1) how to represent test cases, 2) what is the hardware equivalent of a crash, 3) what is an appropriate coverage metric, and 4) how to create a general-purpose fuzzing harness for hardware. To evaluate our approach, we fuzz four IP blocks from Google's OpenTitan SoC. Our experiments reveal a two orders-of-magnitude reduction in run time to achieve Finite State Machine (FSM) coverage over traditional dynamic verification schemes. Moreover, with our design-agnostic harness, we achieve over 88% HDL line coverage in three out of four of our designs -- even without any initial seeds.
연구 동기 및 목표
- 전통적인 동적 및 형식적 하드웨어 검증이 복잡한 설계와 보안 결함으로 인해 왜 어려움을 겪는지 동기를 부여한다.
- 디자인에 구애받지 않는 소프트웨어 퍼저 기반의 CDG 대안으로서 하드웨어 퍼징을 소개한다.
- 오픈 소스 도구를 사용하여 RTL 하드웨어를 대규모로 퍼징하기 위한 확장 가능한 HWFP를 개발한다.
- 하드웨어를 소프트웨어처럼 퍼징하는 것이 커버리지 수렴을 가속하고 HDL 라인 커버리지를 증가시킨다는 것을 보인다.
제안 방법
- Verilator를 사용하여 RTL 하드웨어를 소프트웨어 모델로 변환하고 하드웨어 시뮬레이션 바이너리(HSBs)를 만든다.
- 커버리지 가이드된 그레이박 소프트웨어 퍼저를 사용하여 HSBs를 구동하고 소프트웨어 계측을 통해 하드웨어 커버리지를 극대화한다.
- 하드웨어 시퀀스에 대한 2차원 시공 입력으로 퍼저 출력을 매핑하는 일반 퍼징 해저를 설계한다.
- TileLink TL-UL 프로토콜을 기반으로 버스 중심의 퍼징 문법을 도입하여 퍼징 바이트로부터 유효한 버스 트랜잭션을 생성한다.
- Google Cloud Platform에서 오픈 소스 도구를 사용하여 실행되는 Hardware Fuzzing Pipeline(HWFP)을 구축하고 오픈 소스화한다.
- CRV와 비교하기 위해 OpenTitan RoT IP 코어 및 구성 가능한 디지털 자물쇠 FSM에 대해 평가한다.
실험 결과
연구 질문
- RQ1소프트웨어 퍼저를 어떻게 효과적으로 하드웨어 시뮬레이션 바이너리를 구동하도록 적응시킬 수 있는가?
- RQ2소프트웨어처럼 하드웨어를 퍼징하는 것이 일반적인 제약 랜덤 검증(CRV)보다 더 빠른 커버리지 수렴을 제공하는가?
- RQ3일반적인 버스 중심의 퍼징 문법이 RTL 코어의 설계 독립적 퍼징을 가능하게 하는가?
- RQ4하드웨어 퍼징이 HDL 코드 커버리지와 FSM 상태 공간 탐색에 미치는 영향은 무엇인가?
주요 결과
- 하드웨어를 소프트웨어처럼 퍼징하는 것은 기존 CRV에 비해 FSM 커버리지 도달 시간에서 100배 이상 감소했다.
- 버스 중심의 문법을 사용하여 이 방법은 OpenTitan RoT IP 코어 네 개 중 세 코어에서 1시간 내에 시드 없이 88%를 넘는 HDL 라인 커버리지를 달성했다.
- HWFP는 전적으로 오픈 소스 도구로 실행되며 Google Cloud Platform에서 확장된다.
- Verilator의 번역 특성으로 인해 소프트웨어 모델 커버리지를 최대화하면 하드웨어 커버리지도 최대화된다.
- 디자인에 구애받지 않는 해저와 문법은 동일한 버스 프로토콜을 사용하는 여러 RTL 설계 간 재사용 가능한 퍼징을 가능하게 한다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.