********************************************************************** S2-d テーマ:組み込みセキュリティ - 誰のために何を守るか 講師:橋本 幹生(東芝) 日時:2007年8月31日(金)8:50〜10:30 参加人数:23名 ********************************************************************** 私は司会のTと申します、 東芝で産業機器、または半導体 各レベルでセキュリティの問題があります。 よろしくおねがいします。 おはようございます。 東芝研究開発センターのコンピュータネットワークラボラトリの 橋本と申します。 組み込みセキュリティ誰のために何を守るか? という題目でお話させていただきます。 まずはじめに、私、講演者の技術バックグラウンドから入った方が、 距離感が掴めるのではないかと思いまして、その辺から入らせさせていただきます。 私の技術バックグラウンドですけども、 1991に東芝に入社しまして、これは、Tさんと同期入社になるんですけども、 交換機向けのOSのCTRONですとか、それとか、多重化構成などに従事しました。 その後、インターネントが家庭に来るだろうということで、 ホームネットワークに関連する技術携わるようになりました。 これが、94年ぐらいです。 97年頃から、ネットワークAV機器の自動認識 IEEE1394、今は、デジタル機器とパソコンを繋ぐインターフェースに 成り果ててしまったんですが、その頃はネットワークとして1394を使うという 考え方が結構ありました。 1999から デジタルAVからデジタル著作権法という方向に研究の方向を移しまして 今のトピックはセキュリティプロセッサです。 ネットワークを通じた情報技術の活性化と安全性を両立するというのが、 大きな題目でございます。 必ずしもセキュリティの専門家ではありません。 暗号アルゴリズムの専門家ではありません。 セキュリティと組込みを両方みてきました。 セキュリティの解りにくい概念を組込み技術者に 橋渡しをできるという意味で聞いていただければ、と思います。 昔は、セキュリティ技術について輸出規制がありました。 鍵は何ビットとか、かなり厳密に決まっていました。 最近はかなり、制約がゆるくなってきました。 今オープンソースのセキュリティのライブラリも提供されていますし LINUXを導入するば、非常に高度なセキュリティが自動的についてきます。 そういう意味でセキュリティの導入は容易になった。 ところが、セキュリティリスクは、それを上回る勢いで、 上がってきています。 その背景としては、どんなものでもネットワーク接続されるようになってきた。 そのネットーワークに誰が、どんな人が接続してくれかわからない。 悪い人が接続してくることを前提にして考える必要がある。 リスクは多様化しています。 昔は、素粒子や、TCP/IPなど、目的が同じコミュニティが使っていた。 それが、今は、色々な有料サービス、ゲームから人生相談まであります。 それから、デジタル著作権法が入ったコンテンツ配信。 色々な人が、色々な目的で使っているネットワークの上でリスクを考えなければならない。 よりよい機能を提供すること、 組込み技術者が本業に専念できるにはどうすればよいか? 概要としまして、セキュリティ技術のむずかしさからはいりまして、 情報セキュリティの概念とか、セキュリティ基準とかセキュリティ標準 ISO15408がこらからの企業セキュリティでは必須と雑誌等に出たりしてます。 リスクについてなど、概念的なことを前半でお話します。 後半に利害関係の相反を分類別毎に話します。 それは、3つに分かれていまして、 侵入者撃退編 あのころはみんなひとつだった 矛盾編 別れのよかん 共存編 またはなぜ私は心配するのをやめて脆弱性と共存するようになったか といったストーリーでお話していきます。 わたしは今年、SWEST参加初めてなので、進行の仕方がわからないことがありますので、 解らないところがありましたら、随時インターラプトをかけてもらって聞いてください。 質問、コメントをよろしくお願いします。 前提 情報セキュリティの概念 公開鍵、共通鍵暗号、ハッシュ 認証、鍵交換などのプロトコル この辺の知識を省略してもよろしいでしょか? 攻撃防御の基本はPC組込みで共通 まず、セキュリティ実現の難しさというところから、 話をしていきます。 外部導入プログラム 事前の検証は困難 プラットフォームでの実現するのは難しい。 プラットフォームの脆弱性をすることは、WINDOWSなどはできますが、 組込みベンダーが逐次認識して対応することができているか? 自社開発プログラム セキュリティというのは、要求仕様に書かれていない操作をした場合でも、 セキュリティの責任になります。 なので脆弱性は機能検証だけでは発見できないというのが一般的です。 攻撃リスクの増大 攻撃はアンダーグラウンドビジネスになった マルウェアや詐欺サイトビジネスが実在 ライフサイクルにおけるセキュリティ要求 機器を使っている間だけではなくて、機器が廃棄されるときに、そこに入っている 情報が不用意に漏れていかないかどうか。 こんなところにまで、メーカの責任が求められてきている。 担当者に非常に広い視野が必要 捨てるときまで、考えているか? ○機器のライフサイクル 実装するときに、プラットフォームを選定して、外部のIPを導入して、 必要な機能を実装して、それにたいして検証して、運用する。 そのときに、攻撃があると、被害が出て、企業の責任が問われる。 廃棄してから、情報漏えいしないように考慮しないといけない。 外部導入ソフトウェアの安全性を自主検証するのは難しい しかし脆弱性対応は機器ベンダの責任 組込み機器では運用開始後の維持管理が困難な場合が多い 法律めいたこといいますと、 被害者に対して対応義務の範囲は法的には未確立の問題です。 ○自制ソフトのセキュリティ検証の難しさ ここから少し、技術的な話になってきます。 システムの機能要件とシステム非機能要件に分類されます。 システムの機能要件を定義しますと、単体検証結果と実環境の動作が一致 処理内容、単体スループットが補償されている。 一方、システム非機能要件は、組み上げたときに実環境の結果が予測困難なもの。 非機能要件には、 信頼性性 クラッシュ頻度 単体テストではわからない セキュリティ セキュリティ機能要件とセキュリティ非機能要件がセキュリティの中にもある セキュリティ機能要件 暗号アルゴリズム、単体スループット、アクセス制御の仕様 セキュリティ非機能要件 脆弱性 ソフト:バッファーオバーフロー もっとも攻撃頻度が高いが網羅検証が非常に困難 毎月WINDOSのUPDATEをしないといけない理由です。 ハード:電力解析攻撃 暗号演算の検証 ○攻撃リスクの増大 愉快犯人 PCで発生した実例が繰り返される 処理能力のもたない組込みではまもれないとこもある。 ○セキュリティの概念 私がつまづいたところを私なりみまとめたところです。 コンピューティングの文化の流れ UNIXの分岐みたいに、情報システムにもあるんじゃないかな ------------- |情報システム| ------------- |_ 大型計算機 |_ |_ ---- | PC | -------- ---- |-|組込み|------| | -------- UNIX --------- -------------- |Soc | |コントローラ| |LSI主体| |装置主体 | 通信システム --------- -------------- 電話交換機 シーケンサ 最近まで、組込みではセキュリティを考えなくてよかった。 ○情報セキュリティの主要3概念 まず始めに、情報セキュリティとコンピュータセキュリティという言葉について お話していきたいと思います。 情報セキュリティ 安全性が保たれる 迂回路がないことが数学的に証明されたもの コンピュータセキュリティの側から情報セキュリティを壊すことができる。 コンピュータセキュリティはアクセス制御で実現している。 どのプロセッサからも、アクセスすることができるので、 迂回路がないことコンピュータセキュリティでを証明することは、非常に難しいです。 なにか質問ありますか? Q:機能検証と結びついていて、 機能検証以外のことをした場合、 暴走して鍵がもれる、すべてやりつくせるか? A:本当に実現するには開けられないハードが必要ですね。 また、コストの兼ね合いもあります。 迂回路にないことを証明することが原理的に難しい。 情報セキュリティは、背理法などで証明されていますが、 実体化するのは、コンピュータやハードウェアで そこに脆弱性がでてくる。 どの仮定で話をすることが重要。 それなしで、話をすることは、ナンセンスです。 そうでないと、情報セキュリティは成り立たない。 大学等では、情報セキュリティの話に集中してしまいます。 情報セキュリティは、2つの閉じた箱が信号線で繋がれているときに、 信号線を観測したり、信号線を改変したりしても、通信の最終結果が 漏れたり、誤ったりしない数学的な手段です。 サイドチャネルアタック 暗号処理系から服地てきに発生する情報の観測による攻撃 情報セキュリティ以外の実装における安全性のことを耐タンパ性と読んでいる。 セキュリティは、内部に存在する脆弱性 情報の悲哀 改ざん:完全性、漏洩 脅威 機器機能、損失の被害(利用不能:可用) これらの概念は、別々ですが、相互に関係しています。 ○情報セキュリティの主要3概念(CIA) 機密性 対象の情報を許可のない読み取りから守ること 実現手段例:暗号化、アクセス制御 完全性 対象の情報を許可のない書き換えから守ること 実現手段例:署名検証、アクセス制御 補足としましては、可用性 可用性 必要なときシステムが利用可能であること 実現手段:さまざま 補足:処理の実行に必要なリソースに注目した概念 例:ノートPCの電池切れになる処理不能はセキュリティ視点では正常ですが、 信頼性の観点からすると異常ですね。電源が切れる前になんらかの手を打っておく 電源を多重化しておくなど。 ○信頼性(ディペンダビリティ)とセキュリティの関係 |--Availablity-------| |--Reliablility | Dependabblity--|--Safety |--Security | Confidentiablity--| |--Integrity---------| |--Maintainablility こういう定義がIEEEでなされています ○セキュリティと標準 次にセキュリティと標準について話します。 コモンクライテリアなどが興味ありますか? 様子をききながら、話を進めたいと思います。 情報セキュリティの基準標準は、分野によって様々あります。 攻撃技術の進歩によって、暗号化技術は、段々に安全でなくなってくる。 暗号化技術が陳腐化したかどうかを定期的に監視するような話。 IPAの方でしっかりやってくださっています。 ただし、すべてを使う必要はなくて、適材適所で使っていただればと思います。 カード会社などではISOとは、別に基準を設けている。 目的、用途に応じて使い分ける AACSで次世代DVDのセキュリティを決めていたり Q:CCの適用範囲は? A:特にないです。 第3者機関 貿易障壁ではないか? EUだけでやっている CCはムダと言っている ICカードの標準を国際標準とは、オバーラップしていない。 民間がセキュリティをつくることを妨げるものではない。 <橋本注> CCの適用範囲は特に限定されていない。元々は政府系情報システム 調達に関する貿易障壁排除のために設けられた基準(Common Criteria)が 民間に拡張されたもので、機器のセキュリティ機能が正しく機能することを、 第3者が確認するための枠組み。 J-SOX法対応を理由に、企業内情報機器にCCに基づくセキュリティ機能が 必須との宣伝がなされている場合があるが、CCの基準を満たすことが必要で ない場合が多い。ただし他社の競合製品がCC対応している場合、営業サイド から要求される場合はある。 ISOなどの国際標準では重複するものを作らないことが原則(高田先生)。 ICカードの基本的な物理仕様はISOで決めているが、高度なセキュリティ仕様 はクレジットカード会社が実質的に決めている。その意味で、CCの枠組みは 民間が別の規格を作ることを妨げているものではない。 セキュリティの認証について 内部にバッファメモリ プリンタが、認証をもらったといことはどういことか? 認証=安全性ではない たとえばXPでは、EAL4をセキュリティで認証を受けていますが、 違うところでバッファーオバーフローが起きている ボトムラインを保障するものではない 混乱しやすい用語 認証 相互認証:通信相手が身元を確認するメカニズム(セキュリティプロトコル) セキュリティ:評価基準に基づく認証 機能要件 ソフトウェア開発 セキュリティ評価基準の運用例 機器ベンダ | 業界団体 | | | 評価者------------> 機器導入決定者 ○セキュリティリスク(被害者別) 被害者を分類します 機器のユーザ 機器の利用不能 情報の消失 情報流失 ユーザ以外の利害関係者 有料サービスの不正利用 コンテンツの不正利用 第3者 踏み台攻撃によるスパム送信 自社 自社ソフトの海賊版 ○システムと登場人物例(外部攻撃者) 私は、元々デジタルエンターテイメントのでなので、 コンテンツプロバイダとサービスプロバイダの関係を考えてしまいます。 一見したら、これだけが、利害関係者に思ってしまうんですが、 そこで攻撃者がいること考えたときに、同じ機器が当たるのか当たらないのか、 実は、攻撃が可能になるか、ならないかを左右したりします。 攻撃者がその機器を解析することによって、脆弱性情報を取得してその上で、 攻撃をかけてくるっていう事が考えられます。 機器単体だけでなく、その機器に誰が、アクセスすることができるかを 考慮しなくてはいけない ○リスクと登場人物 機器の脆弱性で被害を受ける人物 機器のユーザだけとは限らない 開発、運用、廃棄の過程で関与する人物と攻撃者 エンドユーザを筆頭としたエコシステム 登場人物それぞれの情報資源を守るには、何をすればよいのか? 組込み技術者が全ての義務を負わなくてもよい方法は? 解決のための仮説 自分の情報資源は自分だけ知っている秘密に基づいて情報セキュリティを守ればよい そのために必要な仕組は? ○分類別考察 A:侵入者撃退編 ポイント:利害関係者全員に侵入を撃退する意欲がある リスク対象 エンドユーザの情報 機器の動作維持 (踏み台攻撃の防止) ○侵入撃退の実行 保護資産の洗い出しとシステムデザイン 目的と手段の検討 プットフォーム外部導入ソフト選定 情報収集と事前評価 開発 社内開発 コーディング時の脆弱性の排除 アウトソース(出す立場、受ける立場) 指示は的確か?他の要素とレベルは整合しているか? インテグレーション 販売メンテナンス 脆弱性情報収集、JPCERTなどの活用、ネット情報の収集 出荷済み製品の修正と告知が可能な体制 目標はエンドユーザの脆弱性不安を解消し、実害を与えないこと ○セキュリティ検討の視点(1) 情報セキュリティの観点では、正しく保護資産が定義できていれば、 不正アクセスを排除する仕組みは完成している 正しく保護資産を定義できるか? コンピュータセキュリティの脆弱性排除は当分難しい セキュリティ機能お作りこみ 一箇所でも弱い部分があると全体のセキュリティレベルが下がる 後から作りこもうとしても見落としが生じやすい 予想外の利用状況や利害関係者(アウトソース先など)の存在の見落とし コーディングテクニックは重要だがそれだけではない まず保護資産へのアクセスを把握できているか? ○セキュリティ検討の視点(2) 保護資産に対する縦糸、横糸の検討で漏れを防ぐ 製品の横軸(ライフサイクル) PLM(Product Lifecycle Mnagement) SDLC(Software Development Lifecycle) モジュール間、モジュール内の空間軸 Input and Data Flow Trust Relationship Environmental Exceptional データフロー図式化 DFD(Data Flow Diagram) ○脆弱性対策ツール 総論 静的チェック(出荷前チェック)はPC向けのものが、かなり使える 動的チェックはパフォーマンス、消費電力で利用が制約される 静的チェック ネットワークセキュリティスキャナ オープンソース nmap Nessus 商品製品 ソースコードスキャナ オープンソース splint flawfinder 商品製品 coverity ○テクノロジ TPMチップ 安全な鍵の保管庫+暗号計算処理のメインCPUからの隔離 これだけでメイン側の処理が安全になるわけれはない OS、ミドルウェアのメカニズム リソース隔離 仮想マシンに隔離の強制 多重防御 アクセス制御の細粒度化 最小特権での実行 セキュリティサンドボックス 既存アプリへのセキュリティポリシー導入(使いやすさ) Security Wrapper 外来プログラムの検査・検証 ウィルスチェック、Java Verification 侵入検知システム ○侵入撃退における難問 ゼロデイアタックに対処する方法があるか? 仮想化やアクセスの細粒度化、多層防御は本当に有効か? 仕組み有効では適切な設定が可能なのか? バッファオバーフローなどの脆弱性は将来根絶されるか? 現在OSは外部から導入するものである 暴言:外来プログラムであるOSとウィルスの根本的な違いは何か? メモリ上に配置された1命令だけではまったく区別つかない ウィルスなのかそうではないかではなく、 OSや他のプログラムが正しく動作することを妨害することが根本問題 ○考えるための事例 Reflection on Trusting Trust, Ken Thompson Cコンパイラのハックにより、コンパイル時にパスハード検証ルーチンに バックワードを忍ばせた 教訓「自分の書いたコード以外は信用するな」 B矛盾性 エンドユーザの一部に攻撃へのインセンティブがある 処理装置の物理的所有者と 処理対処の情報の権利者の食い違い Q:インターネットに関するゲートウェイを組込みシステムの供給している側で 用意しないといけないのでは? A:そういう考えもあると思います。 例えば、インターネットサービスプロバイダーさんは、 そういうことをやりたいと思っています。 N社さんとかは、サーバー側でウィルスチェックをしてくれるだとか、 現実に提供しています。 家庭内の機器の管理をプロバイダさんが代行するという、アイディアはあります。 ただ、私は、何か抜けが出てきて、現実に使用するのは難しいのではないかと思います。 少しコストが高かったり、制約が強かったりするけれども安全なインターネットの 一領域をつくるというアプローチはあると思います。 これで、質問の答えになっているでしょうか? Q:直感だけで言ってますが、そのような安全なインターネットを供給してしまった方が かえってコストを抑えれるのではないか? A:システムがステーブルだとその通りだと思いますが、 どんどん新しい機器、新しいサービスが出てくる状態で考えますと、 安全であるることより、新しいサービスを持っていることの方が価値があると ユーザが判断して飛びつくことを考えますと、 今のように、機能が日進月歩している状態では、その方が経済的というのは、 必ずしも成り立たないんじゃないかなぁ〜というのが私の考え方です。 Q:バッファが消えるプリンタなどの技術動向をお願いします。 A:プリンタでは、電源が切れると、消去しますね。 ソフトウェアで、制御してる。 Q:何か他に例あります? A:ICカードチップのふたを開けると情報が消えるようになっている。 Q:捨てたあとの情報漏えいはメーカーの責任? A:PCはエンドユーザの責任になっているが、 組込みの場合は、最低捨てるときのガイドラインぐらいは必要だと思います。 IPAの方で組込み機器のセキュリティのガイドライン作って頂いているので、 そちらの方を参考ください。