Saltzer & Schroeder の 8 原則
Saltzer & Schroeder の 8 原則
- Economy of mechanism:効率的なメカニズム
⇒単純で小さな設計を心がける。 - Fail-safe defaults:フェイルセーフなデフォルト
⇒必要ないものを排除するのではなく、必要なものを許す判断を基本とする。 - Complete mediation:完全な仲介
⇒あらゆるオブジェクトに対するすべての処理に関与する。 - Open design:オープンな設計
⇒設計内容を秘密していることに頼らない。 - Separation of privilege:権限の分離
⇒1つの鍵を持つ者にアクセスを許してしまう仕組みよりも複数の鍵を使って保護する方
が、強固だし柔軟でもある。 - Least privilege:最小限の権限
⇒システムのすべてのプログラムおよびすべてのユーザは、業務を遂行するために必要な最
小の権限の組み合わせを使って操作を行うべきである。 - Least common mechanism:共通メカニズムの最小化
⇒複数のユーザが共有し依存する仕組みの規模を最小限に押える。 - Psychological acceptability:心理学的受容性
⇒ユーザが日常的に無意識のうちに保護の仕組みを正しく利用できるように、使いやすさを
優先した設計が重要である。
具体例を交えながら具体的な解説
「Saltzer & Schroeder の 8 原則」はコンピュータセキュリティの設計において重要なガイドラインである。
- 最小権限の原則 (Principle of Least Privilege)
説明: ユーザーやプログラムは、必要な最小限の権限のみを持つべきである。
具体例: システム管理者が特定のアプリケーションを実行する際、アプリケーションが必要とする権限だけを与え、全システムへのアクセス権を与えない。
- 境界の防御 (Fail-Safe Defaults)
説明: システムは、デフォルトでアクセスを拒否するように設計されるべき。
具体例: 新しいユーザーアカウントが作成されたとき、デフォルトではすべてのリソースへのアクセスが拒否され、必要に応じて権限を追加する。
- 完全性の原則 (Complete Mediation)
説明: すべてのアクセス要求は、常に検証されるべき。
具体例: ユーザーがファイルにアクセスするたびに、そのユーザーの権限を確認する。
- セキュリティのオブジェクト (Open Design)
説明: セキュリティメカニズムは、公開されているべき。
具体例: 暗号化アルゴリズムやプロトコルは公開され、広くレビューされるべき。
- 最小のエクスポージャ (Separation of Privilege)
説明: セキュリティの決定は、複数の条件に基づいて行われるべき。
具体例: 重要な操作を実行するためには、複数の承認が必要なシステム(例:二要素認証)。例えば、銀行のオンライン取引では、パスワードとSMSで送信されるコードの両方が必要です。
- 最小の露出 (Least Common Mechanism)
説明: 複数のユーザーやプログラムが共有するメカニズムは最小限にすべき。
具体例: 共有のデータベース接続を使用するのではなく、各ユーザーが独自の接続を持つことで、他のユーザーのデータにアクセスできないようにする。
- 信頼の最小化 (Psychological Acceptability)
説明: セキュリティメカニズムは、ユーザーにとって使いやすく、受け入れやすいものであるべき。
具体例: パスワードの複雑さを求める際に、ユーザーが覚えやすいフレーズを使用できるようにする(例:パスワードマネージャーの利用)。
- 完全性の原則 (Compromise Recovery)
説明: システムは、侵害が発生した場合に回復できるように設計されるべき。
具体例: 定期的なバックアップを行い、データが失われた場合に迅速に復元できるようにする。
監査可能性 (Auditability)
- この原則は、システムがすべてのユーザーのアクティビティを追跡し、責任を持たせる仕組みが必要であることを強調している。
- 監査可能性は、セキュリティの透明性を高め、ユーザーの行動に対する責任を明確にする。これにより、悪意のある行動や不正アクセスを特定しやすくなり、システム全体のセキュリティを向上させる。
説明: システムは、すべてのユーザーのアクティビティを追跡し、責任を持たせる仕組みが必要である。これにより、セキュリティインシデントが発生した場合に、誰が何をしたのかを明確にすることが可能となる。
具体例: ログイン、データの変更、システム設定の変更など、すべての重要なアクションを記録するログシステムを実装すること。これにより、後で問題が発生した際に、誰がそのアクションを実行したのかを追跡できるようになる。
Discussion