「すべての開発者はセキュリティ・エンジニアになるべき」――ミッコ・ヒッポネン氏インタビュー

――セキュリティエンジニアに限らず、一般のエンジニアはどの程度のセキュリティレベルを身に付けているべきでしょうか?
ヒッポネン氏:今日では、全てのエンジニアがセキュリティエンジニアになる必要があります。セキュリティというのは、既にあるプロジェクトに後からくっつけられるようなものではありません。すべてのプロジェクトは、最初からセキュリティを考慮して構築されるべきです。
一見、セキュリティというのは、何か作り出すのを制限するものに思えるかもしれませんが、そうではありません。セキュリティがプログラムを走らせ、企業をプロダクティブに、開発者をクリエイティブにするのです。
実際、セキュリティを考慮しなかったためにうまくいかず、深刻な問題が発生したプロジェクトの例はいくつもあります。
――技術の移り変わりは速く、開発者は開発に関する技術のキャッチアップだけに追われがちですが、どのようにセキュリティについて学習するべきでしょうか。
ヒッポネン氏:セキュリティ脆弱性に関する新しい事例やトピックを見ておくことは、それほど重要ではありません。というのも、昨今のセキュリティ問題を詳細に見ていくと、開発者が標準的に、基本的な考え方でもって対処できる問題だからです。
例えば、コードのダブルチェックや、サニタイジング、安全なストア、暗号化――これらはプロジェクトにかかわらず開発者にとって基本的な要素です。これらでもって、脆弱性は修正されるのです。
実際、全く新しい脆弱性のケースが見つかることはかなり珍しく、もしそれまで見たことのなかった脆弱性問題が発生したとしても、開発者ができる対策はなかったと言えるでしょう。しかし、もしそれが防げたはずのバグだったなら、言い訳は通用しません。なぜやるべき仕事をやらなかったのか、という話になります。
これは、ロケット開発ではないのです。セキュアなコードを書くために特別なことをする必要はなく、基本原理を分かっていればよいのです。
――開発者が普段から行うべき基本を的確に行うことで、高いセキュリティは実現できるということですね。
ヒッポネン氏:その通りです。スピードとセキュリティ、どちらかを妥協しなければいけないのではありません。セキュリティの実装は、開発スピードを遅くするどころか、クオリティの高い、壊れにくいコードを実現し、開発者の手間を省くことができます。
脆弱性というのは多くの場合、コードの「バグ」です。
「どうやったら脆弱性のないOSを実現できるのか?」という質問を受けることがたまにありますが、脆弱性は魔法ではありません。バグです。なぜコードにバグが生まれるのか。それは人間がコードを書いているからです。人間というのはミスをします。人間がコードを書いている限り、バグが生まれ、脆弱性が生まれるのです。
コンピューターがオンラインになる前、1990年代では、状況が少し異なりました。こういったバグはありましたが、クラッシュするのはそのコンピュータのみ。再起動してやり直せばよかったのです。
しかし今日では、全てものがオンラインになっています。バグは特定のシステムのみならず、他のシステムにも影響を与えます。こうして、かつては無害だったバグが、脆弱性になってしまうのです。
だからこそ、テストは重要です。私はテストや品質管理の担当者と多く会話をしてきました。プロジェクトのセキュリティを強化する鍵となるのは、セキュリティのマインドセットでテストを行い、脆弱性を発見することです。それによってデプロイ前に修正することができるわけです。
――ありがとうございました。
