2023-09-21

レイヤー技術セキュリティ❤️ソフトウェア研究開発という職業

セキュリティソフトウェア研究開発、という仕事自分経験をもとに紹介します。主な想定読者は、情報セキュリティ関連を仕事にしたいと考えている学生や若手、特に、いわゆる「低レイヤー技術」に惹かれている人です。

背景

低レイヤ技術を間接的に仕事で生かしてきた経験の共有。元Linuxカーネル開発技術者の場合 - 覚書を読んで思い出したのですが、セキュリティキャンプなどで、セキュリティに興味のある学生とやり取りをしていて、ソフトウェアエンジニアリングの分野でセキュリティ関連のキャリア議論されることが少ないと感じました。自分セキュリティソフトウェア研究開発に10年以上携わっていることもあり、この職業は低レイヤー技術セキュリティに活かせる面白い選択肢だと思っているので、紹介してみることにしました。

どういう職業

セキュリティソフトウェア研究開発では、アンチウイルスEDRなど、文字通りセキュリティ機能提供するソフトウェア研究、開発します。

研究、開発」と書いたように、この職業には研究と開発の両面があります

研究は、実現可能性や価値が定かでないアイディア調査試験実装する、という仕事がその一部です。例えば、ファイルディスクに書き込まないマルウェアを検知したいが、どのような技術選択肢課題があるかを評価する。実現可能場合は、開発チームと協働して実装、出荷にこぎつける。あるいは、製品として実装された機能バイパスされないか調査したり、バイパスされてしまった場合にはその原因を究明したりして、製品改善するために開発チームと協働する、という場合もあります

開発は、研究との対比という意味においては、できると判っているアイディア保守性の高い状態で実現する作業だといえます保守性の重視は研究との大きな違いで、例えば、研究では、コメントテストものない書き殴りのコードで十分であっても、開発の工程では、5年後でも改修が必要になるため許容できなかったりします。製品という大きなコードの中での開発であるため、別のチームや利害関係者との連携も、研究場合よりずっと重要です。例えば、リードポジションであれば、研究工程で実現可能と分かったアイディアが、既存機能統合する形で実装されるべきか否かアーキテクトと議論したり、テスト計画品質保証のチームと練ったり、プロジェクトスケジュールを調整したりします。

研究は、既定の手法がなく、闇の中を手探りで進める面があり、最終的に製品レベルにこぎつけずに終わる場合も多いです。判りやすい成果が出ない場合があるので、好き嫌いが別れやすいです。自分は、職業としては研究3,開発7くらいのバランスが好きで、趣味では逆に研究8,開発2くらいになってます趣味では成果が出ようが出まいが過程が楽しければ満足、という個人的な考え方がこの違いとして出ているようです。

レイヤー技術価値

この職業のおいて、低レイヤー技術に明るいことは、ほかの多くのエンジニアができないことができるという付加価値、だと自分は考えています。例えば、特定分野の詳細を知っていることでその分野の研究、開発が効率よくできたり、新しいアイディアが生まれたりします。具体例をいくつか挙げると、OS仮想メモリ管理に親しみがあれば、プロセスメモリーを走査してメモリー上のみに存在するマルウェアを検出する機能をより効果的に設計実装できる。プロセッサー機能の詳細を知っていれば、CETという新しいプロセッサーしかないセキュリティ機能を、他のプロセッサー機能を使って疑似的に実現するというアイディアを思いつく。などです。脆弱性知識や探す技術も、とても価値があります脆弱性を知らない人と、知っている人では、どちらが脆弱性の少ない設計実装をできるでしょう。自社の製品脆弱性を、開発中に発見するのと、テスト・出荷後に発見、改修を加えるのではどちらのコストが少なくて済むでしょう。コンパイラーの知識は検出ロジックを書くための独自言語の開発に、エミュレーター実装経験マルウェア解析エンジンの開発に役立ちます

ただ、低レイヤー技術付加価値であることに注意してほしいです。

まず前提として、ほかの平均的なエンジニアができることに加えて低レイヤー技術があるべきです。セキュリティソフトウェア開発者の多くは、実はセキュリティや低レイヤーエキスパートではありません。優秀な開発者であることに加えてこれらを必要条件にしてしまうと、人が雇えなくなってしまうためです。そのため、一般的エンジニアリング能力に加えて低レイヤー技術セキュリティという強みがあると、大多数の開発者ができない(したがらない)ことを任せられる人、と差別化してもらえる可能性が高いです。一方、エンジニアリングに対する素養や意欲なしでは、セキュリティソフトウェア研究開発職は難しいです。その場合研究者のほうがあっています。(ちなみに自分は、脆弱性解析とマルウェア解析を専門とする研究職にも各2年ほど就いていました。)

やりたい仕事を得るためにできること

ここから一般論になりますが、OSに詳しくても、プロセッサーに詳しくても、バグハントが得意でも、それを会社が求める結果を出すために使えなくては意味がありません。会社は、あなたがやりたい仕事をくれません。会社は、会社必要としている仕事をもってくるだけです。

ではどうやって「会社必要とする仕事」と「あなたがやりたい仕事」の重複を最大化するか。

まずは、上司にどういう仕事をしたいかを明示的に、繰り返し話しておきますさらに、能動的に、自分からプロジェクトアイディア提案して意欲を示すことも心がけますあなた仕事を最終的に選ぶのは上司である以上、上司から理解必須です。良い上司(そして良い上司であることを可能する、良い上司上司)は、必ず、あなた能力に対する信頼度に応じて、あなた意向考慮してくれます。言い換えると、まずはやりたい仕事を主張する前に、与えられた仕事をこなして信頼を得る必要があります個人的経験では、これは1年あれば十分で、1年たっても状況に変化がない場合あなた仕事ぶりが上司の信頼を得るのに不十分か、あなたがやりたい仕事をうまく伝えられていないか上司やその上司あるいは会社問題があるか、あるいはこれらの組み合わせの可能性が高いです。

上記がうまくいかない場合、チームや会社を変えることを検討しましょう。チーム異動はリスクの少ない選択肢です。これも、実現するか否かは、上司からの信頼の程度に大きく依存します。会社を変えるのはリスクが大きいですが、上司やその上司を変えるよりも現実的です。新しい会社でもうまくいかなかったら、また新しい会社を探せばOKです。最終的にあった会社に行きつくか、自分能力コミュニケーション問題があることに気づくと思います

最後に、「会社必要とする仕事」と「あなたがやりたい仕事」の重複を追求しないことも視野にいれておきましょう。仕事あくまお金のためであって、やりたい仕事のほうが楽しい必要要件ではない。……という視点を持っておくと、些細なミスマッチで不満をためて、そこそこ良い環境から性急に転職してしまう、という状況を防ぎやすいです。隣の芝生は青い、ということを忘れないように。

まとめ

セキュリティソフトウェア研究開発は、セキュリティに深く関わりつつ低レイヤー技術付加価値として自分差別化できる面白い職業です。

ところで自分は7年務めた研究開発職を退職しました。おめでとう、ありがとう。これからは、また違う低レイヤー技術セキュリティ研究開発をしていきます

  • 会社は、あなたがやりたい仕事をくれません。会社は、会社が必要としている仕事をもってくるだけです。 これはいい言葉だな。求職サイトのトップページに記載することを義務付け...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん