1654157_ja-JP

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

1654157_ja-JP

1654157_ja-JP

[LPC55]:コード保護を利用するためにISPとSWDを無効化

一部の初期のLPC製品、例えばLPC11xx、LPC17xx、LPC18xx、LPC40xx、LPC43xx、LPC8xxなどでは、コード保護を利用するためにCRPが使用されています。CRPには3つの異なるセキュリティ・レベルがあります。図1は、CRP1、CRP2、CRP3のセキュリティ・レベルを示しています。

ZhangJennie_0-1684590850572.png

図1

LPC55シリーズ(LPC55(S)0x、1x、2x、および 6x)は、セキュリティ保護のためにCRPではなくセキュア・ブートおよび保護フラッシュ領域(PFR)構成を使用します。Sが付いている部品番号(例:LPC55S)はセキュア・ブートをサポートしています。例えばLPC55S28およびLPC55S06です。ただし、LPC5506、LPC5528などのSシリーズ以外の製品では、FPR関連フィールドを構成することによってのみコード保護を利用できます。

CRP2は最も一般的に使用される保護レベルです。CRP2では、SWDアクセスがブロックされるため、ユーザーはSWDまたはISP経由でフラッシュの読み取り、書き込み、消去ができません。さらに、ユーザーはフラッシュの一部を消去して既存のコードを変更することはできません。CRP2モードになると、フラッシュはフラッシュ大量消去によってのみ回復可能であり、これにより攻撃者がフラッシュコードを読み取ったり変更したりすることが効果的に防止されます。

残念ながら、LPC55(S)0x、1x、2x、6x などの LPC5500 デバイスは CRP2 とまったく同じ機能メカニズムを持っていないため、多くのユーザーから疑問が寄せられています。しかし、CRP2と同じ機能を達成する必要がある場合は、CMPAを設定してISPおよびSWDデバッグポートを無効にすることができます。

1. ISPを無効にする

顧客製造/工場構成領域(CMPA)は PFR の一部であり、BOOT_CFG を設定して ISP モードを有効にするかどうかを選択します。表1は、CMPAの9E40ワードアドレスから始まるフィールドテーブルを示しています。ISP 制御ドメインは赤でマークされています(表1に示されています)。表2はISPドメインのモード選択を示しています。111はISPが無効です。ISP モードが無効になっている場合は、BOOT_CFG を 0b1110000 に設定します。

ワードアドレスHEX

バイト・アドレス

フィールドの説明

6

5

4

3

2

1

0

9E40

9E400

BOOT_CFG

Default ISP mode

0

0

0

0

9E404

SPI_FLASH_CFG

0

0

0

0

0

0

0

9E408

USB_ID

USB Vendor ID

9E40C

SDIO_CFG

0

0

0

0

0

0

0

9E41

9E410

CC_SOCU_PIN

ISP_CMD_EN

MCM33_DBGEN

0

0

0

0

0

9E414

CC_SOCU_DFLT

ISP_CMD_EN

MCM33_DBGEN

TAPEN

SPIDEN

SPNIDEN

DBGEN

NIDEN

表1

Default ISP mode

Bit 64

Auto ISP

000

USB_HID_MSC

001

UART ISP

010

SPI Slave ISP

011

I2CスレーブISP

100

Disable ISP

111

表2

2. SWD を無効にする

DCFG_CC_SOCUは、デバッグ・ドメインごとにデバッグ・アクセス制限を指定する構成です。これらのアクセス制限は、このセクションでは制約属性とも呼ばれます。デバッグ・サブシステムは、より細かいアクセス制御を可能にするために、複数のデバッグ・ドメインに細分化されています。図2は、デバッグ・ドメインとDCFG_CC_SOCU内の対応する制御ビットの位置を示しています。論理的に、DCFG_CC_SOCUにはSOCU_PINとSOCU_DFLTの2つのコンポーネントがあります。SOCU_PINレジスタとSOCU_DFLTレジスタは、モジュールのSWDデバッグ・アクセスを定義するために一緒に使用されます。これは論理的に2つのコンポーネントで構成されています。

  • SOCU_PIN: デバイス構成によって事前に決定されるデバッグドメインを指定するビットマスクです。
  • SOCU_DFLT: SOCU_PIN フィールドがデバイス構成によって事前に決定されているビットの最終アクセスレベルを提供します。

言い換えると、モジュールを有効にするには、SOCU_PINレジスタとSOCU_DFLTレジスタの対応するビットを同時に1に設定してください。このモジュールは、SOCU_PINレジスタとSOCU_DFLTレジスタの対応するビットを同時に0に設定することで無効化されます。図2参照。

ZhangJennie_1-1684591151287.png

図2

LPC55 PFRのCC_SOCU_PINとCC_SOCU_DFLTのデフォルト値はすべてゼロであることにご注意ください。したがって、この場合、SOCU_PINとSOCU_DFLTは両方とも0ですが、ビット反転ルールは満たされません(以下の図3参照)。したがって、CC_SOCU_PINとCC_SOCU_DFLTがすべて0の場合、すべてのデバッグ権限がデフォルトで有効になります。

ZhangJennie_2-1684591191419.png

図3

注:CC_SOCU_PIN(CC_SOCU_DFLT)とSOCU_PIN(SOCU_DFLT)の違い。CC_を含む前者には、後者のビット反転が含まれています。

たとえば、SOCU_PINとSOCU_DFLTがすべてゼロに設定され、反転ビットが1に設定されている場合、すべてのSWDモジュールが無効になります。

ZhangJennie_3-1684591227902.png

図4

3. 実装

以下では、LPC5506を例にしてCMPAフィールドを設定します:

3.1 ISPおよびSWDを無効化

ZhangJennie_4-1684591266203.png

図5

図5で赤く強調表示されている2つを除き、デフォルトのCMPA値を維持してください。

1)BOOT_CFGを0x70に設定し、ISPを無効にします。

2)すべてのSOCU_PINとSOCU_DFLTを0に設定し、すべてのリバースビットを1に設定します。つまり、サブドメインにアクセスするすべてのデバッグを無効にします。

3.2 ISPおよびSWDを有効にする

ZhangJennie_5-1684591308131.png

図6

図6で赤く強調表示されている2つを除き、デフォルトのCMPA値を維持してください。

1)自動ISPを有効にするには、BOOT_CFGを0x00に設定します。

2)DCFG_CC_SOCUのデフォルト値、すなわちCC_SOCU_PINとCC_SOCU_DFLTをすべてゼロに戻します。この場合、ビット反転のルールが満たされていないため、すべてのデバッグ権限が復元されます(オンになります)。詳細はこの記事の第2部を参照してください。

3.3 コード実装

シリアルコマンド(1 または 0)で SWD および ISP 機能を有効または無効にします。

ZhangJennie_6-1684591332748.png

図7

デモ・コードが添付されています。このルーチンは、LPCXpresso55S06開発ボードでテストされました。

NOTE:

システムのセキュリティ要件と攻撃対象領域が進化する中で、NXPが防御を主張していない、または強力に軽減していない攻撃(特に高度な物理攻撃)の種類をお客様が理解することが重要です。これにより、必要に応じてシステムレベルで適切な緩和策を講じることができます。


LPC55xxRe:[LPC55]:コード保護を利用するためにISPとSWDを無効化

これは、SWDによるフラッシュの一括消去が将来完全に無効になるように見えます(上記の例の有効化コードが何らかの方法で実行されない限り)。これは正しいでしょうか、それとも間違っているのでしょうか?

私たちはプロダクションボードをプログラムするためにSWDインターフェース(LPC5528ボード上)しか持っていないため、SWDを介してフラッシュを読み取り保護し(どのインターフェースからも読み取りを許可しない)、どのインターフェースからでも大量消去のみを許可する方法が必要です。これは可能ですか?

标记 (1)
无评分
版本历史
最后更新:
‎01-05-2026 12:51 AM
更新人: