0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SiFive HiFive Unmatched Rev Bで遊ぶ - RISC-VにおけるConfidential Computing

0
Last updated at Posted at 2026-10-11

以前の記事にて,SiFiveのRISC-Vボードを調達した.これの上で(エミュレーションではなく)実際にRISC-V TEEを動作させてアテステーションなど色々と試したい.そのために先ずRISC-V TEEを調べる必要があったので,その調べた(調べている)内容を書き留めておく.

RISC-V TEE

RISC-Vはオープンソースの命令セットアーキテクチャ(Instruction Set Architecture, ISA)である.オープンソースというよりパテントフリーという言い方のほうが自然な気もするが.

権限分離

RISC-Vでは3つの基本的な特権レベルとしてMachineモード(M-mode),Supervisorモード(S-mode),Userモード(U-mode)が存在する.それぞれのレベルで実行可能な命令が異なる1.

RISC-V Privilege Level Ring Protection What is running
U-mode 2 User app
S-mode 1 OS/Kernel
M-mode 0 FW/HV

さらに,仮想化のためのHypervisor拡張2においては,権限レベルとしてHypervisor拡張Supervisorモード(HS-mode)と呼ばれる権限レベルが存在する.また,仮想化されたS-mode及びU-modeとして,仮想Supervisorモード(VS-mode)及び仮想Userモード(VU-mode)が用意されている.

メモリアクセス分離

物理メモリへのアクセス制御機構としてPhysical Memory Protection(PMP)機能が存在する(プロセッサ依存).PMP機能を持つハードウェアにおいては,M-modeからのみアクセス可能なレジスタ pmpaddr / pmpcfg に対し,保護したいメモリアドレス領域とアクセス権限を設定することで,メモリアクセス分離(memory access isolation)を実現する.

PMPはあくまでCPU↔DRAM間のメモリアクセス制御である.よってペリフェラルからDRAMへのDirect Memory Access(DMA)などは保護対象外である.これらに対するアクセス制御についてはInput/Output Physical Memory Protection(IOPMP)やSiFive WorldGuardなどの保護機構が提案されている.

なお,PMP機能の有無,PMPに利用可能なレジスタの個数等は,全てハードウェア実装に依存する.

TEE

上記の権限階層とPMPとにより,Arm TrustZone3におけるSecure Worldのような,メモリアクセス分離ベースのTrusted Execution Environment(TEE)を構成できる.すなわち,Machine ModeにSecurity Monitorを置き,これがPMPによるメモリアクセス分離を行いつつ,それより低い権限レベルにあるコンポーネントを監視する.これがRISC-V TEEである45.

RISC-V TEEは「RISC-Vの機能を組み合わせればTEEが実現できる」という概念レベルの話であり,標準的なTEEアーキテクチャが存在するわけではない.RISC-VベースのTEEにはKeyStone6,Penglai7,Sanctum89など様々な実装例/PoCが存在する.オープンソースならでは.ユーザからすればどれを使えば分からないという弊害しかない.

さらに,Hypervisor拡張を含む複数の拡張機能により,仮想化ベースのTEEであるConfidential VMを実現する試みもある.こちらについては命令セット等の機能拡張を伴うので,RISC-V Confidential VM Extension(CoVE)10として仕様策定が進められている.

ただしRISC-VはHardware Root of Trustを提供しない.すなわちRoT keyを焼き込むためのe-fuse(あるいはそれを含むようなコプロセッサ)などのanti-tamper storageは別途用意されなければならない.

実態

RISC-V TEEは,Machineモードというのが特権的なモードなのだから,そこにPMP/IOPMP管理などを担うSecurity Monitorを乗っけて,それより権限レベルの低いモードでOSやTrusted/Untrusted Appsを動作させればいいだろう,というシンプルな話であった.とはいえTEEにおいてシンプルな話ほど信用ならないものはない.

実際,実装が乱立しているという話からも分かるように,現状はSecurity Monitorなど全て自前で実装しなければならないのであって,かつリファレンス実装があるわけでもない.例えば,KeyStoneのSecurity Monitorは特定のプラットフォームに対してのみ実装されている11ため,別のプラットフォームで動作させるためにはSMの実装を移植する必要がある.地獄である.

ちなみにKeyStoneは開発がinactiveに移行している.

RISC-V TEE対応マシン

RISC-Vプロセッサを搭載した実機は無数にあるのだが,TEEを実現するために必要な機能をサポートする実機は限られている.例えば,Raspberry PiにはRISC-Vプロセッサを搭載したRaspberry Pi Pico 2というのがあるが,これはTEE capabilityを持たない.

SiFive

SiFiveはRISC-Vプロセッサを開発する米国のファブレス半導体企業である.前述のWorldGuardはSiFiveが開発してRISC-Vに譲渡されたものである.

SiFive Essential U74(RV64GC),SiFive S7(RV64IMAC),SiFive P550(RV64)などのコアIPを保有し,中国のESWINなどの半導体企業がこれを搭載したSoCを製造している.ESWIN EIC7700Xは,CPUとして4-core P550を,GPUとしてImagination Technologies AXM-8-256,さらに19.95TOPS@INT8のNPUを搭載したSoCである.

SiFiveは自社でもSoCをプロダクトとして展開しており,4-core U74と1-core S7という異種のコアを同居させたSoCであるSiFive Freedom U740や,データセンタ向けの32-core P870からなるSiFive BigSky SoC(TSMC製造)などがある.

SiFiveは自社IPのプロセッサ/SoCを搭載したシステムも販売している.前述のU740を搭載したSBCであるHiFive Unmatched Rev.B,ESWIN EIC7700X搭載のSBC HiFive
 Premier P550,さらにBigSkyを搭載したラックマウントサーバ BigSky SF-2U870などを展開している.

HiFice Unmatched Rev.BやHiFive Premier P550はRISC-V TEEの機能を一定備えている.前者ではKeyStoneの動作実績があり.さらに後者は研究レベルではあるものの仮想化ベースのTEEの動作実績1213もある.

Milk-V

Shenzhen MilkV TechnologyはRISC-Vプロセッサを搭載したSBCや開発ボードを製造・販売する深圳のメーカーである.

前述のESWIN EIC7700Xを搭載したMilk-V MegrezなどのSBCを販売している.とくにMegrezはプロダクトページでHypervisor拡張によるネイティブ仮想化のサポートを明示している.

  1. RISC-V Ratified Specifications Library ↩

  2. RISC-V: "H" Extension for Hypervisor Support, Version 1.0. https://docs.riscv.org/reference/isa/v20260120/priv/hypervisor.html ↩

  3. Sandro Pinto and Nuno Santos. 2019. Demystifying Arm TrustZone: A Comprehensive Survey. ACM Comput. Surv. 51(6), Article 130 (November 2019), 36 pages. https://doi.org/10.1145/3291047 ↩

  4. 須崎有康. RISC-Vのセキュリティ技術, RISC-V Days Tokyo 2021 Spring. [slide] [video] ↩

  5. Annika Wilde, Samira Briongos, Claudio Soriente, and Ghassan Karame. 2026. On Securing the Software Development Lifecycle in IoT RISC-V Trusted Execution Environments, SenSys 2026. https://doi.org/10.1145/3774906.3802779 ↩

  6. KeyStone, GitHub repository. https://github.com/keystone-enclave/keystone ↩

  7. Penglai-Enclave-sPMP, GitHub repository. https://github.com/Penglai-Enclave/Penglai-Enclave-sPMP ↩

  8. Victor Costan, Ilia Lebedev, and Srinivas Devadas. USENIX Security 2016. Sanctum: Minimal Hardware Extensions for Strong Software Isolation. https://www.usenix.org/conference/usenixsecurity16/technical-sessions/presentation/costan ↩

  9. Sanctum, GitHub repository. https://github.com/pwnall/sanctum ↩

  10. RISC-V CoVE, GitHub repository. https://github.com/rivosinc/cove ↩

  11. Keystone Security Monitor, GitHub repository. https://github.com/keystone-enclave/keystone/tree/73aeab79b97f4cea3e418897841e5534fc978f4b/sm ↩

  12. Taro Kito, Ryosuke Yamamoto, Keisuke Horii, Hiroki Masuda, Koichi Mouri. Violet: Enabling Full Virtualization for M-mode RTOS on RISC-V, arXiv preprint. https://arxiv.org/abs/2609.09833 ↩

  13. Violet, GitHub repository. https://github.com/nekomaru0510/Violet ↩

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?