|チャレログ

【SecHack365成果】SecHack365でチーム開発を行い、優秀テーマに選抜された体験談

【SecHack365成果】SecHack365でチーム開発を行い、優秀テーマに選抜された体験談

(最終更新日:2018/4/22)

 

拓也

こんにちは、北村拓也です。
私は2017年度に第一期生としてSecHack365に参加しました。
SecHack365は、NICT主催の25歳以下を対象としたホワイトハットハッカー育成プログラムです。
私はSecHack365期間内に、3人チームでサイバーセキュリティを学べるゲームを開発し、優秀テーマに選抜されました。
(優秀テーマは全チームの内、6チームが選ばれました)
とても勉強になるプログラムだったので、是非あなたに応募してもらいたいと思い記事を書きました。

この記事は、

「SecHack365って具体的に何をするの?」
「SecHack365でチーム開発をしてみたいけど、どうやって進めたら良い?」

という疑問を持っているあなたに、SecHack365で何をしたかチーム開発をどう進めたら良いかをお伝えします。

SecHack365の参加期間

2017.5.20(合格決定後の第一回説明会)~2018.3.24(最終成果発表)
SecHack365第一期

SecHack365課題内容

残念ながら、課題の内容については公開が禁止されている
日頃からセキュリティ関連のニュースに目を通しておくと良いかも
例えば、総務大臣奨励賞を受賞したpiyokango氏のブログは非常に勉強になるのでオススメ

SecHack365で良かったこと

いいチームが出来て、いい成果物も出来て楽しかった
セキュリティに関する知識が増え、セキュリティ業界のプロの人達と知り合いになれた
沖縄に行けた(初めて)
成果物作るための必要物資も支給された(サーバーなど)

SecHack365の成果物:仮想空間でサイバー攻防を体験するゲームCyship(サイシップ)

 

SecHack365のチーム

北村拓也(広島大学大学院博士課程後期1年):チームリーダー、通信まわりの実装、UI
友利奈緒:ゲーム原案、WEBサービス全般
川島:メインプログラマー

SecHack365で大変だったこと

移動。広島住みなので、移動は大変だった。
ただ、交通費は全部出るし、前泊後泊も柔軟に手配されたので、その点はとても良かった。

色々被ってたこと。
事業/修論/博士入試/学会発表/IPA 未踏事業/CAPアクセラレーションプログラム/シリコンバレー起業家プログラムなどなど…
大変だったが、楽しかったので良し

SecHack365の応募のきっかけ

CTF(*1)でチームを組んでいた友利奈緒(以下:友利)に紹介してもらい、セキュリティを学びたいと思っていたので参加
また、広島だとセキュリティ強い同期とか皆無なので、知り合いを増やしたかった
応募した当時のセキュリティ実績は、セキュリティ・キャンプアワード2017 優秀賞、各種オンラインCTF参加

*1:CTFとは

 コンピュータセキュリティの分野におけるキャプチャー・ザ・フラッグ(CTF)は、コンピュータセキュリティ技術の競技である。CTFは通常、参加者に対しコンピュータを守る経験に加え、現実の世界で発見されたサイバー攻撃への対処を学ぶ教育手法として企画されている。「ハッカーコンテスト」[1]「ハッキング大会」[2]「ハッキング技術コンテスト」[3]「ハッカー大会」などとも訳される。

SecHack365の参加を考えている人に一言

とりあえず応募して、受かってから悩もう

SecHack365 体験レポート

SecHack365とは

情報通信研究機構(NICT)ナショナルサイバートレーニングセンターが、25歳以下の若手を対象に高度な技術力を持つセキュリティイノベーターを1年かけて育成するプログラム「SecHack365(セックハック365)」を実施している。
2017年5月から2018年3月にかけてセキュリティ技術の研究開発を指導し、自ら考えた成果物を発表するというもので、全国5都市で合宿形式のハッカソンを継続して行う。 引用元:CNET.jp 

年間スケジュール

 

それぞれの回にどんなことをするのかは、他の人達が詳しく載せてくれると思うので、自分は何をしたかを中心に書くことにする。

SecHack365 5月 顔合わせ @東京

説明会&顔合わせ
セキュリティキャンプ修了生や、セキュリティ・キャンプアワード受賞者が居て、面白いことできそうだなーと感じた。
当初のSecHack365の認識は、セキュリティを学べるイベントだったが、ここに来てがっつり開発するイベントだったことを知った。
少し残念に感じる一方で、学ぶのは本読めばいいし、講義は退屈なのでこっちの方が参加する価値は高いかなと思った。

SecHack365 6月 チームビルディング @東京

それぞれ自分の作りたいアイデアの共有とチームビルディングを行った。
一日の流れとしては、各々アイデア考える→アイデアをお互い話し合う→アイデアをポスター発表する→チーム作りをする→チームでプレゼンする という形だった。

自分は標的型攻撃メールを学べるサービスを考えた。

しかし、そんなに熱意を持って作りたいアイデアでは無かったので、面白そうな人にジョインすることにした。
この手のイベントは、結局アイデアより「人」で選んだ方が面白いモノを作れるという持論がある。
面白い人は、最終的に何かしら面白いモノ作る。
なので、最初に意気投合して、人として面白そうな「K」と一緒にチームを作ることにした。

Kとサイバーレンジ(*2)を作ることにして、メンバーを集め、最終的に6人のチームになった。

*2:サイバーレンジとは

実地訓練でセキュリティ エキスパートを養成 シスコサイバーレンジ サービスは、疑似的な戦闘ゲームシミュレーション環境を提供し、どのようにサイバー攻撃を視覚化し、ブロックし、軽減することができるか演習する、実地のエキスパート養成トレーニングです。

引用元:シスコ サイバーレンジ サービス – Cisco 

なぜこのアイデアを作ることにしたのか。

セキュリティのプロたちがトレーナーとして参加していたので、まず自分がインタビューして、セキュリティ業務の課題を聞いて回った。

その中で、セキュリティインシデント(*3)が起こった時に、「自社ごとに対応が違うが教育プログラムは画一的なモノしかない」という課題があることがわかった。

*3:セキュリティインシデントとは

セキュリティインシデントとは、事業運営に影響を与えたり、情報セキュリティを脅かしたりする事件や事故のことをいいます。 セキュリティインシデント – IPA

なので、その課題を解決するために、ネットワーク環境をモジュール化し、自社環境に応じたサイバーレンジ演習を提供するソフトウェアを作ろうとチームで決めた。

メンバーにサイバーレンジ作成経験のある人が2名居たので、実装的にも出来そうだった。

しかし、このチームは6月中に自然消滅してしまう……。

なぜか?

 

なんと全く同じアイデアで製品化されている、完全上位互換サービスを自分が見つけてしまったのだ!

SyprisCyberRangeは単なる学習システムだけでなく、モデリング&シミュレーション機能をも備えた統合システムアーキテクチャーで構成されています。
サイバー攻撃を防ぐ側として現実のセキュリティ危機に迅速かつ専門的に対応するためのスキルや経験、チームでの対応を学習するための基盤、サイバーセキュリティを支える専門家として必要とされる継続的改善メカニズムや、最高レベルの成熟度に達するまでの教育環境を提供します。
NTTデータ先端技術、米Sypris社のサイバーレンジシステムを九州大学へ国内初納入

アイデアが既に実現されていた、これはアイデアソン(アイデア考えるイベント)ではよくあることだ。

既に製品化されているモノを作っても面白くないので、チームは自然消滅。

また、Kが留学して途中で抜けるかもしれないということを聞き、自分で何か立ち上げるかーと考え始めた。

SecHack365 7月 セキュリティ学習サービスを考える @オンライン

そもそもセキュリティの中高生向け学習サービスを作りたかったので、友利に相談してみた。

友利とはオンラインで知り合いで、CTFチームとして、暗号の知識やサイバー攻防手法などをいつも教えてもらっていた仲だった。

オフラインではSecHack365で初めて会ったが、技術や知識的に飛び抜けているのは感じていた。

友利奈緒とは何者なのかは、以下の記事を参照。

友利とアイデアや顧客像をHackMDに書きまくって、最終的にカードゲームを作ることに決めた。
(HackMDとは共同ドキュメント編集ツール、Markdownで書けるので重宝している)

SecHack365 8月 アナログのカードゲームを作る@福岡

福岡回は2泊3日だった。
私は飛び級した影響で修士論文発表/博士入試/学会発表(奇跡的に福岡:2日目午前)と日程が被っていたので、2日目午後から途中参加。

1日目の流れは、基調講演→アイデア発表→トレーナーによるハンズオンワークショップ→倫理セッション。
2日目の流れは、トレーナーによるハンズオンワークショップ→ひたすら開発タイム
3日目の流れは、開発タイム→発表

私は開発タイムで、チームメンバーの友利と紙を切って、アナログのカードゲームを作成した。

これはサービスにおけるMVP(*4)だった。

*4:MVPとは

MVP(Minimum Viable Product)とは、簡単にいえば、顧客に価値を提供できる最小限の製品や、それを使ったアプローチのことをいいます。

MVPを利用することによって、限られた時間で顧客のニーズに基づく商品・サービスを構築することができるため、無駄なコストの削減にもつながる手法として注目されています。

MVP(Minimum Viable Product)とは | リーン・スタートアップの基本とMVPの実践

MVPがなぜ重要か

例えばカードゲームをオンライン上で動くソフトウェアとして作るとなると、ルールが確定している必要がある

しかしカードゲームは実際にプレイしてみないと、そのルールが適切か、ゲームバランスは取れているのかなどがわからない

なので、いきなりソフトウェアで作ってしまうと、何回も作り直しが発生する(それも根本部分から)

それを避けるために、まずアナログで作り、二人で対戦しながらルールやゲームバランスをブラッシュアップした

その後、セキュリティゲームの専門家の今さんにプレイしてもらって意見をもらったり、アナログの段階で色々なフィードバックを得た
他にはCodeBlueの佳奈さんに、他の国の事例を教えてもらったり

SecHack365 8月 最強のチームができる@福岡

そして、最強プログラマー川島君がチームにジョイン!

川島君とはホテルの部屋が一緒だった

彼の作品を見せてもらって実装力も高いことが分かり、また彼の作ったオセロAIと対戦し負けたことから(オセロには自信があった。実は将棋2段。)、ゲームAIのロジック作るのも強い、是非ということでチーム入り。

後で聞いたら彼もカードゲームチームに入りたかったそうなので、win winだった。

8月回の最終日から早速ソフトウェア版を作り始めた。

最初は川島君が得意なC++で作り始めたが、最終的にはUnityで作ることにした。

というのも自分がUnityに関しては膨大な開発経験(30作品以上)があり、使えるアセットも大量に持っていたので、効率的にUnityで作ったほうが早いと判断したからだ

SecHack365 10月 オンラインのカードゲームを作る@北海道

北海道会も2泊3日だった。
1日目:トレーナーによるハンズオンワークショップ(任意参加)
2日目:進捗発表→開発タイム&ハンズオンワークショップ→倫理セッション→発表
3日目:さくらインターネットのデータセンター見学→講演

北海道ではひたすら開発。

ゲームがオンラインで遊べる形になった。

データセンター見学は寒かったが、サーバー設置の工夫が知れて面白かった。

私も研究室ではサーバー担当として物理サーバーを保持しているので、勉強になることが多かった。

SecHack365 11月 ユーザー候補に使ってもらう@広島

11月には、知り合いの中高生達に使ってもらい、フィードバックを得た

SecHack365 12月 ゲームが完成に近づく@大阪

大阪回も2泊3日。

1日目:開発タイム→講演
2日目:開発タイム→発表→講演
3日目:開発タイム→発表

(発表多くないか……?)

ゲームが遊べる状態になった。トレーナーの人たちから改善のアイデアをもらい、改善していった。

発表に対してフィードバックを色々といただいた。

SecHack365 2月 SECCONE決勝大会 展示@東京

SECCON(*5)で展示させてもらう機会を得た

*5:SECCONとは

SECCON(SECurity CONtest)」とは、情報セキュリティをテーマに多様な競技を開催する情報セキュリティコンテストイベントです。実践的情報セキュリティ人材の発掘・ 育成、技術の実践の場の提供を目的として設立されました。 引用元:SECCONEとは

SECCONEは予選に参加したことはあったが、決勝に出たことは無かったので、プレイヤーとして来たかったなーと思いつつ、なかなか無い機会だったので参加

ここでもフィードバックを得て改善

2日あったが、自分は2日目にシリコンバレーに行く予定があったので1日目のみ参加

SecHack365 2月 SecHack365内成果発表会@沖縄

沖縄回も2泊3日。
1日目:最終発表に向けた準備タイム。
2日目:最終発表
3日目:最終発表→招待講演

そして、遂に迎えた成果発表会

学習ゲームとしては質の高いモノが作れた自負はあったが、もう一段階レベルアップしたいと思い、AIをビジュアルプログラミングで作れたら面白いのではとチームと担当トレーナーの今さんに提案

提案して一週間程度で実装まで持っていけたので改めてこのチーム強いなと感じた

そして沖縄で発表(20分のプレゼン)!
好評価を得た。(毎回発表後にトレーナーからの評価を見れる。とても有用。)

勝因としては、良いチームが作れたことに尽きる。

友利はやはり天才だったし、川島君の実装力も本物だった。

個人的に活かせたこととして、一年間を通じてサービスを作る経験を昨年もしており(enpit:優勝)、最初にMVPを作るなどビジネス的進め方アプローチの知識も色々あったので、進め方に迷いが無かったのは良かったと思った。

SecHack365 3月 外部向け成果発表会@東京

優秀なテーマとして選抜された(6チームが選抜)

外部向け成果発表会では、ポスター展示と発表を行い、SecHack365修了書を園田センター長からいただく

この成果発表会前日には、発表仕上がるまで帰れま10イベントなどもあり、プレゼンスキルも向上すること請負い

成果発表の様子は、下記の記事で紹介されている

成果発表会で使ったプレゼン資料はこちら

とても楽しいプログラムだった
関係者の方々には感謝しか無い

意外だったのは、トレーナーの方たちが皆、楽しんで参加していたこと
その雰囲気が参加者にも伝わっていたことがとても良かった

次回も良いプログラムになると思うので、迷っている人はまず応募してみよう

最後に、今回のチームプロジェクトを成功させるために意識した設計について

今回、チームで1つの作品を開発した。
実は、一年間を通じて1つの作品を作る場合、チーム開発は結構大変。
最初に設計をして、チーム内で作品に対して共通意識を持っておかないと右往左往するからだ。
なので、今回設計段階でやったこと、意識したことを最後にまとめておく。

1.課題探し(インタビュー)・市場調査

欲しい人が居ない作品を作っても価値が無いので、誰が困っているのかを明確にする。
今回は、自分が普段プログラミングスクールで教えている中高生を対象として、
セキュリティを学びたいけど、セキュリティ・キャンプやCTFは高度過ぎて参加できないといった課題を見つけていた。
また、個人的にもセキュリティを学びたいけど、何からすればいいか分からないという課題があったので、取り組むことにした。
市場について、今回のSecHack365の応募倍率が7.6倍だったことからも、学びたい人は多いとわかった。

2.位置づけを決める

既に、セキュリティを学ぶための様々なプログラム・ソフトがあったので、それらと被らない場所をカバーすることにした。
具体的には、プログラミングが出来ないが、セキュリティを学びたい人がセキュリティを楽しく学べるサービスとした。

3.対象ユーザーの設定

ユーザーは、プログラミングが出来ないが、セキュリティに興味があるゲーム好きの中高生にした。
ハッキングの映画やアニメなどを見て、セキュリティに興味を持った子たち。
この点は、最初にチーム内で作品を作る前にHackMdなどの共同ドキュメント編集ツールを作って決めた。

4.目標設定

目標をSecHack365で優勝、リリースに決めた。
残念ながらSecHack365に優勝などの枠組みはそもそも無かったが、優秀テーマに選抜されたので達成出来たと思う(上位6チームが選抜)。
成果発表の時点で、β版もリリースすることが出来、目標は達成できた。

5.MVPの作成

記事に書いたとおり。

次年度以降の参考になったら幸いです。
この部分をもっと詳しく知りたいなどあったらコメントよろしく!

MVPなどの手法を学びたい人は、下記がオススメ。

 

SecHack365カテゴリの最新記事