STM32U5
強化セキュアキーストレージ

STM32U5 強化セキュアキーストレージ機能のプレゼンテーションへようこそ。ここでは、セキュアキーストレージアプリケーションに使用される SAES モジュールの機能について説明します。

1

セキュアキーストレージアプリケーション
RDP>0

RDP=0

アプリケーション 1

アプリケーション 2

アプリケーション 3

セキュア特権

セキュアな非特権

非セキュア

シリコン・アンカー：暗号化
データは別の製品で再利用できません（リプレイ保護）

セキュア
キースト
レージ

HW、SW または混合

ハードウェア・ユニーク・キー(HUK)
ブート・ハードウェア・キー（BHK）

••
•
•
•

• 複数のアプリケーションから、デバイスに格納されたキーにアクセスする必要があります
開発アプリケーション

インポート生成使用取り消し更新• STM32 には、この重要な機能の堅牢性を高めるハードウェアメカニズムがあります
適用の利点• 管理するキーの機密性を保護します• キーのライフサイクル、つまりインポート、生成、使用、取り消し、更新を管理します。
• 各キーを許可されたユーザのみが利用できるようにします（理想的に）
2

セキュアキーストレージアプリケーションは、セキュリティにとって重要です。
STM32 には、堅牢性を高めるためのハードウェアメカニズムが含まれています。このトレーニング モジュールでは、この点について説明します。
完全なハードウェア機能である読出し保護（RDP）メカニズムでは、デバイスのデバッグ、テスト、およびプロビジョニングされた機密情報へのアクセスを制御します。
セキュアキーストレージでは、キーのライフサイクル（インポート、生成、使用、取り消し、更新）が管理されます。

2

強化セキュアキーストレージ
クリアテキスト 暗号化

内蔵 RAM使用

インポート、更新
秘密鍵バス

排他的論理和BHK

RTC/TAMP

秘密鍵バス•

最新のセキュリティ標準（PSA、SESIP など）により、キーの保護の向上がますます求められるようになっています•

チップごとに固有の ID を持つオンチップの暗号化ストレージ技術を有効にします

アンラップ

DHUK

内蔵Flash

適用の利点

Flash

（SAES ペリフェラル）

サイドチャネル保護
タンパ保護
ハードウェア秘密鍵。ランタイムアプリケーション
やデバッガからプレーンテキストで表示されることはありません

秘密鍵バス

AESペリフェラル•

物理的クローン不可機能（PUF）の代替•

ST ソリューションではシステム Flash（RHUK）に含まれる機密情報とシリコンに含まれる機密情報を利用

3

キーをより適切に保護するため、サイドチャネル保護された SAES ペリフェラ
ルでは特殊なハードウェア秘密鍵 DHUK および BHK を使用して、ランタイムアプリケーションやデバッガにはプレーンテキストで表示されることのない重要なアプリケーションキーを作成します。
派生ハードウェア・ユニーク・キー（DHUK）を利用することにより、ユーザは物理的クローン不可能機能（PUF）の代替として、チップごとに固有の ID を持つ堅牢なオンチップの暗号化ストレー実装することができます。
このモジュールでは、次のユースケースについて説明します。
- ハードウェア秘密鍵によるキーの暗号化（キーのラップ）- ハードウェア秘密鍵によるキーの復号化（キーのアンラップ）- AES ペリフェラルのためのキーのプロビジョニング（共有鍵のラップ）- AES ペリフェラルのためのキーの復号化（共有鍵のアンラップ）- SAES におけるハードウェアキー保護3

SAES で可能な鍵の選択
1. ソフトウェアキー•CPU によって書き込まれます

AHB バス（CPU アクセス）

2. 派生ハードウェア・ユニーク・キー（DHUK）••

不揮発性であり、アプリケーションに対して機密キー用途（モード、セキュリティ）を入力として使用するキー派生関数を使用して派生

サイドチャネルリーク（パワーリークおよび電磁リーク）

フォールト

1

3. ブート・ハードウェア・キー（BHK）

SW キー（書込みのみ）• 揮発性であり、タンパ保護（TAMP）• 書込み後に、ブートアプリケーションによってロック

5

4. XORK：BHK と DHUK の排他的論理和
5. ラップキー•••

キーとして直接書き込まれたサイドチャネル保護された AES 復号化の結果（次のスライドを参照）

キー 2 から 4 は、ランタイムCPU やデバッガによって読み出されることはありません
キー 5 も、キー 2 から 4 で暗号化されている場合、ランタイムCPU やデバッガによって読み出されることはありません

タンパ保護

256 ビット

セキュア/非セキュア

KEY レジスタ

3キー

BHK
秘密バス

固有256 ビット

4AES
コア

XORK

KDF

RHUK

DHUK

秘密バス
キー使用法

2

KEYSEL[2:0]

サイドチャネル保護

SAES
4

サイドチャネルで保護された SAES 内では複数の鍵を使用できます。
- ソフトウェアキー。 CPU によって書込み専用キーレジスタに書き込まれます。
- 不揮発性でアプリケーションに対して機密の派生ハードウェア・ユニーク・キー（DHUK）。
DHUK の派生には、内部キー派生関数が使用されます。図の KDF を参照してください。
- ブートハードウェアキー（BHK）。揮発性で、TAMP ペリフェラル内でタンパ保護されます。
BHK は書込み後に、ブートアプリケーションによってロックされます。
- BHK と DHUK の排他的論理和- ラップキーは、理想的にはハードウェア秘密鍵で暗号化され、ハードウェアに対して機密でもあります。
したがって、SAES ペリフェラルは、ハードウェア秘密鍵 DHUK を使用してアプリケーションキーのラップとアンラップを行うことができ、アプリケーションキー BHK により排他的論理和を取ることも、取らないこともできます。
ラップ/アンラップは、鍵の暗号化/復号化と同じ意味です。
この機能により、AES キーをプレーンテキストで公開されることなく、アプリケーションソフトウェアで使用可能にできます。

4

SAES で可能な鍵の使用
1. 通常キーモード•CPU によって書込み専用レジスタに書き込まれます

AHB バス（CPU アクセス）

2. ラップキーモード•

1

CPU によって書き込まれ、暗号化されます
復号化された鍵が書込み専用レジスタに直接ロードされた場合アプリケーションに対してプレーンテキストで開示されることはありません

DATA IN レジ
スタ

SW キー（書込みのみ）

DATA OUT
レジスタ

2

3. 共有鍵モード
KEY レジスタ

KMOD[1:0]

3

タンパ保護

AES

セキュア

非セキュア

固有RHUKキー
秘密バス

SAES

BHK

共有鍵•

保護されていない高速な AES ペリフェラルによってロードできる、特殊なラップキー
セキュアワールドと非セキュアワールドの間でキーを共有する簡単な方法

AES
コア

秘密バス

•（AES ペリフェラル）••

XORKKDFDHUKKEYSEL[2:0]

サイドチャネル保護

SAES
5

SAES にキーをロードする際、アプリケーションには 3 つのオプションがあります。
- キーレジスタに直接書き込みます。
- 暗号化キーを書き込んで、キーレジスタに直接復号化します。
- 暗号化キーをキーレジスタに直接書き込んで復号化して、AESペリフェラルに秘密鍵バスを介してロードさせます。

5

プロビジョニングの使用法：キーのラップ•

キー

ラップモードを使用したキーの暗号化
1. ハードウェア秘密鍵を選択します（DHUK、BHK、XORK）• KDF は KMOD & SAES 保護（セキュアまたは非セキュア）に依存します
2. プレーンテキストキーを書き込みます
3. 暗号化され、ラップｘされたキーを読み出します• DHUK または XORK が選択された場
合、キーの復号化はこのシリコンでのみできます4. キーを任意の Flash に保存します

2 DATA IN レ
ジスタ

RHUK

キー
秘密バス

固有DATA OUT
レジスタ

3

KMOD[1:0]= 01

タンパ保護
BHK

暗号化キー

AES COREの暗号化

XORKKDF1DHUK
KEYSEL[2:0]

サイドチャネル保護

SAES
6

このスライドでは、ラップキーモードを使用してキーを暗号化する方法について詳しく説明します。生成された暗号化キーは、任意の Flash に格納できます。
最初の手順では、ハードウェア秘密鍵を選択します。キー
派生関数は、TrustZone の状態と、KMOD フィールドでプログラムされたキーの使用状態に依存します。
次に、ソフトウェアによりプレーンテキストキーが書き込まれます。
最後に、AES コアにより、生成された暗号化キーが読み出されます。

6

プロビジョニングの使用法：キーのアンラップ
暗号化キー

•

ラップモードを使用したキーの復号化
1. 正しいハードウェア秘密鍵（DHUK、BHK、XORK）
を選択します•KDF は KMOD および SAES 保護（セキュアまたは非セキュア）に依存します
2. ラップされた暗号化キーを書き込みます
3. 復号化され、アンラップされたキーが、SAES によってキーレジスタに書き込まれます（書込み専用）•
DOUT はゼロを返します•
キーレジスタが s/w によって書き込まれた場合、キー全体が自動的に消去されます。
4. 必要に応じて、アプリケーションでキーが使用されます。

2

KEY レジスタ

4

RHUK

キー
秘密バス

固有

DATA OUT
レジスタ

KMOD[1:0]= 01

タンパ保護
BHK

DATA IN
レジスタ3

AES COREの復号化

XORKKDF1DHUK
KEYSEL[2:0]

サイドチャネル保護

SAES
7

ラップキーモードで暗号化されたキーは、正しいキーを使用して、同じモードで復号化する必要があります。結果は、書込み専用キーレジスタに自動的に格納されます。
前のスライドで生成した暗号化キーは、暗号化および復号化の目的で使用する前に、復号化する必要があります。
最初の手順では、ハードウェア秘密鍵を選択します。
手順 2 で、ソフトウェアによりラップされたキーが DATA IN レジスタに書き込まれます。
手順 3 で、AES コアによりこのキーがアンラップされ、元のキーがソフトウェアではアクセスできない SAES モジュール内の書込みレジスタに格納されます。
その後、アプリケーションでは、必要に応じて、アンラップされたキーを使用できます。
このアンラップされたキーは、ソフトウェアによりキーレジスタに書き込まれるときに自動的に消去されることに注意してください。

7

プロビジョニングの使用法：共有鍵のラップ•

共有モードを使用したキーの暗号化
1. ハードウェア秘密鍵を選択します（DHUK、BHK、XORK）• KDF は KMOD および SAES 保護（セキュアまたは非セキュア）に依存します
2. プレーンテキストキーを書き込みます
3. 暗号化され、ラップされたキーを読み出します• DHUK または XORK が選択された場
合、キーの復号化はこのシリコンでのみできます4. キーを任意の Flash に保存します

共有鍵

2

RHUKキー
秘密バス

固有DATA OUT
レジスタ

3

KMOD[1:0]= 10

タンパ保護
BHK

DATA IN レ
ジスタ

暗号化共有鍵AES COREの暗号化

XORKKDF1DHUK
KEYSEL[2:0]

サイドチャネル保護

SAES
8

このスライドでは、共有鍵モードで共有鍵を暗号化する方法について詳しく説明します。生成された暗号化キーは、任意の Flash に格納できます。
SAES で AES ペリフェラルとキーを共有するには、キーを 1 回暗号化する必要があります。
共有鍵の暗号化シーケンスはラップされたキーの場合と同じです
が、KMOD は 01 ではなく 10 に設定されます。

8

共有鍵のアンラップ
暗号化共有鍵共有モードを使用したキーの復号化
1. 正しいハードウェア秘密鍵（DHUK、BHK、XORK）を選択します• KDF は KMOD および SAES 保護（セキュアまたは非セキュア）に依存します
2. ラップされて暗号化された共有鍵を書き込みます
3. 復号化され、アンラップされた共有鍵が、SAESによってキーレジスタに書き込まれます（書込み専用）• DOUT はゼロを返します
4. キーを SAES で使用するか、または秘密バスを使用して AES ペリフェラルからキーをロードします。

2

KMOD[1:0]= 10RHUK

キー256ビット
秘密バス

KEY レジスタ

秘密バス

固有DATA OUT
レジスタ

4

タンパ保護
BHK

DATA IN
レジスタ

3

共有鍵

•AES COREの復号化

XORKKDF1DHUK
KEYSEL[2:0]

サイドチャネル保護

SAES
9

SAES で AES ペリフェラルとキーを共有する必要がある場合は必ず、共有暗号鍵を SAES で復号化し、AES によってロードする必要があります。
共有鍵の復号化シーケンスはラップされたキーの場合と同じです
が、KMOD は 01 ではなく 10 に設定されます。
結果は書込み専用キーレジスタに自動的に格納され、SAES ス
テータスレジスタの KEYVALID が 1 のときに、AES ペリフェラルによってロードできます。

9SAES キー保護（KEYPROT）
非セキュアなアクセス

セキュア専用アクセス

KEYVALID=1
KEYPROT=0（SAES ペリフェラル）
サイドチャネル保護

KEYVALID=1
KEYPROT=xx（SAES ペリフェラル）

非セキュアなアクセス

適用の利点

サイドチャネル保護
KEYVALID=0
KEYPROT=1（SAES ペリフェラル）
サイドチャネル保護• アプリケーションでは、キーのロード時に、許可されたアプリケーション（セキュアアプリケーションなど）だけでそのキーが使用されるようにできます。

DHUK、BHK、および XORK は 常に KEYPROT により保護されます10

SAES にキーをロードするとき、アプリケーションで許可されたアプリケーション（セキュアアプリケーションなど）だけでそのキーが使用されるようにするには、KEYPROT ビットに 1 をセットします。
KEYPROT が 1 の場合、SAES では、ロードされたキーのセキュリ
ティレベルと一致しないアクセスが検出されると直ちに、キーデータが消去され、KEYVALID がクリアされます。
DHUK、BHK、および XORK は、常に KEYPROT により保護されます。

10© STMicroelectronics - All rights reserved.
ST logo is a trademark or a registered trademark of STMicroelectronics International NV or its affiliates in the EU and/or other countries.
For additional information about ST trademarks, please refer to www.st.com/trademarks.
All other product or service names are the property of their respective owners.

SAES モジュールの詳細については、対称暗号のトレーニングモジュールを参照してください。

11