ARM TrustZone CryptoCell 310という名称の疑問

はじめに

nRF52840は、Cortex-M4Fが搭載されたSoCです。 また、CryptoCell 310という暗号化アクセラレータが搭載されています。

Nordic Documentation LibraryのCryptoCellのページを見ると、「ARM TrustZone CryptoCell 310」と書かれています。

www.nordicsemi.com

しかし、Cortex-M4自体は、TrustZoneをサポートしていませんし、これはどういう意味なんだろう、と思っていました。 先日、他人にも突っ込まれたので、自分のために整理しておこうと思います。

TrustZoneサポートのあるCortex-Mシリーズ

Armv8-M命令セットのシリーズに、オプションでTrustZoneを実装することができます。 下記ページの下の方に一覧表があります。

developer.arm.com

Cortex-M23, M33, M35PがOptionのFeatureとして、TrustZone for Armv8-Mをサポートしています。

CryptoCell

再度、CryptoCellの話に戻ります。 ARMのWebページでの紹介をみると、次のように書いてあります。

developer.arm.com

CryptoCell complements TrustZone for Armv8-M and together these solutions form a Trusted Execution Environment (TEE).

ということで、TrustZone for Armv8-Mを補完するのが、CryptoCellの役割のようです。 下図が一番最初に掲載されていますが、TrustZoneからアクセスすることもできるし、そうでない場合でも、専用インタフェースを通してしかアクセスできないので、(多少は)安全です、ということなのでしょう。

結局のところ

nRF52840でARM TrustZone CryptoCell 310、という文言は、少しミスリーディングな気がしますね。