ARM TrustZone CryptoCell 310という名称の疑問
はじめに
nRF52840は、Cortex-M4Fが搭載されたSoCです。 また、CryptoCell 310という暗号化アクセラレータが搭載されています。
Nordic Documentation LibraryのCryptoCellのページを見ると、「ARM TrustZone CryptoCell 310」と書かれています。
しかし、Cortex-M4自体は、TrustZoneをサポートしていませんし、これはどういう意味なんだろう、と思っていました。 先日、他人にも突っ込まれたので、自分のために整理しておこうと思います。
TrustZoneサポートのあるCortex-Mシリーズ
Armv8-M命令セットのシリーズに、オプションでTrustZoneを実装することができます。 下記ページの下の方に一覧表があります。
Cortex-M23, M33, M35PがOptionのFeatureとして、TrustZone for Armv8-M
をサポートしています。
CryptoCell
再度、CryptoCellの話に戻ります。 ARMのWebページでの紹介をみると、次のように書いてあります。
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、という文言は、少しミスリーディングな気がしますね。