1. HOME
  2. ブログ
  3. FIPS 140認証を取得した高信頼性のソリューションでIoTデバイスへの脅威を低減!

FIPS 140認証を取得した高信頼性のソリューションでIoTデバイスへの脅威を低減!

こんなものまでターゲットに! 広がるIoTデバイスの脅威とは?

昨今は、さまざな分野でインシデントが発生している。たとえばIoTのホームデバイス系では、米国のRingというメーカーが提供するネットワークカメラがハッキングされ、特定のIPアドレスに行くと、そのカメラがのぞき見できる事件が発覚した。さらに双方向の通信により、家にいる子供を嚇したりしていたそうだ。子供はトラウマになり、両親による訴訟も起きた。

フィリップ製のスマートライトのバルブがハッキングされたケースは、Jigbeeの近接無線を使って、攻撃者が近傍までドローンを飛ばし、外部からネットワーク侵害を起こしたという。攻撃者は、Jigbeeスタックの脆弱性を悪用し、バッファオーバーフローにより、マルウェアを走らせた。スマートバルブをゲートウェイにしてホームネットワークに侵入した。

IoTというと、家庭用などの小さな機器をイメージするが、インターネットにつながっていれば重要インフラにも危険性はある。データセンター自体のセキュリティは堅牢だが、ある研究者によると2万以上のデータセンターの管理システムが、ちょっとした攻撃で公に露出してくる脆弱性があったという。

また昨今はAIの活用が進んでいるが、ハーバード大によるとモデル生成時のデータの正しさも重要になっているという。改ざんデータ自体が混入すると、インフラにAIが導入されたときに大規模なインシデントが発生するリスクが高まる。国防関係のシステムにAIを導入する際には、新たなセキュリティのコンプライアンスが必要になると警鐘を鳴らす。

次のインシデント例は、端末の脆弱性と大規模攻撃が組み合わさったものである。イーロン・マスク率いるSpace Xは、衛星を使ったインターネットサービス「Starlink」を提供している。同社が脆弱性の調査を公募したところ、ベルギーの大学チームがStarlinkのターミナルを分解し、ユニットのファームウェアを抽出・解析することに成功した。

前出の例は悪用される脆弱性の発見までだったが、実際に本当に悪用された事例もある。現在まさにロシアとウクライナで戦争が起きているが、ロシア侵攻の当日に衛星インターネットサービスを提供するViasatが利用できなくなった。これは制御する地上ユニットが、VPNの設定ミスを突いて攻撃されて侵害されたようである。実はドイツの数千台の風力発電の機器も同じネットワークが採用されていたので同時にダウンする事態に陥ったという。

攻撃者は可能な限りローコストで効率的に展開できる手法を選ぶ

では、攻撃者が興味を持つ貴重な資産とは、どんなものがあるのだろうか? 個人情報、各種デバイス機能や、ローカルデータ、アクチュエータ・センサの制御方法、ネットワークへのアクセスポイント、機器のプロセッサ情報、ネットワーク帯域、サービス提供者のコンテンツ情報などが挙げられるだろう。

このような情報に対する攻撃経路のうち、コストが安くて簡単で大規模に展開できる攻撃手法は、ロジカルのアタックだろう。ソフトウェアの脆弱性を見つけ、それを利用して機器の中に侵入し、機器をコントロールして乗っ取るアプローチである。

次にローコストな攻撃は、サイドチャネル分析と呼ばれる。これには「Timing Attack」と「Power Analysis」の攻撃がある。Timing Attackは、デバイス機器の動作が処理時間として観測されるときの時間差が鍵情報と相関を持つ場合があり、それをオシロスコープなどで測定すると鍵情報が見えることがあるというもの。一方のPower Analysisは、消費電力とデータパスに相関があるため、そのデータパスが鍵処理を行っているときに、電力波形をモニターして鍵を抽出するものである。これらの攻撃は非常にローコストの機器を使って、手法も確立されているため、攻撃者的にはイージーな手段となっているという。

少しコストがかかる攻撃としては「Fault Injectiopn」がある。前出のStarlinkのセキュアブートをスキップする際も本手法が使われた。電圧、クロック、レーザーなどを使って、パルス上に外乱を与え、たとえば署名検証のif文にスキップさせて、セキュリティをバイパスするなど、計算を意図しない状態にするもの。特に内部のセキュリティメジャーをスキップし、ファームウェアを抽出して解析するような攻撃の初期段階でよく使われる。

さらにアグレッシブな場合には、内部チップのシリコンをむき出しにして、物理的に回路自体を改ざんする手法がある。トランジスタ間の信号をモニタリングすることで、どんなシークレット情報が流れているかを調べる攻撃もある。ただし、一般的なIoTの機器では、ここまでやる経済性がないため、特殊用途のデバイスに限定して使われるものである。

これらの攻撃は、機器が設計通りのときに真っ向勝負してくるケースだが、実際には機器の脆弱な部分を狙って攻撃を仕掛けることのほうが非常に多い。代表的な事例は、署名検証で必要な乱数が不完全なことを利用する攻撃や、ファイアウォールにpingを打ってレスポンスからネットワーク情報をヒントにハックするという攻撃手法などである。

PCメーカーのASUSは、サプライチェーンでファームウェア・アップデートの仕組みが乗っ取られ、攻撃者に悪意あるコードを挿入されてしまった。またサードパーティ製で脆弱性のあるライブラリから攻撃されることもある。このように正しく実装できておらず、脆弱性になるところを足掛かりに攻撃されることが圧倒的に多いのが実情となっている。

攻撃を抑止するために、あらかじめ組み込んでおきたい仕組みとは?

【セキュアブートの実装】

では、このような攻撃を我々はいかに防げばよいのだろうか? たとえば機器セキュリティの一丁目一番地になるのが、セキュアブートを実装することだろう。

セキュアブートは、ルート・オブ・トラスト(RoT)からBootを始めて、セカンド、サードという順に大きなブートイメージに展開していく。最初はROMに納めたブートコードから実行をスタートし、次は不揮発性の外付けのフラッシュに格納されているセカンドブートのイメージに公開鍵と署名が付いており、その署名が正しく作成されているかを確認したのち、次のサードブートに移っていくという流れになる。このとき大事な点は、公開鍵がセカンドブートのイメージに含まれるので、この公開鍵が攻撃者に入れ替えられると、セキュアブートの仕組み自体が破綻してしまうという点である。

そこで、この公開鍵が正しい公開鍵であることを担保するために、RoTの中で改ざんできないエリアに公開鍵のハッシュ値を保持しておき、セカンドブートのイメージの公開鍵とマッチングをとることで、製造者が意図した正しい公開鍵である点を確認することができる。もう一つは、暗号化したファームウェアである。そのイメージはフラッシュメモリーに置かれ、RAMに展開する前に復号化鍵を使う。この復号鍵もホストからアクセスできないRoTの、改ざん不可エリアに格納することが重要な施策になる。

【真正乱数生成器の実装】

次に乱数生成器について説明しよう。乱数は毎回の署名アルゴリズム生成で使われる。そこで乱数が必要になるのだが、乱数の純度とクオリティがアルゴリズムの強度を担保するときに非常に重要になる。なんとなくランダムという意味では足らない。そこで代表的な規格として、SP810-90Bで厳密にエントロピーを規定している。乱数の純度が低いと、そこが脆弱性につながるからである。

米国ではFIPS140-2の認証が要求されるが、最新バージョンのFIPS140-3ではエントロピーソースがSP800-90B/90Cに準拠しなければならない。FIPS認証を取る場合は、エントロピーの測定結果が十分であり、なぜ純度の高い乱数になるのかという理論的な説明も必要で、そのドキュメントは厳しく精査される。SP800-90B準拠の乱数生成器を生成しようとすると、実際に出てきた所望のエントロピーを回路中で毎回セルフテストで検証するところまで求められる。したがってエントロピーと乱数発生器の実装は重要でも難易度が非常に高いものになる。

【サイドチャネル分析による備え】

次の攻撃抑止は、前出のサイドチャネル分析に関するものである。暗号アルゴリズムを実装する場合、電力差分解析「DPA」(Differential Power Analysis)を使った攻撃によって、鍵の流出リスクがある。対策を打つためには、暗号回路の実装に手を加える必要がある。ラムバスでは、テストベクターベースの解析手法と評価手法をISO197902に提唱し、その提案が採択された。これは、あるテストベクターを使って評価を行うと、定量的に一波形ごとに鍵の流出が起きていることを測定できる手法である。NISTにも提案し、そのアルゴリズムをラムバスのテスト環境に実装して検査して提供している。

たとえば、上の波形を見ると単なるノイズのようにしか見えないが、多くの波形から統計的処理を加えることで、どんな鍵マテリアルズが使われているのかも見えてくる。重要な点は「どのくらい波形を取ると情報が流出するのか? という定量評価ができることなのである。

【ソフトベースでのセキュリティ担保】

次は、SoCを起こせず、ソフトウェア実装だけでセキュリティを担保していく必要があるIoT機器の話である。前出のFIPS140認証では、ソフトウェア実装のモジュールも存在し、そのようなモジュールで認証を取得するアプローチもある。ラムバスでは、TLSやIPsecなどのプロトコルスタックを製品として提供しており、ベースの共通暗号モジュールを準備している。それに対してFIPS140-2の認証を取得済であり、さらに現在はFIPS140-3の認証も取得中である。

FIPS140-3では、前出のとおり真性乱数の要件が求められ、SP-890Cと890Bの要件に合致する必要がある。しかし、このソフトモジュールのほうで、規格にミートできるエントロピーソースを実現しているので安心だ。ハードウェアの新生乱数生成器を置けなくても、FIPS140-3の認証の取得が必要な場合には、こういったソフトベースの実装を検討するのも一つの手になるだろう。

●IoT攻撃時のダメコン(ダメージコントロール)をどうする?

実際に侵害されたとき、どこまでダメージを緩和できるかという観点もIoTでは重要になる。IoTの構成として、多様で複雑なソフトウェアのコンポーネントや、高級なCPUが採用されると、コンポーネントに脆弱性がより多く含まれる可能性が高くなるため、マルウェアに侵害されないことを100%保証することが難しくなってしまう。 仮にホストCPUのアプリケーションが侵害されたとしても、最低限の秘密は絶対に保持しなければならない。重要データを外にリークさせないという施策を、RoTというブロックを使って実装することが可能となる。ラムバスでは二つのRoTソリューションを準備している。一つは「VaultIP」と呼ばれるソリューション。これは鍵管理、重要資産管理のためのハードウェアブロックである。

このブロックの中で自分自身だけがアクセスできるOTP(One Time Password)のメモリーに重要資産を置くことで、たとえホストCPUのアプリが侵害されたとしても、重要資産までアクセスできない仕組みとなっている。アプリと重要資産を物理的に分離できるため、いかにホストがハックされても、最低限守らなければならない秘密は守れる。それをRoTの仕組みを使って担保できるようにしている。

またIoT機器で絶対やるべきことの1つの要件に、デバッグポートのコントロールがある。RoTを使ってJTAGなどをDisenable/Enableすると、品質の高い実装が可能になる。RoT自体は、暗号のアクセラレータと鍵管理の仕組みを持つため、この中の暗号アルゴリズムと秘密鍵を使うことで、外のデバッガーとチャレンジ&レスポンスを実行できる。それが通ったら、GPIO経由でデバックポートにEnableする実装が可能になる。

アドバンスモードを使って、大規模なSoCでIoT機器を作る場合もある。ゲート数やリソースに余裕のあるSoCの場合は「セキュア・インクレーヴ」を実装することも多い。セキュア・インクレーヴは、セキュリティ・ブロックの中に、CPUやSRAMなどを内蔵した実行環境を置き、その中でビルトインのマイクロカーネルとセキュリティ・モニターコンポーネントを実行するものだ。これにより絶対に改ざんされたくない機能やアプリケーションに対して有効に機能する。つまりセキュア・インクレーヴの中で実行されるアプリケーションは、ホスト側のCPUで実行されているアプリケーションから完全分離されているため、秘匿性や完全性が担保される。

最後の要件としてリカバリーが挙げられる。最近はSP800-193の中で「ファームウェア・レジリエンシー」というキーワードが注目を浴びている。実際に攻撃を受けて、何か改ざんされた状態から、正常な状態にもう一度戻すことが重要だからである。これを実行するために一番必要なことは、デバイスがアップデートできることにある。特にIoT機器の場合は、OTAを経由し、ファームウェアのアップデートが求められる。

セキュア・インクレーヴ、RoTを使うことにより、ファームウェアやアプリケーションが改ざんされたことを検知し、ゴールデンファームウェアに実行を移して、そこからもう1回機能を立ち上げ直す。その後ファームウェアをアップデートすれば、攻撃者によって改ざんされたコードを上書きしたり、Disableしたりすることができるようになる。

いまやコネクトデバイスは、あらゆるものに存在している、インターネットに接続しない機器はない状況であろう。エッジに配置されるデバイスは一般的にはリソース制約が高いが、だからといってセキュリティを実装しなくてよいというわけにはいかない。できるだけコンパクトかつ高密度に実装されたRoTを使い、リソース制限があっても必要十分なセキュリティ実装を盛り込むことが、IoT機器の設計で重要になるだろう。特に回復については、今後のトレンドとして注視すべき点である。攻撃されたあとに、いかに正常な状態まで復帰させられるのか、という点も念頭に置いて設計することが肝要になるだろう。

関連記事

サイバーセキュリティの課題をテーマ別に紹介中!!