まずセキュリティとは何かについて考えてみましょう。セキュリティとは、言ってしまえば、あらゆる攻撃に対する防御策を考えることです。あなたには、お金・知識・従業員といった守りたい資産があります。しかし、その資産を破壊、もしくは奪おうとする外部からの攻撃があります。セキュリティとはそういった攻撃から資産を守ることなのです。セキュリティの世界で攻撃から守る防御策のことをセーフガードと言います。セーフガードは特定の防御策を示した言葉ではなく、監視カメラ、壁、システム制御はすべてセーフガードです。セーフガードを考えるのが皆さまの今後のお仕事になります。
では次にどのようなセーフガードを作ればよいのでしょうか。そこで登場する概念がCIAトライアドになります。CIAトライアドは機密性・完全性・可用性の略で、セキュリティを確保するために必要な3要素です。機密性(Confidential)とは、第三者に情報が漏洩・盗聴されない性質のことです。あなたのメールが漏洩したらセキュリティが守られているとは言えないですよね。完全性(Integrity)とは、情報の改ざんや破壊が行われず完全かつ正確な情報である性質のことです。あなたのメールが改ざんされたことにシステムが気づかなければ、いままでのやり取りも本当にあなたがしていたのか怪しくなります。可用性(Availability)とは、サービス稼働の継続を示す性質です。サービス継続はビジネスの柱です。会社のメールが通じなくなれば、ビジネスが危機的な状態になるのは想像がつくでしょう。
CIAトライアドの観点から防御策を考えるとき、暗号化といったデータを読み取られないようにするものは機密性を守るもの、不正なデータが混入しないようにするものは完全性を守るものというように、いったい何の要素に対しての防御策であるかを意識しておく必要があります。どの要素に対してのセーフガードかを把握しておかないと、トライアングルはとても歪で脆弱になるか使い勝手の悪いサービスになります。この3つの要素はどれもかけてはならず、バランスを保つ必要があります。
CIAの対義語として、やってしまうとセキュリティが守られなくなる概念を漏洩・変化・破壊の頭文字をとってDADといいます。ここまでをいったんまとめると、皆様はセーフガードをCIAトライアドのバランスをとりながら大きくしていくことが求められます。
セキュリティの3要素である機密性、完全性、可用性に関してはやや抽象度の高い言葉です。ここからはそれぞれの定義を具体例を交えながら深堀りしておきます。説明の中では、いくつか技術的な用語も交えていきますが、これらはCISSPの勉強を進めていくうえで知っていくものですから、ご安心ください。まずは、雰囲気を味わっていただければ十分だと思います。
機密性は、セキュリティ3要素の第1の要素です。機密性は、データ、オブジェクト、リソースの機密性を保護できているかで計られます。そもそも機密性を高める目的は、データへの不正アクセスを防止または最小化することです。許可されたアクセスを確保しながら、不必要な開示を防止しなければなりません。機密性を脅かす例としては、人の心理を利用して機密情報を聞き出すソーシャルエンジニアリングという手法があります。本来、機密情報を保護しなければならない人から情報を取得します。また現代は優秀なコンピューター性能と豊富な情報源に溢れているため、脆弱な暗号化をしていると、暗号文を解読されてしまいます。画像データに文字を埋め込むといった意図しない使われ方をすると、みすみす機密情報の漏洩を許してしまうかもしれません。そういった攻撃は、単純に攻撃者の能力だけに依存していません。ユーザーやシステム管理者のルール違反や、セキュリティポリシーの見落としやセキュリティコントロールの設定ミスからも発生します
次にCIAの2番目の要素である完全性も見ていきましょう。完全性とは、データの信頼性と正確性を保護する概念です。完全性の目的は、データの不正な改ざんを防止することにあります。完全性の保護が適切に実装されていれば、意図的な不正行為やユーザーの誤った更新から守りながら、許可された変更を行う手段を提供することができます。完全性の脅威は、機密性でも登場した人為的なミスとともに、ウイルス、不正アクセス、コーディングやアプリケーションのエラー、システムのバックドアもあります。一方で完全性を守るセーフガードのポイントは、データの勝手な変更を検知することにあります。デジタル署名はその一例です。デジタル署名を利用することで、データが変更されていないことを検証でき、インターネットのようなオープンな通信を利用することができます。
最後にCIAの3つ目の要素である可用性について説明します。可用性では、許可された対象者がリソースにタイムリーに、中断なくアクセスし、状況によって必要とみなされる十分な帯域幅と処理をスムーズに返すことが求められます。可用性の脅威は、大量のリクエストを送付し、ショートさせるDDOS攻撃・メールボムが該当するほか、地震といった災害によって事業の施設やサービスに利用しているサーバーが壊れたりすることも考えられます。システムの可用性を維持するためには、許可されたアクセスに対する十分なパフォーマンスを確保し、一時的な停止を最小化する冗長性を確保、バックアップが行われている必要があります。システムの2重化を支える技術の一つとして、RAIDやHAクラスターがあります。これはディスクやサーバーを物理的に複数にして置き、ソフトウェアで単一に見せることで稼働率を100%近くにまで上げることができます。
最後に、CIAのバランスが大事であるということについても補足しておきましょう。厄介なことに機密性と完全性と可用性は互いに依存しています。機密性や完全性を過剰に保護すると、可用性が制限されることがあります。逆に、可用性を過剰に提供すると、機密性と完全性が損なわれる可能性があります。ログインを例に説明しましょう。どのサービスでも大抵ログイン画面がありますね。セキュリティのためと数分おきにパスワードを聞かれたらどうでしょう?確かに、セキュリティは強固になっていますが、とてもめんどくさいです。では、パスワードの要求は1回きりにして、すべての権限をユーザーに与えてみましょう。確かにあらゆる必要なドキュメントが即時に見れてとても仕事しやすくなり、可用性が上がりました。しかし、あらゆる機密性と完全性が取り払われ、もしその人のパスワードが漏洩したら一大事です。どちらのケースもバランスが悪いわけです。そこで、パスワード認証は取りやめて生体認証にし、指紋をかざすだけで認証完了できるようにしてみましょう。認証自体はしているのですが、その分要求されていたパスワードを入力する手間がなくなりました。3要素を損なわずにセキュリティを底上げすることが考えられますね。セキュリティは、厳しくすれば良いというものではないということを覚えておいてください。
セキュリティの教科書の1ページ目はCIAトライアド。