動的再構成プロセッサに搭載した異常通信の探知機能
日立中央研究所の方。
ルータなどで行う DDoS をはじめとする攻撃からのプロテクション。
FPGA なんかでやると、ルールの更新などに時間がかかってしまうため、動的再構成デバイスがよさそう。防御方式(アルゴリズム)も新しく提案しており、面積を削減しつつスループット向上と異常通信遮断までの時間短縮を図っている。汎用のマイクロプロセッサを使う場合と比べると、あまり大きなメモリが使えないところが難しいが、うまいことやっている模様。
Q & A
井口先生: アルゴリズムが変わるってどれくらい変わるのか?
→1パケット毎に configuration が変わるのが理想的なので、FPGA だとちょっとしんどいかも。いまはまだそこまで行ってないのだけれど。
DDoS のは DDoS の人とか、P2P は P2P の人とか、それぞれの攻撃の種類によって新しい開発者が必要?
→C 言語でいうところの数十行程度の変更なのだけれど、ハードウェアにすると(判定部分を作ったりするのが)大変
飯田先生: 再構成するのはどのタイミング?
→1500octet なパケットがきたときに、判定に使うのはほんの一部なので、使わない部分が到着している間に再構成すればよい。64octet な packet とか、短いのが連続してくるとだいぶキビシイ
NEC 梶原さん: 検出するときに、テーブル参照だけすればよいのであれば、データパスそのものは書き換えなくて済むわけで、reconfigurable である必要はないと思うのだが
→アルゴリズムそのものが変わらないと対応できないので、そういう構成はちょっとムリです
FPGAを用いたウィルスチェックシステムの提案
東邦大学のひと。
802.3 (Ethernet) のレベルでパケットをがーっと読んでウィルスチェックしてくれるシステム。set top box 用みたいな感じ。ClamAV で使われている、Virus の signature から HDL を自動生成するところがカッコイイと思う。ていうか、10Gbps ですかマジですか。FPGA は Stratix で、33MHz で動かしております。
複数の Ethernet フレームに分割された virus が原状だと検出できませぬ。あと、検出後にどうするかが問題だ。こっちは実装云々というより、アイデアの問題かもな。
なんかこれすごいですよ。質疑応答も大盛り上がり。
トヨタITの方: データベースだけを更新するやり方で OK?
→ワイヤのつなぎ方でマッチングをしているので、回路の構成そのものを変更する必要がある。
データベースだけ更新する方法だとどうよ?
→そうするとメモリの読み出しとかが問題になってしまう (そりゃそうだ)
FPGAの構成データもネットワークで転送するわけだが、それが安全であることはどうやって保証する?
→FPGAの暗号化機能があるので、構成情報を暗号化して送信すればOKでないかな
お名前失念しました: signature の長さと数を教えてください
→SW で使っているものだと数百ビット程度のものが多い。FPGA 実装では 64bit でマッチングして、256 種類の signature を処理している。antivirus なソフトウェアは数万とか対応してるわけだが、現実に同時に流行ってるやつは100種類くらいなので、意外に充分かも
松下の前田さん: パターンが更新される前にやられちゃったら終わりだと思うんですが、けっきょく PC のほうに対策用の何かを入れなきゃいけない?
→まあ、なんでも2重3重にやらないとダメですよね。あとは、ネットワークの入り口においておくことで、スループットを落とさずにネットワーク全体を守ることができる。ディジタル家電とかも含めてな。
これ、antivirus software のデータベースを更新するときにパケットが捨てられちゃうことってないのか? とか思うんだけど、本質的じゃないし、ま、いっか。
Reconfiguration による FPGA の固定故障検出
平木研の中村さん。
宇宙とか砂漠とか無人島で FPGA が壊れちゃうと交換しにいけないので、どこが壊れたかをリモートで検出できる仕掛けが必要。部分的にぶっ壊れている場合にそこを使わずになんとかする方法、というのはわりとみんなやっているわけだが、検出のほうはうぬぬぬ、という感じなわけで。
検査時間に効いてくるのは当然、検査対象のサイズとテストの回数なので、そこを小さくすることを目指す。
使っている回路だけをテストするとか、0/1 に固定されている場所はチェックしなくておっけいとか、そういったところで検査対象の回路規模を絞り込む。
Xilinx の ncd ファイルを ncdread でテキストにして、配置配線情報をテキストにして読んでいる。んで、そこから故障検出回路を作るわけだ。
広島市立大の井上先生: 入力を動かしたときに応答がトグルするかどうかだけチェックするだけじゃだめで、正しく動いていて出力に伝わるかをみないといけないと思うわけですが
→あ、ちゃんと、結果が正しいかはチェックしています
明治大学の井口先生: 検査というか、どこが壊れてるかを診断するところまで考えてるわけですよね?
→はい
そのほかの FPGA テストの手法との差を明確にするとよいのでは