Security & Programming Camp 2011

実施報告

開催日及び場所

日時
平成23年8月10日(水)~14日(日)
場所
ホテルコスモスクエア国際交流センター(大阪市住之江区南港北1-7-50)

参加者構成(男女比、地域、年齢、種別)

参加者募集期間

2011年6月27日~7月11日17:00締切

追加募集
「ソフトウェア・セキュリティ・クラス」「セキュアなOSを作ろうクラス」
2011年7月15日~7月25日17:00締切

応募総数

274名(セキュリティ・コース:161名、プログラミング・コース:113名)

参加者数

60名(セキュリティ・コース:45名、プログラミング・コース:15名)

参加者学校種別内訳

学校種別 人数 セキュリティ・コース プログラミング・コース
合計
60
45
15
大学
30
23
7
専門学校
3
3
0
高等専門学校
12
9
3
高等学校
10
8
2
中学校
5
2
3

実施概要報告

実施内容

セキュリティ・コース
情報セキュリティを中心としたITについての意識が高く、将来的に優秀なIT人材として期待されるIT技術者候補に対して、情報セキュリティを中心としたIT化実現のための技術的な目標と高い技術習得への励み、及び安全かつ信頼性の高いIT化の進展について正しい知識を与えることが目的

  • ソフトウェア・セキュリティ・クラス 11人
  • Webセキュリティ・クラス 12人
  • ネットワークセキュリティ・クラス 13人
  • セキュアなOSを作ろうクラス 9人

セキュリティ&プログラミングキャンプ2011「セキュリティ・コース」時間割(PDF:199KB)


プログラミング・コース
高度なソフトウェアを設計・開発できる『可能性』がある若い人材を早期に発掘し、その可能性を現実のものに近付けていくために、プログラミングの楽しさやソフトウェアを開発して広く活用してもらうことの喜びを理解すること、および安全かつ信頼性の高いIT化の進展について正しい知識を与えることが目的

  • プログラミング言語クラス 15人

セキュリティ&プログラミングキャンプ2011「プログラミング・コース」時間割(PDF:189KB)

セキュリティ&プログラミングキャンプ2011レポート

はじめに

 「セキュリティ&プログラミングキャンプ」は、22歳までの学生(中学、高校、大学、高等専門学校など)を対象に、優秀なIT人材を発掘・育成する場として2004年から毎年夏休みに開催されています(2007年度までは「セキュリティキャンプ」として実施され、2008年度から「プログラミング」コースが設置されました)。
 インターネットやコンピュータの利活用あるいは開発の能力が高いだけではなく、その仕組みを奥深くまで探求する意欲と好奇心とを兼ね備えた若者を全国の応募者から選抜し、IT技術の最先端で活躍する現役のエンジニアが指導する5日間の集中的な研修授業です。

 

 8回目となる「セキュリティ&プログラミングキャンプ2011」は8月10日から8月14日までの5日間、大阪南港の咲洲にあるホテルコスモスクエア国際交流センター(大阪市住之江区南港北)で開催されました。8年目で初めて関西圏での開催となりましたが、厳しい暑さの中を全国から60名が集まり、講師やチューター(キャンプ卒業生で構成される授業の補佐役)らと共に文字通り朝から夜までセキュリティとプログラミング漬けの5日間を過ごしました。

 

 セキュリティ&プログラミングキャンプは名前のとおりセキュリティ・コースとプログラミング・コースに分かれています。両コース共通の特別講義や、コースの枠組みを離れて興味あるテーマについて議論するBoF(Birds of a Feather)などもあり、専門の講義時間は実質的に2日間程度(2日目から4日目午前中)とかなり短期間ですが、それだけに退屈な概論や教養よりも本当に必要な知識や実践的なノウハウ、さらに定石の確立していない最先端の話題が豊富に盛り込まれました。
 なお、共通の特別講義として、LISPハッカーとしても知られる竹内郁雄東京大学名誉教授の講演、京都大学OBの「超交流会」メンバーである株式会社クエステトラの今村元一CEOと株式会社はてなの田中慎司CTOと株式会社ゆめみの深田浩嗣社長の3人と参加者によるディスカッション、そしてRuby言語の開発者であるまつもとゆきひろ氏の講演、という3つの授業が初日に行われました。

プログラミング言語そのものを学ぶ

 プログラミング・コースではプログラミング言語クラスの15人が、プログラミング言語処理系、ソフトウェア構成手法、性能改善手法などを学びました。2日目の午前中でソースコードの読み方からデバッグ、ソースコード管理(Git)までひと通りのベースとなるノウハウを習得し、午後からすぐに実践的な講義に移ります。

 

 初日に特別講義を受け持ったまつもとゆきひろ氏が引き続き授業を担当するなど、カリキュラムの多くがRuby言語に割かれていますが、Ruby言語によるプログラミングを学習するというより、プログラミング言語がどのように作られ、どうすればその性能を改善したり機能を拡張できるかを学ぶ題材としてRuby言語が利用されているといったほうがよいでしょう。
 日本から登場したRuby言語は、コアメンバーとして開発に直接関与している人材を講師としてアサインできる利点もあり、またオープンソース系のソフトウェアの利活用では不可欠な開発コミュニティとの関わりについても学ぶことができます。

 

 3日目の午後からは、それまでの講義を踏まえて参加者それぞれが個別課題に挑戦する実習授業です。受講生が7つの課題(うち2人はセキュリティ・コースのCTFに参加)に分かれ、最終日の成果発表に向けてわずか1日半で成果物を作成し、発表の準備を整えなければなりません。
 大人でも大変な作業ですが、参加者は緊張感を持ちながらも、自分のペースで作業を進めていたのが印象的でした。ときおり講師やチューターと意見を交わしたり、ホワイトボードを使って説明を受けたりしながら、最終的には自分の力で実装を進めていきます。作業を進めやすいようにハッカー向けのコンパクトなキーボードを持参した参加者も見られました。

 

 個別課題のテーマとしては文法ハック、可視化・可聴化、プログラミング言語の自作などがあり、実際に発表されたテーマは順に「2重forループを1文で表す文法の追加」「Rubyにインクリメント演算子を実装」「(+)演算子と\\構文の作成」「トレースデータを用いた内部呼び出しの可視化」「Rubyのメソッド定義元を可視化」「Preludeのprecompile」「おれおれ言語PRPR」「変数スコープを持つBASIC言語 Scoped BASIC」「プログラミング言語 Headache」「拡張ライブラリ作成による高速化」「GADT in λΠ」「シャミノ計算」「型付きラムダ計算での型推論」とあります。
 多くの発表が実際に動作する実装によるデモを行い、さらに今後の拡張への余地も見られたことから、キャンプ後のさらなる研鑽が期待されます。実際に過去のキャンプにおいて実習で作成されたパッチがその後の改良を経てRuby言語に正式に採用された例もあり、今後もオープンソースソフトウェアの開発コミュニティとつながりを深めていって欲しいものです。

セキュリティについて自分なりに考える

 セキュリティ・コースには「ソフトウェアセキュリティクラス」「Webセキュリティクラス」「ネットワークセキュリティクラス」「セキュアなOSを作ろうクラス」の4クラスがあり、計45人が受講しました。

 それぞれに基礎となる考え方や専門的なツールの使い方、さらに実習までと濃縮されたカリキュラムが用意されていましたが、その合間に、例えば他のサイトの脆弱性を見つけてしまったときにどのような対応をすればよいか現実的なシナリオとリスクを鑑みながら議論されたり、講義によっては講師の中でも見解の分かれる事柄も敢えて扱うなど、表面的な知識の習得だけでなく、参加者自身が自分なりに深く考えをめぐらす必要があります。

 

 最終日の成果発表では、クラスごと代表者による発表が行われました。ソフトウェアセキュリティクラスが「マルウェア解析」、Webセキュリティクラスが「SQL Injection Challenges」と「Unrestricted File Uploadによる悪意のあるphpスクリプトの実行」、ネットワークセキュリティクラス「実環境におけるパケット解析について」と、それぞれが授業で学んだ手法をまとめました。
 また、OSを自作した経験者を中心に募集されたセキュアなOSクラスでは、講義で得た知見をもとに参加者自身がセキュアなOSの形を考察し、その中から「セキュアストレージOS」と「カーネルを2層に分けたOS」という2種類のアイデアが発表されました。さすがに数日で実際に動作するOSは作成されませんでしたが、新しいOSプロジェクトのキックオフとして意義のある発表だったといえるでしょう。

 

 これらのなかでは、解析に利用するツールを「バイナリアンのバイナリアンによるバイナリアンのための玩具」というフレーズで表現し、バイナリ解析がいかに楽しいかを実に楽しそうに発表したソフトウェアセキュリティクラスが、セキュリティ・コースの最優秀発表を獲得していました。

知識と技能が総合的に問われるCTF

 セキュリティ・コースでは、4日目の午後から夜にかけてCTF(キャプチャー・ザ・フラッグ、Capture The Flag)という競技が開催されました(プログラミング・コースからも2名参加)。
 CTFはセキュリティ知識を競うゲームとして、米国の大規模カンファレンスDEFCONをはじめとして、世界中でさまざまな大会が開かれています。日本ではそれほど盛んではなかったものの、キャンプ直前に開催されたDEFCON 19のCTFに日本のsutegoma2チームが予選2位通過で参加したことで注目されています。
 DEFCON本戦などでは同じ環境のサーバを守りつつ相手の脆弱性を攻める攻守型ルールですが、キャンプではDEFCONの予選と同様にオンラインで出題されるさまざまな問題を解いていく方式で、今回は2010年に続き2回目の実施になります。

 

 大広間に集合した参加者はAからFまで6チームに分かれ、さらにチューターのみで構成されたZチームと、帰国後間もないところを駆けつけてくれたsutegoma2チームを合わせて8チームが、講師陣が腕によりをかけて作成した100以上の難問に挑戦しました。複数のクラスの参加者が協力しつつ、学んだ知識と技術を総動員しなければならず、まさにもうひとつの成果発表だったといえるでしょう。
 途中1時間半の夕食休憩をはさみつつ、6時間という長丁場の競技でしたが、緊張感は途切れることなく、まさに静かな熱気というにふさわしい熱戦が繰り広げられました。黙々とPCに向きあうもの、チームで相談して解法を考えるもの、WiFiの電波で出題されている問題を捕まえるためにPCを持って館内をうろつくもの、ネットワークで検索してヒントを見つけるもの、さまざまな取り組み方が見られました。

 

 順位では、スタートから飛び出したEチームをチューターチームが追い上げ、2チームによる競り合いが続きましたが、終了30分前にトップに立ったチューターチームに対し、Eチームが最後の5分で300点の問題と500点の問題を解いて大逆転する劇的な幕切れとなりました。
 急遽のゲスト参加ということでかなり出遅れたsutegoma2チームも、夕食後の後半戦で3チームをかわして3位。4位のCチームも一時は最下位だったところから追い上げました。
 最多得点のEチーム参加者はひとりで17問(2,800点)を正解するなど、問題を作成した講師陣が驚くほどの解答率でした。また、キャンプ終了後に参加者がブログに感想を書く際に、バイナリ形式や暗号化などの手法を使うなど、CTFの楽しい影響も見られました。

最後に

 そのほかコースやクラスを超えた交流企画として、班ごとに「ネットの危なっかしい人」「わが子の悪事を発見」「キャンプの新コース」の3本から選択した自由発表がありました。
 Twitterなどの炎上が身近なためか1つ目を選ぶ班が多かったようですが、自分たちが発見される側になることを想定する「わが子の悪事」で、PCをリビングに置いて親子の対話を増やすことを提案した班には、テクノロジーに頼らないコミュニケーションの本質を見る目が感じられました。
 また「新コース」としては、エンジニアに付きものの論争をネタにした「エディタ組」や「Gentoo Linux組」など、参加者たちの和気藹々としたムードをよく表した楽しい発表も相次ぎました。閉会式の挨拶で、実行委員長の三輪信雄氏が「参加者のみんながチューターも交えてよく話しているのが印象的でした」と語るように、日本全国から集まった初見の参加者とは思えない打ち解けた雰囲気がありました。
 これはブログやTwitterなどソーシャルメディアの発展により、参加者同士が事前に知リ合うことができたり、会ってからでもお互いの背景を理解しやすいといったことが要因にあるでしょう。また、キャンプ自体が8年という積み重ねを経ているため、インターネットやプログラミングに興味のある学生にはすでによく知られた存在になっていることもあります。

 

 そういった背景も含めて、三輪実行委員長は次のような挨拶で2011年のキャンプを締めくくりました。

 「毎年の経験が積み重なって、素晴らしいキャンプになりました。参加者のレベルも高く、技術力としてトンガった人が集まっている。そのすごい技術を、やはり仕事に使ってほしい。趣味で楽しむために教えているわけではありません。
 参加者のみなさんにお願いしたいのは、自分が社会に出てどんな仕事がしたいかを具体的にイメージしてください。こういう仕事がしたい、こういう会社に入りたいという具体的なイメージを持ってください。日本の産業構造、とくにIT系の産業構造は変えていかないといけない。ぜひ、自分の技術力で、世の中を変えていってください。
 とは言っても腕一本ではなかなか難しい。セキュリティの世界でも最近は攻撃者もチームになっていて、チーム戦が必要とされる時代が来ています。セキュリティ技術者もプログラム開発者も協力して、腕一本にプラス仲間。これで大きな力を発揮できる。そういうコミュニティを作ってください。」

 

 今ではソーシャルメディア等を通じて、毎回の参加者や卒業生、講師、そして今後参加を考えている学生まで含めて、キャンプを中心としたコミュニティは広範囲なものになっています。毎年直接指導される参加者は数十人ですが、その背後には数多くのIT技術者を目指す学生がおり、彼らにとっても指針となるよう今後もさらなる発展が望まれます。

集合写真