2024.12.10
“放置系”なのにサイバー攻撃を監視・検知、「統合ログ管理ツール」とは 最先端のログ管理体制を実現する方法
リンクをコピー
記事をブックマーク
須藤欧佑氏:僕からはArmのTrustZoneについて発表いたします。
まず簡単に自己紹介します。須藤欧佑と申します。LayerXのLayerX Labsに所属しており、ソフトウェアエンジニアをしています。主に暗号技術とか、TEE(Trusted Execution Environment)を用いたデータのプライバシー保護とか、データの改ざん耐性の手法の研究開発に取り組んでいます。
先日発表した「ブロックチェーンにおける次世代のプライバシー保護技術『Anonify』」というところでも、ArmのTrustZoneではありませんが、IntelのSGXでハードウェアのセキュリティ機能を用いたプライバシー保護技術をオープンソースで公開しました。
本日のアジェンダですが、TrustZoneは少しマニアックな内容になると思うので、TrustZoneの内容に入る前にハードウェアのIsolationという概念の全体像を説明して、そのあとにTrustZoneの具体的な内容に入っていこうと思っています。
本日のゴールは、ArmのTrustZoneとは何なのかとか、あとはその仕組みの概要とかを全体的に理解していただければなと思っています。
今回のTrustZoneにおける内容とか、あと使用している画像については、(スライド)下の「Programmer's Guide for Armv8-A」「TrustZone for Armv8-A」の公式のレファレンスを参考にしていますので、ぜひご参照ください。
ではさっそくハードウェアのIsolationのほうに入っていきたいと思います。Secure Hardwareとは何なのかというと、ここでは耐タンパ性を備える機密データの記録や暗号処理といったハードウェアを総称して「Secure Hardware」と呼んでいます。
機密性の高いデータの処理とか、あとハードウェアというものをハードウェアのセキュリティ機構で防いでしまおうといったものです。なので、OSとかハイパーバイザーとかっていうソフトウェアベースでは防げない攻撃というものを物理的に保護しようとする取り組みになっています。
(スライドの)下に代表的な例をがーっと図にまとめていろいろ挙げました。例えばHSMとはクラウド上でも使われていますが、TLSのオフロードを暗号処理としてHSMの中で送ったりとかもします。あとはTPMとかだと、WindowsのBitLockerとかのデータ暗号化とか、ここのTPMのプロセッサの中で暗号処理が行われたりとか。
AppleのT2 chipとかもその部類に入ります。今回のArmのTrustZone上で実装されるセキュリティ機能もこのアーキテクチャの上で使われています。最近のものでは、GoogleのTitanやYubiKeyなど、FIDO2とかのセキュリティキーの秘密鍵を安全に保持したいときは、こういったセキュリティキーを利用します。
あとは昔からあるSmartCardとか、あるいはSIMとかもセキュアハードウェアの部類に入っています。こういった物理的な攻撃とか、あるいはソフトウェアベースの攻撃とかを防ぐものになっています。
この中でとくにTrusted Execution Environment(TEE)についてなのですが、やりたいことは、CPU、ハードウェアレベルによって論理的にメモリを分離することです。
これらのほかのセキュアハードウェアと比べたときのTEEの大きな特徴というのが、物理的にはメモリを分離していなくて、CPUのコントロールによって論理的にメモリを分離していることです。
これによる大きなメリットは、Secure World、「Trusted State」とか「Secure World」などのソフトウェア部分をベンダではなく、我々アプリケーション開発者が実装することが可能というところです。これが大きな特徴になっています。
あとは、論理的にメモリを分離しているだけなので、実際の処理は汎用のCPU上で行なわれます。当然メモリの暗号化とか、あとはアクセスコントロールとかで多少のオーバーヘッドはありますが、基本的には高速で行なわれることになります。
一方でデメリットとしては、CPUの論理的な保護なので、完璧なセキュリティ対策はできず、キャッシュとかは共通化されていますので、そこのサイドチャネル攻撃への対策が現状の課題となっています。
さらにTEEの種類も複数存在します。冒頭でお伝えしたようにIntel SGX。今回のテーマとなっているArm TrustZone。あとはRISC-V上でもKeystoneというものがあったり、あとAMD SEVとかもあります。
Intel SGXは一番代表的というか、いろいろなところで使われたり、開発環境やSDKとかも一番整っているTEEなのかなと思います。実際にクラウド上でもAzure、IBM Cloud、Alibaba Cloudとかいろいろな場所で使えるTEEの技術になっています。
一方Arm TrustZoneはモバイルデバイス型のTEEを実装できるCPUとして広まっていまして、任天堂のSwitchとかにも搭載されていますし、さまざまなスマートフォン上のデバイスにも実装されています。
RISC-Vに関しては、まだ試験段階で、RISC-VのPMPという機能を使ったTEEとなっています。
AMD SEVは、ちょうど先日Google CloudでConfidential VMというインスタンスが発表されて話題になりましたが、そのConfidential VMのセキュリティ機能のベースがAMD SEVに由来するものとなっています。
ここまでがTEEの全体像、Hardware Isolationの全体像について紹介しましたが、ここからArm TrustZoneの話に入っていきます。
Arm TrustZoneは、MMUなどによってハードウェアレベルのアクセスコントロールを行なって、ハードウェアのリソース、メモリのリソースとかをNormal WorldとSecure WorldあるいはTrusted Worldに分離します。そして、機密性の高い暗号処理とか署名とか、あとは指紋とかパスワードとか、そういったセンシティブなデータの取り扱いをこっちのTrusted Worldですべて行なってしまおうと。ここのNormal WorldとTrusted Worldの境界は厳密にハードウェアレベルのIsolationで管理しようという思想になっています。
Normal WorldがSecure Worldのリソースに不正にアクセスできないようにコントロールされている一方で、Trusted Worldは逆にNormal Worldにアクセスできるようになっています。具体例としては、FIDO2における署名とかはTrusted Worldで処理が行なわれるかたちになります。
TrustZoneはCortex-AとCortex-Mのどちらにも対応していますが、アーキテクチャ的にはかなり違っています。
Cortex-AのほうはSecure Monitorのハンドラが唯一のエントリーポイントとなっていてレイヤーアーキテクチャになっています。一方で、Cortex-Mは低レイテンシの状態遷移を重視していますので、Secure Monitorのようなレイヤーアーキテクチャではなく、ハンドラ/スレッドモードとか言われるかたちになっています。
今回の内容はCortex-Aのアーキテクチャをもとに発表いたします。
さらに、TrustZone自体はこういったアーキテクチャの名前になっていて、その上でSecure OSと呼ばれる部分の実装としてTEEのいろいろな種類があります。
オープンソースではOP-TEEやTrustyとかがとても有名で、実際にソースコードが公開されています。コマーシャルなほうのベンダでもいろいろ開発されていまして、QTEEとかTrustedCoreといったものが、みなさまがお持ちのスマートフォンとかにも内蔵されるかたちで実装されています。
実際にそのTrustZoneのアーキテクチャとか、あとは例外レベルの概念がとても重要になってくるので、そこを中心にお伝えしていきます。
(スライドを示す)これは、ここまでの発表で何回か出てきた図ですが、例外レベルがArmではこのようなレイヤー構造に分かれています。
一番上のユーザーランドの部分がException Level、EL0で、x86だったらRing3に対応する部分になっています。次にEL1でRing0に対応する部分。EL2のハイパーバイザーとかでRing-1とかに対応する部分。もちろん厳密な対応ではありませんが、概要的にはx86とこのような対応関係になっています。
同じException LevelにSecure WorldとNormal Worldがそれぞれ分かれていて、Trusted OS、あるいはSecure OSとか、表記揺れがあって申し訳ないんですけれども、いろいろあります。
ここのNormal WorldとSecure Worldをどうやって橋渡しするか、命令を橋渡しするのかという部分になるんですけれども、ここのEL3のException Level、ファームウェアとか、x86だったらIntel MEとかSMMとか呼ばれるレイヤーの部分で橋渡しを行ないます。
Rich OSとかHypervisorからSMC命令という例外命令が吐き出されて、その例外に対する処理をSecure Monitorで受け取ってハンドリングして、そこでいろいろな処理を行なうことによって、Secure WorldのTrusted OSとかにハンドリング状態が移るかたちになっています。
では、実際にこの図の(1)から(5)までの内容をこれからお話ししていきます。
(次回へつづく)
関連タグ:
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.09
国内の有名ホテルでは、マグロ丼がなんと1杯「24,000円」 「良いものをより安く」を追いすぎた日本にとって値上げが重要な理由
2024.11.29
「明日までにお願いできますか?」ちょっとカチンとくる一言 頭がいい人に見える上品な言い方に変えるコツ
2024.12.09
10点満点中7点の部下に言うべきこと 部下を育成できない上司の特徴トップ5
2024.12.04
いつも遅刻や自慢話…自分勝手な人にイラっとした時の切り返し 不平等な関係を打開する「相手の期待」を裏切る技
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.03
職場の同僚にイライラ…ストレスを最小限に抑える方法 臨床心理士が語る、「いい人でいなきゃ」と自分を追い込むタイプへの処方箋
2024.12.06
嫌いな相手の行動が気になって仕方ない… 臨床心理士が教える、人間関係のストレスを軽くする知恵
2024.12.05
「今日こそやろう」と決めたのに…自己嫌悪でイライラする日々を変えるには
PR | 2024.12.04
攻撃者はVPNを狙っている ゼロトラストならランサムウェア攻撃を防げる理由と仕組み