はてなキーワード: セキュリティキャンプとは
セキュリティソフトウェアの研究開発、という仕事を自分の経験をもとに紹介します。主な想定読者は、情報セキュリティ関連を仕事にしたいと考えている学生や若手、特に、いわゆる「低レイヤー技術」に惹かれている人です。
低レイヤ技術を間接的に仕事で生かしてきた経験の共有。元Linuxカーネル開発技術者の場合 - 覚書を読んで思い出したのですが、セキュリティキャンプなどで、セキュリティに興味のある学生とやり取りをしていて、ソフトウェアエンジニアリングの分野でセキュリティ関連のキャリアが議論されることが少ないと感じました。自分はセキュリティソフトウェアの研究開発に10年以上携わっていることもあり、この職業は低レイヤー技術をセキュリティに活かせる面白い選択肢だと思っているので、紹介してみることにしました。
セキュリティソフトウェアの研究開発では、アンチウイルスやEDRなど、文字通りセキュリティ機能を提供するソフトウェアを研究、開発します。
「研究、開発」と書いたように、この職業には研究と開発の両面があります。
研究は、実現可能性や価値が定かでないアイディアを調査、試験実装する、という仕事がその一部です。例えば、ファイルをディスクに書き込まないマルウェアを検知したいが、どのような技術的選択肢と課題があるかを評価する。実現可能な場合は、開発チームと協働して実装、出荷にこぎつける。あるいは、製品として実装された機能がバイパスされないか調査したり、バイパスされてしまった場合にはその原因を究明したりして、製品を改善するために開発チームと協働する、という場合もあります。
開発は、研究との対比という意味においては、できると判っているアイディアを保守性の高い状態で実現する作業だといえます。保守性の重視は研究との大きな違いで、例えば、研究では、コメントもテストものない書き殴りのコードで十分であっても、開発の工程では、5年後でも改修が必要になるため許容できなかったりします。製品という大きなコードの中での開発であるため、別のチームや利害関係者との連携も、研究の場合よりずっと重要です。例えば、リードのポジションであれば、研究工程で実現可能と分かったアイディアが、既存の機能に統合する形で実装されるべきか否かアーキテクトと議論したり、テスト計画を品質保証のチームと練ったり、プロジェクトのスケジュールを調整したりします。
研究は、既定の手法がなく、闇の中を手探りで進める面があり、最終的に製品レベルにこぎつけずに終わる場合も多いです。判りやすい成果が出ない場合があるので、好き嫌いが別れやすいです。自分は、職業としては研究3,開発7くらいのバランスが好きで、趣味では逆に研究8,開発2くらいになってます。趣味では成果が出ようが出まいが過程が楽しければ満足、という個人的な考え方がこの違いとして出ているようです。
この職業のおいて、低レイヤー技術に明るいことは、ほかの多くのエンジニアができないことができるという付加価値、だと自分は考えています。例えば、特定分野の詳細を知っていることでその分野の研究、開発が効率よくできたり、新しいアイディアが生まれたりします。具体例をいくつか挙げると、OSの仮想メモリー管理に親しみがあれば、プロセスのメモリーを走査してメモリー上のみに存在するマルウェアを検出する機能をより効果的に設計、実装できる。プロセッサーの機能の詳細を知っていれば、CETという新しいプロセッサーにしかないセキュリティ機能を、他のプロセッサー機能を使って疑似的に実現するというアイディアを思いつく。などです。脆弱性の知識や探す技術も、とても価値があります。脆弱性を知らない人と、知っている人では、どちらが脆弱性の少ない設計や実装をできるでしょう。自社の製品の脆弱性を、開発中に発見するのと、テスト・出荷後に発見、改修を加えるのではどちらのコストが少なくて済むでしょう。コンパイラーの知識は検出ロジックを書くための独自言語の開発に、エミュレーターの実装経験はマルウェア解析エンジンの開発に役立ちます。
ただ、低レイヤー技術は付加価値であることに注意してほしいです。
まず前提として、ほかの平均的なエンジニアができることに加えて低レイヤー技術があるべきです。セキュリティソフトウェア開発者の多くは、実はセキュリティや低レイヤーのエキスパートではありません。優秀な開発者であることに加えてこれらを必要条件にしてしまうと、人が雇えなくなってしまうためです。そのため、一般的なエンジニアリングの能力に加えて低レイヤー技術やセキュリティという強みがあると、大多数の開発者ができない(したがらない)ことを任せられる人、と差別化してもらえる可能性が高いです。一方、エンジニアリングに対する素養や意欲なしでは、セキュリティソフトウェアの研究開発職は難しいです。その場合、研究者のほうがあっています。(ちなみに自分は、脆弱性解析とマルウェア解析を専門とする研究職にも各2年ほど就いていました。)
ここからは一般論になりますが、OSに詳しくても、プロセッサーに詳しくても、バグハントが得意でも、それを会社が求める結果を出すために使えなくては意味がありません。会社は、あなたがやりたい仕事をくれません。会社は、会社が必要としている仕事をもってくるだけです。
ではどうやって「会社が必要とする仕事」と「あなたがやりたい仕事」の重複を最大化するか。
まずは、上司にどういう仕事をしたいかを明示的に、繰り返し話しておきます。さらに、能動的に、自分からプロジェクトのアイディアを提案して意欲を示すことも心がけます。あなたの仕事を最終的に選ぶのは上司である以上、上司からの理解は必須です。良い上司(そして良い上司であることを可能する、良い上司の上司)は、必ず、あなたの能力に対する信頼度に応じて、あなたの意向を考慮してくれます。言い換えると、まずはやりたい仕事を主張する前に、与えられた仕事をこなして信頼を得る必要があります。個人的な経験では、これは1年あれば十分で、1年たっても状況に変化がない場合、あなたの仕事ぶりが上司の信頼を得るのに不十分か、あなたがやりたい仕事をうまく伝えられていないか、上司やその上司あるいは会社に問題があるか、あるいはこれらの組み合わせの可能性が高いです。
上記がうまくいかない場合、チームや会社を変えることを検討しましょう。チーム異動はリスクの少ない選択肢です。これも、実現するか否かは、上司からの信頼の程度に大きく依存します。会社を変えるのはリスクが大きいですが、上司やその上司を変えるよりも現実的です。新しい会社でもうまくいかなかったら、また新しい会社を探せばOKです。最終的にあった会社に行きつくか、自分の能力やコミュニケーションに問題があることに気づくと思います。
最後に、「会社が必要とする仕事」と「あなたがやりたい仕事」の重複を追求しないことも視野にいれておきましょう。仕事はあくまでお金のためであって、やりたい仕事のほうが楽しいが必要要件ではない。……という視点を持っておくと、些細なミスマッチで不満をためて、そこそこ良い環境から性急に転職してしまう、という状況を防ぎやすいです。隣の芝生は青い、ということを忘れないように。
セキュリティソフトウェアの研究開発は、セキュリティに深く関わりつつ低レイヤー技術を付加価値として自分を差別化できる面白い職業です。
ところで自分は7年務めた研究開発職を退職しました。おめでとう、ありがとう。これからは、また違う低レイヤー技術+セキュリティの研究開発をしていきます。
この勉強会を主催しているHagexとかいうやつが刺されて死んだらしいです。
https://headlines.yahoo.co.jp/hl?a=20180624-00000062-jij-soci
セキュリティキャンプをずっと支えてくれていた方だと今知りました。
参加していて気になったというか、いいのか?と思った事として、筑波大学にAC受験したい子が実績ロンダリングとして参加してるようだったということ。
セキュリティ(プログラミング)に興味があって,キャンプ自体の選考に通るぐらいの能力がある人が,AO(筑波大学だとACか)入試を使って入学するのは何か悪いことなのか.もしロンダリングに使えるとしたら,本当に「セキュリティ&プログラミングキャンプに参加しました(キリッ)」って”だけ”で合格できてるのかねぇ.
キャンプの選考は能力なんか見てなくて,「筑波ACを受けます」って書いたら通るような印象を与えかねない表現は良くないと思う.キャンプと大学と,両方の関係者に失礼どころの話しじゃねーよ.
実際、筑波大学AC受験組の内輪イベントみたいな空気が漂ってる場面もあったり、高校生に対して「セキュリティキャンプ行って受験した子で落ちたの1人しかいない」などと勧誘してる場面が多々あった。
チューターの一部だろうと思うけど・・・
それは(運営側の)反省点として挙がっていて,今は意識してそういう雰囲気を出さないようにしているみたいだよ.
ただ,勧誘に関しては,ザックリ言えば「受験勉強は苦手だけど,大学(例えば筑波)でやりたいことがある」っていうバックグラウンドを共有できる人が結構居るわけで,経験者がいれば勧めたくなるってもんでしょう.そういう人種が集まりやすいイベントなわけだし.
掃除してたら当時の講義資料がでてきたので、セキュキャン2007の話でもちょろっと書いてみる。
申し込んだきっかけはid:ripjyrのエントリを見たことだった気がする。おもしろそうだし国が全額出してくれるみたいだし申し込んでみるかーみたいな感じ。
その頃は今みたいにいわゆる「凄い人」だらけ(聞いた話)と言うわけでもなく、関心がある子が全国から集まったような感じだった。中にはこいつすげぇっていう人もいたけれど。
どのコースを受けたとか何があったと書くと、特定されそう&NDA違反になりそう(書いてみたかった)なのであんまり書けないのだけれど、自分が受けたコースは初心者でもついて行けるように配慮されていたし、話の密度が濃くてとてもおもしろかった。技術が身につくわけではないにしてもきっかけとしての知識は吸収できるし、何より好奇心をものすごく刺激された。素直に行って良かったと思える。
自分が受けていないコースの資料ももらえるので興味があれば目を通すこともできるし、今見ても良くできた資料だなと思う。こう言うのが大学とか高校のPC教室みたいなところに置いてあったらおもしろいのにね。惜しむらくはパワーポイントで作ったような資料なのに電子データとしての提供がないことかな。2008以降のプログラム部門の資料は一部公開されているようだけど、セキュリティ部門は見つからなかった。
他にも日本の大手セキュリティ企業(ウルトラ警備隊基地)の中を見学できたり、カカクコムの(省略されました)といった"ここだけの話"も多かった。セキュリティ業界は"ここだけの話"が多すぎるとは思うけれど、扱ってる内容を聞いたらよく話してくれる気になったなと思えるような内容ばかり。
いろいろ書いてみたけれど、おもしろかったし応募してみるといいよ!って話になってしまいましたね。
いい点だけ書くのもフェアじゃないので暗黒面も書いてみる
参加者の交流を深めるってことで参加者一覧が書かれた紙(本名とかどのコースとか)が配られて、個人情報保護のため最終日に回収するとアナウンスされていたのだけれど、今講義資料めくっていたらその紙が出てきた...
参加していて気になったというか、いいのか?と思った事として、筑波大学にAC受験したい子が実績ロンダリングとして参加してるようだったということ。
実際、筑波大学AC受験組の内輪イベントみたいな空気が漂ってる場面もあったり、高校生に対して「セキュリティキャンプ行って受験した子で落ちたの1人しかいない」などと勧誘してる場面が多々あった。
進路まで決められるセキュリティキャンプすごい!
後々聞いた話だと一部の講師間の人間関係がやばいとかなんとか。チューターと(省略されました)。
まぁなんか講師の人のblog読んだりとか他の勉強会行ったりすると「あー」って思う場面がいろいろあるよね。
翌年からセキュリティー部門とプログラミング部門に分かれて、最終日にプログラミング部門でjkondoのありがたいお話が聞ける(聴講可)ということで行ったら、プログラミング部門はセキュリティ部門とは一転してフリーダムな環境で、wifiありインターネットし放題と全く毛色が違うイベントだった。(自分が参加していたときは「通信は全部キャプチャしてるからね」と冗談なのか本気なのか分からない事を言われた)
まぁそれはどうでもいいとして、去年の参加者がチューターとして参加していて指導していたのだけど、そのチューターがOSx86をインストールしたノートPCを普通に使っていて驚愕した。
思いっきりEULA違反じゃん...去年のキャンプで何学んだの...それを咎めない講師陣もちょっと...
プログラミングキャンプすごい!
又聞きの又聞きで真偽が怪しいけれど非常にブラックなので書く。
2007参加者の現筑波大学生が自分のWEBサービスのソースコードを流出させた知人のサイトにDOS攻撃を仕掛けてダウンさせたらしい。
犯罪者誕生ですね!セキュリティキャンプすごい!
暗黒面がいろいろと酷いですけど、善良な参加者の皆さんには何の関係もないですし、何よりもキャンプで得られる経験っていうのは他所では絶対に経験できないのことなので是非参加するといいと思いますよ。