From fddf77a05bf5cfc682467399378b507d6f99de7a Mon Sep 17 00:00:00 2001 From: Masaki Iwai Date: Wed, 20 Nov 2024 11:19:25 +0900 Subject: [PATCH] add wolfHSM/src-ja --- wolfHSM/mkdocs-ja.yml | 32 ++ wolfHSM/src-ja/appendix01.md | 1 + wolfHSM/src-ja/chapter01.md | 13 + wolfHSM/src-ja/chapter02.md | 69 +++++ wolfHSM/src-ja/chapter03.md | 201 +++++++++++++ wolfHSM/src-ja/chapter04.md | 285 ++++++++++++++++++ wolfHSM/src-ja/chapter05.md | 397 +++++++++++++++++++++++++ wolfHSM/src-ja/chapter06.md | 25 ++ wolfHSM/src-ja/chapter07.md | 463 +++++++++++++++++++++++++++++ wolfHSM/src-ja/chapter08.md | 85 ++++++ wolfHSM/src-ja/wolfHSM-diagram.png | Bin 0 -> 243860 bytes 11 files changed, 1571 insertions(+) create mode 100644 wolfHSM/mkdocs-ja.yml create mode 100644 wolfHSM/src-ja/appendix01.md create mode 100644 wolfHSM/src-ja/chapter01.md create mode 100644 wolfHSM/src-ja/chapter02.md create mode 100644 wolfHSM/src-ja/chapter03.md create mode 100644 wolfHSM/src-ja/chapter04.md create mode 100644 wolfHSM/src-ja/chapter05.md create mode 100644 wolfHSM/src-ja/chapter06.md create mode 100644 wolfHSM/src-ja/chapter07.md create mode 100644 wolfHSM/src-ja/chapter08.md create mode 100644 wolfHSM/src-ja/wolfHSM-diagram.png diff --git a/wolfHSM/mkdocs-ja.yml b/wolfHSM/mkdocs-ja.yml new file mode 100644 index 00000000..5c432bb3 --- /dev/null +++ b/wolfHSM/mkdocs-ja.yml @@ -0,0 +1,32 @@ +site_name: wolfHSM Manual +site_url: https://wolfssl.com/ +docs_dir: build/html/ +site_dir: html/ +copyright: Copyright © 2024 wolfSSL Inc. +nav: + - "1. イントロダクション": chapter01.md + - "2. 概要": chapter02.md + - "3. wolfHSMの始め方": chapter03.md + - "4. ライブラリ構造": chapter04.md + - "5. クライアントライブラリ": chapter05.md + - "6. サーバライブラリ": chapter06.md + - "7. カスタマイズ": chapter07.md + - "8. ポーティング": chapter08.md + - "9. APIリファレンス": appendix01.md +theme: + name: null + custom_dir: ../mkdocs-material/material + language: ja + palette: + primary: indigo + accent: indigo + font: + text: roboto + code: roboto mono + icon: "logo.png" + logo: logo.png + favicon: logo.png + feature: + tabs: true +extra_css: [skin.css] +use_directory_urls: false diff --git a/wolfHSM/src-ja/appendix01.md b/wolfHSM/src-ja/appendix01.md new file mode 100644 index 00000000..dbd77bb8 --- /dev/null +++ b/wolfHSM/src-ja/appendix01.md @@ -0,0 +1 @@ +# wolfHSM APIリファレンス diff --git a/wolfHSM/src-ja/chapter01.md b/wolfHSM/src-ja/chapter01.md new file mode 100644 index 00000000..b00d6e7d --- /dev/null +++ b/wolfHSM/src-ja/chapter01.md @@ -0,0 +1,13 @@ +# イントロダクション + +このマニュアルは、wolfHSM組込みハードウェアセキュリティモジュールライブラリの技術ガイドとして作成されています。wolfHSMの構築方法と使用開始方法を説明し、構築オプション、機能、移植性の向上、サポートなどの概要を示します。 + +このドキュメントのPDF版は [こちら](https://www.wolfssl.com/documentation/manuals/wolfhsm/wolfHSM-Manual.pdf) で入手できます。 + +## wolfHSMを選択する理由 + +車載HSM(Hardware Security Module)は、暗号鍵と処理のセキュリティを大幅に向上させます。これは、セキュリティの基盤である署名検証と暗号処理を物理的に独立したプロセッサに分離することで実現します。堅牢なセキュリティが求められるECUでは、推奨ではなく必須とされることがよくあります。よって、厳密なテストを行っている暗号化ライブラリwolfSSLを、Aurix Tricore TC3XX などの広く使用されている自動車用HSMでシームレスに動作するようにしました。wolfHSMが依存しているのはwolfCryptのみであり、ほぼすべての環境に移植できます。また、ユーザーフレンドリーなクライアント インターフェイスも提供しており、wolfCrypt APIを直接利用できます。 + +wolfHSMはECUのセキュリティとパフォーマンスを最大限に高めるべく、ハードウェア暗号化、不揮発性メモリ、各種隔離環境などと組み合わせて使用できるように設計しています。暗号エンジンwolfCryptをInfineon Aurix Tricore TC3XX などのハードウェアHSMに統合することで、SM2、SM3、SM4 などの中国政府義務アルゴリズムも利用できます。さらに、Kyber、LMS、XMSS などの耐量子暗号アルゴリズムを自動車ユーザーが簡単に利用できるようにし、顧客の要件に対応できるようにします。併せて、HSMでハードウェア暗号処理を利用できる場合は、これも利用してパフォーマンスを向上させます。 + +wolfBootは、ベアメタル環境のための安全かつポータブルなブートローダーソリューションです。最小限の設計と小さなHAL APIを活用した包括的なファームウェア認証および更新メカニズムを提供し、オペレーティングシステムやベアメタルアプリケーションから完全に独立しています。wolfBootは、フラッシュインターフェイスとプリブート環境を効率的に管理、アプリケーションを正確に測定および認証します。また、必要に応じてよりレイヤーの低いハードウェア暗号化も利用します。wolfBootはwolfHSM クライアントを使用し、HSM支援アプリケーションコアのセキュアブートを使用できます。さらに、wolfBootをHSMコア上で実行してHSMサーバーが損傷していないことを確認し、2次的な保護層を提供できます。この設定により、安全なブートシーケンスが保証されNVMサポートに依存するHSMコアのブートプロセスと適切に連携します。 diff --git a/wolfHSM/src-ja/chapter02.md b/wolfHSM/src-ja/chapter02.md new file mode 100644 index 00000000..6728c405 --- /dev/null +++ b/wolfHSM/src-ja/chapter02.md @@ -0,0 +1,69 @@ +# 概要 + +wolfHSMは、暗号操作・鍵管理・不揮発性ストレージの制御など、HSM操作用の統合APIを提供するソフトウェアフレームワークです。 +HSMアプリケーションに関連するコードの移植性を向上させるように設計しており、ベンダー固有のライブラリ呼び出しに縛られることなく、強力なセキュリティ機能を多くのハードウェア上で容易に使用できるようにします。 +wolfCrypt APIを直接使用できるため、クライアントアプリケーションが大幅に簡素化されます。ライブラリは、クライアントアプリで追加のロジックを必要とせずに、すべての機密性の高い暗号化操作をリモートプロシージャコールとしてHSMコアに自動的にオフロードします。 + +当初、主に自動車に搭載されるHSM対応マイクロコントローラを対象としていました。 +しかし現在では、自動車に限らずあらゆるユースケースにおいてPKCS11やAUTOSAR SHEなどの標準化されたインターフェイスとプロトコルをサポートできるようにしました。 +プラットフォームに将来追加される機能をサポートすることのできる、拡張可能なソリューションです。wolfCrypt以外の外部依存はなく、ほぼすべての実行環境に移植可能です。 + +## 機能 + +- ユーザーベースの権限による安全な不揮発性オブジェクトストレージ +- ハードウェアキーをサポートする暗号鍵管理 +- 互換性のあるデバイスに対するハードウェア暗号化サポート +- 完全に非同期のクライアントAPI +- 柔軟なコールバックアーキテクチャにより、ライブラリを変更せずにカスタムユースケースを実現 +- wolfCrypt APIをクライアントで直接使用し、HSMコアに自動的にオフロード +- 信頼チェーンをサポートするイメージマネージャー +- AUTOSARとの統合 +- SHE+との統合 +- PKCS11インターフェイスを使用可能 +- TPM 2.0インターフェイスを使用可能 +- Secure OnBoard Communication (SecOC) モジュール統合を使用可能 +- 証明書の処理 +- 共通鍵暗号・公開鍵暗号の両方に対応 +- 半導体ベンダーによって実装されたアルゴリズムだけでなく、wolfCryptに実装されているすべてのアルゴリズムを提供することで、「暗号アジリティ」をサポート +- FIPS 140-3認証を取得可能 + +## アーキテクチャ + + wolfHSMは、サーバーが信頼できる安全な環境(通常は安全なコプロセッサ上)で実行され、クライアントがライブラリであるクライアントサーバーモデルを採用しています。このアーキテクチャにより、機密性の高い暗号化操作と鍵管理がサーバー内で安全に処理され、クライアントライブラリがサーバーとのレイヤーの低い通信を抽象化します。 + +- サーバー: wolfHSMのサーバーコンポーネントは、HSMコアで実行されるスタンドアロンアプリケーションです。安全な環境内で暗号化操作、鍵管理、不揮発性ストレージを処理します。サーバーはクライアントからの要求を処理し、結果を返す役割を担います。 + +- クライアント: wolfHSMのクライアントコンポーネントは、ユーザーアプリケーションにリンクできるライブラリです。サーバーに要求を送信し、応答を受信するためのAPIを提供します。クライアントは、通信の複雑さを抽象化し、アプリケーションがHSMと安全かつ効率的に対話できるようにします。 + +## ポート + +wolfHSM自体には特定のハードウェアと対話するためのコードは含まれておらず、単体では実行できません。 wolfHSMをデバイスで実行するには、サーバ アプリケーションがクライアントと通信して実行できるように、必要なハードウェアドライバーと抽象化レイヤーを使用してライブラリを構成する必要があります。具体的には、次の要素が必要です。 + +- サーバーアプリケーションの起動とハードウェアの初期化 +- サーバーにおけるwolfCrypt構成 +- サーバーの不揮発性メモリ構成 +- サーバーとクライアントのトランスポート構成 +- サーバーとクライアントの接続処理 + +これらの要件を提供し、サーバーAPIを起動可能なアプリケーションにラップするコードを、wolfHSM「ポート」と呼んでいます。 + +wolfHSMの公式ポートは、サポートされているさまざまなアーキテクチャ用に提供しています。それぞれのポートには次のものが含まれます。 + +- スタンドアロンリファレンスサーバーアプリケーション: このアプリケーションは、HSMコアで実行され、すべての安全な操作を処理することを目的としています。すぐに使用できる状態で完全に機能しますが、エンドユーザーがカスタマイズして追加のユースケースをサポートすることもできます。 +- クライアントライブラリ: このライブラリは、ユーザーアプリケーションにリンクして、サーバーとの通信を容易にします。 + +### 対応状況 + +本章執筆時点において、次のデバイス/環境のポートをサポートしています。 + +- POSIX ランタイム +- ST Micro SPC58N\* +- Infineon Aurix TC3xx\* +- Infineon Aurix TC4xx\* (近日対応予定) +- Infineon Traveo T2G\* (近日対応予定) +- Renesas RH850\* (近日対応予定) +- NXP S32\* (近日対応予定) + +ここに示した環境のほか、いくつかの環境へのポートを現在準備中です。 + +\* 残念ながら、これらのポートでは、HSMコアに関する情報を取得するためにシリコンベンダーとのNDAが必要です。したがって、これらのプラットフォームのwolfHSMポートは一般には公開しておりません。ご興味がございましたら、info@wolfssl.jp までお問い合わせください。 diff --git a/wolfHSM/src-ja/chapter03.md b/wolfHSM/src-ja/chapter03.md new file mode 100644 index 00000000..efe892ea --- /dev/null +++ b/wolfHSM/src-ja/chapter03.md @@ -0,0 +1,201 @@ +# wolfHSMの始め方 + +wolfHSMの最も一般的な使用例は、HSMコプロセッサを搭載したマルチコアデバイスのアプリケーションコアの1つで動作する既存のアプリケーションに、HSM対応の機能を追加することです。 + +デバイス上でwolfHSMを実行するために必要な最初のステップは、特定のwolfHSMポートの手順に従って、HSMコア上でリファレンスサーバーを実行することです。wolfHSMサーバーアプリケーションがデバイスにロードされて起動すると、クライアントアプリケーションはwolfHSMクライアントライブラリとリンクし、wolfHSMクライアント構造体のインスタンスを設定して、wolfHSMクライアントAPIとwolfCrypt APIを通じてHSMと対話できるようになります。 + +各wolfHSMポートには、デフォルトの通信チャネルの設定方法とサーバーとの対話方法を示すクライアントデモアプリが含まれています。また、サーバーのリファレンス実装は[サーバーコールバック](./chapter07.md)によってカスタマイズでき、その機能はクライアントリクエストを通じて呼び出すことができます。 + +## 基本的なクライアント設定 + +wolfHSMクライアントを使用するには、クライアントコンテキスト構造体を割り当て、有効なクライアントのパラメータを用いて初期化処理を実行する必要があります。 + +クライアントコンテキスト構造体`whClientContext`は、クライアントの内部状態とサーバーとの通信を保持します。すべてのクライアントAPIは、クライアントコンテキストへのポインタを受け取ります。 + +クライアント設定構造体には、サーバーとの通信用にコンテキストを設定・初期化するために使用される通信レイヤー設定(`whCommClientConfig`)が含まれています。`whCommClientConfig`構造体は、実際のトランスポート実装(組み込みまたはカスタム)をクライアントが使用する抽象的な通信インターフェースにバインドします。 + +クライアントを設定する一般的な手順は以下の通りです。 + +1. 目的のトランスポートのトランスポート設定構造体、コンテキスト、コールバック実装を割り当て、初期化 +2. 通信クライアント設定構造体を割り当て、手順1のトランスポート設定にバインド +3. 手順2の通信クライアント設定を使用してクライアント設定構造体を割り当て、初期化 +4. クライアントコンテキスト構造体を割り当て +5. `wh_Client_Init()`を呼び出してクライアント設定でクライアントを初期化 +6. クライアントAPIを使用してサーバーと接続 + +以下に、クライアントアプリケーション用の実装例を示します。 +ここでは、組み込みの共有メモリトランスポートレイヤを使用して、サーバーにエコーリクエストを送信します。 + +```c +#include /* for memcmp() */ +#include "wolfhsm/client.h" /* クライアントAPI(通信設定を含む) */ +#include "wolfhsm/wh_transport_mem.h" /* トランスポート実装 */ + +/* 手順1: 共有メモリトランスポート設定の割り当てと初期化 */ +/* 共有メモリトランスポート設定 */ +static whTransportMemConfig transportMemCfg = { /* 共有メモリ設定 */ }; +/* 共有メモリトランスポートコンテキスト(状態) */ +whTransportMemClientContext transportMemClientCtx = {0}; +/* 抽象的な通信トランスポートインターフェースを + 具体的な実装にバインドするコールバック構造体 */ +whTransportClientCb transportMemClientCb = {WH_TRANSPORT_MEM_CLIENT_CB}; + +/* 手順2: クライアント通信設定を割り当て、トランスポートにバインド */ +/* 選択したトランスポート設定を使用するようにクライアント通信を設定 */ +whCommClientConfig commClientCfg = { + .transport_cb = transportMemClientCb, + .transport_context = (void*)transportMemClientCtx, + .transport_config = (void*)transportMemCfg, + .client_id = 123, /* 一意のクライアント識別子 */ +}; + +/* 手順3: クライアント設定の割り当てと初期化 */ +whClientConfig clientCfg= { + .comm = commClientCfg, +}; + +/* 手順4: クライアントコンテキストの割り当て */ +whClientContext clientCtx = {0}; + +/* 手順5: 提供された設定でクライアントを初期化 */ +wh_Client_Init(&clientCtx, &clientCfg); + +/* 手順6: クライアントAPIを使用してサーバーと接続 */ + +/* 送受信データを保持するバッファ */ +char recvBuffer[WH_COMM_DATA_LEN] = {0}; +char sendBuffer[WH_COMM_DATA_LEN] = {0}; + +uint16_t sendLen = snprintf(&sendBuffer, + sizeof(sendBuffer), + "Hello World!\n"); +uint16_t recvLen = 0; + +/* エコーリクエストを送信し、応答を受信するまでブロック */ +wh_Client_Echo(client, sendLen, &sendBuffer, &recvLen, &recvBuffer); + +if ((recvLen != sendLen ) || + (0 != memcmp(sendBuffer, recvBuffer, sendLen))) { + /* エラー:送信したものと同じものがエコーバックされなかった */ +} +``` + +詳細については、[第5章:クライアントライブラリ](./chapter05.md)をご覧ください。 + +## 基本的なサーバ設定 + +*注:wolfHSMポートには、HSMコア上で実行するように設定済みのリファレンスサーバーアプリケーションが付属しているため、手動でのサーバー設定は必要ありません。* + +wolfHSMサーバーを使用するには、サーバーコンテキスト構造体を割り当て、有効なクライアントのパラメータを用いてを初期化処理を実行する必要があります。 +通常、クライアントとの通信、暗号化操作、鍵の管理、不揮発性オブジェクトの保存が含まれます。ただし、これらの設定コンポーネントをすべて初期化する必要はありません。必要なもののみ初期化します。 + +クライアント通信、NVMフラッシュ設定を使用したNVMオブジェクトストレージ、およびローカル暗号(ソフトウェアのみ)をサポートするサーバーを設定するために必要な手順を以下に示します。 + +1. サーバー通信設定の初期化 + 1\. 目的のトランスポートのトランスポート設定構造体、コンテキスト、コールバック実装を割り当て、初期化 + 2\. 手順1.1のトランスポート設定を使用して通信サーバー設定構造体を割り当て、初期化 +2. サーバーNVMコンテキストの初期化 + 1\. 低レベルフラッシュストレージドライバーの設定、コンテキスト、コールバック構造体を割り当て、初期化(これらの構造体の実装はポートによって提供されます) + 2\. NVMフラッシュ設定、コンテキスト、コールバック構造体を割り当て、初期化し、手順2.1のポートフラッシュ設定をそれらにバインド + 3\. NVMコンテキスト構造体を割り当て、`wh_Nvm_Init()`を使用して手順2.2の設定で初期化 +3. サーバー用の暗号コンテキスト構造体を割り当て、初期化 +4. wolfCryptを初期化(必ず、サーバーを初期化する前に行います) +5. サーバー設定構造体を割り当て、初期化し、通信サーバー設定、NVMコンテキスト、暗号コンテキストをバインド +6. サーバーコンテキスト構造体を割り当て、`wh_Server_Init()`を使用してサーバー設定で初期化 +7. 基盤となるトランスポートがクライアント通信に使用できる準備が整い次第、`wh_Server_SetConnected()`を使用してサーバー接続状態を接続済みに設定(詳細については[サンプルプログラム](https://github.com/wolfSSL/wolfHSM-examples)を参照ください) +8. `wh_Server_HandleRequestMessage()`を使用してクライアントリクエストを処理 + +サーバーは、NVMフラッシュ設定を使用してNVMオブジェクトストレージをサポートするように設定できます。 +手順1の後に、サーバーで[NVMを初期化する](./chapter04.md#NVM-Architecture)手順を実行してください。 + +```c +#include /* for memcmp() */ +#include "wolfhsm/server.h" /* サーバーAPI(通信設定を含む) */ +#include "wolfhsm/wh_transport_mem.h" /* トランスポート実装 */ + +/* 手順1.1: 共有メモリトランスポート設定の割り当てと初期化 */ +/* 共有メモリトランスポート設定 */ +static whTransportMemConfig transportMemCfg = { /* 共有メモリ設定 */ }; + +/* 共有メモリトランスポートコンテキスト(状態) */ +whTransportMemServerContext transportMemServerCtx = {0}; + +/* 抽象的な通信トランスポートインターフェースを + 具体的な実装にバインドするコールバック構造体 */ +whTransportServerCb transportMemServerCb = {WH_TRANSPORT_MEM_SERVER_CB}; + +/* 手順1.2: 通信サーバー設定構造体を割り当て、 + トランスポートにバインド */ +/* 選択したトランスポート設定を使用するようにサーバー通信を設定 */ +whCommServerConfig commServerCfg = { + .transport_cb = transportMemServerCb, + .transport_context = (void*)transportMemServerCtx, + .transport_config = (void*)transportMemCfg, + .server_id = 456, /* 一意のサーバー識別子 */ +}; + +/* サーバーNVMコンテキストの初期化 */ + +/* 手順2.1: ポート固有のフラッシュストレージドライバー用の + コンテキストと設定の割り当てと初期化 */ + +/* ポートフラッシュコンテキスト(構造体名はポート固有) */ +MyPortFlashContext portFlashCtx = {0} + +/* ポートフラッシュ設定 */ +MyPortFlashConfig portFlashCfg = { /* ポート固有の設定 */ }; + +/* ポートフラッシュ用のNVMフラッシュコールバック実装 */ +whFlashCb portFlashCb = { /* NVMフラッシュコールバックのポートフラッシュ実装 */ }; + +/* 手順2.2: NVMフラッシュ設定構造体を割り当て、初期化し、 + 手順2.1のポート設定にバインド */ +whNvmFlashConfig nvmFlashCfg = { + .cb = portFlashCb, + .context = portFlashCtx, + .config = portFlashCfg, +}; +whNvmFlashContext nfc = {0}; + +/* 手順2.3: NVMコンテキスト、設定、コールバック構造体を割り当て、 + 手順2.2のNVMフラッシュ設定で初期化 */ +whNvmCb nvmFlashCb = {WH_NVM_FLASH_CB}; + +whNvmConfig nvmConf = { + .cb = nvmFlashCb; + .context = nfc; + .config = nvmFlashCfg, +}; +whNvmContext nvmCtx = {0}; + +wh_Nvm_Init(&nvmCtx, &whNvmConfig); + +/* 手順3: 暗号コンテキスト構造体の割り当てと初期化 */ +whServerCryptoContext cryptoCtx { + .devID = INVALID_DEVID; /* あるいは、カスタム暗号コールバックdevIDを設定 */ +}; + +/* サーバー設定の割り当てと初期化 */ +whServerConfig serverCfg = { + .comm = commServerCfg, + .nvm = nvmCtx, + .crypto = cryptoCtx, +}; + +/* 手順4: wolfCryptの初期化 */ +wolfCrypt_Init(); + +/* 手順5: サーバー設定構造体を割り当て、初期化し、 + 通信サーバー設定と暗号コンテキストをバインド */ +whServerContext server = {0}; +wh_Server_Init(&server, &serverCfg); + +/* トランスポートの準備が整い次第(例:共有メモリバッファがクリアされた後)、 + サーバー接続状態を接続済みに設定 */ +wh_Server_SetConnected(&server, WH_COMM_CONNECTED); + +/* クライアントリクエストの処理 */ +while (1) { + wh_Server_HandleRequestMessage(&server); +} +``` diff --git a/wolfHSM/src-ja/chapter04.md b/wolfHSM/src-ja/chapter04.md new file mode 100644 index 00000000..de35be4d --- /dev/null +++ b/wolfHSM/src-ja/chapter04.md @@ -0,0 +1,285 @@ +# ライブラリ構造 + +wolfHSMは、組込みシステム向けに安全で効率的なハードウェアセキュリティモジュール(HSM)APIを提供するために設計した、モジュラーで拡張可能なライブラリです。 +このライブラリは、特定のアプリケーションの要件を満たすために簡単に設定・組み合わせることが可能な一連の機能コンポーネントを中心に構築されています。 +この章では、コンポーネントアーキテクチャ、通信レイヤー、不揮発性メモリ(NVM)、鍵管理、暗号化操作、ハードウェアセキュリティモジュール(HSM)サポートなど、wolfHSMの主要な機能コンポーネントの概要を説明します。 + +## 目次 + +- コンポーネントアーキテクチャ +- 通信 + - 主要コンポーネント + - クライアント/サーバーAPI + - 通信レイヤー +- 不揮発性メモリ + - 不揮発性メモリのメタデータ + - 不揮発性メモリのアーキテクチャ + - 不揮発性メモリのバックエンド +- 鍵管理 +- 暗号処理 + - ハードウェア暗号サポート + +## コンポーネントアーキテクチャ + +wolfHSMの各コンポーネントは、共通の初期化、設定、コンテキストストレージアーキテクチャを持つように設計しています。 +これは、異なるハードウェアプラットフォームやビルド環境に簡単に移植できるようにするためです。 + +ハードウェアの詳細は、`void*`として参照される型付けされていないコンテキスト構造体にコールバック関数を関連付けることで、論理操作から抽象化しています。 + +### コンポーネントの初期化 + +wolfHSMコンポーネントの、一般的な設定と初期化の例を示します。 + +```c +#include "wolfhsm/component.h" /* wolfHSM コンポーネントの抽象APIリファレンス */ +#include "port/vendor/mycomponent.h" /* プラットフォーム固有の設定とコンテキスト構造体の定義、 + * およびコールバック関数の宣言 */ + +/* mycomponent用の関数コールバックのルックアップテーブルを提供。型は +wolfhsm/component.hで提供される抽象型であることに注意 */ +whComponentCb my_cb[1] = {MY_COMPONENT_CB}; + +/* 固定設定データ。関連データはinit()の実行中に構造体から +* コピーされることに注意 */ +const myComponentConfig my_config = { + .my_number = 3, + .my_string = "This is a string", +} + +/* myComponentの動的状態の静的割り当て */ +myComponentContext my_context[1] = {0}; + +/* プラットフォーム固有のコールバックを使用したコンポーネントの初期化 */ +const whComponentConfig comp_config[1] = { + .cb = my_cb, + .context = my_context, + .config = my_config + }; +whComponentContext comp_context[1] = {0}; +int rc = wh_Component_Init(comp_context, comp_config); + +rc = wh_Component_DoSomething(comp_context, 1, 2, 3); +rc = wh_Component_CleanUp(comp_context); +``` + +## 通信 + +wolfHSMの通信レイヤーは、クライアントとサーバー間において信頼性の高い双方向のパケットベースの通信を提供するように設計しています。 +このレイヤーは基盤となるトランスポートメカニズムを抽象化し、柔軟性とモジュール性を実現します。 +クライアントとサーバーの両方でリクエストとレスポンスの機能を分割していることで、メッセージ受信の同期的なポーリングや、割り込み/イベントサポートに基づく非同期処理を可能にしています。 + +### 主要コンポーネント + +- クライアント/サーバーAPI:クライアントとサーバー間の通信のためのメインインターフェース。これらはユーザーアプリケーションによって直接使用されるAPIです。 +- 通信レイヤー:クライアントとサーバー間で交換されるメッセージのフォーマットと構造を定義し、基盤となるトランスポートレイヤーの実装への抽象インターフェースを提供。 +- トランスポートレイヤー:基盤となるトランスポートの具体的な実装。クライアントとサーバー間でデータが実際にどのように転送されるかを定義します。 + +### クライアント/サーバーAPI + +高レベルのクライアントとサーバーAPI(`wolfhsm/wh_client.h`と`wolfhsm/wh_server.h`で定義)は、通信のための主要なインターフェースです。 +これらの関数は、呼び出し元から低レベルの通信の詳細を抽象化し、論理操作のためのシンプルな分割トランザクションインターフェースを提供します。 + +以下に、クライアントAPIを使用してサーバーにエコーリクエストを送信する場合の実装例を示します。 + +```c +/* エコーリクエストを送信 */ +wh_Client_EchoRequest(&clientCtx, sendLen, &sendBuffer); + +/* 任意で他の処理を実行 */ + +/* サーバーのレスポンスをポーリング */ +while (WH_ERROR_NOTREADY == wh_Client_EchoResponse(client, &recv_len, recv_buffer)); +``` + +### 通信レイヤー + +通信レイヤーは、より高レベルのクライアントとサーバーのAPIによって呼び出され、下位レベルのトランスポートとの間でデータを送受信するためのメッセージング構造と制御ロジックをカプセル化します。 +下位レベルのトランスポートと対話するための抽象インターフェース関数を提供する通信クライアントと通信サーバーの抽象化を実現しています。 +通信レイヤーAPIは、リクエストとレスポンスの送受信機能で構成されており、これらのリクエストとレスポンスは高レベルの操作ではなくメッセージに関連します。 + +各クライアントは、一度に1つのリクエストのみをサーバーに送信できます。 +サーバーはクライアントの分離を確実にするため、一度に1つのリクエストを処理します。 + +#### メッセージ + +メッセージは、可変長のペイロードを持つヘッダーで構成されます。 +ヘッダーはシーケンスIDとリクエストまたはレスポンスの種類を示します。併せて、補助フラグやセッション情報を提供するための追加フィールドも提供します。 + +```c +/* wolfhsm/wh_comm.h */ + +typedef struct { + uint16_t magic; + uint16_t kind; + uint16_t seq; + uint16_t size; +} whCommHeader; +``` + +メッセージは、サーバーが望ましい機能を実行するために必要なリクエストデータと、機能の実行結果をクライアントに返すためのレスポンスをカプセル化するために使用されます。 +メッセージタイプは、機能を実行するコンポーネントに基づいてグループ化され、列挙された機能のどれが実行されているかを一意に識別します。 +互換性(エンディアンとバージョン)を確保するためにメッセージにはMagicフィールドが含まれており、ペイロード内で渡されるデータをネイティブ処理用にデマーシャリングするために必要な操作を示す既知の値が使用されます。 +各機能コンポーネントには、ネイティブ値と「on-the-wire」メッセージフォーマット間の変換を行うリモート実装があります。 +サーバーは、レスポンスフォーマットがリクエストフォーマットと一致することを保証します。 + +メッセージ内でデータコンテンツを渡すことに加えて、特定のメッセージタイプは共有またはマップされたメモリポインタの受け渡しもサポートしています。 +これは、特にサーバーコンポーネントがDMA方式でデータに直接アクセスできる可能性のある、パフォーマンスクリティカルな操作のためのものです。 +整数ポインタサイズ(IPS)と`size_t`の違いを避けるため、可能な場合はすべてのポインタとサイズを`uint64_t`として送信する必要があります。 + +メッセージは、ヘッダーのMagicフィールドを使用して「on-the-wire」フォーマットでエンコードされ、構造体メンバーの指定されたエンディアンと通信ヘッダーのバージョン(現在は0x01)が示されます。 +リクエストメッセージを処理するサーバーコンポーネントは、提供された値をネイティブフォーマットに変換し、タスクを実行し、結果をリクエストのフォーマットに再エンコードします。 +クライアントでは、リクエストフォーマットと一致しないメッセージを処理する必要はありません。 +エンコードされたメッセージは、Magicフィールドで指定されたエンディアンで、かつネイティブ構造体と同じサイズとレイアウトを想定しています。 + +以下に、クライアント通信レイヤーがリクエストを送信する際の実装例を示します。 + +```c +uint16_t req_magic = wh_COMM_MAGIC_NATIVE; +uint16_t req_type = 123; +uint16_t request_id; +char* req_data = "RequestData"; +rc = wh_CommClient_SendRequest(context, req_magic, req_type, &request_id, + sizeof(req_data), req_data); +/* 他のタスクを実行 */ + +uint16_t resp_magic, resp_type, resp_id, resp_size; +char response_data[20]; +while((rc = wh_CommClient_RecvResponse(context,&resp_magic, &resp_type, &resp_id, + &resp_size, resp_data)) == WH_ERROR_NOTREADY) { + /* 他のタスクを実行 or yield */ +} +``` + +メッセージレイヤーに渡されるトランスポートエラーは致命的であると想定されます。 +クライアント/サーバーはコンテキストをクリーンアップする必要があることに注意してください。 + +### トランスポート + +トランスポートは、ライブラリがリクエストまたはレスポンスとして処理するために、可変サイズ(最大MTUまで)の完全なパケット(バイト列)をメッセージレイヤーに提供します。 +`whTransportClientCb`で定義された抽象インターフェースを実装し、データの送受信が必要な時にcommClient/commServerによって直接呼び出されます。 + +`whTransportClientCb`インターフェースを実装するカスタムトランスポートモジュールは、サーバーとクライアントに登録できます。 +その後、標準的なサーバーとクライアントのリクエスト/レスポンス機能を介して自動的に使用されます。 + +メモリバッファトランスポートモジュールとPOSIX TCPソケットトランスポートの実装例は、wolfHSMでサポートしているトランスポートの中で見ることができます。 + +#### サポートしているトランスポート + +wolfHSMは、以下2つの組み込みトランスポートを付属しています。 + +- メモリバッファトランスポート(`wh_transport_mem.c`) +- POSIX TCPソケットトランスポート(`port/posix_transport_tcp.c`) + +メモリトランスポートは、ほとんどの組込みwolfHSMポートのデフォルトトランスポートであり、wolfHSMコアライブラリの一部です。 +クライアントとサーバー間の共有メモリブロックを使用して、トランスポートコールバックの具体的な実装を提供します。 +共有メモリトランスポートメカニズムは、2つのメモリブロックを割り当てることで動作します。 +1つは受信リクエスト用、もう1つは送信レスポンス用です。クライアントは受信メモリブロックにリクエストを書き込み、送信メモリブロックからレスポンスを読み取ります。 +サーバーは受信メモリブロックからリクエストを読み取り、送信メモリブロックにレスポンスを書き込みます。 +各ブロックには、使用準備が整ったときに消費者に通知する制御とステータスフラグが含まれています。 +このメカニズムは、システムコールやネットワーク通信の必要性を回避するため、高速かつ効率的になるように設計されています。 + +POSIX TCPトランスポートは、wolfHSM POSIXポートの一部です。 +クライアントとサーバー間のデータのトランスポート媒体としてTCPソケットを使用します。 +ソケットはIPv4のみで、ノンブロッキングです。 + +## 不揮発性メモリ + +wolfHSMにおける不揮発性メモリ(NVM)は、メタデータとデータブロックを持つ永続的なオブジェクトを管理するために使用されます。 +NVMライブラリは、成功を返す前にトランザクションが完全にコミットされることを保証する、信頼性の高い原子的な操作を確保します。 +主要な操作には、オブジェクトの追加、一覧表示、読み取り、破棄、および関連するメタデータの取得が含まれます。 + +NVMの主要な機能として、以下が含まれます。 + +- アクセス可能なNVM内の可変サイズデータとメタデータ(ID、ラベル、長さ、アクセス、フラグ)を関連付けるためのAPI +- ステータスフラグを持つ2つの消去可能なパーティションを使用して、常に復元可能 +- オブジェクトは次のエントリを使用して追加され、空き領域にプログラムされる +- 重複したIDは許可されるが、最新のものだけが読み取り可能 +- オブジェクトは、リストされたオブジェクトを除いて、非アクティブなパーティションに全領域をコピーすることで破棄される +- 復旧時に後のオブジェクトを識別するため、内部エポックカウンタを使用 + +### 不揮発性メモリのメタデータ + +不揮発性メモリ(NVM)メタデータは、NVMに保存されたオブジェクトを管理および記述するために使用されます。 +このメタデータは、識別子、アクセス権限、フラグ、その他の属性など、各オブジェクトに関する重要な情報を提供します。 +メタデータにより、NVM内のオブジェクトを確実に管理、アクセス、操作することができます。 + +```c +/* NVMオブジェクトのユーザー指定メタデータ */ +typedef struct { +whNvmId id; / 一意の識別子 / +whNvmAccess access; / アクセス権限 / +whNvmFlags flags; / 追加フラグ / +whNvmSize len; / データの長さ(バイト単位) / +uint8_t label[WOLFHSM_NVM_LABEL_LEN]; / ラベル */ +} whNvmMetadata; +``` + +- ID (`whNvmId id`):NVMオブジェクトの一意の識別子です。このIDはNVM内の特定のオブジェクトを参照しアクセスするために使用されます。オブジェクトの読み取り、書き込み、削除などの操作を可能にします。 +- アクセス (`whNvmAccess access`):オブジェクトのアクセス権限を定義します。このフィールドは、誰がどのような条件でオブジェクトにアクセスできるかを指定します。セキュリティポリシーを実施し、権限のあるエンティティのみがオブジェクトと対話できることを保証します。 +- フラグ (`whNvmFlags flags`):追加情報を提供したりオブジェクトの動作を変更したりする追加フラグです。フラグは、オブジェクトが読み取り専用か、一時的か、その他の特定のプロパティを持つかなど、特別な属性や状態でオブジェクトをマークするために使用できます。 +- 長さ (`whNvmSize len`):オブジェクトに関連付けられたデータの長さ(バイト単位)です。 +- ラベル (`uint8_t label[]`):オブジェクトの人間が読める形式のラベルまたは名前です。 + +### 不揮発性メモリのアーキテクチャ + +wolfHSMサーバーは、不揮発性メモリ(NVM)操作を処理するために汎用コンポーネントアーキテクチャアプローチに従います。 +設定は汎用部分と特定部分に分かれており、柔軟性とカスタマイズ性を提供します。 + +1. **汎用設定 (wh_nvm.h):** このヘッダーファイルは、NVM操作の汎用インターフェースを定義します。`nvm_Read`、`nvm_Write`、`nvm_Erase`、`nvm_Init`などのNVM操作用の関数ポインタが含まれています。これらの関数ポインタは`whNvmConfig`構造体の一部であり、実際のNVM実装を抽象NVMインターフェースにバインドするために使用されます。 + +2. **特定設定 (wh_nvm_flash.c, wh_nvm_flash.h):** これらのファイルは、フラッシュメモリ用のNVMインターフェースの具体的な実装を提供します。ここで定義される関数は、汎用インターフェースで定義された関数シグネチャに準拠しており、NVM操作の実際の実装として使用できます。 + +`whServerContext`構造体には`whNvmConfig`メンバーが含まれています。これはNVM操作をサーバーコンテキストにバインドするために使用され、サーバーが設定されたNVMインターフェースを使用してNVM操作を実行できるようにします。 + +サーバーでNVMを初期化するには、以下の手順が必要です。 + +1. `whNvmConfig`構造体を割り当て、初期化し、特定のNVMバックエンド(例:`wh_nvm_flash.c`から)へのバインディングを提供 +2. `whServerConfig`構造体を割り当て、初期化し、その`nvmConfig`メンバーを手順1で初期化した`whNvmConfig`構造体に設定 +3. `whServerContext`構造体を割り当て +4. `wh_Server_Init()`を呼び出して、`whServerConfig`構造体でサーバーを初期化 + +これにより、サーバーは指定されたバッキングストアで設定されたNVM操作を使用できるようになり、`whNvmConfig`構造体で異なる実装を提供することで簡単に入れ替えることができます。 + +### 不揮発性メモリのバックエンド + +現在、wolfHSMがサポートしているNVMバックエンドプロバイダーは、NVMフラッシュモジュール(`wh_nvm_flash.c`)のみです。 +このモジュールは、NVMインターフェース関数(`wh_nvm.h`)の具体的な実装を提供し、NVMデータストアをフラッシュメモリデバイスにマッピングします。 +低レベルのフラッシュドライバーはデバイス固有であり、それ自体が汎用コンポーネント(`wh_flash.h`)として指定され、ターゲットハードウェアに応じて入れ替えることができます。 + +## 鍵管理 + +wolfHSMライブラリは、不揮発性メモリからの鍵の保存、読み込み、エクスポート、高速アクセスのためにRAMに頻繁に使用される鍵のキャッシング、およびハードウェア専用デバイス鍵との対話など、包括的な鍵管理機能を提供します。 +鍵は、対応するアクセス保護とともに、他のNVMオブジェクトと並んで不揮発性メモリに保存されます。 +wolfHSMは、特定のコンシューマーが使用するために鍵が選択されたとき、必要な暗号化ハードウェアに鍵を自動的に読み込みます。 +鍵管理APIの詳細については、[クライアントライブラリ](./chapter05.md)と[APIドキュメント](./appendix01.md)のセクションをご参照ください。 + +## 暗号処理 + +wolfHSMの特徴的な機能の1つは、クライアントアプリケーションがwolfCrypt APIを直接使用できるようにしながら、基盤となる暗号化操作を実際にHSMコア上で実行することです。 +これは以下のメリットをもたらします。 + +- クライアントアプリケーションは、HSM間でデータを双方向に受け渡すために必要な複雑な通信トランザクションを設定する必要がありません。これにより、劇的にシンプルになります。 +- wolfCrypt呼び出しのパラメータを1つ変更するだけで、ローカルとリモートのHSM実装を簡単に切り替えることができます。実装の最大限の柔軟性と開発の容易さを実現します。クライアントアプリケーションの開発は、HSMコアがオンラインになる前でも、wolfCryptのローカルインスタンスでプロトタイプを作成できます。 +- wolfHSM APIは、シンプルかつ安定していて、豊富なドキュメントがあり、あらゆる環境でその動作が検証されています。 + +wolfCrypt API呼び出しをwolfHSMサーバーに簡単にリダイレクトできる機能は、wolfCryptの「暗号コールバック」(cryptocbとも呼ばれる)に基づいています。 + +wolfHSMクライアントは、[暗号コールバック](https://www.wolfssl.com/documentation/manuals/wolfssl/chapter06.html#crypto-callbacks-cryptocb)としてリモートプロシージャコール(RPC)ロジックを実装することで、wolfCrypt API呼び出しをwolfHSMサーバーにリダイレクトできます。 +wolfCryptの暗号コールバックフレームワークにより、ユーザーは選択した暗号化アルゴリズムのデフォルト実装を上書きし、実行時に独自のカスタム実装を提供できます。 +wolfHSMクライアントライブラリは、wolfCryptに暗号コールバックを登録し、各wolfCrypt暗号化API関数を安全な環境で実行されるHSMサーバーへのリモートプロシージャコールに変換します。 +暗号コールバックは、ほとんどのwolfCrypt API呼び出しで受け入れられるデバイスID(`devId`)パラメータに基づいて選択されます。 + +wolfHSMは、wolfHSMサーバー暗号化デバイスを表す`WOLFHSM_DEV_ID`値を定義しており、これを任意のwolfCrypt関数の`devId`パラメータとして渡すことができます。 +`devId`パラメータをサポートするwolfCrypt APIには`WOLFHSM_DEV_ID`を渡すことができます。 +これがサポートされている場合、暗号化操作は自動的にwolfHSMサーバーによって実行されます。 + +### ハードウェア暗号サポート + +多くのHSMデバイスは、いくつかのアルゴリズムをターゲットとしたハードウェアアクセラレーション機能も備えています。 +wolfHSMサーバーは、HSMサーバーサイドの暗号化処理をデバイスハードウェアにオフロードすることもサポートしています。 +HSMデバイスが対応している場合、wolfHSMサーバーはユーザーからの特別な入力を必要とせずに、これを自動的に行うように設定できます。 +デバイス固有のハードウェアアクセラレーション機能については、そのデバイスのwolfHSMポートのドキュメントをご覧ください。 + +## AUTOSAR SHE + +(本章は後日提供予定です。) diff --git a/wolfHSM/src-ja/chapter05.md b/wolfHSM/src-ja/chapter05.md new file mode 100644 index 00000000..3abc6f61 --- /dev/null +++ b/wolfHSM/src-ja/chapter05.md @@ -0,0 +1,397 @@ +# クライアントライブラリ + +クライアントライブラリAPIは、ユーザーがwolfHSMと対話するための主要な手段です。 +利用可能な関数の完全なリストとその説明については、[APIドキュメント](appendix01.md)をご参照ください。 + +## APIの返り値 + +すべてのクライアントAPI関数は、成功または失敗の種類を示すwolfHSMエラーコードを返します。 +一部の失敗は重大なエラーですが、他の失敗は単にユーザーからのアクションが必要であることを示すものもあります(例:ノンブロッキング操作の場合の`WH_ERROR_NOTREADY`)。 +多くのクライアントAPIは、サーバーエラーコード(場合によっては追加のステータス)もユーザーに伝達します。 +これにより、基礎となるリクエストトランザクションは成功したものの、サーバーが操作を実行できなかった場合にも対応できます。 +例えば、存在しないNVMオブジェクトをサーバーに要求した場合、NVMが満杯時にオブジェクトを追加しようとした場合、またはサーバーが対応するように設定されていない暗号化アルゴリズムを使用しようとした場合などが該当します。 + +エラーコードは`wolfhsm/wh_error.h`で定義しています。詳細については、APIドキュメントをご参照ください。 + +## 分割トランザクション処理 + +ほとんどのクライアントAPIは完全に非同期で、分割トランザクションに分解されています。 +つまり、操作リクエストとレスポンスについて別々の関数があります。 +リクエスト関数はサーバーにリクエストを送信し、ブロックせずに即座に戻ります。 +レスポンス関数は基礎となるトランスポートをポーリングしてレスポンスを確認し、レスポンスが存在する場合は処理を行い、まだ到着していない場合は即座に戻ります。 +これにより、クライアントのCPUサイクルを無駄にすることなく、サーバーに長時間実行される操作をリクエストできます。 +以下に、「echo」メッセージを使用した非同期リクエストとレスポンスの呼び出し例を示します。 + +```c +int rc; + +/* echoリクエストを送信 */ +rc = wh_Client_EchoRequest(&clientCtx, sendLen, &sendBuffer); +if (rc != WH_ERROR_OK) { + /* エラー処理 */ +} + +/* 他の処理を実行... */ + +/* サーバーレスポンスをポーリング */ +while ((rc = wh_Client_EchoResponse(client, &recv_len, recv_buffer)) == WH_ERROR_NOTREADY) { + /* 他の処理を実行するか、または制御を譲る */ +} + +if (rc != WH_ERROR_OK) { + /* エラー処理 */ +} +``` + +## クライアントコンテキスト + +クライアントコンテキスト構造体(`whClientContext`)は、クライアントの実行時状態を保持し、サーバーとの接続のエンドポイントを表します。 +また、クライアントとサーバーのコンテキストは1対1の関係にあります。つまり複数のサーバーと対話するアプリケーションでは、サーバーごとに1つのクライアントコンテキストが必要になります。 +各クライアントAPI関数は、クライアントコンテキストを引数として受け取り、どのサーバー接続に対応する操作かを示します。 +wolfSSLに慣れている方であれば、`WOLFSSL`接続コンテキスト構造体と同様の使い方をするとご認識いただいてよいかもしれません。 + +### クライアントコンテキストの初期化 + +クライアントコンテキストで任意のクライアントAPIを使用する前に、`whClientConfig`設定構造体と`wh_Client_Init()`関数を使用して構造体を設定し、初期化する必要があります。 + +クライアント設定構造体は、サーバー通信のためのコンテキストを設定・初期化するために使用される通信層設定(`whCommClientConfig`)を保持します。 +`whCommClientConfig`構造体は、実際のトランスポート実装(組み込みまたはカスタム)を、クライアントが使用する抽象的な通信インターフェースにバインドします。 + +クライアントを設定する一般的な手順は以下の通りです。 + +1. 目的のトランスポートのためのトランスポート設定構造体、コンテキスト、およびコールバック実装を割り当てて初期化する +2. 通信クライアント設定構造体を割り当て、クライアントが使用できるようにステップ1のトランスポート設定にバインドする +3. ステップ2の通信クライアント設定を使用してクライアント設定構造体を割り当てて初期化する +4. クライアントコンテキスト構造体を割り当てる +5. `wh_Client_Init()`を呼び出してクライアント設定でクライアントを初期化する +6. クライアントAPIを使用してサーバーと接続する + +以下に、組み込みの共有メモリトランスポートを使用するクライアントアプリケーションの設定例を示します。 + +```c +#include /* for memcmp() */ +#include "wolfhsm/client.h" /* クライアントAPI(通信設定を含む) */ +#include "wolfhsm/wh_transport_mem.h" /* トランスポート実装 */ + +/* ステップ1: 共有メモリトランスポート設定の割り当てと初期化 */ +/* 共有メモリトランスポート設定 */ +static whTransportMemConfig transportMemCfg = { /* 共有メモリ設定 */ }; +/* 共有メモリトランスポートコンテキスト(状態) */ +whTransportMemClientContext transportMemClientCtx = {0}; +/* 抽象的な通信トランスポートインターフェースを + * 具体的な実装にバインドするコールバック構造体 */ +whTransportClientCb transportMemClientCb = {WH_TRANSPORT_MEM_CLIENT_CB}; + +/* ステップ2: クライアント通信設定の割り当てとトランスポートへのバインド */ +/* 選択したトランスポート設定を使用するようにクライアント通信を設定 */ +whCommClientConfig commClientCfg[1] = {{ + .transport_cb = transportMemClientCb, + .transport_context = (void*)transportMemClientCtx, + .transport_config = (void*)transportMemCfg, + .client_id = 123, /* 一意のクライアント識別子 */ +}}; + +/* ステップ3: クライアント設定の割り当てと初期化 */ +whClientConfig clientCfg= { + .comm = commClientCfg, +}; + +/* ステップ4: クライアントコンテキストの割り当て */ +whClientContext clientCtx = {0}; + +/* ステップ5: 提供された設定でクライアントを初期化 */ +wh_Client_Init(&clientCtx, &clientCfg); +``` + +これでクライアントコンテキストが初期化され、作業を実行するためにクライアントライブラリAPI関数で使用できるようになりました。 +引き続き、サーバーにechoリクエストを送信してみます。 + +```c +/* ステップ6: クライアントAPIを使用してサーバーと対話 */ + +/* 送受信データを保持するバッファ */ +char recvBuffer[WH_COMM_DATA_LEN] = {0}; +char sendBuffer[WH_COMM_DATA_LEN] = {0}; + +uint16_t sendLen = snprintf(&sendBuffer, + sizeof(sendBuffer), + "Hello World!\n"); +uint16_t recvLen = 0; + +/* echoリクエストを送信し、レスポンスを受信するまでブロック */ +wh_Client_Echo(client, sendLen, &sendBuffer, &recvLen, &recvBuffer); + +if ((recvLen != sendLen ) || + (0 != memcmp(sendBuffer, recvBuffer, sendLen))) { + /* エラー:送信したものと同じものが返ってこなかった */ +} +``` + +設定と構造体の組み合わせが少々複雑だと感じるかもしれません。 +しかし、これによりクライアントコードを変更することなく、異なるトランスポート実装に簡単に入れ替えられるようにしています。 +例えば、共有メモリトランスポートからTCPトランスポートに切り替える場合、トランスポート設定とコールバック構造体を変更するだけで済み、クライアントコードの残りの部分(上記の手順2以降のすべて)は同じままです。 + +```c +#include /* for memcmp() */ +#include "wolfhsm/client.h" /* クライアントAPI(通信設定を含む) */ +#include "port/posix_transport_tcp.h" /* トランスポート実装 */ + +/* ステップ1: POSIX TCPトランスポート設定の割り当てと初期化 */ +/* クライアント設定/コンテキスト */ +whTransportClientCb posixTransportTcpCb = {PTT_CLIENT_CB}; +posixTransportTcpClientContext posixTranportTcpCtx = {0}; +posixTransportTcpConfig posixTransportTcpCfg = { + /* IPとポートの設定 */ +}; + +/* ステップ2: クライアント通信設定の割り当てとトランスポートへのバインド */ +/* 選択したトランスポート設定を使用するようにクライアント通信を設定 */ +whCommClientConfig commClientCfg = {{ + .transport_cb = posixTransportTcpCb, + .transport_context = (void*)posixTransportTcpCtx, + .transport_config = (void*)posixTransportTcpCfg, + .client_id = 123, /* 一意のクライアント識別子 */ +}}; + +/* 以降のステップは同じ... */ +``` + +ステップ6のechoリクエストはあくまでも単純な使用例です。 +サーバーとの接続が設定されれば、任意のクライアントAPIを使用できます。 + +## 不揮発性メモリ操作 + +このセクションでは、クライアントNVM APIの使用方法の例を示します。 +分割トランザクションAPIも同様に使用できますが、簡単のためにブロッキングAPIを使用します。 + +クライアントがサーバーのNVMストレージを使用するには、まず初期化リクエストをサーバーに送信します。 +現時点では、これによってサーバー側で何らかのアクションが実行されることはありません。 +しかし将来的にはここに実装を加える可能性があるため、クライアントアプリケーションに初期化リクエストを含めることを推奨します。 + +```c +int rc; +int serverRc; +uint32_t clientId; /* 現時点では未使用 */ +uint32_t serverId; + +rc = wh_Client_NvmInit(&clientCtx, &serverRc, &clientId, &serverId); + +/* ローカルとリモートの両方のエラーコードをチェック */ +/* serverIdにはサーバーの一意のIDが格納される */ +``` + +初期化が完了すると、クライアントは`NvmAddObject`関数を使用してオブジェクトを作成し追加できます。 +すべてのオブジェクトに対してメタデータエントリを作成する必要があることに注意してください。 + +```c +int serverRc; + +whNvmId id = 123; +whNvmAccess access = WOLFHSM_NVM_ACCESS_ANY; +whNvmFlags flags = WOLFHSM_NVM_FLAGS_ANY; +uint8_t label[] = “My Label”; + +uint8_t myData[] = “This is my data.” + +whClient_NvmAddObject(&clientCtx, id, access, flags, strlen(label), &label, sizeof(myData), &myData, &serverRc); +``` + +既存のオブジェクトに対応するデータは、その場で更新できます。 + +```c +byte myUpdate[] = “This is my update.” + +whClient_NvmAddObject(&clientCtx, &myMeta, sizeof(myUpdate), myUpdate); +``` + +トランスポート経由でコピーして送信すべきでないオブジェクトについては、`NvmAddObject`関数のDMAバージョンを使用できます。 +これらは値ではなく参照によってデータをサーバーに渡すため、サーバーが直接メモリ内のデータにアクセスできます。 +ただし、サーバーがクライアントのアドレスにアクセスする前に、プラットフォームがカスタムのアドレス変換またはキャッシュ無効化を必要とする場合は、[DMAコールバック](./chapter07#DMA-Callbacks)を実装する必要があることにご注意ください。 + +```c +whNvmMetadata myMeta = { + .id = 123, + .access = WOLFHSM_NVM_ACCESS_ANY, + .flags = WOLFHSM_NVM_FLAGS_ANY, + .label = “My Label” +}; + + +uint8_t myData[] = “This is my data.” + +wh_Client_NvmAddObjectDma(client, &myMeta, sizeof(myData), &myData), &serverRc); +``` + +NVMオブジェクトのデータは`NvmRead`関数を使用して読み取ることができます。 +また、`AddObjectDma`に対応する`NvmRead`関数のDMAバージョンも存在し、同様に使用できます。 + +```c +const whNvmId myId = 123; /* 読み取りたいオブジェクトのID */ +const whNvmSize offset = 0; /* オブジェクトデータへのバイトオフセット */ + +whNvmSize outLen; /* リクエストされたデータのバイト長が格納される */ +int outRc; /* サーバーのリターンコードが格納される */ + +byte myBuffer[BIG_SIZE]; + +whClient_NvmRead(&clientCtx, myId, offset, sizeof(myData), &serverRc, outLen, &myBuffer) +/* または DMA経由で */ +whClient_NvmReadDma(&clientCtx, myid, offset, sizeof(myData), &myBuffer, &serverRc); +``` + +オブジェクトは`NvmDestroy`関数を使用して削除/破棄できます。 +これらの関数は、削除するオブジェクトIDのリスト(配列)を引数に取ります。 +リスト内のIDがNVMに存在しない場合でもエラーは発生しません。 + +```c +whNvmId idList[] = {123, 456}; +whNvmSize count = sizeof(myIds)/ sizeof(myIds[0]); +int serverRc; + +wh_Client_NvmDestroyObjectsRequest(&clientCtx, count, &idList); +wh_Client_NvmDestroyObjectsResponse(&clientCtx, &serverRc); +``` + +NVM内のオブジェクトは、`NvmList`関数を使用して列挙できます。 +この関数は、`start_id`から始まるNVMリスト内の次にマッチするIDを取得し、`access`と`flags`にマッチするIDの総数を`out_count`に設定します。 + +```c +int wh_Client_NvmList(whClientContext* c, + whNvmAccess access, whNvmFlags flags, whNvmId start_id, + int32_t *out_rc, whNvmId *out_count, whNvmId *out_id); +``` + +すべてのNVM API関数の詳細な説明については、[APIドキュメント](./appendix01.md)をご参照ください。 + +## 鍵管理 + +wolfCryptで使用することを意図した鍵は、以下のAPIを使用してHSMのキーストアにロードし、必要に応じてNVMに保存できます。 + +```c +#include "wolfhsm/wh_client.h" + +uint16_t keyId = WOLFHSM_KEYID_ERASED; +uint32_t keyLen; +byte key[AES_128_KEY_SIZE] = { /* AES鍵 */ }; +byte label[WOLFHSM_NVM_LABEL_LEN] = { /* 鍵ラベル */ }; + +whClientContext clientCtx; +whClientCfg clientCfg = { /* 設定 */ }; + +wh_Client_Init(&clientCtx, &clientCfg); + +wh_Client_KeyCache(clientCtx, 0, label, sizeof(label), key, sizeof(key), &keyId); +wh_Client_KeyCommit(clientCtx, keyId); +wh_Client_KeyEvict(clientCtx, keyId); +keyLen = sizeof(key); +wh_Client_KeyExport(clientCtx, keyId, label, sizeof(label), key, &keyLen); +wh_Client_KeyErase(clientCtx, keyId); +``` + +`wh_Client_KeyCache`は、鍵とラベルをHSMのRAMキャッシュに格納し、渡された`keyId`と関連付けます。 +`WOLFHSM_KEYID_ERASED`を`keyId`として使用すると、wolfHSMは新しい一意の`keyId`を割り当て、keyIdパラメータを通じて返します。 +wolfHSMのキャッシュスロットの数は`WOLFHSM_NUM_RAMKEYS`で設定された数に制限されており、すべての鍵スロットが満杯の場合は`WH_ERROR_NOSPACE`を返します。 +キャッシュとNVMの両方に存在する鍵は、NVMにバックアップされているため、より多くの鍵のためのスペースを確保するためにキャッシュから削除されます。 + +`wh_Client_KeyCommit`は、キャッシュされた鍵をkeyIdで指定されたキーとしてNVMに保存します。 + +`wh_Client_KeyEvict`は、鍵をキャッシュから削除しますが、コミットされている場合はNVMには残します。 + +`wh_Client_KeyExport`は、鍵の内容をHSMからクライアントに読み出します。 + +`wh_Client_KeyErase`は、指定された鍵をキャッシュから削除し、NVMからも消去します。 + +## 暗号操作 + +クライアントアプリケーションでwolfCryptを使用する場合、`devId`引数として`WOLFHSM_DEV_ID`を渡すことで、互換性のある暗号化操作をwolfHSMサーバーで実行できます。 +ただし、wolfHSMのリモート暗号化を使用する前に、wolfHSMクライアントを初期化する必要があります。 + +wolfHSMがそのアルゴリズムをまだサポートしていない場合、API呼び出しは`CRYPTOCB_UNAVAILABLE`を返します。 +wolfHSMがリモートHSM実行でサポートしているアルゴリズムの完全なリストについては、[サポートされているwolfCryptアルゴリズム(後日提供予定)](todo)をご参照ください。 + +以下に、クライアントアプリケーションがwolfHSMサーバーで`AES CBC`暗号化操作を実行する例を示します。 + +```c +#include "wolfhsm/client.h" +#include "wolfssl/wolfcrypt/aes.h" + +whClientContext clientCtx; +whClientCfg clientCfg = { /* 設定 */ }; + +wh_Client_Init(&clientCtx, &clientCfg); + +Aes aes; +byte key[AES_128_KEY_SIZE] = { /* AES鍵 */ }; +byte iv[AES_BLOCK_SIZE] = { /* AES IV */ }; + +byte plainText[AES_BLOCK_SIZE] = { /* 平文 */ }; +byte cipherText[AES_BLOCK_SIZE]; + +wc_AesInit(&aes, NULL, WOLFHSM_DEV_ID); + +wc_AesSetKey(&aes, &key, AES_BLOCK_SIZE, &iv, AES_ENCRYPTION); + +wc_AesCbcEncrypt(&aes, &cipherText, &plainText, sizeof(plainText)); + +wc_AesFree(&aes); +``` + +クライアント所有の鍵の代わりにHSM所有の鍵(例:HSMハードウェアキー)を使用する必要がある場合、 +`wh_Client_SetKeyAes`(または他の暗号化アルゴリズム用の同様の関数)などのクライアントAPI関数を使用します。 +これにより、指定されたHSMキーを後続の暗号化操作に使用するようwolfHSMに指示できます。 + +```c +#include "wolfhsm/client.h" +#include "wolfssl/wolfcrypt/aes.h" + +whClientContext clientCtx; +whClientCfg clientCfg = { /* 設定 */ }; + +wh_Client_Init(&clientCtx, &clientCfg); + +uint16_t keyId; +Aes aes; +byte key[AES_128_KEY_SIZE] = { /* AES鍵 */ }; +byte label[WOLFHSM_NVM_LABEL_LEN] = { /* 鍵ラベル */ }; +byte iv[AES_BLOCK_SIZE] = { /* AES IV */ }; + +byte plainText[AES_BLOCK_SIZE] = { /* 平文 */ }; +byte cipherText[AES_BLOCK_SIZE]; + +wc_AesInit(&aes, NULL, WOLFHSM_DEV_ID); + +/* IVは鍵と別に設定する必要がある */ +wc_AesSetIV(&aes, iv); + +/* この鍵は使用前の任意のタイミングでキャッシュできます。ここでは例として示しています */ +wh_Client_KeyCache(clientCtx, 0, label, sizeof(label), key, sizeof(key), &keyId); + +wh_Client_SetKeyAes(&aes, keyId); + +wc_AesCbcEncrypt(&aes, &cipherText, &plainText, sizeof(plainText)); + +/* 鍵の削除は任意です。鍵はキャッシュまたはNVMに保存され、wolfCryptで使用できます */ +wh_Client_KeyEvict(clientCtx, keyId); + +wc_AesFree(&aes); +``` + +暗号化をクライアントのローカルで実行したい場合は、`wc_AesInit()`に`INVALID_DEVID`を渡します。 + +```c +wc_AesInit(&aes, NULL, INVALID_DEVID); +``` + +より詳しい使用方法の説明やサポートされている暗号化アルゴリズムの詳細なリストをお求めでしたら、[wolfSSLマニュアル](https://www.wolfssl.com/documentation/manuals/jp/wolfssl/)内のwolfCrypt APIリファレンスをご参照ください。 + +### CMAC + +キャッシュされた鍵を使用するCMAC操作の場合、CMACハッシュと検証操作を1回の関数呼び出しで実行するための、wolfHSM固有の別の関数を呼び出す必要があります。 +関数が呼び出されたときにクライアントが鍵を提供できる場合は、通常の`wc_AesCmacGenerate_ex`と`wc_AesCmacVerify_ex`を使用できます。 +しかし、事前にキャッシュされたキーを使用するためには、`wh_Client_AesCmacGenerate`と`wh_Client_AesCmacVerify`を使用する必要があります。 +ワンショットではない関数の`wc_InitCmac_ex`、`wc_CmacUpdate`、`wc_CmacFinal`は、クライアント側の鍵・事前にキャッシュされた鍵のどちらでも使用できます。 +これらの関数でキャッシュされたキーを使用するには、呼び出し元は`NULL`キーパラメータを渡し、`wh_Client_SetKeyCmac`を使用して適切なkeyIdを設定する必要があります。 + +## AUTOSAR SHE API + +(本章は後日提供予定です。) diff --git a/wolfHSM/src-ja/chapter06.md b/wolfHSM/src-ja/chapter06.md new file mode 100644 index 00000000..b16a8095 --- /dev/null +++ b/wolfHSM/src-ja/chapter06.md @@ -0,0 +1,25 @@ +# サーバライブラリ + +wolfHSMサーバーライブラリは、暗号ライブラリwolfCryptのサーバー側実装です。 +アプリケーションが暗号化操作を専用サーバーにオフロードするためのインターフェイスを提供します。専用サーバーでは wolfHSMサーバーソフトウェアを実行します。これにより、アプリケーションは暗号化キーを管理したり、ローカルで操作を実行したりすることなく、暗号化操作を実行できます。 + +## ことはじめ + +(本章は後日提供予定です。) + +## 内部構造 + +(本章は後日提供予定です。) + +## APIリファレンス + +(本章は後日提供予定です。) + +## 鍵管理 + +(本章は後日提供予定です。) + +## 暗号 + +wolfHSMはすべての暗号操作にwolfCryptを使用します。つまり、wolfHSMはwolfCyptでサポートされている任意のアルゴリズムをオフロードし、wolfHSMサーバーで実行できます。これには、中国政府が義務付けたShāngMì暗号(SM2、SM3、SM4)や、Kyber、LMS、XMSS などの耐量子暗号アルゴリズムも含まれます。 + diff --git a/wolfHSM/src-ja/chapter07.md b/wolfHSM/src-ja/chapter07.md new file mode 100644 index 00000000..9e761406 --- /dev/null +++ b/wolfHSM/src-ja/chapter07.md @@ -0,0 +1,463 @@ +# カスタマイズ + +wolfHSMは、ビルド時のオプションやユーザー定義のコールバックを通じて複数のカスタマイズポイントを提供しています。 +これにより、コアライブラリのコードを変更することなく、幅広いユースケースや環境に合わせて調整できます。 +本章では、wolfHSMで利用可能なカスタマイズオプションの概要を説明します。内容は以下の通りです。 + +- ライブラリ設定: ライブラリの特定の機能を有効化または無効化するためのコンパイル時オプション +- DMAコールバック: クライアントのメモリに直接アクセスする前後で操作を実行するために、サーバーに登録できるカスタムコールバック +- DMAアドレス許可リスト: クライアントのアクセスを特定のメモリ領域に制限するためのサーバーの仕組み +- カスタムコールバック: デフォルトのHSM機能では対応していない特定の操作を実行するために、サーバーに登録してクライアントから呼び出すことができるカスタムコールバック + +## ライブラリ設定 + +wolfHSMライブラリには、コンパイル時の定義を通じてオン/オフを切り替えることができる多くのビルドオプションがあります。 +これらの設定マクロは、`wh_config.h`という名前の設定ヘッダーファイルで定義されることを想定しています。 +このファイルはwolfHSMを使用するアプリケーションによって定義され、コンパイラのインクルードパスのディレクトリ内に配置される必要があります。 + +サンプルの`wh_config.h`は動作確認済みの設定として、すべてのwolfHSMポートに同梱しています。 + +`wh_config.h`で定義可能なwolfHSMの設定項目の完全なリストについては、[APIドキュメント](appendix01.md)をご参照ください。 + +## DMAコールバック + +wolfHSMのダイレクトメモリアクセス(DMA)コールバック機能は、クライアントのメモリに直接アクセスする前後でカスタム操作を行うためのフックをサーバー側に提供します。 +これは新しい共有メモリアーキテクチャへの移植を行う際によく必要とされます。この機能は特に、クライアントとサーバーのメモリ間の一貫性を確保するために、キャッシュの無効化やアドレス変換、その他のカスタムメモリ操作などの特定のアクションをサーバーが実行する必要がある場合に有用です。 + +コールバックは`wh_Server_DmaRegisterCb32()`および`wh_Server_DmaRegisterCb64()`関数を使用してサーバーに登録できます。 +これによって提供されたコールバックは、サーバーコンテキストのすべてのDMA操作にバインドされます。 + +32ビットと64ビットのアドレスを処理するための別々のコールバック関数が必要で、これらはそれぞれ32ビットと64ビットのクライアントDMA API関数に対応します。 +コールバック関数は`whServerDmaClientMem32Cb`および`whServerDmaClientMem64Cb`型で、以下のように定義しています。 + +```c +typedef int (*whServerDmaClientMem32Cb)(struct whServerContext_t* server, + uint32_t clientAddr, void** serverPtr, + uint32_t len, whServerDmaOper oper, + whServerDmaFlags flags); +typedef int (*whServerDmaClientMem64Cb)(struct whServerContext_t* server, + uint64_t clientAddr, void** serverPtr, + uint64_t len, whServerDmaOper oper, + whServerDmaFlags flags); +``` + +DMAコールバック関数は以下の引数を受け取ります: + +- `server`: サーバーコンテキストへのポインタ +- `clientAddr`: アクセスされるクライアントのメモリアドレス +- `serverPtr`: サーバーのメモリアドレス(これもポインタ)へのポインタ。コールバックは必要な変換/再マッピングを適用した後にこれを設定します。 +- `len`: 要求されたメモリ操作のバイト単位の長さ +- `oper`: 変換されたサーバーアドレスに対して実行されようとしているメモリ操作(注入ポイントについては次のセクションで説明)の種類 +- `flags`: メモリ操作の追加フラグ。将来的に使用することを見越して確保している領域です。 + +コールバックは成功時に`WH_ERROR_OK`を、エラーが発生した場合はエラーコードを返す必要があります。 +コールバックが失敗した場合、サーバーはエラーコードをクライアントに伝達させます。 + +### コールバックの位置 + +DMAコールバックは、サーバーのメモリアクセスの周りの4つの異なるポイントで行われます: + +- 読み取り前: クライアントメモリからデータを読み取る前にコールバックが呼び出されます。サーバーはコールバックを使用して、アドレス変換やキャッシュの無効化など、必要な読み取り前の操作を実行する必要があります。 +- 読み取り後: クライアントメモリからデータを読み取った後にコールバックが呼び出されます。サーバーはコールバックを使用して、キャッシュの同期など、必要な読み取り後の操作を実行する必要があります。 +- 書き込み前: クライアントメモリにデータを書き込む前にコールバックが呼び出されます。サーバーはコールバックを使用して、アドレス変換やキャッシュの無効化など、必要な書き込み前の操作を実行する必要があります。 +- 書き込み後: クライアントメモリにデータを書き込んだ後にコールバックが呼び出されます。サーバーはコールバックを使用して、キャッシュの同期など、必要な書き込み後の操作を実行する必要があります。 + +コールバックが呼び出されるポイントは、`oper`引数を通じてコールバックに渡されます。 +具体的には、以下のいずれかの値です。 + +```c +typedef enum { + WH_SERVER_DMA_OPER_PRE_READ, /* 読み取り前の操作 */ + WH_SERVER_DMA_OPER_POST_READ, /* 読み取り後の操作 */ + WH_SERVER_DMA_OPER_PRE_WRITE, /* 書き込み前の操作 */ + WH_SERVER_DMA_OPER_POST_WRITE /* 書き込み後の操作 */ +} whServerDmaOper; +``` + +これにより、コールバックは`oper`の値で`switch`文を使用し、実行されるメモリ操作の種類に基づいてカスタムロジックを実行できます。 +以下にDMAコールバックの実装例を示します。 + +```c +#include "wolfhsm/wh_server.h" +#include "wolfhsm/wh_error.h" + +/* 32ビットクライアントアドレス用のDMAコールバック実装例 */ +int myDmaCallback32(whServerContext* server, uint32_t clientAddr, + void** xformedCliAddr, uint32_t len, + whServerDmaOper oper, whServerDmaFlags flags) +{ + /* 必要に応じてクライアントアドレスをサーバーのアドレス空間に変換、例:memmap() */ + *xformedCliAddr = (void*)clientAddr; /* 変換を実行 */ + + switch (oper) { + case WH_DMA_OPER_CLIENT_READ_PRE: + /* 読み取り前の操作をここに記述、例:キャッシュの無効化 */ + break; + case WH_DMA_OPER_CLIENT_READ_POST: + /* 読み取り後の操作をここに記述 */ + break; + case WH_DMA_OPER_CLIENT_WRITE_PRE: + /* 書き込み前の操作をここに記述 */ + break; + case WH_DMA_OPER_CLIENT_WRITE_POST: + /* 書き込み後の操作をここに記述、例:キャッシュのフラッシュ */ + break; + default: + return WH_ERROR_BADARGS; + } + + return WH_ERROR_OK; +} +``` + +### コールバックの登録 + +コールバックは、いつでもサーバーコンテキストに登録できます。 +初期化時にはサーバー設定構造体を通じて、初期化後にはコールバック登録関数を使用して実施します。 + +初期化時にコールバックを登録するには、コールバック関数をサーバー設定構造体内のDMA設定構造体に含める必要があります。 +なお、コールバック関数の設定は任意であり、使用しないコールバックは`NULL`と設定できます。 + +```c +#include "wolfhsm/wh_server.h" + +/* DMA32コールバックを持つサーバー設定構造体の初期化とサーバーの初期化の例 */ +int main(void) +{ + whServerDmaConfig dmaCfg = {0}; + dmaCfg.dma32Cb = myDmaCallback32; + + + whServerConfig serverCfg = { + .dmaCfg = dmaCfg, + + /* 簡潔にするため、その他の設定は省略 */ + }; + + whServerContext serverCtx; + + wh_Server_Init(&serverCtx, &serverCfg); + + /* サーバーアプリケーションのロジック */ +} +``` + +初期化後にコールバックを登録する際は、以下のように関数を呼び出します。 + +```c +#include "wolfhsm/wh_server.h" + +int main(void) +{ + whServerConfig serverCfg = { /* サーバーの設定 */ }; + + whServerContext serverCtx; + + wh_Server_Init(&serverCtx, &serverCfg); + + /* 上で定義したコールバックを登録 */ + wh_Server_DmaRegisterCb32(&serverCtx, myDmaCallback32); + + /* サーバーアプリケーションのロジック */ +} +``` + +## DMAアドレス許可リスト + +wolfHSMは、クライアントのDMAアドレスに対する「許可リスト」も公開しています。 +これにより、クライアントによるアクセスを事前に設定した特定のメモリ領域に制限できます。 +この機能は、サーバーが不正なアクセスを拒否するため、あるいはクライアントが安全にアクセスできるメモリにのみアクセスできるようにするために有用です。 +例えば、複数のコアでそれぞれクライアントが実行されるマルチコアシステムでは、クライアントは他のクライアントのメモリ領域にアクセスできないようにすべきであり、暗号化キーなどの機密情報を含む可能性のあるサーバーメモリを読み出すこともできないようにすべきです。 + +ただしこの許可リスト機能は、デバイス固有のメモリ保護メカニズムの上に第二層の保護として機能することを意図しています。 +よって、不正なメモリアクセスを防ぐ第一の防衛線とは考えるべきではありません。 +ユーザーはアプリケーションを厳密に分離し、HSMコアと関連メモリをシステムの残りの部分から分離するために必要な、デバイス固有のメモリ保護メカニズムを設定することが不可欠です。 + +### 許可リストへの登録 + +DMAコールバックと同様に、いつでもサーバーコンテキストに登録できます。 + +初期化時にリストを登録するには、サーバー設定構造体内のDMA設定構造体にリストを設定する必要があります。 + +```c +#include "wolfhsm/wh_server.h" +#include "wolfhsm/wh_error.h" + +/* 許可されるメモリ領域を定義 */ +const whServerDmaAddrAllowList allowList = { + .readList = { + {(void*)0x20001000, 0x100}, /* 0x20001000から0x200010FFまでの読み取りを許可 */ + {(void*)0x20002000, 0x200}, /* 0x20002000から0x200021FFまでの読み取りを許可 */ + }, + .writeList = { + {(void*)0x20003000, 0x100}, /* 0x20003000から0x200030FFまでの書き込みを許可 */ + {(void*)0x20004000, 0x200}, /* 0x20004000から0x200041FFまでの書き込みを許可 */ + }, +}; + +int main() +{ + whServerConfig config; + + + whServerDmaConfig dmaCfg = {0}; + dmaCfg.allowList = &allowList; + + whServerConfig serverCfg = { + .dmaCfg = dmaCfg, + /* 簡潔にするため、その他の設定は省略 */ + }; + + whServerContext server; + + wh_Server_Init(&server, &config); + + /* これでサーバーは許可リストで設定されました */ + /* その他のサーバー操作を実行 */ + + /* 許可リストは、サーバー設定構造体にリストが存在しない場合、 + * 初期化後に以下を使用して登録することもできます。 + * + * wh_Server_DmaRegisterAllowList(&server, &allowList); + */ +} +``` + +登録後、クライアントからサーバーに要求されるすべてのDMA操作は、許可リストと照合してチェックされます。 +クライアントが許可リストにないメモリ領域にアクセスしようとすると、サーバーはクライアントにエラーを返し、その操作は実行されません。 + +## カスタムコールバック + +wolfHSMのカスタムコールバック機能により、開発者はサーバー上にカスタムコールバック関数を登録することで、ライブラリの機能を拡張できます。 +これらのコールバックは、HSMが対応していない特定の操作を実行するために、クライアントから呼び出すことができます。 +例えば、周辺ハードウェアの有効化や無効化、カスタムの監視や認証ルーチンの実装、追加コアのセキュアブートのステージングなどです。 + +### サーバー側 + +サーバーは、特定の操作を定義するカスタムコールバック関数を登録できます。これらの関数は`whServerCustomCb`型である必要があります。 + +```c +/* wh_server.h */ + +/* サーバーのカスタムコールバックの型定義 */ +typedef int (*whServerCustomCb)( + whServerContext* server, /* 送信元のサーバーコンテキストを指すポインタ */ + const whMessageCustomCb_Request* req, /* クライアントからコールバックへのリクエスト */ + whMessageCustomCb_Response* resp /* コールバックからクライアントへのレスポンス */ +); +``` + +サーバーのカスタムコールバック関数は、サーバーのカスタムコールバックディスパッチテーブルのインデックスに対応する一意の識別子(ID)に関連付けられます。 +クライアントは呼び出しを要求する際に、このIDでコールバックを参照します。 + +カスタムコールバックは、コールバック関数に渡される`whMessageCustomCb_Request`引数を通じて、値またはポインタ参照(共有メモリシステムで有用)によってクライアントから渡されたデータにアクセスできます。 +コールバックは入力データに基づいて処理を行い、`whMessageCustomCb_Response`引数を通じてクライアントに返される出力データを生成できます。 +入力/出力クライアントデータの送受信はwolfHSMによって外部で処理されるため、カスタムコールバックでこれらを処理する必要はありません。 +レスポンス構造体には、クライアントに伝播させるためのエラーコードとリターンコードのフィールドも含まれています。 +エラーコードはコールバックによって設定され、リターンコードはカスタムコールバックからの戻り値に設定されます。 + +### クライアント側 + +クライアントは、これらのカスタムコールバックを呼び出すためのリクエストをサーバーに送信できます。 +APIは、クライアントAPIの他の関数と同様のリクエスト関数とレスポンス関数を提供します。 +クライアントはカスタムリクエスト構造体のインスタンスを宣言し、カスタムデータを設定し、`wh_Client_CustomCbRequest()`を使用してサーバーに送信する必要があります。 +サーバーのレスポンスは`wh_Client_CustomCbResponse()`を使用してポーリングすることができ、正常に受信された場合、レスポンスデータは出力の`whMessageCustomCb_Response()`に格納されます。 + +クライアントは`wh_Client_CustomCheckRegistered()`系の関数を使用して、特定のコールバックIDの登録状態を確認することもできます。 +この関数は、指定されたコールバックIDがサーバーの内部コールバックテーブルに登録されているかどうかをサーバーに問い合わせます。 +サーバーは登録状態を示すtrueまたはfalseで応答します。 + +### カスタムメッセージ + +クライアントは、カスタムリクエストおよびレスポンスメッセージ構造体を通じて、カスタムコールバックにデータを渡したり、データを受け取ったりできます。 +これらのカスタムリクエストおよびレスポンスメッセージは、一意のID、タイプ指示子、およびデータペイロードを含むように構成されています。 +IDはサーバーのコールバックテーブルのインデックスに対応します。タイプフィールドは、データペイロードをどのように解釈すべきかをカスタムコールバックに示します。 +データペイロードは固定サイズのデータバッファで、クライアントは任意の方法で使用できます。レスポンス構造体には、上述のエラーコード値が追加されています。 + +```c +/* カスタムサーバーコールバックへのリクエストメッセージ */ +typedef struct { + uint32_t id; /* 登録されたコールバックの識別子 */ + uint32_t type; /* whMessageCustomCb_Type */ + whMessageCustomCb_Data data; +} whMessageCustomCb_Request; + +/* カスタムサーバーコールバックからのレスポンスメッセージ */ +typedef struct { + uint32_t id; /* 登録されたコールバックの識別子 */ + uint32_t type; /* whMessageCustomCb_Type */ + int32_t rc; /* カスタムコールバックからの戻り値。errが0でない場合は無効 */ + int32_t err; /* wolfHSM固有のエラー。errが0でない場合、rcは無効 */ + whMessageCustomCb_Data data; +} whMessageCustomCb_Response; +``` + +### カスタムデータ側の定義 + +カスタムデータ型は`whMessageCustomCb_Data`共用体を使用して定義することができます。 +この共用体には一般的なデータ型(例:dma32、dma64)用の便利な定義済み構造体と、ユーザー定義のスキーマ用の生データバッファ(buffer)が用意されています。 +クライアントはリクエストの`type`フィールドを通じて、サーバーコールバックがユニオン内のデータをどのように解釈すべきかを指示できます。 +wolfHSMは最初の数個のタイプインデックスを内部使用のために予約し、残りのタイプ値はカスタムクライアントタイプで使用可能です。 + +### カスタムコールバックの例 + +ここでは、組み込みのDMAスタイルのアドレス指定タイプを使用する1つのリクエストと、カスタムユーザー定義タイプを使用する2つのリクエストの、合計3種類のクライアントリクエストを処理できるカスタムコールバックを実装します。 + +まず、クライアントとサーバー間で共有される共通のメッセージを定義します。 + +```c +/* my_custom_cb.h */ + +#include "wolfhsm/wh_message_customcb.h" + +#define MY_CUSTOM_CB_ID 0 + +enum { + MY_TYPE_A = WH_MESSAGE_CUSTOM_CB_TYPE_USER_DEFINED_START, + MY_TYPE_B, +} myUserDefinedTypes; + +typedef struct { + int foo; + int bar; +} myCustomCbDataA; + +typedef struct { + int noo; + int baz; +} myCustomCbDataB; +``` + +サーバー側では、リクエストを処理する前に、コールバックを定義し、サーバーコンテキストに登録する必要があります。 +なお、コールバックの登録は必ずしも最初のリクエストの処理前である必要はありません。いつでも行うことができます。 + +```c +#include "wolfhsm/wh_server.h" +#include "my_custom_cb.h" + +int doWorkOnClientAddr(uint8_t* addr, uint32_t size) { + /* タスクを実行 */ +} + +int doWorkWithTypeA(myCustomTypeA* typeA) { + /* タスクを実行 */ +} + +int doWorkWithTypeB(myCustomTypeB* typeB) { + /* タスクを実行 */ +} + +static int customServerCb(whServerContext* server, + const whMessageCustomCb_Request* req, + whMessageCustomCb_Response* resp) +{ + int rc; + + resp->err = WH_ERROR_OK; + + /* DMAリクエストを検出して処理 */ + if (req->type == WH_MESSAGE_CUSTOM_CB_TYPE_DMA32) { + uint8_t* clientPtr = (uint8_t*)((uintptr_t)req->data.dma32.client_addr); + size_t clientSz = req->data.dma32.client_sz; + + if (clientPtr == NULL) { + resp->err = WH_ERROR_BADARGS; + } + else { + rc = doWorkOnClientAddr(clientPtr, clientSz); + } + } + else if (req->type == MY_TYPE_A) { + myCustomCbDataA *data = (myCustomCbDataA*)((uintptr_t)req->data.data); + rc = doWorkWithTypeA(data); + /* 必要に応じてエラーコードを設定 */ + if (/* エラー条件 */) { + resp->err = WH_ERROR_ABORTED; + } + } + else if (req->type == MY_TYPE_B) { + myCustomCbDataB *data = (myCustomCbDataB)((uintptr_t)req->data.data); + rc = doWorkWithTypeB(data); + /* 必要に応じてエラーコードを設定 */ + if (/* エラー条件 */) { + resp->err = WH_ERROR_ABORTED; + } + } + + return rc; +} + + +int main(void) { + + whServerContext serverCtx; + + whServerConfig serverCfg = { + /* サーバーの設定 */ + }; + + wh_Server_Init(&serverCtx, &serverCfg); + + wh_Server_RegisterCustomCb(&serverCtx, MY_CUSTOM_CB_ID, customServerCb)); + + /* サーバーリクエストを処理(簡略化) */ + while (1) { + wh_Server_HandleRequestMessage(&serverCtx); + } + +} +``` + +これで、クライアントはカスタムコールバックの登録を確認し、リモートで呼び出すことができるようになりました。 + +```c +#include "wh_client.h" +#include "my_custom_cb.h" + +whClientContext clientCtx; +whClientConfig clientCfg = { + /* クライアントの設定 */ +}; + +whClient_Init(&clientCtx, &clientCfg); + +bool isRegistered = wh_Client_CustomCheckRegistered(&client, MY_CUSTOM_CB_ID); + +if (isRegistered) { + uint8_t buffer[LARGE_SIZE] = {/* データ */}; + myCustomCbDataA typeA = {/* データ */}; + myCustomCbDataB typeB = {/* データ */}; + + whMessageCustomCb_Request req = {0}; + whMessageCustomCb_Request resp = {0}; + + /* 組み込みDMAタイプでカスタムリクエストを送信 */ + req.id = MY_CUSTOM_CB_ID; + req.type = WH_MESSAGE_CUSTOM_CB_TYPE_DMA32; + req.data.dma32.client_addr = (uint32_t)((uintptr_t)&data); + req.data.dma32.client_sz = sizeof(data); + wh_Client_CustomCbRequest(clientCtx, &req); + wh_Client_CustomCbResponse(clientCtx, &resp); + /* レスポンスを使用した処理を実行 */ + + /* ユーザー定義タイプでカスタムリクエストを送信 */ + memset(req, 0, sizeof(req)); + req.id = MY_CUSTOM_CB_ID; + req.type = MY_TYPE_A; + memcpy(&req.data.data, typeA, sizeof(typeA)); + wh_Client_CustomCbRequest(clientCtx, &req); + wh_Client_CustomCbResponse(clientCtx, &resp); + /* レスポンスを使用した処理を実行 */ + + /* 別のユーザー定義タイプでカスタムリクエストを送信 */ + memset(req, 0, sizeof(req)); + req.id = MY_CUSTOM_CB_ID; + req.type = MY_TYPE_B; + memcpy(&req.data.data, typeA, sizeof(typeB)); + wh_Client_CustomCbRequest(clientCtx, &req); + wh_Client_CustomCbResponse(clientCtx, &resp); + /* レスポンスを使用した処理を実行 */ +} + +``` + diff --git a/wolfHSM/src-ja/chapter08.md b/wolfHSM/src-ja/chapter08.md new file mode 100644 index 00000000..2eee77fb --- /dev/null +++ b/wolfHSM/src-ja/chapter08.md @@ -0,0 +1,85 @@ +# ポーティング + +このセクションでは、wolfHSMのポーティングに関連する資料と情報を提供することを目的としています。 +次の内容についてご説明いたします。 + +- 概要 +- 対応状況 +- ポーティングインタフェース + +## 概要 + +wolfHSM自体には特定のハードウェアと対話するためのコードは含まれておらず、単体では実行できません。 wolfHSMをデバイスで実行するには、サーバ アプリケーションがクライアントと通信して実行できるように、必要なハードウェアドライバーと抽象化レイヤーを使用してライブラリを構成する必要があります。具体的には、次の要素が必要です。 + +- サーバーアプリケーションの起動とハードウェアの初期化 +- サーバーにおけるwolfCrypt構成 +- サーバーの不揮発性メモリ構成 +- サーバーとクライアントのトランスポート構成 +- サーバーとクライアントの接続処理 + +これらの要件を提供し、サーバーAPIを起動可能なアプリケーションにラップするコードを、wolfHSM「ポート」と呼んでいます。 + +wolfHSMの公式ポートは、サポートされているさまざまなアーキテクチャ用に提供しています。それぞれのポートには次のものが含まれます。 + +- スタンドアロンリファレンスサーバーアプリケーション: このアプリケーションは、HSMコアで実行され、すべての安全な操作を処理することを目的としています。すぐに使用できる状態で完全に機能しますが、エンドユーザーがカスタマイズして追加のユースケースをサポートすることもできます。 +- クライアントライブラリ: このライブラリは、ユーザーアプリケーションにリンクして、サーバーとの通信を容易にします。 + +## 対応状況 + +### Infineon Aurix TC3XX + +(現在対応中です。) +このポートの配布はベンダーによって制限されています。ご入用の方は、info@wolfssl.jp までお問い合わせください。 + +Infineon Aurix TC3xx + +- 最大6つのの300MHz TriCoreアプリケーションコア +- 1つの100MHz ARM Cortex M3 HSMコア +- 暗号化オフロード: TRNG、AES128、ECDSA、ED25519、SHA + +### ST SPC58NN + +(現在対応中です。) +このポートの配布はベンダーによって制限されています。ご入用の方は、info@wolfssl.jp までお問い合わせください。 + +ST SPC58NN + +- 3つの200MHz e200z4256 PowerPC アプリケーションコア +- 1つの100MHz e200z0 PowerPC HSMコア (NVM付き) +- 暗号化オフロード: TRNG、AES128 + +### POSIX + +POSIXポートは、さまざまなwolfHSM抽象化の完全機能実装を提供します。これを使用すると、さまざまなハードウェア抽象化に期待される正確な機能をよりよく理解できます。 + +POSIXポートは以下を提供します。 + +- メモリバッファトランスポート +- TCPトランスポート +- Unixドメイントランスポート +- RAMベースおよびファイルベースのNVMフラッシュシミュレーター + +### Skeleton + +スケルトンポートのソースコードは、将来のハードウェア/プラットフォーム ポートの開始点として使用できる非機能レイアウトを提供します。各関数には、基本的な説明と予想されるフローがエラーケースとともに説明されているため、さまざまな環境において一貫した結果を得ることができます。 + +スケルトンポートは、次のスタブ実装を提供します。 + +- トランスポートコールバック +- NVMフラッシュコールバック +- 暗号処理コールバック + +## ポーティングインタフェース + +ポートはハードウェア固有のインターフェースを実装する必要があります。 + +- NVM フラッシュ インターフェース + +暗号化ハードウェア + +- TRNG、鍵、公開鍵暗号・共通鍵暗号 + +プラットフォームインターフェース + +- ブートシーケンス、アプリケーションコアリセット、メモリ制限 +- ポートと構成はコンパイル時に指定します。 diff --git a/wolfHSM/src-ja/wolfHSM-diagram.png b/wolfHSM/src-ja/wolfHSM-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..f0db54df9a6bb7f8e1ef8d71397ef8fe6f86c035 GIT binary patch literal 243860 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 z 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ª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%0DD$U`H5-gDe|llrpZHI~Q0( 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 f`2P