<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Advent Calendar on BEANLOG</title>
    <link>https://beanlog.xyz/categories/advent-calendar/</link>
    <description>Recent content in Advent Calendar on BEANLOG</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja-jp</language>
    <lastBuildDate>Mon, 13 Dec 2021 00:00:00 +0900</lastBuildDate><atom:link href="https://beanlog.xyz/categories/advent-calendar/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Arm Cortex-M 向けTrustZoneの話</title>
      <link>https://beanlog.xyz/blog/advent-2021/</link>
      <pubDate>Mon, 13 Dec 2021 00:00:00 +0900</pubDate>
      
      <guid>https://beanlog.xyz/blog/advent-2021/</guid>
      <description>はじめに この記事は、Qiitaの「セキュリティAdvent Calendar 2021」の 8 13日目の記事であり、ArmのCortx-M向けのTrustZoneについてざっくり以下の事柄について書きました。
 Arm Cortex-MのCPUの権限モデル メモリ保護 TrustZoneとは Arm Cortex-M向けのTrustZoneの仕組み  想的読者層としては、「IntelのRing Levelはわかるよ」「TrustZoneとかSGXとか聞いたことあるなぁ」ぐらいの TEEに興味が出てきたCPUの権限モデルがわかってるぐらいの人です。 いくつかの内容に絞って書いてますが、ざっくりしているので、細かいところは参考資料をあたると良いです。 ここでは、概要を掴んでもらうことで理解の助けになればと思っています。
Arm Cortex-Mとは Arm Cortex-MはArm社によるCPUのIPのファミリの１つであり、マイクロコントローラ向けのものです。
スマートフォンに使われるようなCortex-Aシリーズに比べて 性能は低く、MMU(Memory Management Unit)を搭載しないなどの違いがあります。
アーキテクチャに着目すると、Cortex-MシリーズのアーキテクチャであるArmv8-MとCortex-AシリーズのアーキテクチャであるArmv8-Aでは、権限レベルに大きな違いがあります。
Armv8-Aでは、特権レベルとしてEL0〜EL3までの4段階があるのに対して、 Armv8-Mでは、Privileged(特権) とUnrivileged(非特権) の2種類しかありません。 特権の数は少ないですが、権限レベル以外の軸としてThead ModeとHandler Modeと呼ばれる2つのモードがあります。
Thread Modeは通常の動作のためのモードで、Handler Modeは割込み処理を行うモードです。
割込み処理は特権でしか行わないため、とりうる状態としては以下の図に示す3つになります。
  また、メモリに関しても大きく異なるところがあります。
先にも述べたように、Cortex-MシリーズはMMUを搭載しませんが、 メモリ保護を行うMPU(Memory Protection Unit)というものが存在します。
MPUはMMUから仮想メモリ機能を取り除いたようなもので、権限とRWXに合わせたアクセス制限が可能です。
TrustZoneとは TrustZoneはArmによるTEE(Trusted Execution Environment)を実現するCPUの機能です。
TEEは、従来のCPUの実行空間の他に信頼される実行空間を生成するものであり、 TrustZone以外には、Intel SGX、RISC-V Keystoneなどが挙げられます。
それぞれの違いについては、3種類のTEE比較（Intel SGX, ARM TrustZone, RISC-V Keystone）がわかりやすいです。
TrustZoneでは、以下の２つの実行空間を生成します。
 Secure World Non-Secure World (Normal Worldと呼ぶ場合もある)  Non-Secure Worldは従来の実行空間であり、Secure WorldがTEEによって生成される 信頼される実行空間(Trusted Environment)となります。</description>
    </item>
    
  </channel>
</rss>
