セキュリティ・キャンプ2013中央大会に参加してきました②

ちょっと忙しくなって①から間が空いてしまいましたが続きを書きます。
特に来年度以降参加しようと思っている人たちに何かの参考にしていただけるとうれしいです。

参加しようと思ったきっかけ

大学の入学式が終わりぶらぶらとサークルを見て回っているときに中学受験時代に同じ塾だった友人にばったり再会しました。
6年間音信不通で顔も忘れ去っていたのですがいつのまにか情報系のガチ勢になっていたらしく、その友人に誘われたのが直接のきっかけです。
あとは完全にガラパゴス状態だった高校時代に初めて参加したSuperComputingContestが楽しかったのでオンサイトのイベントにもう一度参加してみたいなあというのもありました。

ゼミ・テーマを決める

OS自作入門という汎用OS自作のバイブルがあります。
僕はちょっと早めに入試を終えていたので、暇だった1か月半ほどを使ってこの本を読み、付属のはりぼてOSの改造をしていました。
この本の著者の川合秀実先生がゼミを開いていらっしゃると知ってこのゼミに応募することを決めました。
テーマは自然に「セキュアなOSをつくろう」に決定。

参加決定まで

誘ってくれた友人はソフトウェアクラスの応募用紙についていた問題を瞬殺してさっさと提出していましたが、OSゼミの応募用紙はこれまでの開発経験と開発計画・意気込みを文章で書く形式だったので僕はちんたらとOSのセキュリティについて調べたり目標のOSを考えてみたりしていました。
もともとはりぼてOSを改造していたときに持っていた考えと、Win8MacOSXがスマホOSライクに流れていく感じなどに意見を持っていたのですが、それを詳しく調べて文章にまとめました。
そして図書館でOSのセキュリティについて調べていたときに見つけた本も参考にしました。

この本ではパケットの監視と学習でしたが、これからAPI呼び出しの監視と学習に話を広げ、文章にまとめました。

残りの行でひたすら自分の夢を語りました。今振り返ると恥ずかしい…ですがおそらくこの部分が大事だったと思います。
自分の将来にとってセキュリティを学ぶことにどんな意味があるのかといってことを書きました。

提出から待つこと1週間、参加決定のメールが届いたときはものすごくうれしかったです。
正直なところ全く実力が足りていないと感じていたのでだめだったら来年応募しようという気持ちでした。

しかし誘ってくれた友人が落ちてしまい、ネットも含め参加者に知り合い0という事態でかなり不安でした。

キャンプまで

それから2か月間、サイボウズLiveでお尻を叩かれながらOSの設計・実装を進めました。
はじめてアセンブラをごりごり書いたりLinux kernelの中身をのぞいたりと初めてだらけの2か月でした。

もともとはりぼてOSベースのOSに機能を付けたそうと考えていたのですが、やはり本を読んだだけでは理解ができていない部分が多かったのでこの機会にフルスクラッチに挑戦してみることにしました。

この時期はロボコンや期末試験が重なりなかなか時間をとれず計画通りには進みませんでした。
そして遅れを取り戻せないままキャンプに突入することに…

キャンプ中

0日目
当日朝に新幹線に乗る日程はとても危なそうだったので会場とは別のホテルに前泊していました。
レゴショップや本屋によったり千石電子で電子部品漁ったりと満喫。

f:id:domitry_h:20130812203607j:plain

秋葉楽しい!!✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
夜は割り込み処理のバグをつぶしていました。

1日目
朝のうちにホテルをチェックアウト。ここで持ってきた無線マウスのレシーバを家に忘れてきたことに気づき家電量販店を探すものの間に合わず。
集合時刻の1時間ほど前に到着したらもう名刺交換が始まっていてびっくりしました。
ここで初めて川合先生とお話しました。
その後昼食をはさんで特別講義。
1人目はNICTの井上室長。ネットワーク攻撃の可視化システムがものすごくかっこいい。


nicter - Technology for visualizing and analyzing ...

2人目の大橋検事はネットに関連する法律について講義されました。
途中で出てきた悲ピーがセキュキャン勢に大流行。

その後チュータープレゼンでセキュキャンの先輩方のお話を聞きました。
プレゼン力をつけなければと決意。
その後はグループワーク。

2日目
システムクラスは1日中各テーマのコーディングを進める日でした。
発表する部分と全く関係ない機能(壁紙)を実装しようとし、C++/CLISTLの連携にハマって5,6時間食いつぶしつらみが増す。(チューターさんに助けていただきました)
既存のコードちょっと書き直すだけですから余裕っすよーwwwとか言ってた自分が憎い…
ゼミの人は皆設計も実装も速くて感嘆。
特にOSECPUに見つかった脆弱性やメンバーが欲しいという機能をその場で実装してcommitされる川合先生がとてもすごかった。
この後夜10時まで必死でコーディングしてました。

3日目
午前中は企業見学。前日夜2時まで起きていたためか寝坊してしまいモーニングコールをかけていただく。
迷惑をかけてしまい本当に申し訳なかった…
僕はYahoo!Japanさんの見学に行かせてもらいました。
あまり詳しく書けませんがすごく開放的なオフィスで、こんなところで働いてみたいなあと思いました。
午後から再びコーディング。前日の苦労が嘘のように進むものの予定には届かず。
夜はBOFがありました。
僕はアセンブラ短歌に参加させていただきました。
時間内に短歌が完成しなくて悲ピー。

4日目
昼にある成果発表会に向けて朝からスライド作りをしていました。
確実に制限時間内に終わらないスライドを作ってしまい、5分のプレゼンで2分も時間超過してしまって本当に申し訳なかった…
プレゼン力をつけなければと決意。(2回目)
午後はCTF。
CTF楽しい!!✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
隣がソフトウェアクラスのなんこつさん(@nk0t)でバイナリ関連でお話ができて楽しかった。
僕はシステムクラスの問題を5問解きました。
後はグループワークをどうするか少し話し合い。
夜は2時くらいまでグループワークのスライドを作っていました。

5日目
午前中にグループワークの発表。僕たちのチームはテーマ「セキュアなトイレを考える」で発表しました。
正直優勝を狙っていたのですが他のチームの方々の発表が上手すぎて選外に。
プレゼン力をつけなければと決意。(3回目)
午後はクラス別の成果発表会。
僕のゼミのメンバーの方が発表されていてプレゼンの上手さに感嘆してたりしました。
またどこまで書いていいのかわからないのですが、Webクラスとネットワーククラスがとても実践的な内容で興味深かったです。
もし2回目の参加ができるならば他のクラスに入ってみたいなあと思いました。
その後閉会式を挟んでノベルティ&献本争奪戦。
僕は欲しかった本が確保できたので満足です。
閉会式が終わっても皆しばらくはエントランスに残っていたので色々な人とお話ができました。

まとめ

事前学習を含め2か月全力でコーディングできとても楽しかったです。
やはり情報系でもなく趣味プログラマをしているとモチベーションが全く上がらなかったり迷走しがちなのでとても密度の濃い2か月でした。

そして何よりキャンプ中の5日間同じ分野への興味を持つ仲間達と喋ることができてとてもうれしかったです。
あ、嬉ピーでした、はい。

それとキャンプ参加決定からキャンプ中までですっかり川合先生のファンになってしまいました。
弟子になっていいですか!!!
是非またお会いしたいです。

補足

用語解説のようなもの。

OS自作入門

汎用OS自作界のバイブルです。僕のゼミの川合先生が書かれました。
OSを自作してみたいという方は是非最初にこの本を読んでみてください。

30日でできる! OS自作入門

30日でできる! OS自作入門

OSECPU

川合先生の作られた仮想CPU。
今回川合先生のゼミではセキュアなOSを自作するテーマだけではなく、このOSECPUの開発に参加するというテーマがありました。

http://osecpu.osask.jp/wiki/

アセンブラ短歌

システムクラス組み込みゼミの坂井先生の考案された伝統芸能(?)。

http://kozos.jp/asm-tanka/

アセンブラ短歌の本を坂井先生がこの秋に出されるそうなので是非。