diverta / onecard-fido

MIT License
0 stars 0 forks source link

[FIDO2対応] FIDO2認証器をmbed OSへ移植する #216

Closed makmorit closed 5 years ago

makmorit commented 5 years ago

概要

現在開発中のFIDO2認証器について、ハードウェアの選択肢を広げるため、nRF52840アプリケーションを、mbed OSに段階的に移植します。

mbed OSに対し、USB HIDサービス経由で、FIDO2各種コマンドが実行できることを確認するところまでが、本トピックの作業スコープになります。

コマンド実行確認は、FIDO仕様適合テストツール(FIDO Conformance Toolsにより実施するものといたします。 (テストツール現在のバージョンは v1.1.4 です)

使用機材

以前「USB U2F HIDデバイス」の制作で使用したドングル基板(STM32F411RE使用)をそのまま使用します。 (#76 ご参照)

コーディング/デバッグ作業には、こちらも以前使用した「NUCLEO-F411RE」を使用します。 (NUCLEOについては、トピック「HIDマウスデバイスを試す」ご参照)

関連Issue

関連プルリクエスト

206 ご参照

makmorit commented 5 years ago

移植作業の概要

業務処理コード移植の前提となる、以下のプラットフォーム依存処理の制作が、本トピックの主な作業になるかと思われます。

デバッグログ関連

NRF_LOG_xxxxに対応する、UARTログプリント機能です。 開発にあたり必須になるので、まずはこちらの機能を整備したいです。

ユーザーインターフェース関連

LED点灯/消灯や、ボタン押下検知(長押しふくむ)といった処理になります。

永続化関連

nRF5 SDKのFDSに対応する、Flash ROMへの書込み/読出し機能です。

タイマー関連

各種タイムアウト管理に必要なタイマーの機能です。

暗号化関連

nRF Crypto に対応する以下の要素になります。 mbed TLSライブラリーを使用する方向で検討しております。

makmorit commented 5 years ago

対応一時中断のお知らせ

221 の対応中に、開発で使用中のIC「STM32F411RE」が、暗号化関連処理に必要なRNG(乱数生成機能)を装備していないことが判明しました。

これでは「STM32F411RE」上で、暗号化関連処理を実装することができません。 従いまして、一旦こちらの移植対応は中断したいと思います。

後日、RNGを標準装備したIC「STM32L432KC」を使用している開発基板「NUCLEO-L432KC」[注1] を別途入手できたら、こちらの移植対応を再開させたいと思います。 何卒ご容赦ください。

[注1] 「NUCLEO-F411RE」と同様、mbed OSがサポートされています。 https://os.mbed.com/platforms/ST-Nucleo-L432KC/

makmorit commented 5 years ago

進捗

後日、RNGを標準装備したIC「STM32L432KC」を使用している開発基板「NUCLEO-L432KC」[注1] を別途入手できたら、こちらの移植対応を再開させたいと思います。 何卒ご容赦ください。

「NUCLEO-L432KC」でテストした結果、USB HIDがサポートされていないことが判明したので、本件対応に「STM32L432KC」は使用できないと判断しております。 (#221 ご参照)

引き続き、本件対応は「NUCLEO-F411RE」とmbed OSの組み合わせにより継続するしか方法がないのですが、別途調査した結果、対応を継続するためには以下の対応が必要となるようです。

外付けセキュアICは、Atmel社の「ATECC508A」等が代表的なようです。 https://www.mouser.jp/ProductDetail/Microchip-Technology-Atmel/ATECC508A-SSHCZ-B?qs=sGAEpiMZZMu0yPKLVbzHrYp6gOBi1GxMa013jbeW%2Fj1RPVIyNo8bHA%3D%3D

現在手元になく、また未評価なので、後日あたらめて評価できればと思います。

makmorit commented 5 years ago

ご参考

mbed OS移植対応についてのポータルを作成いたしました。 https://github.com/diverta/onecard-fido/blob/master/STM32F411RE/README.md