セキュリティの原則として、当たり前に理解しておかなければならないことが たくさんあります。 Information Assurance Technical Framework(IATF)[NSA 2000]は、広くセキュリ ティ情報を得るのに適したところです。 NIST は「原則や手法として広く認められている」ハイレベルな場所と見られて います。 またコンピュータのセキュリティを網羅しているテキストとして、[Pfleeger 1997] 等があります。 ここで、セキュリティの原則についていくつか要約してみます。
コンピュータセキュリティは全体で 3 つの目標があります。
機密を保持する(秘密を保持するともいいます)。 コンピュータシステム資産は認証を受けたメンバーだけがアクセスできることを意味 します。
完全な状態を保つ。認証過程を経て許可 を受け、権限を持ったメンバーだけが資産を変更できることを意味します。
利用できること。権限を持ったメンバーが、資産 へ適時(システムが必要とする要件によって決まる)アクセスできます。 この目標が達成できない場合は、サービス拒否という状態になります。
時にはこれらの目標が、既知の脅威に対する対抗手段である場合や法律で制定して ある場合もあります。 たとえば、米国の銀行や金融機関に対して、「Gramm-Leach-Bliley」(GLB)法という プライバシー関連の新しい法律ができました。 この法律では、共有される個人情報を開示すること及びそれらを安全にすることを 必須とし、第三者との間で共有される個人情報の開示を要求し、さらに、それらの 機関に対して顧客がデータ共有を止めさせる機会を与えるよう指導しています [Jones 2000]。
セキュリティとシステムやソフトウェア上のその他の技術方針とが相反する場合が あります。 セキュリティが「簡単に使う」ことを妨げる場合があるからです。たとえば安全な 設定を施すには、動作はするものの安全ではない設定よりも手間をかける必要がある かもしれません。 この相反する点を解決できる場合は多々あります。たとえば問題点をよく考える ことで、簡単に利用ができてかつ安全なシステムを構築できる場合がよくあります。 セキュリティと抽象化(情報の隠蔽)にも相反する点があります。 たとえば高度なライブラリ・ルーチンは、安全に実装してあろうがなかろうが、仕様 からは何もわかりません。 つまりアプリケーションに安全が求められる場合、確信がもてないなら、自分自身で 実装しなければいけません。つまりそのライブラリを修正しなければいけない ということです。あなたが不適切なライブラリ・ルーチンを選択すると、迷惑を 被るのはユーザなのです。
「徹底的に防御する」という原則は、セキュリティ上優れています。 たくさんの防御機構(階層)を適した場所に配置し、攻撃に成功するには複数の機構を 攻撃側が破らなければならないように設計します。