読者です 読者をやめる 読者になる 読者になる

技術めいた何か

1人の大学生によるIT系の記事群

セキュキャン全国大会2016の応募用紙(前半)

はい。勉強不足です。素人に毛が生えた程度の応募用紙・・・。

 

2週間程前セキュリティ・キャンプ全国大会2016に応募しました。

セキュリティ・キャンプ(以下: セキュキャン)は初めての応募です。

 

2016/06/14 13:08追記:セキュキャンお祈りされました。来年も頑張ります。

 

応募期間終了後から続々と応募者の方が自らの応募用紙を晒していたのですが、みなさんプロすぎて、流れに乗れなかった、というか怖かったのが本音です。

現時点では当落メールは届いていないのですが、いつ届くかもわからないので当落結果が届く前に、公開してしまおうと思いました。

 

身バレ()しそうな部分は省略しています'''文'''で囲ったところは実際の応募用紙には載せていないコメントです。

 

提出したのは締切日の午前3時頃だったはず。計画的に書くべきだと実感しました。

深夜に書いた物が大半です。文体の乱れあり。誤字脱字のオンパレードです。

特に2-3は深夜のテンションと妄想による産物です。許してください許してくださいゆるしt

 

イカが応募用紙です。温かい目で見守ってやってください。。。

 

共通問題 【1-1】:あなたが今まで作ってきたものにはどのようなものがありますか? いくつでもいいので、ありったけ自慢してください。

1.'''ごめんなさい黒歴史です(別のHNで活動していた頃に作ったものについて書きました)'''

2.大学のポータルサイト上の週間カレンダーから情報を抽出してGoogleカレンダーにインポート可能なcsv形式にするスクリプト(ブックマークレット形式)
これも、自分用に作成し、公開した。履修登録した予定と自分の遊びなどその他の予定を一括で管理したく作成した。
最大のメリットは授業予定だけでなく、年度頭に決まっている祝日授業の有無や大学の行事の情報を含めた大学に関する予定の多くをGoogleカレンダーで確認し管理することができることである。
また、Googleカレンダーを利用することでGoogleのサービスとの親和性が非常に高くなる。
私は、スマートフォンも時計もAndroid搭載のものをつかっているのでこれの恩恵を最大限にうけることができている。
特に気に入ったのはGoogle Nowのおかげで「xxという授業に間に合うにはhh:mmまでに(現在地を)出発」という案内をスマートフォンや時計から受け取ることができることである。
これのおかげで遅刻が減りました。
なによりもプライベートの予定と授業を含めた大学の予定を一括で管理できるので、予定のバッティングが減りました。
また、時間と授業名以外にも、教室名、教員名の取得とカレンダーへの登録を行うように組んだので教室の場所をど忘れしても無事に教室にたどり着くことができるようになった。
これも、大学の友人や先輩に使ってもらえてフィードバックを得ることができ、使用感について聞いてうれしく思ったり、問題点を指摘されて改善につなげることができた。

3.猫耳型脳波デバイス改造した健康状態を確認するサービス(チームで開発)
今年の3月にサーバーフェスタ2016~Health Engineering with IoT~というハッカソンで作成した制作物。
大学の同期*2+先輩*1+私 の計4人で参加した10日程度の大会で作成した。
脳波で健康状態を判定する近未来的なデバイスを作り上げることができました。
私は、脳波データの解析部分とサーバー周りを担当しました。ハードウェア部分(猫耳型脳波デバイスの改造)、同期の二人はwebのフロントとプレゼンの準備をそれぞれ担当しました。

10日間の制作や当日の各チームの発表を聞き、ハッカソンでは万全なセキュリティ対策をする暇も余裕もないが、実際に本格的に物を作って運用するとしたらIoTのセキュリティはどうなるのだろうかという疑問が浮かびました。

 

 

共通問題 【1-2】:それをどのように作りましたか?ソフトウェアの場合にはどんな言語で作ったのか、どんなライブラリを使ったのかなども教えてください。。

1については'''同上の理由により削除'''

2についてはブックマークレットであるため、Javascriptで記述している。
初版では大学のポータルサイトに1週間分表示されている”カレンダーの内容を取得->の先送りボタン”
の繰り返しで指定期間分の情報を取得していた。そのため、初版のスクリプトは手で行う作業を自動化しているに過ぎなかった
しかし、ポータルサイトChromeを使って解析していくうちにポータルサイト上の週間カレンダーはAjaxを使ってサーバーからカレンダーの情報を取得していることが分かった。そのため、現在はAjaxを用いて必要期間分の情報を取得するようなスクリプトに作り変えてある。
もちろん、アクセス多過で大学から怒られないように授業コード(これもサイトを解析して内部で利用されていることがわかった)をみて同一授業の情報について取得済みであれば詳細情報(教室、場所、教員名など)の取得を行わないようにしてある。

3については私の担当した範囲では当初は自身で脳波のパーサーを作成しようとしたのですが、あえなく断念。
採取的にはPythonのPythinkgearというパッケージを用いて脳波の解析を行いました。
シリアル通信について学んだり、websocketを使ったサービスの実装ができた良い機会でした。
なによりIoTのセキュリティについて考えるきっかけとなったので参加してよかったと思っています。

 

'''誤字が目立ちますね・・・(「最終的には」が「採取的には」になってる)'''

 

共通問題 【1-3】:開発記のブログなどあれば、それも教えてください。コンテストなどに出品したことがあれば、それも教えてください。

'''このブログとgithubのリンクを貼った'''

 

共通問題 【2-1】:あなたが経験した中で印象に残っている技術的な壁はなんでしょうか?(例えば、C言語プログラムを複数ファイルに分割する方法)

C言語による文字列処理。具体的にはXMLパーサの実装。
実装にポインタを使う必要があるだけでなく、文字の処理用関数がスクリプト言語ほど充実していないためsubstringなどは自分で実装する必要があったため。
また、メモリ管理を怠るとメモリリーク等を起こすこともあり、当時は扱いが非常に難しいと感じた。

 

共通問題 【2-2】:また、その壁を乗り越えるために取った解決法を具体的に教えてください。(例えば、知人に勧められた「○○」という書籍を読んだ)

まず、ポインタについては「苦しんで覚えるC言語のサイトを再度読んで実装に必要なあいまいな点をつぶすように努めた。
また、substring等の実装は紙に実装に何が必要か考えた。
また、実際に書いた処理をデバッガで追って各所で想定通りの動作をしているかを確認して理解を深めた。バグが見つかった時も問題点や現状を紙に書いて混乱しないように工夫した。
メモリリークはデバッガを利用して目星をつけて、その後、コメントアウト等を利用して該当箇所を絞った。


共通問題 【2-3】:その壁を今経験しているであろう初心者にアドバイスをするとしたら、あなたはどんなアドバイスをしますか?

何がわからないのか、あるいは何が不安要素なのかを自分のやりかたで(私は紙に書いた)まず外に出して、そして整理しよう。
次に、わからないところは調べる。調べてわからなかったら知ってそうな人に聞いてみる。周りにいなかったら質問サイト(stackoverflowや、c言語なんでも質問掲示板)等で聞いてみる。
その時には、相手に失礼のないようにまた、初めて見る人でも状況が理解しやすいようになるべく詳細に書くようにしよう。
もし、実装している最中に自分の考えたアルゴリズムや構造がわからなくなりそうだったり、混乱しそうになったら、紙や画面に図形をかいたり、箇条書きのロジックを書いたりして視覚情報にしてみよう。
それを見ながら実装に移れば混乱は未然に防げるはずだ。

上を抑えたうえで、技術的なアドバイスは例えば、文字列操作のポインタを扱うからインクリメントやデクリメント、前置、後置の挙動や、よく使う文字処理の関数についてはちょっとでも不安になったら調べると良いよ。メモリリークについては、最近のVisual Studioであれば下にメモリ使用量が出てくるからテストコードを書いてメモリの使用量の変化を見れば発見があるかもしれないよ。

 

'''は、はずかしすぎる。。。なんだこの口調は・・・!!!妄想の産物だ。なんか変な脳内物質が作用して奇妙な物語を構成してしまったに違いない。「〜かもしれないよ」ってお前は何様だー(爆ぜる)'''

 

共通問題 【3-1】:あなたが今年のセキュリティ・キャンプで受講したいと思っている講義は何ですか?(複数可) そこで、どのようなことを学びたいですか?なぜそれを学びたいのですか?

7-B 組込みリアルタイムOSとIoTシステム演習
私がプログラミングを始めたきっかけが'''同上の理由により削除'''ということもあり、組み込みシステムについて非常に興味があります。
割り込みや例外を処理するリアルタイムOSの仕組み、や汎用システムと実際にはどこが異なるのかを学びたいです。
組込み機器に多く用いられているリアルタイムOSやIoTで必要になる通信ソフトウェアにについて理解を深めたいと考えています


3-B フィジカル・リバースエンジニアリング入門
私は、ソフトウェアやウェブサイトの解析が好きで、共通問題1で述べたスクリプトを作っているときも楽しくて仕方ありませんでした。また、某携帯ゲーム機を改造電池パックを使ってハックしたという記事を見たことがるのでそれに関係がありそうということもあり、興味があります。
物理的なリバースエンジニアリングの方法だけでなく、ソフトウェアでは難読化等の対策があるが、ハードウェアではどのように対策をするのか、そして説明文にある限界とは何なのかについて学びたいです。
ハードウェアよりの解析はあまりやったことが無いのですが、"物理的"な解析に挑戦してみたいと考えました。


1-C 公開鍵暗号のハードウェア実装と攻撃~ICカードが持つ脆弱性とその対策~
来年以降の研究テーマとして暗号理論を扱いたいと考えています。Suicaなどの交通系ICやマイナンバーカード、あるいは学生証などICが埋め込まれているものが身の周りに多くあることもあり、将来扱いたい暗号理論と身近なテーマであるためやってみたいと考えました。
また、軽くて小さく、あまり金銭的コストをかけることができないものが多いICカードでどのような対策が行われているのかを知りたいです。
また、観察したり、解析したりすることが好きなので、電力解析攻撃という単語に興味がひかれました。

共通問題 【3-2】:あなたがセキュリティ・キャンプでやりたいことは何ですか?身につけたいものは何ですか?(複数可) 自由に答えてください。

来年度以降、情報セキュリティの研究をするにあたって必要となるセキュリティへの理解を深めたいです。
また、興味のある分野のこともあまりよく知らない状態にあるので、これから学習したり、研究したりするときの足がかりにしたいと考えています。
また、講師の方々は研究職の方が多くいらしているのでセキュリティの研究になるには何が必要なのかについて知る第一歩にしたいです。
・探求する心

 '''

_人人人人人人人人_
> ・探求する心 <
 ̄Y^Y^Y^Y^Y^Y^Y ̄

 

なんか湧いてるよ!!!

'''

 

共通問題部分は以上になります。いやー恥ずかしい。深夜のテンションだからといって言い訳できないよこれは。。。黒歴史生成器ですね。

セキュキャンの講師の方々は皆プロなのに舐めてかかったような回答だ。恥ずかしい。

もういい年なんだから生意気言うのはほどほどにしないとなぁ(自戒)

 

後半(選択問題)は気が向いたら投下します。