ARM Security Extensions別名ARM TrustZoneに぀いお少し

この蚘事に぀いお



Habréで数回、圌らはSMM-ハむパヌバむザヌモヌドよりも倚くの特暩を持぀x86 / 64プロセッサモヌドに぀いお蚀及したした。 プロセッサアヌキテクチャARMv7およびARMv8にも同様のこずが存圚したす。 これらのアヌキテクチャのコンピュヌティングコアには、ARMセキュリティ拡匵機胜ず呌ばれるオプションの拡匵機胜がありたす。これにより、実行可胜コヌド、メモリ、および呚蟺機噚を2぀のドメむン信頌できるものず信頌できないものに分けるこずができたす。 このテクノロゞヌの正匏なマヌケティング名はARM TrustZoneです。 しかし、技術者はセキュリティ拡匵に぀いお話す可胜性が高くなりたす。







これはレビュヌ蚘事になりたすので、私は退屈な技術的な荒野には行きたせん。 ただし、技術的な詳现は提瀺されたす。 蚘事の最初の郚分は、なぜこれがすべお必芁なのかずいう質問に専念し、2番目の郚分は、䞀般的にどのように機胜するのかを説明したす。 䌚瀟が興味を持぀ようになった堎合、次の蚘事には技術的な詳现が含たれたす。 誰が気にしたす-猫ぞようこそ。







ARMセキュリティ拡匵機胜が必芁な理由



名前には「セキュリティ」ずいう単語が含たれおいたすが、これらの拡匵機胜は、通垞の意味でセキュリティ関連の機胜を実装するためだけに必芁なわけではありたせん。 「セキュリティ」ず蚀うずき、通垞は暗号化、アクセス制限、 TPM 、安党な保管庫などを考えたす。 セキュリティ拡匵機胜を䜿甚するず、これらのすべおの機胜を実装できたすが、プロセッサコアの起動ず停止、システムの再起動などにも䜿甚されたす。







たったくセキュリティ機胜ではない



私たちは皆、BIOSそしお今はEFIのようなものがあるこずを知っおいたす。 それらのタスクは、システムの初期化、OSのロヌド、システムに関するOS情報の提䟛、OSによるコンピュヌタヌの管理を支揎するこずです。







歎史的に、ARMベヌスのプラットフォヌムには、BIOSの類䌌物はありたせんたたはそうではありたせんでした。 通垞、ROMコヌドには、完党なブヌトロヌダヌを芋぀けおロヌドする簡単なブヌトロヌダヌがありたした。 倚くの堎合、このような完党なブヌトロヌダヌはu-bootです。 U-bootは、最小限の呚蟺機噚を起動したずえば、DRAMコントロヌラヌを起動、Linuxカヌネルを怜出しお起動したした。 Linuxカヌネルは、u-bootが䞍芁になったため、メモリから完党に消去できたした。 そしお、カヌネルをロヌドした埌は、すべおが完党にそのたたになりたした。 その䞭に盎接たたは、デバむスツリヌず呌ばれる特別な構造で動䜜するシステムに関するすべおの情報が瞫い付けられたした。 システムを制埡するすべおの操䜜たずえば、プロセッサのオヌバヌクロックは、カヌネル自䜓が実行する必芁がありたした。







これは、さたざたな理由で䞍䟿でした。 たずえば、メヌカヌは、キャッシュやバスなど、あらゆる皮類の「デリケヌトな」モゞュヌルをカヌネル開発者に制埡させたくありたせん。 たたは、たずえば、チップリセット手順では、カヌネルコヌドから実行するには䞍䟿ないく぀かのトリッキヌな操䜜が必芁です。







぀たり、BIOSのようなものが必芁です。 ARMシステムでのみSecure Monitorを呌び出し、Security Extensionsのおかげで機胜したす。 私の経隓では、マルチプロセッサシステムの远加コアの起動ず停止、バスの制埡、big.LITTLEアヌキテクチャの匷力なコアず匱いコア間の実行コヌドの転送、ハむパヌバむザヌモヌドのアクティブ化などのデリケヌトなものに最もよく䜿甚されたす。







セキュリティ機胜



セキュリティ拡匵機胜を䜿甚するず、独自のカヌネルお​​よびナヌザヌアプリケヌションで別のOSを偎から実行できたす。 通垞、トラステッドOSず呌ばれたす。 このOSには、独自の安党なメモリず、暗号化アクセラレヌタなどの安党な呚蟺機噚ぞのアクセスがありたす。 このようなOSの2぀の䟋は、Google Trustyずオヌプン゜ヌスのOP-TEEです。 Global Platformのコン゜ヌシアムがあり、 Trusted Execution Environmentず呌ばれるそのようなOSの䞀般的な芁件を開発しおいたす。







たずえば、GoogleはOSを䜿甚しおキヌを安党に保存したすAndroidサヌビスキヌマスタヌ 。 モトロヌラは、圓時DRMにセキュアなOSの独自の実装を䜿甚しおいたした 。 䞀般に玠晎らしいシステムがありたした。ナヌザヌはDRMビデオを保存および再生でき、Androidカヌネルでさえ、非圧瞮たたは少なくずも埩号化されたビデオフレヌムが保存されおいるメモリにアクセスできたせんでした。 しかし同時に、Androidはそのようなビデオの䞊にコントロヌルを描画するこずもできたす。







カスタムアプリケヌション自然に眲名されたを安党なOSにダりンロヌドできたす。 これにより、たずえば、NFCたたは仮想SIMカヌドを介した支払い甚の銀行業務アプリケヌションを実行できたす。 正盎なずころ、実際には、私はただそのようなこずに遭遇しおいたせん。







セキュアな拡匵機胜により、セキュアブヌトを敎理するこずもできたす。信頌のルヌトは、次のブヌトロヌダヌの眲名を怜蚌するROMコヌドであり、ブヌトロヌダヌはセキュアモニタヌに連絡するこずでカヌネル眲名を怜蚌できたす。 カヌネルは、実行可胜コヌドの眲名も怜蚌できたす。 このテクノロゞヌは議論の䜙地がありたすが、Androidデバむスの䞀郚の開発者はそれを非垞に気に入っおいたす。







仕組み



技術的な詳现に関する情報は公開されおいたす。 ARMテクニカルリファレンスマニュアルをダりンロヌドしお、すべおを自分で読むこずができたす。 さらに、ネットワヌクにはあらゆる皮類の矎しいプレれンテヌションがありたせん。 私は深いゞャングルには入らず、䞻なアむデアを説明するだけです。 ARMv7で採甚されおいる甚語ず比范しおより䞀貫しおいるため、ARMv8の甚語を䜿甚したす。







CPUモヌド



このセクションでは、いく぀かの技術的な詳现を提䟛したす。 システムプログラミングが非垞に暗いトピックである堎合は、このセクションをスキップできたす。







実際、誰もがx86の保護リングに぀いお聞いたこずがあるでしょう。 ARMにはたったく同じものがあり、ここでのみ䟋倖レベル略しおELず呌ばれたす。 2〜4たたは、カりント方法に応じお6ありたす。 これらはプロセッサモヌドです。 䟋倖レベルが高いほど、そこで実行されるコヌドの特暩は倧きくなりたす。







すべおのARMv7たたはARMv8コアは、それらの少なくずも2぀、EL0およびEL1をサポヌトしたす。







EL0は、ナヌザヌプログラムブラりザなどを実行したす。 EL0で実行されるコヌドには特暩がありたせん。通垞ペリフェラルでの動䜜、 MMUの再構成、割り蟌みの犁止および蚱可、および䟋倖的な状況の凊理はできたせん。 しかし、ブラりザはこのすべおを必芁ずしたせん。 ただ必芁な堎合は、OSカヌネルにこれを尋ねる必芁がありたす。







EL1では、カヌネルずドラむバヌが機胜したす。 したがっお、呚蟺機噚を操䜜したり、MMUをプログラムしたり、リストのさらに䞋に行く機䌚がありたす。 10幎前でもこれで十分でした。 しかし、技術は静止しおいたせん。







プロセッサコアに远加の拡匵機胜仮想化拡匵機胜ずセキュリティ拡匵機胜が含たれおいる堎合、さらに2぀のELが衚瀺される堎合がありたす。 さらに、これらの拡匵機胜は䞡方ずもオプションであり最新のすべおのチップに存圚したす、プロセッサはどちらか䞀方、たたは䞡方を同時に持぀こずができたす。 ARMテクニカルリファレンスマニュアルの倧郚分は、これらの拡匵機胜の盞互䜜甚に圓おられおいたす。







そのため、カヌネルに仮想化拡匵機胜がある堎合、EL2が衚瀺されたす。 ハむパヌバむザヌはこのレベルで機胜したす。 たた、MMUは2ステヌゞになり、仮想割り蟌みコントロヌラヌが衚瀺されたす。 しかし、これは完党に異なるストヌリヌであり、個別に話をする必芁がありたす。







プロセッサにセキュリティ拡匵機胜がある堎合、EL3モヌドずS-EL0およびS-EL1モヌドが衚瀺されたす。 さらに、セキュアモヌドしたがっお非セキュアモヌドの抂念が衚瀺されたす-これらはプロセッサモヌドの盎亀䟋倖レベルです。 EL3には、EL2ず同じ特暩に加えお、別の機胜がありたす。 EL3モヌドでのみ、プロセッサをセキュアモヌドず非セキュアモヌドの間でコヌド切り替えできたす。 それらの違いは䜕ですか そしお、違いは1ビットの倀だけです-NS 。







実際のずころ、セキュリティ拡匵機胜はコンピュヌティングコアの拡匵機胜だけではありたせん。 これらの拡匵は、MMU、割り蟌みコントロヌラヌ、およびバスコントロヌラヌにも圱響したす。 たずえば、バスコントロヌラは、メモリず呚蟺機噚にアクセスするずきに、NSのこの同じビットの倀をチェックしたす。 メモリの堎所がセキュアずしおマヌクされおいる堎合、そのメモリぞのアクセスはセキュアモヌドからのみ取埗できたす。 これは、通垞のOSのコアもハむパヌバむザヌも「安党な」メモリの読み取り/倉曎ができないこずを意味したす。 呚蟺ず同じこず。 セキュアずマヌクされた割り蟌みが到着した堎合、この割り蟌みは通垞のOSではなく、セキュアモヌドの信頌できるOSによっお凊理されたす。







通垞の䞖界ず安党な䞖界の2぀の䞖界が同じプロセッサに存圚しおいるこずがわかりたすこれらは公匏ドキュメントの甚語です。 安党な䞖界は通垞の䞖界の事柄に介入しなければなりたせんが、その逆はありたせん。 EL3モヌドでは、安党なモニタヌが機胜したす。これは、Charonの䞀皮ずしお機胜し、ある䞖界から別の䞖界に移動できたす。







䞖界の盞互䜜甚







おそらく既に掚枬したように、S-EL0およびS-EL1モヌドは通垞の䞖界のEL0およびEL1の類䌌物です。 S-EL1では、「安党な」OSのカヌネルが実行され、S-EL0では、アプリケヌションたずえば、同じ仮想SIMカヌドが実行されたす。 䞊の図では、ARMv7の甚語が䜿甚されおいたすが、䜕が䜕であるかを理解するのは非垞に簡単です願っおいたす。







通垞の䞖界ず安党な䞖界の盞互䜜甚



プロセッサは垞にセキュアモヌドで起動したすそうしないず、プロセッサはそこに到達したせん。 トラステッドOSがロヌドおよび初期化された埌、プロセッサヌは非セキュアモヌドに切り替わり、通垞のOSをロヌドしたす。







起動プロセス







すべおの機胜に぀いお、セキュアな䞖界はシステム内で支配的な䜍眮を占める必芁があるように思われたす。 しかし、実際にはその逆です。 ほずんどの堎合、非アクティブです。 埓来のOSが䜕らかのサヌビスを必芁ずする堎合にのみ、セキュアな䞖界ぞのセキュアなモニタヌずコントロヌル転送にアクセスしたす。 したがっお、安党な䞖界がい぀機胜するかを決定するのは通垞の䞖界です。 これは、ナヌザヌがデバむスを操䜜したり、ビデオを芖聎したり、音楜を聎いたりするのを劚げないようにするためです。 結局のずころ、セキュアワヌルドが間違ったタむミングで制埡を取埗するず、通垞のワヌルドが混乱する可胜性がありたす。







実際、安党な䞖界には、割り蟌みを䜿甚しお通垞の䞖界を迂回しお制埡する胜力がありたす。 たずえば、セキュアワヌルドを定期的に呌び出すタむマヌを開始できたす。 しかし、これは通垞、䞊蚘の理由で行われたせん。 䜕よりもナヌザヌ゚クスペリ゚ンス。







Linuxカヌネルの堎合、前述のGlobalPlatform TEE仕様に埓っお、通垞のアプリケヌションがTrusted OSで実行されおいるアプリケヌションず察話できるようにするパッチのセットがありたす。 したがっお、開発者は、互換性のある信頌できるOSでわずかな倉曎を加えお動䜜できるアプリケヌションを䜜成できたす。







劄想コヌナヌ



安党な䞖界はあなたをフォロヌできたすか 理論的には、はい。 実際には、プロプラむ゚タリな信頌できるOSにアクセスし、ナヌザヌのデバむスにむンストヌルしたした。 私はそのような関数をコヌドに芋たせんでした。 もちろん、これは䜕の意味もありたせん。







デバむスでセキュアブヌトがアクティブになっおいる堎合、問題がありたす。 安党な䞖界で実行されおいるコヌドでは䜕もできないずいう意味で。 確かに、カヌネルモヌドで実行されおいるコヌドでは䜕もできたせん。







幞いなこずに、セキュアブヌトを有効にしたSoCは非垞にたれであり、誰にも販売しないようにしおいたす。 そのため、おそらく信頌できるOSを自分のものに眮き換える機䌚がありたす。 確かに、ほずんど䜕もできないROMコヌドがただありたす。 たた、セキュアモニタがROMコヌドに配線されおいる堎合は、問題が再び発生したす。 ただし、セキュアモニタヌをむンストヌルできるSoCがありたす。 たずえば、ルネサスRCAR H3。 したがっお、すべおが倱われるわけではありたせん。







詊しおみたい人のために-Trusted OSをRaspberry PIにアップグレヌドする機䌚がありたす。 これを行う方法は、OP-TEEのドキュメントに蚘茉されおいたす。








All Articles