ここから本文です

中学生が「ロボットカー」で情報セキュリティを学ぶ

@IT 8月23日(火)6時10分配信

 2016年6月25~26日、高知工業高等専門学校(以下、高知高専)で「セキュリティ・ジュニアキャンプ in 高知 2016」が開催された。将来の優秀なIT人材の育成を目的とした合宿形式のワークショップ「セキュリティ・キャンプ全国大会」からスピンオフした同イベントは、中学生を対象とした2日間の専門講座と、一般向けの公開講座の2部構成で行われた。本稿では前編として、専門講座の様子をレポートする。

【その他の画像】高知高専のチューターの説明に手を動かす中学生の参加者

●情報工学の基礎知識として身に付けたい情報セキュリティ

 合宿形式の学生向け情報セキュリティ勉強講座「セキュリティ・キャンプ」において、唯一中学生を対象とした高知の「セキュリティ・ジュニアキャンプ」は、2016年で2回目を迎える。

 国立高等専門学校機構、セキュリティ・キャンプ実施協議会とともに同イベントを主催した高知高専では現在、2018年度の情報セキュリティコース新設に向けて準備を進めている。コース長の谷澤俊弘氏は、「今のところ、国立の高専で情報セキュリティコースを導入するのは本校が初めてだ」と述べ、「情報工学の中で情報セキュリティをしっかり学べるように、3年生からは大学の情報課程を見据えた専門科目を増やし、セキュリティ演習で実践力を身に付けられるカリキュラムを開発している」とその趣旨を説明した。

 そんな高知高専だからこそ、中学生が参加できるセキュリティ・ジュニアキャンプには大きな期待を懸けている。「情報セキュリティは、情報科学の“根っこ”にある重要な考え方。中学生のころから情報セキュリティに触れ、それぞれの視点や感性を育んでもらいたい」。高知工業高等専門学校の佐藤公信氏は、同イベント発足の思いをそう語る。

 そんなジュニアキャンプの今回のテーマは、「ロボットカー」だ。中学生たちはロボットカーの基本操作の一部をプログラミングし、ネットワーク経由でロボットカーを遠隔操作する方法を学ぶ。そして、デバイスがインターネットにつながるとはどういうことなのか、攻撃者にハッキングされたらどうなるのか、それを防ぐにはどんな対策が必要なのかを体験を通じて学習していく。23人の参加者にとっては、情報セキュリティの楽しさと怖さを実感する2日間になったはずだ。

●慣れないCLIに戸惑いながら、ロボットカーの操作コードを書く中学生たち

 1日目の初めには、ロボットカーを動かすためのLinuxやプログラミングの基礎に関する講義が行われた。ロボットカーは、小型PC「Raspberry Pie 2 Model B」を搭載しており、PCから無線LAN経由でRaspberry PieのWebサーバに接続し、ロボットカー前方に取り付けられたカメラや車輪を制御するDCモーターを操作する仕組みだ。

 ロボットカーの構成や操作の概要は講師の服部祐一氏が説明し、Linuxの基本コマンドやnanoテキストエディタを使ったファイルの編集方法などは、茨木隆彰氏が解説を行った。全体像が見えたところで、いよいよプログラミング開始だ。

 なお、ロボットカーを操作するためのプログラムには、既に前進・後退・停止を指示するコードが書かれている。あとは、これらのコードを応用して左右に旋回するコードを書くのが学生たちの役目だ。また、毎回コマンドを入力しなくてもいいように、左右・前進・後進をボタンで操作できるWebページも作成する。

 とはいっても、WindowsやMacのグラフィカルなインタフェースしか知らない中学生たちにとって、Linuxでのコマンド操作は未知の世界だ。本講座の1週間前にはLinuxを使ったことがない希望者向けに90分の事前勉強会が開催されたが、慣れない操作環境に苦戦する参加者も少なくなかったようだ。

 小学校5年生のときに父親からPCを与えてもらったと話す中学1年生は、「普段はWindowsしか使っていないので、Linuxの黒い画面が難しく感じる」と冴えない表情。また、学校でも仲良しと話す中学3年生の2人組は「隔週1回のITの授業で、Scratchでロボットカーを操作するプログラムを作ったことがある」と教えてくれた。そのため、コンポーネントを組み合わせるという発想は受け入れやすかったようだが、その中身を自分で書くことにはやはりなじみがないようで、戸惑っている様子だった。結局、初日は多くの参加者がプログラムを完成させることができず、翌日に作業を持ち越すことになった。

 夕食後は座学の時間だ。最初にセキュリティ・キャンプ講師の園田道夫氏が、脆弱(ぜいじゃく)性やバグとは何か、攻撃を防ぐにはどう対策すべきか、といった議題を投げ掛け、ディスカッションを行った。攻撃を受けたらどうするかという質問に対して「反撃する!」と即答する参加者を、「それは危険な考えだ」と園田氏が苦笑しながらたしなめる場面もあるなど、最後まで活発な意見が交わされた。

 また、続く講義では、同じくセキュリティ・キャンプ講師のはせがわようすうけ氏が、Webアプリケーションなどに脆弱性があると何が起こるのか、どうすれば対策が可能なのかを説明。欠陥のあるゲームでチートができるかどうかを実際に触って探るなど、飽きさせない仕掛けで情報セキュリティの大切さを伝えた。

●みんな「いたずら」は大好き? 脆弱性の怖さを遊びながら体感

 2日目。中学生たちは引き続きロボットカーのプログラムの完成を目指す。当初はプログラムが完成した後は、ロボットカーに搭載されたNFC(Near Field Communication)リーダーと、レースコースに埋め込まれたNFCタグを使った陣取りゲームが開催される予定だった。コースには遮断機があり、他の車の位置を確認しながら遮断機を下ろして進行を妨害するなど、面白い仕掛けもあった。

 ところが、ロボットカーを遠隔操作できるようになった途端に、Webページの操作ボタンを連打する参加者が続出。レースコースが敷かれた別フロアの会場では、ロボットカーが突然走り出して壁に激突したり、タイヤが高速で空回りして摩耗したりと、もはや“無法状態”に。結果的にハードウェアが耐えられず、残念ながらレースは開催できなくなった。

 そこで予定を変更し、残りの時間はネットワークを介して互いのロボットカーを乗っ取ることができるかを、参加者自らが考えながら実践する時間に充てられた。結果的には、この予定変更が功を奏した。実は、本イベントでRaspberry PieのWebサーバや、それにログインするためのID、パスワードは全員が共通のものを使用していた。つまり、IDやパスワードを変更するなどの対策をしない限り、誰もが簡単に他の参加者の環境に変更を加えたり、ロボットカーを操作できてしまったりする状態になっていた。

 そんな環境の下、“いたずら”が許される時間となるとがぜんやる気が出てきたのか、Webサーバを再起動をすることでしばらく操作が行えなくなることに気付いた参加者の1人が、リブート攻撃を開始。その攻撃手法が他の参加者にも知れわたり、運営側から禁止されるまで、教室ではリブートの嵐が吹き荒れた。

 また、他の参加者のコードに“悪意ある”変更を加える参加者もいた。「ただコードを消すのではなく、変更されたことが分からないように書き換えるのがプロのやり方だよ」というチューターの“悪魔のささやき”もあり、「;」を「i」に、「I」を「1」に変更するなどの手法が次々と生まれ、フィッシングサイトのURLなどでもよくある、「紛らわしい文字列」の悪用事例を遊びながら知るという、思わぬ機会になった。

 さらに、今まで受け身で受講していた参加者にも、この時間をきっかけに変化が見られた。ある参加者は、process killというコマンドで実行中のプロセスを終了できることを知り、早速コマンドを入力してみたが、「pidまたはprocess名が必要」と表示されて失敗。pidとは何か。process名はどう調べればいいのか。分からないことを目の前にして、自ら進んでインターネット検索を始めた。分からなかったら、まずは調べてみる。そんな自発的な姿勢も、知らず知らずに身に付けることができた。

 こうして一通り攻撃を終えた後は、こうした攻撃を受けないための対策として、服部氏が「パスワードを推測されにくいものに変更する」「controller.html(ロボットカーの操作ボタンを配置したWebページ)のファイル名を変更する」「パスワードの文字数やパターンを工夫する」などの方法を紹介。攻撃に夢中だった中学生が、今度は防御の大切さを学んだ。

 「初めてモノをテーマにし、運営側としても課題の多いキャンプとなったが、1つずつ丁寧に課題を回収しつつ、さらに楽しいキャンプになるようバージョンアップしていきたい」(佐藤氏)。高知高専やセキュリティ・ジュニアキャンプの取り組みは、まだ始まったばかりだ。

[谷崎朋子,@IT]

最終更新:8月23日(火)6時10分

@IT