ST マイクロエレクトロニクス STM32 署名ツール ソフトウェア

導入
STM32 署名ツール ソフトウェア (このドキュメントでは STM32-SignTool と名付けられています) は、STM32CubeProgrammer (STM32CubeProg) に統合されています。STM32-SignTool は、安全なプラットフォームを保証し、STM32-KeyGen ソフトウェアによって生成された ECC キーを使用してバイナリ イメージに署名するキー ツールです (詳細については、ユーザー マニュアルの STM32 キー ジェネレータ ソフトウェアの説明 (UM2542) を参照してください)。署名されたバイナリ イメージは、信頼できるブート チェーンをサポートする STM32 セキュア ブート シーケンス中に使用されます。このアクションにより、ロードされたイメージの認証と整合性チェックが保証されます。STM32-SignTool はバイナリ イメージを生成します。 file、公開鍵 file、および秘密鍵 fileバイナリ画像 file デバイスにプログラムされるバイナリデータが含まれています。公開鍵 file STM32-KeyGenで生成されたPEM形式のECC公開鍵が含まれています。秘密鍵 file STM32-KeyGenで生成されたPEM形式の暗号化されたECC秘密鍵が含まれています。署名されたバイナリ file すでに署名済みのものから生成することもできます file バッチで file モード。この場合、イメージ エントリ ポイント、イメージ ロード アドレス、およびイメージ バージョン パラメータは必須ではありません。このドキュメントは、以下の表に記載されている製品に適用されます。
表1.該当する製品
| 製品タイプ | 部品番号または製品シリーズ |
| マイクロコントローラ | STM32N6シリーズ |
| マイクロプロセッサ | STM32MP1およびSTM32MP2シリーズ |
以下のセクションでは、特に明記しない限り、STM32 は上記の表に記載されている製品を指します。
STM32-SignToolをインストールする
このツールは、STM32CubeProgrammer パッケージ (STM32CubeProg) とともにインストールされます。セットアップ手順の詳細については、ユーザー マニュアル STM1.2CubeProgrammer ソフトウェアの説明 (UM32) のセクション 2237 を参照してください。このソフトウェアは、Arm® Cortex® プロセッサに基づく STM32 製品をサポートしています。
注: Arm は、米国およびその他の国における Arm Limited (またはその子会社) の登録商標です。
STM32-SignTool コマンドラインインターフェース
次のセクションでは、コマンド ラインから STM32-SignTool を使用する方法について説明します。
コマンド
使用可能なコマンドは以下のとおりです。
- –バイナリイメージ(-bin), –入力(-in)
- 説明: バイナリイメージ file パス(.bin拡張子)
- 構文: 1 -bin /home/User/binaryFile.bin
- 構文: 2 -in /home/User/binaryFile.bin
- –イメージバージョン (-iv)
- 説明: 署名されたイメージのイメージバージョンを入力します file
- 構文: -iv
- –秘密鍵 (-prvk)
- 説明: 秘密鍵 file パス (.pem 拡張子)
- 構文: -prvkfile_path>
- Example: -prvk ../privateKey.pem
- –公開鍵 -pubk
- 説明: 公開鍵 file パス
- 構文: -pubkFile_パス{1..8}>
- ヘッダーv1の場合: STM32MP15xx製品にはXNUMXつのキーパスのみを使用します
- ヘッダーv2以上: その他にはXNUMXつのキーパスを使用する
- –パスワード (-pwd)
- 説明: 秘密鍵のパスワード (このパスワードは少なくとも 4 文字でなければなりません)
- Example: -pwd アゼルティ
- • –ロードアドレス (-la)
- 説明: イメージロードアドレス
- Exampル: -ラ
- –エントリポイント (-ep)
- 説明: イメージエントリポイント
- Example: -ep
- –オプションフラグ (-of)
- 説明: イメージ オプション フラグ (デフォルト値 = 0)
- Example: -の
- –アルゴリズム (-a)
- 説明: prime256v1 (値 1、デフォルト) または brainpoolP256t1 (値 2) のいずれかを指定します。
- Example: -a <2>
- –出力 (-o)
- 説明: 出力 file パス。このパラメータはオプションです。指定しない場合は、出力は file 同じソースで生成される file パス(例:ample、バイナリ画像 file C:\Binary ですFile.bin)。署名されたバイナリ file C:\Binary ですFile_署名済み.bin。
- 構文: -oFile_パス>
- –タイプ (-t)
- 説明: バイナリ タイプ。可能な値は、ssbl、fsbl、teeh、teed、teex、copro です。
- 構文: -t
- –サイレント (-s)
- 説明: 既存の出力を置き換えるためのメッセージは表示されません file
- –help (-h および -?)
- 説明: ヘルプを表示します
- –バージョン (-v)
- 説明: ツールのバージョンを表示します
- –enc-dc (-encdc)
- 説明: FSBL暗号化の暗号化導出定数[ヘッダーv2]
- 構文: -encdc
- –enc-キー (-enck)
- 説明: OEM シークレット file FSBL暗号化用[ヘッダーv2]
- 構文: -enck
- –dump-header (–dump)
- 説明: 画像ヘッダーを解析してダンプする
- 構文: -dumpFile_パス>
- –ヘッダーバージョン (-hv)
- 説明: 署名ヘッダーのバージョン、可能な値: 1、2、2.1、2.2、および 2.3
- ExampSTM32MP15xx の場合: -hv 2
- ExampSTM32MP25xx の場合: -hv 2.2
- ExampSTM32N6xxx の le: -hv 2.3
- –キーなし (-nk)
- 説明: キーオプションなしで空のヘッダーを追加する
- 注意: オプションフラグコマンドで認証オプションを無効にする必要があります
ExampSTM32-SignTool のファイル
次の例ampSTM32-SignTool の使用方法を示す les:
Examp1 番目
-bin /home/ユーザー/バイナリFile.bin –pubk /home/user/publicKey.pem –prvk /home/user/privateKey.pem –iv 5 –pwd azerty –la 0x20000000 –ep 0x08000000 デフォルトのアルゴリズム(prime256v1)が選択され、オプションフラグの値は0(デフォルト値)です。符号付き出力バイナリ file (バイナリFile_Signed.bin)が/home/user/フォルダに作成される
Examp2 番目
-bin /home/ユーザー/フォルダ1/バイナリFile.bin –pubk /home/user/publicKey.pem –prvk /home/user/privateKey.pem –iv 5 –pwd azerty –s –la 0x20000000 –ep 0x08000000 –a 2 –o /home/user/Folder2/Folder3/signedFile.bin この場合はBrainpoolP256t1アルゴリズムが選択されています。Folder2とFolder3が存在しなくても作成されます。-sコマンドを使用すると、 file 指定された同じ名前のファイルが存在する場合、メッセージなしで自動的に置き換えられます。
Examp3 番目
バイナリに署名する file 認証フロー用の 2 つの公開キーを含むヘッダー バージョン XNUMX を使用します。
./STM32_SigningTool_CLI.exe -bin /home/user/input.bin -pubk publicKey00.pem publicKey01.pem publicKey02.pem publicKey03.pem publicKey04.pem publicKey05.pem publicKey06.pem publicKey07.pem -prvk privateKey00.pem -pwd azerty -t fsbl -iv 0x00000000 -la 0x20000000 -ep 0x08000000 -of 0x80000001 -o /home/user/output.stm32
Examp4 番目
バイナリに署名する file 認証と暗号化フロー用の 2 つの公開キーを含むヘッダー バージョン XNUMX を使用します。
./STM32_SigningTool_CLI.exe -bin /home/user/input.bin -pubk publicKey00.pem publicKey01.pem publicKey02.pem publicKey03.pem publicKey04.pem publicKey05.pem publicKey06.pem publicKey07.pem -prvk privateKey00.pem -iv 0x00000000 -pwd azerty -la 0x20000000 -ep 0x08000000 -t fsbl -of 0x00000003 -encdc 0x25205f0e -enck /home/user/OEM_SECRET.bin -o /home/user/output.stm32
Examp5 番目
出力を解析して結果の画像を検証する file 各ヘッダーフィールドを確認します。./STM32_SigningTool_CLI.exe -dump /home/user/output.stm32
Examp6 番目
署名もキーの展開もせずにヘッダーを追加します。STM32_SigningTool_CLI.exe -in input.bin -nk -of 0x0 -iv 1 -hv 2.2 -o output.stm32
スタンドアロンモード
STM32-SignTool をスタンドアロン モードで実行する場合、最初に絶対パスを入力する必要があります。次に、下の図に示すように、確認のためにパスワードが XNUMX 回要求されます。
図1. スタンドアロンモードのSTM32-SignTool

次の手順は次のとおりです。
- 2 つのアルゴリズムのいずれかを選択します。
- イメージのバージョン、イメージのエントリ ポイント、およびイメージのロード アドレスを入力します。
- オプションフラグの値を入力します。
別の出力 file 必要に応じてパスを指定するか、Enter キーを押して既存のパスを続行します。
PKCS#11 ソリューション
署名されたバイナリ イメージは、信頼できるブート チェーンをサポートする STM32 セキュア ブート シーケンス中に使用されます。
このアクションにより、読み込まれたイメージの認証と整合性のチェックが確実に行われます。
従来の署名コマンドでは、すべての公開鍵と秘密鍵を入力として提供する必要があります。 fileこれらは
署名サービスの実行を許可された人なら誰でも直接アクセスすることができます。最終的には、これは
鍵データの盗難から鍵を保護するための解決策はいくつかあります。
コンテキストでは、PKCS#11 ソリューションが採用されています。
PKCS#11 APIは暗号鍵の処理と保存に使用できます。このインターフェースは、
HSM(ハードウェアセキュリティモジュール)やスマートカードなどの暗号化デバイスと通信します。
これらのデバイスの目的は、秘密鍵を明かすことなく暗号鍵を生成し、情報に署名することです。
外の世界に物質を発信します。
ソフトウェア アプリケーションは API を呼び出して、これらのオブジェクトを次の目的で使用できます。
• 対称/非対称キーを生成する
• 暗号化と復号化
• デジタル署名の計算と検証
PKCS #11はアプリケーションに共通の論理的な view 暗号トークンと呼ばれるデバイスの
各トークンにスロットIDが割り当てられます。アプリケーションは、アクセスしたいトークンを、
適切なスロットID。
STM32SigningToolは、スマートカードや同様のPKCS#11セキュリティに保存されているキーオブジェクトを管理するために使用されます。
機密性の高い秘密鍵がデバイス外に漏れることのないトークン。
STM32SigningToolはPKCS#11インターフェースを使用してECDSAに基づいて入力バイナリを操作および署名します。
公開鍵/秘密鍵。これらの鍵はセキュリティ トークン (ハードウェアまたはソフトウェア) に保存されます。
追加のPKCS#11コマンド
- –モジュール (-m)
- 説明: ロードする PKCS#11 モジュール/ライブラリ パスを指定します (dll、so)
- 構文:-m
- • –キーインデックス (-ki)
- –キーインデックス (-ki)
- 説明: 使用されたキーのインデックスのリスト(16 進形式)
- ヘッダー v1 には 2 つのインデックスを使用し、ヘッダー vXNUMX には XNUMX つのインデックスを使用します (スペースで区切る)
- 構文: -ki
- 説明: 使用されたキーのインデックスのリスト(16 進形式)
- –スロットインデックス (-si)
- 説明: 使用するスロットのインデックスを指定します (デフォルト 0x0)
- 構文:-si
- –スロット–識別子 (-sid)
- 説明: 使用するスロットの識別子を指定します (オプション、10 進数または 16 進数形式)
- 構文:-sid
- オプション –slot-identifier を –slot-index と同時に使用すると、ツールはこの構成が同じスロットに一致するかどうかを確認します。識別子は指定されたインデックスを反映します。そうでない場合はエラーが発生します。
- –slot-index を指定せずに –slot-identifier を使用することもできます。ツールはスロット インデックスを体系的に検索します。
- –アクティブキーインデックス (-aki)
- 説明: 実際のアクティブキーインデックスを指定します (デフォルトは 0)
- 構文: -aki < 16進値 >
PKH/PKTH file 世代
署名処理の後、ツールは体系的にPKHを生成する。 fileOTP ヒューズの後に使用する s。
- PKH file ヘッダー v0 の pkcsHashPublicKey1x{active_key_index}.bin という名前
- PKTH file ヘッダー v2 の pkcsPublicKeysHashHashes.bin という名前
Exampレ
ツールは入力に署名できる fileヘッダー v1 とヘッダー v2 の両方で同じですが、コマンド ラインの違いは最小限です。
- ヘッダー v1
-bin 入力.bin -iv -パスワード-ラ-エップ-t -の–
-キーインデックス-aki 0 –モジュール–スロットインデックス-o 出力.stm32 - ヘッダー v2
-bin 入力.bin -iv -パスワード-ラ-エップ-t -の– -キーインデックス-あき–モジュール–スロットインデックス-o 出力.stm0
コマンドラインにエラーがある場合、またはツールが一致するキー オブジェクトを識別できない場合、エラー メッセージが表示されます。これは問題の原因を示します。SigningTool は、事前構成された HSM のみを使用でき、新しいセキュリティ オブジェクトを管理または作成するようには設計されていません。したがって、適切な環境を設定するには、フリー ソフトウェアをインストールする必要があります。その後、キーを生成し、オブジェクトに関する情報を取得できます。
スロット識別子オプション:
- -bin input.bin –type fsbl -hv 1 –key-index 0x40 -aki 0 –module softhsm2.dll –password prg-dev -ep 0x2ffe4000 -s -si 0 -sid 0x51a53ad8 -la 0x2ffc2500 -iv 0 -of 0x80000000 -o output.stm32
エラー例ampレ:
- 無効なスロットインデックス
図 2. HSM TOKEN_NOT_RECOGNIZED
–key-index コマンドで指定された不明なキー オブジェクト
図3. HSM OBJECT_HANDLE_INVALID
ツールはオブジェクトを順番に処理します。最初の試行で一致するキー オブジェクトを識別できない場合、署名操作はプロセスを停止します。その後、問題の原因を示すエラー メッセージが表示されます。
改訂履歴
表2. 文書の改訂履歴
| 日付 | バージョン | 変更点 |
| 14年2019月XNUMX日 | 1 | 初回リリース。 |
|
26年2021月XNUMX日 |
2 |
更新:
• セクション 2.1: コマンド • セクション2.2: 例ampSTM32-SignTool のファイル • セクション 2.4: PKCS#11 ソリューションを追加しました |
| 27年2022月XNUMX日 | 3 | セクション 2.1: コマンドを更新しました |
|
26年2024月XNUMX日 |
4 |
文書全体で置き換えられました:
• STM32MP1シリーズからSTM32MPxシリーズ • STM32MP-SignTool による STM1MP32-SignTool • STM32MP-KeyGen による STM1MP32-KeyGen セクション 2.1: コマンドで、–public-key -pubk を更新し、–header-version (-hv) と –no-keys (- nk) を追加しました。 「例ampセクション6の「le 2.2」:例ampSTM32-SignTool 用のファイル。 |
|
14年2024月XNUMX日 |
5 |
追加した:
• STM32N6 シリーズを該当製品に置き換える ドキュメント全体で置き換え: • STM32 の STM32MP 更新: • セクション 2.1: コマンド |
|
06年2025月XNUMX日 |
6 |
更新:
• セクション 2.4.1: 追加の PKCS#11 コマンド • セクション2.4.3: 例ampレ |
重要なお知らせ – よくお読みください
STMicroelectronics NV およびその子会社 (以下「ST」) は、ST 製品および/またはこのドキュメントを予告なくいつでも変更、訂正、機能強化、修正、および改善する権利を留保します。購入者は、注文を行う前に ST 製品に関する最新の関連情報を入手する必要があります。ST 製品は、注文確認時に適用される ST の販売条件に従って販売されます。購入者は、ST 製品の選択、選択、および使用について単独で責任を負い、ST は購入者の製品のアプリケーション支援または設計について一切の責任を負いません。ST は、明示的または黙示的を問わず、いかなる知的財産権のライセンスも付与しません。ここに記載されている情報と異なる規定で ST 製品を再販すると、その製品に対して ST が付与した保証は無効になります。ST および ST ロゴは、ST の商標です。ST 商標の詳細については、www.st.com/trademarks を参照してください。その他の製品名またはサービス名は、それぞれの所有者の財産です。このドキュメントの情報は、このドキュメントの以前のバージョンで以前に提供された情報に優先し、置き換えられます。
© 2025 STマイクロエレクトロニクス – 無断転載を禁じます
よくある質問
- Q: STM32-SignTool の使用中にエラーが発生した場合はどうすればよいですか?
- A: コマンド構文を確認し、必要なパラメータがすべて正しく指定されていることを確認し、トラブルシューティングのヒントについてはユーザーマニュアルを参照してください。
- Q: STM32-SignTool を異なるオペレーティング システムで使用できますか?
- A: STM32-SignTool は特定のオペレーティング システムで動作するように設計されています。互換性の詳細については、ソフトウェア仕様を参照してください。
ドキュメント / リソース
![]() |
ST マイクロエレクトロニクス STM32 署名ツール ソフトウェア [pdf] ユーザーマニュアル STM32N6 シリーズ、STM32MP1、STM32MP2 シリーズ、STM32 署名ツール ソフトウェア、STM32、署名ツール ソフトウェア、ツール ソフトウェア、ソフトウェア |

