お客様から、コードフラッシュ(code flash)に対して外部からの読み取り保護機構を追加するよう要請されています。
TRMマニュアルにはフラッシュの書き込み保護しか記載されていませんでした。
読み取り保護はどのように実装すればよいでしょうか?
お客様から、コードフラッシュ(code flash)に対して外部からの読み取り保護機構を追加するよう要請されています。
TRMマニュアルにはフラッシュの書き込み保護しか記載されていませんでした。
読み取り保護はどのように実装すればよいでしょうか?
コード記憶領域の読み出し保護は、ハードウェアレベルのメカニズムと暗号技術を組み合わせて実現できる。STM32 シリーズを例に取ると、オプションバイト内の読み出し保護(RDP)レベルを設定することで実現可能である。例えば:
RDP レベル 1:デバッグインターフェース(JTAG/SWD)を無効化し、SRAM またはシステムメモリから起動する際の Flash アクセスを禁止し、チップ自身のプログラムによる読み出しのみを許可する。
RDP レベル 2:さらにデバッグインターフェースをヒューズで切断し、あらゆる外部アクセスを完全に禁止し、かつ不可逆とする。
また、ヒューズビット(AVR の SPIEN ビットなど)と組み合わせてプログラミングインターフェースを無効化し、ISP 経由での Flash 読み出しを防ぐこともできる。さらに高いセキュリティが必要な場合は、ハードウェア暗号モジュール(HSM など)を統合し、AES/SM4 アルゴリズムで Flash 内容を暗号化し、鍵を外部のセキュアチップに格納することができる。
外部読み出し保護の要件に対しては、以下のような対策が採れます。
上記手法は利用する MCU モデルとセキュリティ要件に応じて組み合わせて使用し、同時にメーカーの TRM 内のセキュリティ章(STM32 の Option Bytes 設定手順など)を参照することを推奨します。