wolfCOSE を STM32 環境で利用するための以下の 2 つを公開しました。1 つは STM32Cube パック I-CUBE-wolfCOSE、もう 1 つは NUCLEO-H563ZI 向けの実機検証済みサンプルプロジェクトです。いずれも暗号処理は wolfSSL Cube パック(I-CUBE-wolfSSL)を経由して wolfCrypt が担います。
STM32Cube パック I-CUBE-wolfCOSE
wolfCOSE を STM32Cube パック I-CUBE-wolfCOSE として提供開始しました。STM32CubeMX や STM32CubeIDE から直接、ゼロアロケーションの CBOR および COSE をどの STM32 プロジェクトにも追加でき、ソースコードを手作業で組み込む必要はありません。暗号処理はすべて wolfSSL Cube パック I-CUBE-wolfSSL に任せる構成としました。
パックの構成
Cube パックを使えば、ファイルを手作業でコピーしなくても、CubeMX / CubeIDE のコンポーネントセレクタからライブラリをプロジェクトに追加できます。wolfCOSE パックもこの方式にならい、3 つのコンポーネントを収録しています。
- wolfCOSE Core:ゼロアロケーションの CBOR および COSE のソース(
wolfcose.c、wolfcose_cbor.c)で、wolfCrypt の上位に位置します - wolfCOSE Test:有効・無効を切り替えられる実機セルフテストです。COSE_Sign1 ES256 の署名と検証を実行するため、独自のコードを 1 行も書かずに、お使いのボード上でライブラリが動作することを確認できます
- 設定テンプレート:アルゴリズムの選択は、通常の Cube の
.ftl設定フローから行えます
wolfCOSE は内部で wolfSSL Cube パックを使用するため、すべての暗号処理は wolfCrypt 上で動作します。これにより、STM32 プロジェクト全体を 1 つの暗号エンジンで統一できます。
完全なゼロアロケーション
wolfCOSE はゼロアロケーションを徹底したライブラリです。COSE の処理はすべて呼び出し側が用意したバッファを使用し、暗号処理の経路には malloc も free も一切存在しません。そのため、メモリ使用量の決定性が求められるリソース制約の厳しい STM32 ターゲットに適しています。
入手方法
ビルド済みのパックは www.wolfssl.com/files/ide/I-CUBE-wolfCOSE.pack に公開しています。セットアップ、プロジェクトの設定、実機セルフテストについては STM32Cube の Wiki ページに記載しています。
関連 PR:wolfSSL/wolfCOSE #61(ドキュメントと実機テスト)
NUCLEO-H563ZI 向け wolfCOSE サンプル
新しい wolfCOSE STM32Cube パックと併せて、STM32 NUCLEO-H563ZI 向けの完全な実機検証済み wolfCOSE サンプルも提供開始しました。プロジェクトを開き、コード生成、ビルド、書き込みを行うだけで、H5 上で COSE メッセージの署名と検証を実行できます。クロックやピンの設定を自分で調べる必要はありません。
サンプルの内容
これは NUCLEO-H563ZI 向けに設定済みの STM32CubeMX プロジェクトです。弊社の wolfIP サンプルと同じ構成にしてあるため、ボードの設定を一から作るのではなく、動作する状態から始められます。
NUCLEO-H563ZI-wolfCOSE.ioc:ST-LINK の仮想 COM ポート上の USART3 を 115200 baud に設定し、RNG を有効化、TrustZone を無効化した状態で、wolfSSL の wolfCrypt Core と wolfCOSE の Core および Test コンポーネントを選択済みです- 手順を記載した README:パックのインストール、プロジェクトの生成、ソフトウェア暗号処理の設定、グルーコードの追加、ビルド、書き込み、コンソール出力の取得までを網羅しています
- 期待されるコンソール出力:正しく動作したかどうかをその場で判断できます
実機での動作結果
このサンプルは STM32CubeMX の Arm ツールチェーンでビルドし、OpenOCD で書き込み、実機の NUCLEO-H563ZI 上で動作させました。
== wolfCOSE NUCLEO-H563ZI ==
Running wolfCOSE test (COSE_Sign1 ES256)...
wolfCOSE test: PASS (COSE_Sign1 99 bytes)
COSE_Sign1 ES256 の署名と検証の全工程が H5 上で動作しており、暗号処理には wolfSSL Cube パック経由で wolfCrypt を使用しています。
他の STM32 ボードへの移植
このサンプルは NUCLEO-H563ZI を対象としていますが、README には他の STM32 ボードへ移植する際の簡単な手引きも収録しています。H5 向けのプロジェクトはそこで終わるものではなく、他の STM32 ファミリへ展開する際の出発点としてもお使いいただけます。
入手方法
- サンプルプロジェクト:wolfSSL/wolfssl-examples-stm32 #15
- 対応する Cube パック:wolfSSL/wolfCOSE #61
お手元に H5 ボードがあれば、wolfCOSE によるアテステーション用途の署名が実機上で動作する様子を最短で確認いただけます。
もし弊社製品についてご質問があれば、お問い合わせ窓口info@wolfssl.jpまでご連絡をお願い致します。
原文:https://www.wolfssl.com/wolfcose-now-ships-as-an-stm32cube-pack/
原文:https://www.wolfssl.com/wolfcose-example-for-the-nucleo-h563zi/
