> [!abstract] 概要(abstract の日本語訳) > 本論文はディペンダビリティ(dependability)に関する主要な定義を示す。ディペンダビリティとは、信頼性(reliability)・可用性(availability)・安全性(safety)・完全性(integrity)・保守性(maintainability)等の属性を特殊ケースとして含む包括的概念である。セキュリティは可用性と完全性に加え機密性(confidentiality)に関する考慮をもたらす。まず基本定義を示し、次いでそれを補足する追加定義を示す。追加定義はディペンダビリティとセキュリティへの脅威(障害・エラー・失敗)、それらの属性、および達成手段(障害防止・フォールトトレランス・障害除去・障害予測)を扱う。目的は、幅広い状況に関連する汎用概念の集合を明確化し、特定の種類のシステム・システム失敗・失敗原因に集中するコミュニティを含む、多数の科学的・技術的コミュニティ間のコミュニケーションと協力を助けることにある。 ## 論文情報 - **タイトル**: Basic Concepts and Taxonomy of Dependable and Secure Computing - **著者**: [[Algirdas Avizienis]](Vytautas Magnus 大学/UCLA), [[Jean-Claude Laprie]]([[LAAS-CNRS]]), [[Brian Randell]](Newcastle 大学), [[Carl Landwehr]](University of Maryland/NSF) - **媒体**: IEEE Transactions on Dependable and Secure Computing (TDSC), Vol. 1, No. 1 - **発表年**: 2004(創刊号) - **DOI**: 10.1109/TDSC.2004.2 - **ページ数**: 23 ページ(pp. 11–33) - **前身**: 1992 年の書籍 "Dependability: Basic Concepts and Terminology" [[IFIP WG 10.4]] / IEEE CS 合同委員会による 1980 年来の継続的取り組みが結実した集大成版 ## 概要 ディペンダビリティとセキュリティに関する用語・概念の「最小合意(minimum consensus)」を確立することを目的とした教科書的な分類論文である。コンピューティング・通信システムを対象に、システムの機能/振る舞い/構造を定義したうえで、脅威(障害・エラー・失敗)の分類、属性の定義(可用性・信頼性・安全性・機密性・完全性・保守性)、および達成手段(障害防止・フォールトトレランス・障害除去・障害予測)の 3 つの柱からなる「ディペンダビリティとセキュリティの木(tree)」を体系化する。実装詳細には立ち入らず、概念と定義の明確化に徹している。 ## 問題設定 - 依存性(dependability)・セキュリティに関する概念は複数のコミュニティ(耐障害コンピューティング・安全性・セキュリティ)で独立に発展し、用語が混乱していた - 異なるシステム種別・障害種別に集中する技術コミュニティ間のコミュニケーションを阻む概念的断絶を解消する必要があった - 従来の分類(1992 年版)では悪意ある障害の分類が不十分であり、開発プロセスの障害やコンピテンシー問題が明示的に扱われていなかった ## 基本概念の定義体系 ### システムと状態 - **システム**: 他のエンティティ(ハードウェア・ソフトウェア・人間・物理世界)と相互作用するエンティティ。再帰的にコンポーネントへ分解可能。 - **全状態(total state)**: 計算・通信・格納情報・相互接続・物理状態の集合。 - **提供するサービス(delivered service)**: ユーザが感知するプロバイダの外部状態の系列。 ### 脅威の基本連鎖(fundamental chain of threats) ``` 障害(fault) → エラー(error) → 失敗(failure) → [隣接システムへの外部障害として連鎖] ``` - **障害(fault)**: エラーの実際または推定される原因。 - **エラー(error)**: 後続のサービス失敗につながりうるシステム全状態の一部。 - **失敗(failure)**: 提供されたサービスが正規のサービスから逸脱するイベント。 - **脆弱性(vulnerability)**: 外部障害がシステムを侵害するのを可能にする内部障害。 図 11「ディペンダビリティとセキュリティの脅威の基本連鎖」参照。障害は活性化(fault activation)によってエラーを引き起こし、エラーはサービスインタフェースまで伝播したときに失敗となる。 ### ディペンダビリティと属性(§2.3) **ディペンダビリティの原定義**: "the ability to deliver service that can justifiably be trusted"(正当に信頼できるサービスを提供する能力)。 **代替定義**: "the ability of a system to avoid service failures that are more frequent or more severe than is acceptable"(許容範囲を超える頻度・深刻度の失敗を避ける能力)。この代替定義から「ディペンダビリティ失敗(dependability failure)」概念が直接導出される。 **属性(図 1)**: | 属性 | 定義 | |---|---| | 可用性(availability) | 正規サービスの提供準備ができている状態 | | 信頼性(reliability) | 正規サービスの継続性 | | 安全性(safety) | ユーザと環境への壊滅的な結果の不在 | | 完全性(integrity) | 不適切なシステム改変の不在 | | 保守性(maintainability) | 修正と修繕を受け入れる能力 | | 機密性(confidentiality) | 情報の不正開示の不在(セキュリティ固有) | **セキュリティ** = 機密性 + 完全性 + 可用性 の合成概念(ただし「不正操作のみを対象とした」形で)。統一定義: "the absence of unauthorized access to, or handling of, system state"(システム状態への不正アクセスまたは操作の不在)。 ### 信頼と依存(§4.2) - **依存(dependence)**: システム A の B への依存 = A のディペンダビリティが B のそれによってどれだけ影響を受けるかの程度。バイナリではなく測定可能空間上の値を取る。 - **信頼(trust)**: 受け入れられた依存関係(accepted dependence)。A が B の失敗を許容する手段を提供しない程度が、A の B への信頼の尺度となる。 ## 障害の分類(§3.2) 8 つの基本視点から 31 の複合障害クラスを定義(図 4・図 5)。 **8 基本視点**: 1. フェーズ(開発/運用) 2. ドメイン(ハードウェア/ソフトウェア) 3. 境界(内部/外部) 4. 自然/人為 5. 意図(意図的/非意図的)※人為のみ 6. 目的(悪意/非悪意)※意図的のみ 7. 故意性(故意/過失)※非悪意人為のみ 8. 能力(事故的/コンピテンシー欠如)※非故意のみ **3 つの上位グループ**: - **開発障害**: 開発フェーズに発生するすべての障害クラス - **物理障害**: ハードウェアに影響するすべての障害クラス - **相互作用障害**: すべての外部障害 **主要な障害サブクラス**: - 悪意ある論理障害(Malicious logic faults): トロイの木馬・論理爆弾・トラップドア・ウイルス・ワーム・ゾンビ(図 7) - 侵入試行(Intrusion attempts): 外部の悪意ある人為的障害 - コンフィギュレーション障害(Configuration faults): 運用フェーズにおける不適切なパラメータ設定 - 断続的障害(Intermittent faults): 活性化が系統的に再現不能(ソフトエラーの源) ## 失敗の分類(§3.3) **サービス失敗(service failure)** は 4 視点で分類される: 1. **障害ドメイン**: コンテンツ失敗 / タイミング失敗(早過ぎる・遅過ぎる) 2. **検出可能性**: 通知済み失敗 / 未通知失敗(誤警報 vs サイレント失敗) 3. **一貫性**: 一貫した失敗 / 非一貫した失敗(Byzantine 失敗) 4. **深刻度**: 軽微(minor) → 壊滅的(catastrophic) **特殊なシステム設計**: - フェイルコントロールドシステム: 仕様内の失敗モードのみ発生 - フェイルハルト / フェイルストップ / フェイルサイレント: 停止のみ - フェイルセーフ: 軽微な失敗のみ **開発失敗(§3.3.2)**: 予算失敗・スケジュール失敗・ダウングレード。例: AAS(Advanced Automation System)は 15 億ドルを費やして完全な開発失敗に終わった。 ## ディペンダビリティの達成手段(§5) ``` 障害防止(fault prevention) ─ 開発方法論・設計規則 障害除去(fault removal) ─┐ → ディペンダビリティ分析 障害予測(fault forecasting)┘ (依拠度への信頼を確立) フォールトトレランス(fault tolerance) ─┐ → ディペンダビリティ提供 障害防止(fault prevention) ────────────┘ (信頼できるサービス能力を提供) ``` ### フォールトトレランス(§5.2) エラー検知 + システム回復 の組み合わせで実現(図 16)。 - **エラー検知**: 事前検知(preemptive) / 並行検知(concurrent) / 要求時検知 - **エラー処理(error handling)**: ロールバック / ロールフォワード / 補償(compensation/masking) - **障害処理(fault handling)**: 故障箇所特定 → 隔離 → 再構成 → 再初期化 - **カバレッジ(coverage)**: フォールトトレランス有効性の尺度。カバレッジ不足はディペンダビリティ向上の厳しい制約となる(Fig. 18)。 - **コンセンサス問題**: 単一ソース情報をフォールトトレラントに共有する際、非障害コンポーネント間の合意が必要。 - 設計多様性(design diversity): 固体開発障害(solid development fault)への耐性にはチャネル間の別設計・別実装が必要。 ### 障害除去(§5.3) - **開発中**: 検証(静的/動的) → 診断 → 修正 → 非回帰検証。 - 静的検証: 静的解析・定理証明・モデル検査 - 動的検証(テスト): 決定論的 / ランダム(統計的) - 障害注入(fault injection): フォールトトレランス機構の検証に必要 - **運用中**: 修正保守(corrective) / 予防保守(preventive) ### 障害予測(§5.4) - **定性的評価**: 失敗モード・影響分析(FMEA)・障害木(fault tree) - **定量的評価**: マルコフ連鎖・確率的ペトリネット → Performability - **ディペンダビリティベンチマーク**: 障害存在下のシステム挙動を測定・比較する手続き ## 新規性・主な貢献(2004 年版の拡張) 本論文 §1 が列挙する 1992 年版からの主な拡張: 1. ディペンダビリティとセキュリティの関係を図 14 で明確化 2. ディペンダビリティの定量的定義を導入(代替定義) 3. 人為的非悪意障害にコンピテンシー(competence)基準を追加 → 組織的無能(organizational incompetence)概念の導入(AAS 開発失敗の例) 4. 悪意ある障害の議論を大幅更新(エクスプロイト・ゼロデイの分類を含む) 5. サービス失敗(service failures)とディペンダビリティ失敗(dependability failures)を区別 6. 開発プロセスの障害をタクソノミーに明示的に組み込む 7. ディペンダビリティを信頼・生存可能性(survivability)・信頼性(trustworthiness)・高確信システム(high confidence)と対比(図 15) ## 強み - 1980 年来の IFIP WG 10.4 + IEEE CS 合同委員会による 25 年間の合意形成の集大成 - ハードウェア・ソフトウェア・ネットワーク・人間・物理世界を統一的に扱う - 悪意ある障害とエラーを従来の耐障害フレームワークに統合し、セキュリティ分野との橋渡しを実現 - 付録に 120 語以上の定義インデックスを備え、辞書的に参照可能 ## 弱点・課題 - 定量的なディペンダビリティとセキュリティの共通尺度は「未解決」と論文自身が認め、以後の課題として残る - コンフィデンシャリティの技術的詳細(暗号・認証等)は紙幅の制限から割愛 - 複雑な人間-機械系(ambient computing・ノマディック computing)への適用はさらなる精緻化が必要と予告 - 確率的枠組みは設計仮定と現実の乖離を完全には検証できない(§5.5 のカバレッジ問題) ## 関連 - [[ディペンダビリティ]] — 本論文の中心概念 - [[ソフトウェア耐障害性]] — Gray 1985 との対比: 本論文はより形式的な分類を提供 - [[障害緩和]] — ディペンダビリティ達成手段の「障害除去/フォールトトレランス」との接続 - [[障害注入]] — 障害除去・フォールトトレランス評価の手法として §5.3 で定義 - [[Metastable Failure]] — 論文が定義する「相互作用障害」の現代的な具体例 - [[SRE]] — SRE の信頼性エンジニアリングはこの論文の達成手段体系と対応関係にある ## 出典 - `.raw/papers/2004-aviz-laprie-randell.pdf`(全文) - DOI: 10.1109/TDSC.2004.2