TSIPドライバ・API関数・鍵情報生成について教えてください。

いつもお世話になっております。Mきちです。

RX72Nの暗号機能なしのライブラリの件ではお世話になりました。

RX72Nの暗号機能ありのマイコンを入手したので、暗号化データを比較しようと検討しています。

ライブラリ時の R_Aes_128_Keysch()+ R_Aes_128_Ecbenc() と同じことを実行しようと

R_TSIP_GenerateAes128KeyIndex() + R_TSIP_Aes128EcbEncryptInit() + R_TSIP_Aes128EcbEncryptUpdate() + R_TSIP_Aes128EcbEncryptFinal() 

を組み込んでみましたが、鍵情報生成の引数がわかりません。

資料はR20AN0548JJ0118 を見ています。マイコンに鍵を注入しないと使えないのでしょうか?

  • Mきちさん

    シェルティですこんにちは。ルネサスの中の人です。

    「鍵を注入」しないと使えないかというとNOですね。サンプルコードに含まれているサンプル鍵が使えます。量産製品に適用する場合はサンプル鍵のままだと他のユーザと鍵が同じになってしまうので、適正な手順で「鍵の注入」が必要ですね。

    まず資料ですが、今は最新版はR20AN0548JJ0119ですね。

    https://github.com/renesas/rx-driver-package/tree/master/source/r_tsip_rx_lib/r_tsip_rx_vx.xx_xxx/r_tsip_rx/doc/ja

    上記URLはパッとマニュアルやドライバコードを参照できるようGitHubにおいたもののリンクですが、TSIPドライバ全般の情報に関しては以下ルネサスウェブサイトに載せています。

    https://www.renesas.com/jp/ja/software-tool/trusted-secure-ip-driver

    サンプル鍵を含むサンプル一式は以下からダウンロードできます。

    https://www.renesas.com/jp/ja/document/scd/rx-family-tsip-trusted-secure-ip-module-firmware-integration-technology-binary-version

    サンプル鍵を使ったAESの処理サンプル(RX72N Envision Kit用):

    \r20an0548xx0119-lib-rx-tsip-security\FITDemos\rx72n_ek_tsip_aes_sample\src

    また、上記サンプルのAES動作に解説を絞ったドキュメントが以下にあります。こちらもAESのみひとまずRX72N Envision Kitで動作確認するための時短になると思います。

    \r20an0548xx0119-lib-rx-tsip-security\reference_documents\ja

    →r01an5792jj0102-rx-tsip.pdf

      

    以上です

  • シェルティさん

    いつもお世話になっております。Mきちです。

    回答ありがとうございます。

    最新版をダウンロードして読み始めました。

    ライブラリ版で、ユーザ鍵 16byte で拡大鍵を生成していた場合と

    同じことをバイナリ版で行うには、UFPK にはどんな値を設定する?

    そのあたりを検討しています。

    もうすこしサンプルコードを見てみます。

  • Mきちさん

    シェルティです、こんにちは。

    ご検討ありがとうございます。

    暗号システムは何重にも防御壁があったり(暗号通信 + TrustZone + 秘密鍵保護 + ファイアウォールやウイルスチェッカ的なアプリ、内蔵フラッシュ読み出し禁止設定、等)、1枚しか防御壁がなかったり(暗号通信のみ)で、システム要件次第で実装(もとい開発費)が大きく変わります。

    TSIPは一般的な組み込みシステムが今後何十年かくらいに渡り世間一般から求められるセキュリティ水準をあらかじめ予想し、それを満たすためのギミックを満載にしています。(故にTSIPドライバのマニュアルはかなりの分量になっていたりします)

    鍵注入などの準備さえできればあとは単にAESやRSAや楕円曲線暗号を単品で使えたりするだけではあるので機能的には複雑ではありませんが、鍵のハンドル方法はやや難解です。応用としてはMbed TLSやwolfSSLなどのTLS実装体とTSIPドライバを連携させる方法も開拓済です。RXマイコンでTLS通信が40Mbpsくらい出せたりします。そのうえ、AWSなどのクラウドサービスに接続するためのデバイス秘密鍵やデバイス証明書を安全な状態でマイコン内部に保存できます。

    単に暗号ライブラリを導入するだけだと、セキュリティの基点となるべきAES等の秘密鍵が無造作にフラッシュROMやSRAM上に展開され、アタッカから読み取られてしまう恐れがあります。今は組み込みシステムもこのあたりあまり市場がセンシティブではないので、暗号ライブラリでひとまずマイコン外部の通信回線上のデータを保護するだけでシステム要件を満足することも多いかもしれませんが、最近欧州のサイバーレジリエンス法などによりだいぶ潮目が変わってきているようです。

    といろいろTSIP関連の情報源が大辞典みたいになっているのに対し言い訳がましく書きましたが、TSIP搭載のRXマイコン(RAなどの他のファミリもルーツが同じ技術を搭載しています)の暗号IPの機能を検証いただければと思います。

    前にも貼ったかもしれませんが、TSIPを使った対外的な実績を紹介します。RXマイコンは結構難しいセキュリティ検定の「NIST FIPS140-2 CMVP level3」というのに合格しました。

    https://www.renesas.com/jp/ja/about/press-room/renesas-rx-mcu-becomes-world-s-first-general-purpose-mcu-obtain-cmvp-level-3-certification-under

    合格証書:

    https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/3849

    以上です

  • シェルティさん

    ありがとうございます。Mきちです。

    む、難しすぎるので、ゆっくり学んでみます。

  • Mきちさん

    シェルティです、こんにちは。

    すみません、TSIP使っていただけるユーザを見つけて多弁になってしまいました。要らないプレッシャーになってしまったかもですね。ゆっくり学んでいっていただければと思います。鍵注入(あるいはサンプル鍵をひとまずそのまま使ってみる)をクリアすれば従来通りの暗号ライブラリと同じ感じでAPI呼べば任意データのAES暗号化・復号できる感じではあります。

    以上です