2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
リンクをコピー
記事をブックマーク
須藤欧佑氏:僕からは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.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略