1Renesas RSK+RX65N-2MB 評価ボード用 wolfSSLサンプルプロジェクト 2====== 3 4<br> 5 6## 1. 概要 7----- 8 9Renesas社製 RSK+RX65N-2MB 評価ボードをターゲットとしてwolfSSLを評価するためのサンプルプログラムを提供します。サンプルプログラムはリアルタイムOSを使わないベアメタル環境で動作し、IDEとしてe2 studioを使用するものです。本ドキュメントではサンプルプログラムのビルドから実行までの手順を説明します。 10 11提供するサンプルプログラムは次の3機能を評価できる単一のアプリケーションです: 12 13- CryptoTest: 各種暗号化オペレーション機能を自動テストするプログラム 14- Benchmark: 各種暗号化オペレーションの実行速度を測定するプログラム 15- TlsClient: 対向するTLSサーバーアプリケーションとTLS通信を行うプログラム 16 17評価ボードを動作させる為のH/W設定、S/W設定は既に用意していますから、サンプルプロジェクトの動作までは最少の設定で済むようになっています。また、TLS通信において必要となる、RootCA証明書、サーバー側証明書もサンプル使用に限定したものが既に設定済みです。 18 19以降のセクションはサンプルアプリケーションの実行までのステップを順に説明していきます。 20<br><br> 21 22 23## 2. ターゲットとしているH/W、コンポーネント、ライブラリ 24----- 25 26このサンプルプログラムでは以下のハードウエアやソソフトウエアライブラリを使用しています。皆さんがご利用時にバージョンの新しいソフトウエアコンポーネントが利用可能であれば適宜更新の上ご利用ください。 27<br><br> 28 29|要素|名称/バージョン| 30|:--|:--| 31|評価ボード|Renesas Starter Kit+ for RX65N-2MB| 32|Device|R5F565NEHxFC| 33|IDE| Renesas e2Studio Version:2021-10 | 34|エミュレーター| E1, E2エミュレーターLite | 35|Toolchain|CCRX v3.03.00| 36|TSIP| TSIP v1.14| 37<br> 38 39本サンプルプログラムのプロジェクトには以下のFITコンポーネントを使用する設定ファイルが用意されています。 40しかし、FITコンポーネント群そのものは本サンプルアプリケーションの配布物としては含まれていません。皆さん自身でIDE内の操作によってダウンロードしていただく必要があります。一部のFITコンポーネント(TSIP)はIDE内から直接ダウンロードできず、Renesas社のダウンロードサイトから別途ダウンロードが必要なものがあります。 41<br><br> 42 43 44 45|FITコンポーネント|バージョン|略称| 46|:--|:--|:--| 47|8ビットタイマー|1.9.0|Config_TMR0| 48|Board Support Packages|6.21|r_bsp| 49|CMT driver|4.90|r_cmt_rx| 50|Ethernet Driver|1.21|r_ether_rx|1.21|r_ether_rx| 51|Generic system timer for RX MCUs|1.01|r_sys_time_rx| 52|TCP/IP protocol stack[M3S-T4-Tiny] - RX Ethernet Driver Interface|1.09|r_t4_driver_rx| 53|TCP/IP protocol stack[M3S-T4-Tiny] for Renesas MCUs|2.10|r_t4_rx| 54|TSIP(Trusted Secure IP) driver|1.14|r_tsip_rx| 55 56(注意)2021年12月現在、TIPSv1.14はFITコンポーネントとしてスマートコンフィギュレータパースペクティブのコンポーネントの追加操作では追加できないようです。後ほど説明する手動での追加方法を使って追加してください。<br> 57 58 59<br><br> 60 61## 3. サンプルプログラムプロジェクトのe2Studioへのインポート 62---- 63 64サンプルプログラムは新規作成する必要はありません。すでにプロジェクトファイルが用意されていますからIDEから以下の手順でプロジェクトをインポートしてください。 65 66 67+ 1.e2studioの"ファイル"メニュー > "ファイル・システムからプロジェクトを開く..." > "ディレクトリ(R)..."インポート元ボタンを押して、プロジェクトのインポート元となるフォルダーを選択します。本READMEファイルが存在するフォルダ(Renesas/e2studio/\<MCU>/\<borad-name-folder\>/))を選択してください。 68 69+ インポートできるプロジェクトが4つリストアップされますが、"smc", "test" と"wolfssl"の3プロジェクトにのみチェックを入れて”終了”ボタンを押してください。 70 71プロジェクト・エクスプローラーにインポートしたsmc,test,wolfsslの3プロジェクトが表示されるはずです。 72<br><br> 73 74## 4. FITモジュールの取得とスマートコンフィギュレータによるファイル生成 75---- 76 77FITモジュールは皆さん自身で取得していただく必要があります。以下の手順で取得してください。 78<br><br> 79 80 811. プロジェクト・エクスプローラー上でsmcプロジェクトを開き**smc.scfg**ファイルをダブルクリックして、スマートコンフィギュレータパースペクティブを開きます。 82 832. ソフトウエアコンポーネント設定画面の"コンポーネント"タブを選択 > 画面右上の"コンポーネントの追加" ボタンを押して下さい。ソフトウエアコンポーネントの選択ダイアログが表示されます。ここで、画面下部の"最新版のFITドライバとミドルウエアをダウンロードする"を押して、モジュール群を取得しておいてください。ダウンロード先のフォルダは"基本設定..."を押して確認することができます。 84 853. TSIPコンポーネントは上記ステップ2の方法ではRenesas社の対応が遅れていて最新版が自動的には取得できないことがあります。その場合にはRenesas社のサイトから手動でダウンロードできます。ダウンロードしたコンポーネントのを解凍し、FITModulesフォルダに含まれているファイル群をステップ2のダウンロード先フォルダに格納してください。 86 874. 先に示したFITコンポーネントを一覧から選択して"終了"ボタンを押します。この操作を必要なFITコンポーネントを得るまで繰り返し行います。 88 895. ソフトウエアコンポーネント設定画面のコンポーネントタブを選択し、r_t4_rxコンポーネントを選択します。右の設定ペインに"# IP address for ch0, when DHCP disable."プロパティの値として、このボードのIPアドレスを皆さんの環境に合わせてて指定します(例: 90192.168.1.9)。 91 926. ソフトウエアコンポーネント設定画面の右上の”コードの生成"ボタンを押して、スマートコンフィギュレータにソースファイルを生成させます。smcプロジェクトの下にsrc/smc_genフォルダが生成され、ソースファイル、ライブラリ等が格納されされます。 93<br><br> 94 95## 5. testプロジェクトへのsmc_genファイル群の追加 96---- 97 98testプロジェクトはサンプルアプリケーションのプロジェクトです。プロジェクト・エクスプローラー上でtestプロジェクトを開くとsrcフォルダが存在し、そこにサンプルアプリケーションのソースファイルが格納されています。このsrcフォルダ直下に4-5で生成したsmc_genフォルダごとコピー&ペーストしてソースファイルを追加します。 99 100test/src/smc_gen 101 102のようなフォルダ階層になることを確認してください。 103<br><br> 104 105## 6. testアプリケーションの動作を選択する 106---- 107testプロジェクトが唯一のサンプルアプリケーションですが、その動作を設定で切り替えることによって、 108 109- CryptoTest: 各種暗号化オペレーション機能を自動テストするプログラム 110- Benchmark: 各種暗号化オペレーションの実行速度を測定するプログラム 111- TlsClient: 対向するTLSサーバーアプリケーションとTLS通信を行うプログラム 112 113のいずれかの動作を行うよう指定できます。 114 115設定はtest/src/wolfssl_demo.h ファイル内の、 116 117- #define CRYPT_TEST 118- #define BENCHMARK 119- #define TLS_CLIENT 120 121のいずれか一つを有効にしてアプリケーションをビルドすることで行います。 122<br><br> 123 124 125## 7. testアプリケーションのビルドと実行 126----- 127 128testアプリケーションのビルドの準備が整ったので、ビルドを行います。 129 1301.プロジェクト・エクスプローラー上のwolfsslプロジェクトをビルドし、次にtestプロジェクトをビルドします。 131 1322.ビルドが成功したら、ターゲットボードとエミュレーターを接続し、外部電源を入力します。 133 1343."実行"メニュー > "デバッグ"を選択し、デバッグパースペクティブを開きます。 135 1364. testアプリケーションは標準出力に動作状況を出力します。この標準出力の表示用に、"Renesas Debug Virtual Console"を開いておきます。 137 1385.実行ボタンを押してtestアプリケーションを動作させます。 139 1406.CryptoTest、BenchmarkあるいはTLS_Client選択していた動作に応じた実行結果を表示したあと無限ループに入るので出力が停止したと思われたらデバッグを停止させます。 141<br><br> 142 143## 8. TLS_Clientとしてのtestアプリケーションの実行 144----- 145<br> 146 147### 8.1 TLS対向アプリケーションの生成と実行 148<br> 149 150testアプリケーションをTLS_Clientとしての動作を行わせる場合には、TLS通信の相手方となる対向アプリケーションが必要となります。wolfSSLパッケージにはこの用途に使用できるTLSserverサンプルアプリケーションが用意されています。このプログラムはwolfsslをビルドすることで生成されます。wolfSSLのビルドにはgccがインストールされているLinux(MacOS, WSLも含む)でのビルドとVisualStudioを使ってのビルドが可能です。以下ではWSL上でのビルドを紹介します。 151<br><br> 152 153``` 154$ cd <wolfssl-folder> 155$ ./autogen.sh 156$ ./configure CFLAGS="-DWOLFSSL_STATIC_RSA -DHAVEAES_CBC" 157$ make 158``` 159 160<br> 161上記のビルドによって、<wolfssl-folder\>/examples/server/server 162が生成されます。この実行プログラムがサーバーアプリケーションとして機能します。以下のオプションを与えて実行させるとTLS_Clientからの接続を待ち受け状態になります。 163<br><br> 164 165``` 166$ examples/server/server -b -d -i 167``` 168<br> 169testアプリケーションには、サーバーアプリケーションに割り当てられたIPアドレスを指定します。 170 171wolf_client.cを開き、#define SIMPLE_TLSSEVER_IPにアドレスを指定します。 172 173``` 174-- wolf_client.c -- 175 176... 177#define SIMPLE_TLSSEVER_IP 192.168.53.9 178... 179``` 180<br> 181ファイルをセーブしてtestアプリケーションを再ビルドしてください。testアプリケーションを実行すると、対向アプリケーションとの間でTLS接続が行われ、その後簡単な文字列を交換して標準出力に以下のような表示を行います。 182<br><br> 183 184``` 185cipher : ECDHE-RSA-AES128-GCM-SHA256 186Received: I hear you fa shizzle! 187 188cipher : ECDHE-RSA-AES128-SHA256 189Received: I hear you fa shizzle! 190 191cipher : AES128-SHA256 192Received: I hear you fa shizzle! 193 194cipher : AES256-SHA256 195Received: I hear you fa shizzle! 196 197cipher : ECDHE-RSA-AES128-SHA256 198Received: I hear you fa shizzle! 199 200cipher : ECDHE-RSA-AES128-GCM-SHA256 201Received: I hear you fa shizzle! 202``` 203<br> 204 205### 8.2 サーバー証明書の変更(認証方式の変更) 206 207<br> 208上記はサーバーアプリケーションが提示すサーバー証明書にRSA公開鍵が含まれている(RSA認証)場合の実行例です。TSIPにはこのほかにサーバー証明書にECC公開鍵を含む場合(ECDSA認証)も扱えます。 209 210<br> 211ECDSAを含む暗号化スイートを使用したい場合には、testアプリケーションの設定を変更して再ビルドが必要となります。\<board-name-folder\>/common/user_settings.h を開き、USE_ECC_CERT定義を有効化して再ビルドしてください。 212<br><br> 213 214``` 215#define USE_ECC_CERT 216``` 217 218<br> 219この定義により、testアプリケーションはサーバーの提示するECC公開鍵を含んだサーバー証明書を検証できるRootCA証明書を使うようになります。 220<br><br> 221 222さらに対向するサーバーアプリケーションの方でも以下のようにECC公開鍵を含んだサーバー証明書と秘密鍵ファイルをオプションで指定して実行する必要があります。 223<br><br> 224 225``` 226$ ./examples/server/server -b -d -i -c ./certs/server-ecc.pem -k ./certs/ecc-key.pem 227``` 228<br> 229実行結果として以下が表示されます。 230<br><br> 231 232``` 233cipher : ECDHE-ECDSA-AES128-SHA256 234Received: I hear you fa shizzle! 235 236cipher : ECDHE-ECDSA-AES128-GCM-SHA256 237Received: I hear you fa shizzle! 238``` 239<br> 240 241## 9. ユーザーが用意したRootCA証明書を利用する際に必要なこと 242----- 243 244本サンプルプログラムでは、TLS_Clientとして動作する際に必要なRootCA証明書とサンプルTLSサーバーアプリケーションが使用するサーバー証明書などは評価用でのみ利用可能な証明書です。 245機能評価を超えた目的で利用する場合にはRootCA証明書をユーザー自身で用意する必要があります。それに伴い、 246 1. Provisioning key 247 2. RootCA証明書の検証の為に必要なRSA鍵ペア 248 3. RootCA証明書を上記2の秘密鍵で生成した署名 249 250が必要になります。それらの生成方法はRenesas社提供のマニュアルを参照してください。 251