昨今、セキュリティ関連の技術者が大幅に不足していると言われ、情報処理安全確保支援士の創設など、国を挙げた取り組みが行われています。私は組み込みシステムの開発に技術者として12年従事したのち、セキュリティの世界に足を踏み入れました。セキュリティの知識は資格取得などの勉強によりある程度身に付けることができましたが、いざ実践となると、システムエンジニアの時との考え方の違いに悩まされました。
今回は、システムエンジニアからセキュリティエンジニアに転身する過程で体感したことをもとに、両者の違いについて紹介します。これからセキュリティを学ぼうとする方や、セキュリティを勉強したものの実務経験がない方などの参考になればと思います。
1. システムエンジニアとセキュリティエンジニアは考え方が違う
システムエンジニアとセキュリティエンジニアは、ITという同じ技術を武器とするエンジニアです。しかし、考え方は大きく違います。
システムエンジニアは、「技術を正しく使うエンジニア」です。善良な人が製品を正しく使用するという前提のもとに、必要な機能が正しく動き、考えられる範囲内でミスをしても正しく動作するという発想です。
一方で、攻撃者は技術を悪用します。セキュリティエンジニアは、「技術を悪用させないエンジニア」、攻撃者が技術を悪用するという前提のもとに、悪用方法を知りその対策をするという、システムエンジニアとは逆の考え方です。そのため、技術の悪用方法を考え慣れていないシステムエンジニアがセキュリティ対策を考えると、十分な対策を行うことができません。
成果物に対する考え方も異なります。システムエンジニアが責任を負う品質は、陳腐化しません。時間が経過してもユースケースが変わらないため、あらかじめ想定されるユースケースを検査しバグを無くせば、品質が上がります。そのため、製品の完成がゴールです(不具合の改修が発生する場合もありますが・・・)。
一方で、セキュリティ対策は陳腐化します。攻撃方法は新たに発明され、脆弱性は後から発見されます。そのため、セキュリティの観点では製品が完成してからがスタートです。新たに発見された攻撃手法はないか、新たに発生した脆弱性がないかを定期的に検証する必要があります。
2. 「根拠のない安心感」と「過剰な恐怖感」は敵である
サイバー攻撃やセキュリティはなかなか目に見えないものです。それがゆえ、「根拠のない安心感」を抱いてしまったり、「過剰な恐怖感」に襲われたりと両極端になりやすいと思います。
組み込みシステム開発は、以前はそれほどセキュリティが求められていなかった分野でした。私もインターネットへの接続がない機器の開発に従事していたため、サイバー攻撃やセキュリティを意識する機会がありませんでした。サイバー攻撃にリアリティを感じられず、「映画の中の世界」であり、現実社会のごく一部でしか起きないもののように感じていました。今から思うと、「根拠のない安心感」であり、無知のために安心していられる状態でした。
私がセキュリティエンジニアになって最初に襲われたのは、「過剰な恐怖感」でした。最初に行ったセキュリティ業務のひとつが攻撃観測でした。初めて観測したときの衝撃を今でも覚えています。開通したばかりの回線に機器をこっそり接続しただけなのに、接続後数秒で次々に攻撃パケットが飛んできます。平均すると約40秒ごとに1アクセスありました。内容を見ると、およそ半数は組み込み機器を狙ったと思われるものでした。「こんなに攻撃を受けているのだから、あれもこれも対策をしなければ」、「完璧に防御をしなくては」。
しかし、正しくセキュリティの理解が進むと、これも間違いだったことに気が付きます。 長く観測を行うと、攻撃の傾向が見えてきます。一例として、攻撃パケットの特徴をみると、「一般に知られている脆弱性に対する攻撃が多い」ということに気が付きました。また、新たに出現した攻撃も、よく調べると攻撃が始まる数日前に攻撃コードが一般に公開されていることが分かりました。
このことから、既知の脆弱性対策が必須であるとともに、新たな脆弱性が見つかった時の早急な対策の効果が大きいといえます。セキュリティ対策を正しく行うためには、まず攻撃動向を知るということが重要です。自身や自組織で攻撃観測を行う以外にも、攻撃観測レポートを読むことも参考になります。いくつか攻撃観測レポートを紹介します。
・情報通信研究機構(NICT) NICTER観測レポート
https://www.nict.go.jp/cyber/report.html
・ハニーポット観察記録
https://www.morihi-soc.net/?cat=9
3. セキュリティ対策に正解はない
私がエンジニアになったばかりのころは、セキュリティを調べるうえで無意識のうちに下記のようなものを求めていました。
(1) 数あるセキュリティ対策のうち、何をどこまでやればよいのか、何はやらなくてよいのか
(2) 製品開発時に行えば、完成以降はメンテナンスフリーになるセキュリティ対策
国内外の世にあるセキュリティガイドラインをいろいろ見てまわり、「このようなことを考慮しなさい」と書いてあっても、「具体的にどのように実現すればいいのか」「どこまでやれば安全なのか」という肝心な部分がありません。どれも自分の求める答えがどこにも見つからず、当時の私は、「こんなもの使えない」と思ってしまいました。
しかし、セキュリティを学ぶ中で、そのようなものは作れないということに気が付きました。第一に、このようなものが公開情報になれば、当然、攻撃者はこれを分析したうえで攻撃します。そのため、「ここまでやれば安全」だったことは、その時点で安全ではなくなります。
さらに、必要なセキュリティレベルはシステムによって異なります。また、セキュリティ対策は品質のように完璧を求めるものではなく、リスクマネジメントと同じ考え方が必要です。想定されるセキュリティリスクに対して、受容できるレベルまでリスクを低減するという考え方が重要なのです。受容できるレベルは企業の経営方針や製品特性によって異なるため、一概にどこまで行ったらよいかということが言えないのです。
最後に
今回は、システムエンジニアとセキュリティエンジニアの違いを紹介しました。次回は、組み込み機器のセキュリティ向上の考え方を紹介しようと思います。
富士ソフトのセキュリティソリューションについて、詳しくはこちら
セキュリティソリューション