セキュリティ設計に関する用語には,「フォールトアボイダンス」,「フォールトトレランス」,「フェールセーフ」,「フェールソフト」,「フールプルーフ」など似た響きの言葉が多数存在し,混同しやすいかと思います.
そこで,この記事ではこれらのセキュリティ設計に関する用語を体系的に,そして,信号機を例にまとめてみます.各種情報処理技術者試験,情報処理安全確保支援士試験,その他セキュリティ全般に関する勉強の一助になれば幸いです.
セキュリティ設計の全体像
まずは,セキュリティ設計の全体像について,大まかにまとめてみます.

上から順に,「目的」,「設計思想(戦略)」,「実現方法(戦術)」と続きます.システムに求められるセキュリティ要件(目的)に基づいて,設計思想を立案し,その設計思想に基づいて具体的な実現方法を考えるといった要領です.
設計思想(戦略)
設計思想は,「そもそも障害を起こさない(回避)」,「障害の発生を前提として,障害による影響を最小限に抑える(受容)」の2択になります.それぞれについて詳しく見ていきましょう.
フォールトアボイダンス(障害回避)
そもそも障害を起こさない・起こさせないという思想です.信号機を例に考えてみると,信頼性の高い(故障する可能性が極めて低い)部品と制御システムで信号機を構築するイメージです.
フォールトトレランス(障害許容)
「信号機に障害は付き物である!」という考え方です.ただし,「障害は付き物だから仕方がないよね.」で終わらせるのではなく,「障害による影響を可能な限り最小限に抑えよう」というアプローチです.
また,「フォールトトレランス」には,慣例的に単なる設計思想に留まらず,「システム/機器の障害に備え,冗長化構成をとる(故障に備えて余分に用意しておく)」という具体的な手法が含まれます.
信号機を例に考えてみると,以下のように冗長(余分)に信号機を増設しておくというイメージです.

各ポイントに設置された2台の信号機のうち,片方が故障しても,もう一方が通常運転を続けていれば差し支えありませんね.
現実問題では,制御盤を介して各信号機は連動しており,片方が故障すればもう一方も故障する可能性が高いものと思われます.また,コストパフォーマンスの観点からも現実的ではありませんが,イメージとしてはこのような形になります.
次章では,この考え方を具体的に実現するための「フェールセーフ」や「フェールソフト」の方法について解説します.
実現方法(戦術)
「フォールトトレランス」の設計思想を前提とした具体的な実現方法です.
フェールセーフ
「フェールセーフ」は,障害発生時にシステムを安全(セーフ)側に持っていくことです.以下にあるような十字路の交差点に設置された信号機を例に考えてみましょう.

信号制御装置が故障し,正しい信号の灯火を現示できなくなりました.この場合,「フェールセーフ」では,全ての信号を赤色灯火にしてしまいます.
著しい交通渋滞が発生し,利便性の低下と迷惑極まりない点は否めませんが,「信号機の誤動作により,全ての信号が青色となってしまい,それを確認した車同士が交差点内で衝突してしまう」という最悪の事態は避けることができます.
「フェールセーフ」のポイントは,利便性が低下する可能性と引き換えに安全を守ることにあります.
フェールソフト(縮退運転)
「フェールソフト」は,障害発生時に速やかにシステムや機器を停止させるのではなく,その動作規模を一部縮小させた上で,(生き残ったシステム/機器)だけで運転を継続するというものです.
以下のような矢印付きの信号機を例に考えてみましょう.

矢印の灯火部分のみに異常が発生し,その他の制御装置や灯火には一切問題が無いというケースを想定します.
「問題が発生しているのは矢印だけであり,他は大丈夫なんだよね.だったら,信号機全体を止めたり,フェールセーフ的に何が何でも赤色灯火にしてしまうのはちょっとやり過ぎなんじゃない?」というのが「フェールソフト」の考え方です.
つまり,矢印灯火だけを見捨て(矢印は表示されないようにして),生き残った青・黄・赤の灯火だけでやり繰りすることになります.(現実的にこのような運用がなされるかは別問題とします.)
フールプルーフ(人為的なミスにフォーカス)
「フールプルーフ」は,これまでの2つの考え方とは少し毛色が異なります.「フェールセーフ」や「フェールソフト」は,機械的・システムにおける異常・障害を考慮した考え方ですが,「フールプルーフ」は,人為的なミスにフォーカスした考え方です.
根底には,「ヒューマンエラー」という言葉があるように,「人は愚かな(ミスをする)生き物だ.」という考え方があります.微妙にニュアンスは違いますが,「フールプルーフ」の“フール”は,「エイプリルフール」の“フール”ですね.「愚か者」という意味合いがあります.
実際問題は,どのような運用になっているのかは不明ですが,以下のような管理画面で各灯火の点灯時間が制御されていたとします.

赤色灯火の点灯時間について,「1800秒(30分)」という明らかに異常な値が入力されています.こうした異常値をシステムが無批判に受け入れてしまうと,誤動作や思わぬ挙動を引き起こす原因になってしまいます.(赤信号で30分も待たされる交差点が実在したら,たまったものではないですよね.)
このような人為的なミスを無批判に受け入れてしまうのではなく,「これは人為的なミスなのではないか?」とシステムが判断し,要求を拒否したり,エラーメッセージを表示したりするなどして誤動作が起こりにくい設計にすることを「フールプルーフ」と言います.

