ウィーブの証言—機械経済の確保に向けた信頼できるステップ

(ガウラヴティワリ)(2020年5月6日)

データは、石油や金などの商品に例えられています。この接続された世界では、ますます多くの高品質のデータが、工場に配備されたマシンや私たちの家に配備されたさまざまなガジェットのスマートな意思決定プロセスを強化するでしょう。しかし、先には大きな課題があります。スケーラブルで自動化された方法で、高品質で信頼できるデータを安全に配信するにはどうすればよいでしょうか。ローエンドの組み込みデバイスの業界リーダーは、ハイエンドデバイスで広く利用可能な最高のハードウェアおよびソフトウェアのセキュリティプラクティスをこれらのマイクロコントローラーデバイスにまで下げるために懸命に取り組んでいます。マイクロシステムのリソースが限られており、オペレーティングシステムとソリューションスタックが非常に多いため、組み込みセキュリティの複雑で困難な状況につながります。

データ保護シナリオは次のように分類できます。

  • 保存データ
  • データ転送中
  • 使用中のデータ

Weeveでは、マイクロプロセッサベースのIoTデバイスのデータセキュリティに合わせたソリューションを開発しています。

  • は信頼できるストレージソリューションを使用しています。このデータには、キーなどの暗号化アセット、または仮想コインなどの一部のデジタルアセットが含まれています。

  • データの転送中、ローエンドデバイス向けに調整されたMQTTプロトコルに基づいて構築された軽量で安全なパブリッシュ/サブスクライブであるWeeveMQTTSを開発しました。これは、エッジでより多くの電力リソースを消費するMQTT overTLSの代替手段です。
  • 使用中のデータの場合

    IoTデバイスで実行されているプロセスの整合性に対処します。このプロセスは、センサーを使用して有用なデータを収集したり、データ処理ステップを実行したり、アクチュエータデバイスの場合はビジネスロジックを実行したりする場合があります。ここで重要なのは、プロセスのソフトウェアの脆弱性を検出して防止することです。このブログシリーズのトピックである、リアルタイム制御認証アプリケーションである Weeve Testimony を開発しています。

Weeve Testimonyを紹介する前に、解決しようとしている問題の技術的背景と、ソリューションで使用されているテクノロジーについて少し説明します。

Cプログラムの脆弱性の問題

ほとんどすべての低レベルの組み込みソフトウェアとファームウェアはCプログラミング言語で開発されています。意図された割り当てメモリに対するCの適切な境界チェックの欠如は、大きなセキュリティ脅威の原因です。バッファオーバーフローに加えて、Cプログラムには整数オーバーフロー、文字列形式の脆弱性、リターンアドレスの上書きなどがあります。

return-to-libc 、およびより一般的なリターン指向プログラミング(ROP)は、次のような一般的な緩和手法に対して非常に効果的です。データ実行防止とコード署名。静的および動的なアプリケーションセキュリティツールを使用した適切なコードレビューにより、このような脆弱性の重大度を軽減できる可能性があります。スタックスマッシング保護などのツールチェーンの他の手法、データセグメント用のNXビットセットなどのハードウェア自体、実行時のアドレス空間配置のランダム化(ASLR)などが存在します。しかし、このプログラムはまだ公正な脆弱性のない保証にはほど遠いです。マイクロコントローラーベースのローエンドデバイスのコンテキストでは、ランタイムローダーの使用を回避するための実用性のため、ASLRの最も効果的な緩和手法は実装されていません。

Cプログラムの脆弱性を軽減するためのアプローチ

Cプログラムの脆弱性の問題に対処するために、プログラムには常にセキュリティ上の欠陥があると想定しています。したがって、実行時にそれらを検出するために冒険します。実行中のCプログラム(MCUファームウェア)の動作を検査およびテストする、より特権的な分離ガードプロセスの存在を想定しています。ガードプロセスは、通常のファームウェアと同じプロセスまたは同様の特権レベルの一部である場合、ハッカーが通常のファームウェアの同じ脆弱性を悪用してガードプロセスをハッキングできるため、分離して通常のファームウェアよりも特権を与える必要があります。 。また、(プロファイリングツールを使用して)通常のファームウェア実行のすべての有効な実行スナップショットを事前に認識し、これらのスナップショットを定期的にテストするリモート認証エンティティの必要性を想定しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です