検出とは?

ファイル共有(交換)ソフト「Winny(ウィニー)」のネットワークを介して拡散するウイルスにより、日本では深刻な情報漏えいが相次いでいます。米国でもこれら一連の事件はいろいろなメディアで報道されており、日本のインターネット社会が非常に深刻な事態に陥っているという認識が広まりつつあります。
私が所属する米eEye Digital Securityでも、遅ればせながらWinnyに関する本格的なリサーチを数週間前に開始しました。具体的には、Winnyのコード解析やWinnyネットワークの分析を通して、情報漏えいを防止するための手段など、Winnyにまつわる様々な事柄についてリサーチを進めています。後述するように、検出ツールも開発および公開しました。これらについては、主に私ともう一人の日本人エンジニアの金居が担当しています。
今回のリサーチやツール開発に関連した話題として、今回はWinnyを検出する方法についてお話したいと思います。現在はWinny Ver.2が主流ですので、Ver.2について解説します。リサーチでは検出方法以外にも、興味深い結果が複数得られていますので、それらについても「ITpro Watcher」で今後解説したいと考えています。
1つは、リモート・ホストのファイル・システムにアクセスして、Winny本体、もしくはWinnyの設定ファイルを検索するという方法です。この方法は、Winny本体が起動していなくてもその存在を検出できるというメリットがあります。
ただ、ファイル・システムへのアクセスにネットワーク・ドライブを利用した場合、検査に時間がかかるというデメリットがあります。特に、検査対象ホストの数が多い環境では、検査に膨大な時間がかかります。そのような場合は、各マシンにファイル・スキャナをインストールして実行することになります。いずれにせよ、リモート・ホストのファイル・システムに対するアクセス権が必要となります。
2つ目は、リモート・ホストに対してポート・スキャンを行い、Winnyプロトコルでサービスを提供しているポートの有無を調べるという方法です。この方法は、前述したファイル・スキャンに比べて非常に高速です。
また、リモート・ホストのファイル・システムにアクセスする必要はありませんので、それらへのアクセス権は不要です。Winnyが利用しているポートにさえアクセスできれば、その存在を確認できます。ただし、プロトコル検出に基づいた手法ですので、当然ながらWinnyが起動していないと検出できません。
3つ目は、ネットワークを流れるパケットをモニタリングして、Winnyを受動的に検出するという方法です。上記二つの方法とは異なり、この方法ではホストに対してアクティブにスキャンを行う必要がありません。ルーター直下のハブのミラー・ポートなどでモニタリングすれば、ネットワーク内にWinnyユーザーが存在するかどうかを確認できます。
また、各ホストに対する特別なアクセス権も不要です。さらに、検出されたWinnyセッションに対してkillパケットを飛ばすなどすれば、ネットワーク内におけるWinnyの利用を制限することも可能です。
しかし、この手法もプロトコル検出に基づいていますので、Winnyが起動していないと検出できません。加えて、ルーターの内側で、そのルーターに出入りするパケットすべてをモニタリングできることが前提となります。
リモート・ホストのファイル・システムにアクセスする最初の方法を用いたスキャナについては、いくつかのアンチウイルス・ベンダーがリリースしています。eEyeで、以下の二つのファイル・スキャナをテストしました。その結果、両ツールとも非常に精度良くWinnyを検出できました。
2番目および3番目の手法を用いたスキャナについては、eEyeが一般に無償配布しています(関連記事)。「Winny Scanner」と「Winny Monitor」です。詳しくは、以下のサイトを参照ください。
そのほか、Active Directoryのグループ・ポリシーでWinnyの実行を禁止する方法もあります。管理対象システムにあらかじめインストールして利用する、いわゆる「エージェント・タイプ」のWinny検出・対策のツールも各社からリリースされています。
いずれの検出・対策手法にも一長一短があるので、必要に応じてこれら手法を組み合わせるなどし、効果的に組織内のWinnyを検出・遮断できるような仕組みを構築するとよいでしょう。
ご存じの方も多いと思いますが、Winnyパケットは「RC4」と呼ばれるアルゴリズムで暗号化されています。このため、パケット・モニターでその内容を確認しても単なる乱数の羅列にしか見えず、Winnyパケットの特徴を見出すことはできません。
また、利用するポート番号には、Winnyが起動した際にランダムな番号が割り振られるので、ポート番号で検出することもできません。利用するポートがランダムである以上、プロトコル検出を行う必要があります。そのためには、暗号の解読が必要不可欠となります。
とはいえ、Winnyの暗号は単純であり、簡単に解読できることは周知の事実となっています。Winnyのノード間通信で利用されている暗号アルゴリズムは共通鍵暗号方式のRC4ですので、共通鍵はパケット、もしくはコード中に必ず存在することになります。これは、コード解析されないことが前提となっている仕様であり、暗号通信としては脆弱なものです。
【4月12日追記】4月12日にいただきましたコメントにありますように、上記パラグラフ(「とはいえ」から「暗号通信としては脆弱なものです。」まで)には誤解を招く表現がございました。つきましては、以下の表現(「とはいえ」から「至らなかったようです。」まで)に変更いたします。【以上、4月12日追記】
とはいえ、Winnyの暗号は単純であり、簡単に解読できることは周知の事実となっています。Winnyのノード間通信には認証がなく、また、利用されている暗号アルゴリズムは共通鍵暗号方式のRC4のみです。
このため共通鍵は、動的に生成されたものがそのまま相手ノードに送られているか、あるいはコード中に記述されているということになります。これは、コード解析されないことが前提となっている仕様であり、暗号通信としては脆弱なものです。RC4を利用していることが問題ではなく、鍵が安全に管理・受け渡しされていないことが問題です。
しかし、公開鍵暗号を共通鍵の受け渡しに利用する場合、鍵ペアを使い回すと、公開鍵がノードのユニーク情報になってしまい匿名性が損なわれます。匿名性を保ちつつ公開鍵暗号方式で安全に共通鍵を受け渡しするような検討がなされていたようですが、結局実装には至らなかったようです。
一応、パッカーによるコードの難読化やデバッガ検出などのリバース・エンジニアリング対策を施して、そのままでは実行ファイルを解析できないようにしています。しかし、アンパッキングやデバッガ検出の無効化もさほど難しくはないので、「Winnyパケットの暗号は既に解読されてしまっている」といってよい状況になっています。
前述のように、暗号化されたままではWinnyパケットの特徴を見出せません。しかし解読さえすれば、Winny通信には特徴があることが分かります。その特徴からWinnyを検出できます。具体的には、Winnyが送出する「初期鍵パケット」の有無を調べることで、Winnyのトラフィックを検出することができます。
つまり、ブロック長は先頭4バイトの"01 00 00 00"(1バイト)、ブロック・データは"61"('A')となっています。この部分は暗号化されているので、そのままではこのような値になっていません。同じ初期鍵パケットに含まれる「暗号キー」で復号する必要があります。
具体的には、以下のような手順となります。Winnyのファイル転送ポートにTCP接続すると、この初期鍵パケットがWinnyホストから送信されます。例えば、以下のようなデータが流れてきた場合、暗号キーは"76 CA DF 6C"となります。
そして、この関数の出力結果を鍵にして、暗号キー以降の5バイト"91 D9 71 8F 13"を復号します。
2パケット目以降は、この暗号キーをベースにした新たなキーを作成し、パケットを復号します。キャッシュ・ファイル処理、ファイル名処理、バージョン番号処理などにおいても、特別なキーを使ったり特殊な演算を施したりするなどして、解読を少しでも難しくするようにしています。いずれ、これらの暗号についても解説したいと思います。
Winnyプロトコルを利用すれば、Winnyネットワーク内のノード情報(IPアドレス、ポート番号、クラスタリング情報など)を収集することができます。また、キー・パケットの収集により、特定ノードが持つファイル一覧や、特定ファイルを持つノード一覧なども取得できます。
このような仕組みを実現するWinnyネットワーク分析システムは既に実装が完了しており、今後、何らかの形で一般に無償配布できればと考えています。その他、漏洩してしまった情報の追跡や消去を支援するためのツール群も開発中です。こちらもあわせて無償配布したいと考えています。
その他、Winnyのリサーチを通していくつかの興味深い結果が得られています。情報漏洩対策などに有効利用できる結果については、詳細を随時公表する予定です。また、ソフトウエアとして実装し、そのソフトウエアを公開していきたいとも考えています。
分析システムの詳細な仕組みや実装については、折を見てここでお話したいと思います。また、5月12日に「Inside Winny」と題して、Winnyの解析とそのセキュリティ脅威分析について講演する予定です。興味がございましたらぜひご参加ください。同セミナーの詳細は、住商情報システムの「eEye Digital Security Products」ページに掲載しております。

[ 55] 検出ツールの開発者が語る,「Winnyを検出する方法」:鵜飼裕司のSecurity from KAGURAZAKA:ITpro
[引用サイト]  http://itpro.nikkeibp.co.jp/article/Watcher/20060411/235051/

スイスとフランスの国境にあるCERN研究所で建設が進められているLHC計画については以前にもご紹介しました。LHC計画では4つの巨大な測定器を使って素粒子のさまざまな反応を調べますが、その中でもひときわ大きいアトラス測定器(図1)には、日本のグループもいろいろな種類の検出器を作って提供します。
半導体のシリコンを用いて素粒子の飛跡を捉えるシリコン検出器のモジュールの製作の様子と、生産が完了したニュースをお伝えしましょう。
LHC計画はジュネーブ郊外の地下約100mに周長27kmの巨大な加速器を作る計画です。2007年の実験開始に向けて加速器を構成する電磁石の据え付けや、アトラスやCMSなどの巨大な測定器の建設が進んでいます(図2)。
アトラス測定器は、様々なの粒子検出器から成る巨大な汎用測定器の一つです。アトラスを構成するさまざまな検出器は全世界約150の大学・研究機関の共同研究者が分担して、厳しい品質管理の元に製造を進めています。
KEKと国内15の大学からなるアトラスの日本グループは、超大型超伝導ソレノイドの製造、シリコンマイクロストリップ飛跡検出器(SCT)及びミュー粒子検出器(TGC)と呼ばれるモジュールの量産に取り組んで来ました。以前お伝えした超伝導ソレノイド電磁石の現地での試験に引き続いて、シリコンマイクロストリップ飛跡検出器モジュールとミュー粒子検出器モジュールも国内での量産を終了しました。今回は、シリコンマイクロストリップ飛跡検出器モジュールの量産についてお話しましょう。
SCTとはSemiConductor Trackerの略で、シリコンマイクロストリップ測定器を用いた素粒子の飛跡を検出する装置です。電荷を帯びた粒子が半導体中を進むとき、半導体中に電子・ホールのペアを作ります。この電子或いはホールを電極に集めると、電気信号として読み取ることが出来ます。半導体は精密な加工ができるので、幅の狭い帯状(マイクロストリップ)に電極を作って信号を読み出すことで、素粒子が通過した場所を数十μmの精度で決定することが出来ます。
アトラス測定器ではSCTの他にも、シリコンピクセル位置検出器(PIXEL)と遷移輻射型ストローチューブ位置検出器(TRT)と呼ばれる飛跡検出器を組み合わせて、粒子の飛跡を正確に捉えます。電荷を帯びた粒子は超伝導ソレノイド電磁石が作り出す強力な磁場で軌道が曲がるので、その軌道を正確に捉えることで、粒子の運動量と発生点を精密に測定することができます。
シリコンマクロストリップ位置検出器は、極めて高い位置分解能を持つために、高エネルギー加速器実験の分野で幅広く用いられていますが、アトラスで用いられるものはこれまでで最大の総面積(61m2)となります。
日本のグループは、中央バレル部と呼ばれる円筒形の部分のモジュール設計と製造を担当しました。このバレル部は、モジュールの一つの大きさが12.8cm×6.4cm(図3)で、これを2,112台、4層の円筒形状に配置します。円筒は半径が30cmから52cmで、長さは150cmです。
SCTモジュールは、ベースボードと呼んでいる基材の表裏に、各2枚のシリコンマイクロストリップセンサー合計4枚を張り合わせることで作られています。4枚のシリコンセンサーは、全て同一のもので、表面には、80μm間隔のストリップ(短冊状の構造という意味)電極が形成されています。シリコンセンサーの大きさは、6.4cm×6.4cmで、768本のストリップを有します。表裏シリコンセンサーは、±20mrad(±1.15°)傾けてあり、2次元の位置情報が得られるようになっています。シリコンセンサーで検出された微弱な電気信号は読み出し回路によって増幅され、On/Offのヒット情報としてデジタル処理されます。SCTバレルモジュールで使用された、読み出しVLSI回路を搭載する高精度・高熱伝導・低質量ハイブリッドもまた、日本グループが設計・製造しています。
SCTモジュールの大きな特徴として、衝突点の近くで10年間で受ける莫大な放射線量(3×1014 p/cm2)に耐えられるよう設計され、部品は耐放射線試験を行い合格したものだけが採用されています。さらに、放射線損傷の効果を軽減するために、モジュールは、摂氏-10度の低温環境下で使用されます。
ところで、KEKB計画のBelle測定器でもシリコンマイクロストリップ位置検出器(シリコンバーテックス検出器)が重要な役割を果たしています。Belle測定器では2次元位置情報を得るため両面読み出しシリコンマイクロストリップセンサーを使用していますが、アトラスのSCTでは放射線耐性及び大面積(Belleの約1000倍)をカバーするコストを考慮し、新規開発の片面読み出しシリコンストリップセンサーを使用しています。従って、2次元位置情報を得るため片面読み出しシリコンストリップセンサーを両面に1μm程度の精度で組み立てる技術開発が必要となりました。
SCTモジュールの製造は、予備品を含めて2600台を日本、英国、米国、北欧チームの分担で行われました。日本のモジュールの製造は2002年1月から開始され2004年12月に終了、3年の月日を要して、981台のモジュールが製造されました。
図4がモジュール組み立てのための精密組み立て装置の写真です。センサー表面上にある位置合わせのためのマークをカメラで読み込んで、パターン認識処理を行うことで、目標位置とのずれを1μm以下の精度で検出します。このずれを、X軸方向、Y軸方向及び回転を自動調整して、そのずれを1μm以下に追い込んで行きます。これを両面で繰り返し、精密に両面を合わせるジグにより必要な両面の位置精度を確保しています。製造開始時の数台を除いて、目標の組み立て精度でモジュールを組み立てることに成功しました。
センサーとセンサー間、センサーと読み出し回路間は、アルミのワイヤーボンディングによって結線されます(図5)。一つのモジュール当たりのワイヤーボンディングの数は、約5千箇所あり、日本でのワイヤーボンディングの総数は、約500万箇所になります。ワイヤーボンディングは、工業的に確立された技術ですが、高エネルギー加速器実験の検出器の製造過程でのこの様な大量のワイヤーボンディングの経験は前例がありません。このために、モジュール製造現場で完成直後にモジュールの性能評価試験を行い、素早くフィードバックをかけることで、ワイヤーボンディングの不良率を4×10-5以下に押さえることに成功しました。
さて、みなさんは、この2,112台のモジュールをシリンダーへ取り付ける作業がどのように行われると思われますか? 隣り合うモジュールは、粒子検出器として隙間が出来ない様、少しづつ重ねて取り付けられます。モジュールの間隔は約1mmで、モジュールどうしは接触してはならず、モジュールを取り付け時に保持出来る場所はベースボードの端部だけです。このために、シリンダーへのモジュール取り付けはロボットで行うこととし、ロボットの設計・製造は日本グループが担当しました。ロボットは、モジュールを取り上げてシリンダーの所定の位置まで運び、 トルクコントロールされたドライバーによりネジ止めします(図6)。もちろん、モジュールの取り外しも、ロボットが行います。
SCTモジュールの製造は終了して、現在は、SCTモジュールのシリンダーへの取り付け作業がフルスピードで行われています。4つのシリンダーへのモジュール取り付け作業が終了すると、アトラス測定器本体への組み込みが開始されます。
    注目を浴びる日本の超伝導技術 〜アトラス用電磁石の地上励磁試験〜
アトラス測定器とその内部にあるシリコンマイクロストリップ飛跡検出器(SCT)モジュールの拡大。アトラス測定器は高さ 22m、全長 46m、重量 7000トンの巨大な汎用測定器の一つ。
アトラス測定器が建設される地下の巨大な実験ホール。7階建てのビルが丸ごと入る大きさ。
センサーの精密位置合わせの心臓部であるアセンブリーステイション。モジュールの組み立て精度を1μmに追い込んでいきます。
センサーとセンサーの間のワイヤーボンディング(結線)の様子。左側のセンサーと右側のセンサーが結線されていきます。

[ 56] アトラスの半導体検出器
[引用サイト]  http://www.kek.jp/newskek/2005/marapr/ATLAS.html

誤り検出訂正(あやまりけんしゅつていせい)またはエラー検出訂正 (error detection and correction)とは、データに符号誤り(エラー)が発生した場合にそれを検出、あるいは検出し訂正することである。検出だけをする誤り検出またはエラー検出と、検出し訂正する誤り訂正またはエラー訂正を区別することもある。誤り検出訂正により、記憶装置やデジタル通信・信号処理の信頼性が確保されている。
一般に誤り検出訂正では、k 単位長(k ビット、k バイト など)の符号を、n = m + k 単位長の符号語に変換する。これを (n, k) 符号、あるいは、符号形式を添えて (n, k) ××符号などと呼ぶ(誤り訂正符号を特にECCと略す)。符号語は、最少ハミング距離が d > 1、つまり、互いに少なくとも d 単位が異なっていて、この冗長性を利用して誤り検出訂正がなされる。dを添えて、 (n, k, d) 符号ともいう。
適切な (n, k, d) 符号は、符号語あたり d - 1 単位の誤りを検出でき、[(d - 1) / 2] 単位([ ] は床関数)の誤りを訂正できる。d ≦ 2 ならば、誤り訂正能力は [(d - 1) / 2] = 0 となり、単なる誤り検出となる。ただし、データの消失に対しては、つまり誤り位置がわかっているときは、d 単位の消失を訂正できる。これを特に、消失訂正と呼ぶ。単なる誤り訂正も、最低 1 単位の消失訂正能力を持つ。
双方向の通信では、誤り検出さえできれば誤り訂正ができなくても、送信者に再送を要求できれば、実質的に誤りを訂正できる。これを自動的におこなう仕組みを、自動再送要求 (ARQ, Automatic Repeat reQuest) と呼ぶ。
多くの誤り検出・訂正は、全体の誤り率が許容範囲でも、バースト誤りに対しては、1つのブロックに多くの誤りが集中するため、対応できない。そこで、符号の順序を入れ替え、同じブロックのデータを分散させ、バースト誤りが1つのブロックに集中しないようにする。この技術をインターリーブという。
特に音声や映像など、人間の感覚に訴える信号のディジタル化されたデータで真の値から多少の誤差が許容される場合、誤り検出は可能でも誤り訂正が不可能(訂正能力を超えている)かまたは誤り訂正が実装されていないとき、元のデータ自身に含まれる冗長性を利用して欠落データを予測して置き換えることがある。これを特に誤り補正と呼んで区別する。補正されたデータは真の値と一致するとは限らないが、真の値から許容される誤差内にあると期待される。CDなどでは、誤り補正がデータ読み取り誤りに対する「最後の手段」として使われている。
誤り補正では、一般には、近傍の標本に重み付けをした和、すなわちフィルタを畳み込んだ値を予測値(補正値)とする。特に、直前・直後の標本を使うものを、以下のように呼ぶ。
誤り補正は原信号自身に含まれる冗長性を使うため、データ圧縮、特に非可逆圧縮と同種の原理に基づいている。

[ 57] 誤り検出訂正 - Wikipedia
[引用サイト]  http://ja.wikipedia.org/wiki/%E8%AA%A4%E3%82%8A%E6%A4%9C%E5%87%BA



お気に入り



  • track feed
    • seo