NIST SP 800-192 日本語訳
英語タイトル : Verification and Test Methods for Access Control Policies/Models日本語タイトル : アクセス制御ポリシー/モデルの検証および試験方法
公開日 : 2017-06-27
原文URL : https://csrc.nist.gov/pubs/sp/800/192/final
翻訳編集 : 自動生成(有志による非公式の日本語訳), 原文取得日 : 2026-09-27, 訳文 : 586 / 598 ブロック
[要約] SP 800-192 は、アクセス制御ポリシーとモデルが意図したセキュリティ要件を満たすことを確認するための、検証および試験の方法を示す文書です。アクセス制御ポリシーとモデル、安全性とフォールト、ポリシー検証の原則、検証およびテスト技術を扱い、システム例として NIST ACPT を紹介します。アクセス制御モデルの設計、検証、テストを支援する技術情報を各機関に提供することが目的で、ポリシーがメカニズムによって実装可能であることを保証するための原則と要件を述べます。
NIST Special Publication 800-192
NIST 特別刊行物 800-192
Verification and Test Methods for Access Control Policies/Models
アクセス制御ポリシー/モデルの検証およびテスト手法
Vincent C. Hu Rick Kuhn Dylan Yaga
Vincent C. Hu、Rick Kuhn、Dylan Yaga
This publication is available free of charge from: https://doi.org/10.6028/NIST.SP.800-192
本出版物は以下より無料で入手できます:https://doi.org/10.6028/NIST.SP.800-192
C O M P U T E R S E C U R I T Y
コンピュータセキュリティ
[NIST のロゴ。公的な標章のため、この非公式サイトには掲載していません。原本 PDF を参照してください。]
NIST Special Publication 800-192
NIST Special Publication 800-192
Verification and Test Methods for Access Control Policies/Models
アクセス制御ポリシー/モデルの検証およびテスト手法
Vincent C. Hu
Vincent C. Hu
Rick Kuhn
Rick Kuhn
Dylan Yaga
Dylan Yaga
Computer Security Division
コンピュータセキュリティ部門
Information Technology Laboratory
情報技術研究所
This publication is available free of charge from: https://doi.org/10.6028/NIST.SP.800-192
本出版物は以下より無料で入手可能です: https://doi.org/10.6028/NIST.SP.800-192
June 2017
2017年6月
U.S. Department of Commerce
米国商務省
Wilbur L. Ross, Jr., Secretary
長官 Wilbur L. Ross, Jr.
National Institute of Standards and Technology
米国国立標準技術研究所
Kent Rochford, Acting NIST Director and Under Secretary of Commerce for Standards and Technology
NIST所長代行 兼 商務省標準・技術担当次官 Kent Rochford
Authority
権限
This publication has been developed by NIST in accordance with its statutory responsibilities under the Federal Information Security Modernization Act (FISMA) of 2014, 44 U.S.C. § 3551 et seq., Public Law (P.L.) 113-283. NIST is responsible for developing information security standards and guidelines, including minimum requirements for federal information systems, but such standards and guidelines shall not apply to national security systems without the express approval of appropriate federal officials exercising policy authority over such systems. This guideline is consistent with the requirements of the Office of Management and Budget (OMB) Circular A-130.
本出版物は、2014年連邦情報セキュリティ近代化法(FISMA)、合衆国法典第44編第3551条以下、公法(P.L.)113-283に基づく法定責任に従ってNISTにより作成されました。NISTは、連邦情報システムの最低要件を含む情報セキュリティ基準およびガイドラインを策定する責任を負っていますが、それらのシステムに対して政策権限を行使する適切な連邦政府職員による明示的な承認がない限り、そのような基準およびガイドラインが国家安全保障システムに適用されることはありません(shall not apply)。本ガイドラインは、行政管理予算局(OMB)サーキュラーA-130の要件と整合しています。
Nothing in this publication should be taken to contradict the standards and guidelines made mandatory and binding on federal agencies by the Secretary of Commerce under statutory authority. Nor should these guidelines be interpreted as altering or superseding the existing authorities of the Secretary of Commerce, Director of the OMB, or any other federal official. This publication may be used by nongovernmental organizations on a voluntary basis and is not subject to copyright in the United States. Attribution would, however, be appreciated by NIST.
本出版物のいかなる内容も、法定権限に基づき商務長官によって連邦機関に対して義務的かつ拘束力を持つものとされた基準およびガイドラインと矛盾するものと解釈されるべきではありません。また、これらのガイドラインは、商務長官、OMB長官、またはその他の連邦政府職員の既存の権限を変更または優先するものとして解釈されるべきでもありません。本出版物は、非政府組織が自発的に使用してよく、米国内において著作権の対象とはなりません。ただし、NISTへの帰属表示を行っていただければ幸いです。
National Institute of Standards and Technology Special Publication 800-192 Natl. Inst. Stand. Technol. Spec. Publ. 800-192, 68 pages (June 2017) CODEN: NSPUE2
米国国立標準技術研究所 特別刊行物 800-192 Natl. Inst. Stand. Technol. Spec. Publ. 800-192, 68 pages (June 2017) CODEN: NSPUE2
This publication is available free of charge from: https://doi.org/10.6028/NIST.SP.800-192
本刊行物は、以下より無料で入手可能である: https://doi.org/10.6028/NIST.SP.800-192
Certain commercial entities, equipment, or materials may be identified in this document in order to describe an experimental procedure or concept adequately. Such identification is not intended to imply recommendation or endorsement by NIST, nor is it intended to imply that the entities, materials, or equipment are necessarily the best available for the purpose.
原本PDFの抜粋画像

実験手順または概念を適切に説明するために、特定の商業組織、機器、または材料が本文書内で特定される場合があります。そのような特定は、NISTによる推奨または支持を意味するものではなく、それらの組織、材料、または機器がその目的にとって必ずしも入手可能な最良のものであることを意味するものでもありません。
There may be references in this publication to other publications currently under development by NIST in accordance with its assigned statutory responsibilities. The information in this publication, including concepts and methodologies, may be used by federal agencies even before the completion of such companion publications. Thus, until each publication is completed, current requirements, guidelines, and procedures, where they exist, remain operative. For planning and transition purposes, federal agencies may wish to closely follow the development of these new publications by NIST.
本刊行物には、割り当てられた法的責任に従ってNISTが現在開発中の他の刊行物への参照が含まれている場合があります。本刊行物の情報(概念および方法論を含む)は、そのような関連刊行物の完成前であっても、連邦機関によって使用される場合があります。したがって、各刊行物が完成するまでは、現行の要件、ガイドライン、および手順が存在する場合、それらは引き続き有効です。計画および移行の目的で、連邦機関はNISTによるこれらの新しい刊行物の開発状況を注視することを希望する場合があります。
Organizations are encouraged to review all draft publications during public comment periods and provide feedback to NIST. Many NIST cybersecurity publications, other than the ones noted above, are available at http://csrc.nist.gov/publications.
組織は、パブリックコメント期間中にすべてのドラフト刊行物をレビューし、NISTにフィードバックを提供することが推奨されます。上記以外の多くのNISTサイバーセキュリティ刊行物は、http://csrc.nist.gov/publications で入手可能です。
Comments on this publication may be submitted to: National Institute of Standards and Technology Attn: Computer Security Division, Information Technology Laboratory 100 Bureau Drive (Mail Stop 8930) Gaithersburg, MD 20899-8930 Email: sp800-192-comments@nist.gov
本刊行物に関するコメントは、以下に提出することができます: National Institute of Standards and Technology Attn: Computer Security Division, Information Technology Laboratory 100 Bureau Drive (Mail Stop 8930) Gaithersburg, MD 20899-8930 Email: sp800-192-comments@nist.gov
All comments are subject to release under the Freedom of Information Act (FOIA).
すべてのコメントは、情報自由法(FOIA)に基づく公開の対象となります。
Reports on Computer Systems Technology
コンピュータシステム技術に関するレポート
The Information Technology Laboratory (ITL) at the National Institute of Standards and Technology (NIST) promotes the U.S. economy and public welfare by providing technical leadership for the Nation’s measurement and standards infrastructure. ITL develops tests, test methods, reference data, proof of concept implementations, and technical analyses to advance the development and productive use of information technology. ITL’s responsibilities include the development of management, administrative, technical, and physical standards and guidelines for the cost-effective security and privacy of other than national security-related information in federal information systems. The Special Publication 800-series reports on ITL’s research, guidelines, and outreach efforts in information system security, and its collaborative activities with industry, government, and academic organizations.
米国国立標準技術研究所(NIST)の情報技術研究所(ITL)は、米国の測定および標準インフラストラクチャに対する技術的リーダーシップを提供することにより、米国の経済と公共の福祉を促進しています。ITLは、情報技術の開発と生産的な利用を前進させるために、テスト、テスト方法、参照データ、概念実証実装、および技術的分析を開発しています。ITLの責任には、連邦情報システムにおける国家安全保障関連以外の情報の費用対効果の高いセキュリティおよびプライバシーのための管理基準、運営基準、技術基準、および物理的基準とガイドラインの開発が含まれます。特別刊行物800シリーズは、情報システムセキュリティにおけるITLの研究、ガイドライン、アウトリーチ活動、ならびに産業界、政府、学術組織との共同活動について報告しています。
Abstract
概要
Access control systems are among the most critical of computer security components. Faulty policies, misconfigurations, or flaws in software implementations can result in serious vulnerabilities. To formally and precisely capture the security properties that access control should adhere to, access control models are usually written, bridging the gap in abstraction between policies and mechanisms. Identifying discrepancies between policy specifications and their intended function is crucial because correct implementation and enforcement of policies by applications is based on the premise that the policy specifications are correct. As a result, policy specifications represented by models must undergo rigorous verification and validation through systematic verification and testing to ensure that the policy specifications truly encapsulate the desires of the policy authors. Verifying the conformance of access control policies and models is a non-trivial and critical task, and one important aspect of such verification is to formally check the inconsistency and incompleteness of the model and safety requirements of the policy, because an access control model and its implementation do not necessarily explicitly express the policy, which can also be implicitly embedded by mixing with direct access constraints or other access control models.
アクセス制御システムは、コンピュータセキュリティの構成要素の中で最も重要なものの一つです。欠陥のあるポリシー、誤設定、またはソフトウェア実装上の欠陥は、深刻な脆弱性を招く可能性があります。アクセス制御が遵守すべきセキュリティ特性を形式的かつ正確に捉えるために、通常はアクセス制御モデルが記述され、ポリシーとメカニズムの間の抽象度のギャップを埋めます。アプリケーションによるポリシーの正しい実装および適用は、ポリシー仕様が正しいという前提に基づいているため、ポリシー仕様とその意図された機能との間の相違を特定することは極めて重要です。その結果、モデルによって表現されるポリシー仕様は、それらがポリシー作成者の意図を真に包含していることを保証するために、体系的な検証とテストを通じた厳密な検証および妥当性確認を経なければなりません。アクセス制御ポリシーとモデルの適合性を検証することは容易ではなく、かつ極めて重要な作業であり、そのような検証の重要な側面の一つは、モデルの不整合性と不完全性、およびポリシーの安全要件を形式的に検査することです。なぜなら、アクセス制御モデルとその実装は必ずしもポリシーを明示的に表現しているとは限らず、ポリシーは、直接的なアクセス制約や他のアクセス制御モデルと混在することによって暗黙的に組み込まれていることもあるからです。
Keywords
キーワード
access control; access control testing; access control verification; model testing; policy.
アクセス制御、アクセス制御テスト、アクセス制御検証、モデルテスト、ポリシー。
Acknowledgments
謝辞
The authors Vincent C. Hu, Rick Kuhn and Dylan Yaga of the National Institute of Standards and Technology wish to thank their colleagues who reviewed drafts of this document. The authors also gratefully acknowledge and appreciate the comments and contributions made by government agencies, private organizations, and individuals in providing direction and assistance in the development of this document.
米国国立標準技術研究所(National Institute of Standards and Technology)の著者である Vincent C. Hu、Rick Kuhn、Dylan Yaga は、本文書の草案を査読した同僚に感謝します。また、著者らは、本文書の作成において方向性の提示や支援を行った政府機関、民間組織、および個人によるコメントと貢献に深く感謝します。
Executive Summary
エグゼクティブサマリー
Access control (AC) systems control which users or processes have access to which resources in a system. They are among the most critical of security components. AC policies are specified to facilitate managing and maintaining AC systems. Faulty policies, misconfigurations, or flaws in software implementations can result in serious vulnerabilities. However, the correct implementation of AC policies by AC mechanisms is a very challenging problem. It is more common that a system’s privacy and security are compromised due to the misconfiguration of AC policies rather than the failure of cryptographic primitives or protocols. This problem becomes increasingly severe as software systems become more complex, and are deployed to manage a large amount of sensitive information and resources that are organized into sophisticated structures. Identifying discrepancies between policy specifications and their intended function is crucial because correct implementation and enforcement of policies by applications is based on the premise that the policy specifications are correct.
アクセス制御(AC)システムは、どのユーザーまたはプロセスがシステム内のどのリソースにアクセスできるかを制御します。これらは、セキュリティの構成要素の中で最も重要なものの一つです。ACシステムの管理および維持を容易にするために、ACポリシーが規定されます。欠陥のあるポリシー、誤設定、またはソフトウェア実装上の欠陥は、深刻な脆弱性を招く可能性があります。しかし、ACメカニズムによってACポリシーを正しく実装することは、非常に困難な課題です。システムのプライバシーとセキュリティが侵害される原因としては、暗号プリミティブやプロトコルの失敗よりも、ACポリシーの誤設定によるものの方が一般的です。この問題は、ソフトウェアシステムがより複雑になり、高度な構造に編成された大量の機密情報やリソースを管理するために配備されるにつれて、ますます深刻になっています。アプリケーションによるポリシーの正しい実装および適用は、ポリシー仕様が正しいという前提に基づいているため、ポリシー仕様とその意図された機能との間の相違を特定することは極めて重要です。
Thus, AC models are usually written to bridge the gap in abstraction between policies and mechanisms to formally and precisely capture the safety requirements that AC systems should adhere to. As a result, policy specifications represented by models must undergo rigorous verification and validation through systematic verification and testing to ensure that the policy specifications truly encapsulate the desires of the policy authors. Verifying the conformance of AC policies and models is a non-trivial and critical task. One important aspect of such verification is to formally check the inconsistency and incompleteness of the model and policy safety requirements because an AC model and its implementation do not necessarily explicitly express the policy, which can also be implicitly embedded by mixing with direct access constraints or other AC models.
したがって、ACシステムが遵守すべき安全性要件を形式的かつ正確に捉えるために、ポリシーとメカニズムの間の抽象度のギャップを埋めるACモデルが通常記述されます。その結果、モデルによって表現されるポリシー仕様は、それらがポリシー作成者の意図を真に包含していることを保証するために、体系的な検証とテストを通じた厳密な検証および妥当性確認を経なければなりません。ACポリシーとモデルの適合性を検証することは容易ではなく、極めて重要な作業です。そのような検証の重要な側面の一つは、モデルおよびポリシーの安全性要件の不整合性と不完全性を形式的に検査することです。なぜなら、ACモデルとその実装は必ずしもポリシーを明示的に表現しているとは限らず、ポリシーは、直接的なアクセス制約や他のACモデルと混在することによって暗黙的に組み込まれていることもあるからです。
In this document, we review methods for the verification for AC models and the testing of model implementations by first defining standardized structures for AC models. We then demonstrate the expressions of AC models and safety requirements in a specification language of a model checker for the use of black box and white box model checkers that verify the integrity, coverage, and confinement of the specified safety requirements against models. In addition, an efficient way of generating test cases for the implementation from a model as well as a method for detecting AC rule faults in real time are discussed.
本文書では、まずACモデルの標準化された構造を定義することにより、ACモデルの検証手法およびモデル実装のテスト手法を概説します。次に、規定された安全性要件のモデルに対する完全性、カバレッジ、および閉じ込め(confinement)を検証するブラックボックスおよびホワイトボックスのモデルチェッカーを使用するために、モデルチェッカーの仕様言語におけるACモデルおよび安全性要件の表現を示します。さらに、モデルから実装向けのテストケースを効率的に生成する方法、およびACルールのフォールトをリアルタイムで検出する方法についても論じます。
Table of Contents
目次
List of Figures
図目次
List of Tables
表の目次
1 INTRODUCTION
1 はじめに
1.1 Authority
1.1 権限
The National Institute of Standards and Technology (NIST) developed this document in furtherance of its statutory responsibilities under the Federal Information Security Management Act (FISMA) of 2002, Public Law 107-347.
米国国立標準技術研究所(NIST)は、2002年連邦情報セキュリティマネジメント法(FISMA)、公法107-347に基づく法定責任を推進するために本文書を作成しました。
NIST is responsible for developing standards and guidelines, including minimum requirements, for providing adequate information security for all agency operations and assets, but such standards and guidelines shall not apply to national security systems. This document is consistent with the requirements of the Office of Management and Budget (OMB) Circular A-130, Section 8b(3), “Securing Agency Information Systems,” as analyzed in A-130, Appendix IV: Analysis of Key Sections. Supplemental information is provided in A-130, Appendix III.
NISTは、すべての連邦機関の業務および資産に適切な情報セキュリティを提供するための最低限の要件を含む標準およびガイドラインを策定する責任を負っていますが、そのような標準およびガイドラインは国家安全保障システムには適用されないものとします。本文書は、行政管理予算局(OMB)サーキュラーA-130第8b(3)項「連邦機関の情報システムのセキュリティ確保」(A-130付録IV「主要セクションの分析」で分析)の要件に合致しています。補足情報はA-130付録IIIに記載されています。
This guideline has been prepared for use by federal agencies. It may be used by nongovernmental organizations on a voluntary basis and is not subject to copyright, though attribution is desired.
本ガイドラインは、連邦機関による使用のために作成されたものです。非政府組織が自発的に使用することもでき、著作権の対象外ですが、出典の明記が望まれます。
Nothing in this document should be taken to contradict standards and guidelines made mandatory and binding on federal agencies by the Secretary of Commerce under statutory authority, nor should these guidelines be interpreted as altering or superseding the existing authorities of the Secretary of Commerce, Director of the OMB, or any other federal official.
本文書のいかなる内容も、商務長官が法定の権限に基づき連邦機関に対して義務的かつ拘束力を持つものとした標準およびガイドラインと矛盾するものと解釈されるべきではなく、またこれらのガイドラインは、商務長官、OMB長官、またはその他の連邦職員の既存の権限を変更または差し替えるものとして解釈されるべきではありません。
1.2 Document Scope and Purpose
1.2 文書の範囲と目的
The purpose of this document is to provide agencies with technical information to assist them in designing, verifying and testing access control (AC) models. The document discusses the principles, requirements, theories, and schemes for the verification and testing of AC models that are designed to assure the AC policy can be implemented by a mechanism.
本文書の目的は、アクセス制御(AC)モデルの設計、検証、およびテストを支援するための技術情報を各機関に提供することです。本文書では、ACポリシーがメカニズムによって実装可能であることを保証するように設計されたACモデルの検証およびテストのための原則、要件、理論、およびスキームについて議論します。
AC policies are specified to control the access of system resources, AC mechanisms control which users or processes have access to which resources in a system. However, the correct implementations of AC policies by AC mechanisms are very challenging problems. Thus, AC models are usually written to bridge the gap in abstraction between policies and mechanisms to formally and precisely capture the safety requirements that AC systems should adhere to. In this document, we review methods for the verification for AC models and the testing of model implementations by first defining standardized structures for AC models. We then demonstrate the expressions of AC models and safety requirements in a specification language of a model checker for the use of black box and white box model checkers that verify the integrity, coverage, and confinement of the specified safety requirements against models. In addition, an efficient way of generating test cases for the implementation from a model, and a method for detecting AC rule faults in real time are discussed.
ACポリシーはシステムリソースへのアクセスを制御するために規定され、ACメカニズムはシステム内のどのユーザーまたはプロセスがどのリソースにアクセスできるかを制御します。しかしながら、ACメカニズムによってACポリシーを正しく実装することは非常に困難な課題です。したがって、通常はポリシーとメカニズムの間の抽象度のギャップを埋め、ACシステムが遵守すべき安全性要件を形式的かつ正確に捉えるためにACモデルが記述されます。本文書では、まずACモデルの標準化された構造を定義することにより、ACモデルの検証およびモデル実装のテスト手法を概説します。次に、規定された安全性要件のモデルに対する完全性、カバレッジ、および閉じ込め(confinement)を検証するブラックボックスおよびホワイトボックスのモデルチェッカーを使用するために、モデルチェッカーの仕様言語におけるACモデルおよび安全性要件の表現を示します。さらに、モデルから実装用のテストケースを効率的に生成する方法、およびACルールのフォールトをリアルタイムで検出する方法について論じます。
1.3 Audience and Assumptions
1.3 想定読者および前提条件
This document is intended to provide practical and conceptual guidance for security managers, administrators, and system testers whose expertise is related to AC. The authors assume that the readers have basic operating system, computing theory, and software assurance expertise, as well as some security expertise, especially in the field of AC. Because of the constantly changing nature of the information technology industry, readers are strongly encouraged to take advantage of other resources (including those listed in this document) for more current and detailed information.
本文書は、ACに関連する専門知識を持つセキュリティ管理者、システム管理者、およびシステムテスターに実践的かつ概念的なガイダンスを提供することを目的としています。執筆者は、読者が基本的なオペレーティングシステム、計算機科学の理論、およびソフトウェアアシュアランスの専門知識に加え、特にAC分野におけるセキュリティの専門知識を有していることを前提としています。情報技術業界は絶えず変化する性質を持つため、読者がより最新かつ詳細な情報を得るために他のリソース(本文書に記載されているものを含む)を活用することを強く推奨します。
1.4 Document Organization
1.4 本文書の構成
This document is divided into seven sections, followed by two appendixes. Section 1 states the authority, scope, purpose, audience, and assumptions of this document. Section 2 introduces the general concept of AC policy and model. Section 3 explains the elements of AC safety and faults. The focus of this document is presented in Section 4, which introduces main concepts for AC model verification and testing. Section 5 provides some major methods used to achieve the concepts described in Section 4. Section 6 demonstrates the NIST’s implementation of AC verification and test tool: Access Control Policy Tool (ACPT). Section 7 presents the conclusion to the document. Appendixes A - Glossary, B – SOD Policies, and References provide information that supports the document.
本文書は7つのセクションに分かれており、その後に2つの付録が続きます。セクション1では、本文書の権威、範囲、目的、想定読者、および前提条件を述べます。セクション2では、ACポリシーおよびモデルの一般的な概念を紹介します。セクション3では、ACの安全性および障害の要素について説明します。本文書の主眼はセクション4に提示されており、ACモデルの検証とテストに関する主要な概念を紹介します。セクション5では、セクション4で説明した概念を達成するために使用されるいくつかの主要な方法を提供します。セクション6では、NISTによるAC検証およびテストツールの実装であるAccess Control Policy Tool(ACPT)を実演します。セクション7では、本文書の結論を述べます。付録A(用語集)、付録B(SODポリシー)、および参考文献は、本文書を補足する情報を提供します。
2 ACCESS CONTROL POLICIES AND MODELS
2 アクセス制御ポリシーとモデル
The objective of an access control (AC) system is often described in terms of protecting system resources against inappropriate or undesired user access. From a business perspective, this objective could just as well be described in terms of the optimal sharing of information to users and applications. However, a greater degree of sharing may get in the way of resource protection, so a sufficiently fine-grained AC policy should enable selective sharing of information where in its absence, sharing may be considered too risky altogether.
アクセス制御(AC)システムの目的は、不適切または望ましくないユーザーアクセスからシステムリソースを保護するという観点で説明されることが多くあります。ビジネスの観点からは、この目的はユーザーやアプリケーションに対する情報の最適な共有という観点でも同様に説明できます。しかし、共有の度合いを高めるとリソース保護の妨げになる可能性があるため、十分にきめ細かなACポリシーによって情報の選択的共有を可能にすべきであり、それがなければ共有は全体としてリスクが高すぎるとみなされる可能性があります。
Correct implementation and enforcement of AC policies is based on the premise that the policy specifications are correct without hidden or conflicted rules that cause leaking or blocking access to objects. AC policy specifications must undergo rigorous verification and validation through systematic testing to ensure that the policy specifications truly encapsulate the desires of the policy authors. Verifying and testing of AC policies is a lot like general application software testing, but there are differences as well. To formally and precisely capture the safety requirements that the AC system should adhere to, models are usually written to bridge the rather wide gap in abstraction between policy and mechanism. Thus, an AC model provides unambiguous and precise expression as well as a reference for design and implementation of safety requirements.
ACポリシーの正しい実装と適用は、オブジェクトへのアクセスの漏洩や遮断を引き起こす隠れたルールや矛盾するルールのない、正しいポリシー仕様に基づいていることを前提とします。ポリシー仕様がポリシー作成者の意図を真に包含していることを保証するために、ACポリシー仕様は体系的なテストを通じて厳格な検証および妥当性確認を受けなければなりません。ACポリシーの検証とテストは一般的なアプリケーションソフトウェアのテストと非常によく似ていますが、相違点もあります。ACシステムが準拠すべき安全性要件を形式的かつ正確に捉えるために、通常、ポリシーとメカニズムの間のかなり広い抽象度のギャップを埋めるモデルが記述されます。したがって、ACモデルは、安全性要件の設計および実装のための基準となるだけでなく、曖昧さのない正確な表現を提供します。
2.1 Access Control Policies
2.1 アクセス制御ポリシー
AC policies are high-level requirements that specify how access is managed and who, under what circumstances, may access what information. While AC policies can be application-specific and thus taken into consideration by the application vendor, policies are just as likely to pertain to user actions within the context of an organizational unit or across organizational boundaries. For instance, policies may pertain to resource usage within or across organizational units or may be based on need-to-know, competence, authority, obligation, or conflict-of-interest factors. Such policies may span multiple computing platforms and applications. [NIST-IR-7316]
ACポリシーは、アクセスがどのように管理され、誰がどのような状況下でどの情報にアクセスしてよいかを規定する高レベルの要件です。ACポリシーはアプリケーション固有であり、したがってアプリケーションベンダーによって考慮される場合もありますが、組織単位内または組織境界を越えたコンテキストにおけるユーザーの行動に関連することも同様に多くあります。例えば、ポリシーは組織単位内または組織単位間にわたるリソースの使用に関連する場合や、知る必要性(need-to-know)、適格性、権限、義務、または利益相反の要因に基づく場合があります。このようなポリシーは、複数のコンピューティングプラットフォームやアプリケーションにまたがることがあります。[NIST-IR-7316]
It is not practical to generate a list of generic AC policies, since business objectives, tolerance for risk, corporate culture, and the regulatory responsibilities that influence policy differ from enterprise to enterprise, and even from one organizational unit to another. The AC policies within a hospital may pertain to privacy and competency (e.g., only doctors and nurse practitioners may prescribe medication), and hospital policies will differ greatly from those of a military system or a financial institution. Even within a specific business domain, policy will differ from institution to institution. Furthermore, AC policies are dynamic in nature, in that they are likely to change over time in reflection of ever evolving business factors, government regulations, and environmental conditions. There are several well-known AC policies, which can be categorized as discretionary or non-discretionary. Typically, discretionary AC policies are associated with identity-based AC, and non-discretionary ACs are associated with rule-based controls (for example, mandatory security policy).
一般的なACポリシーのリストを作成することは現実的ではありません。ポリシーに影響を与えるビジネス目標、リスク許容度、企業文化、規制上の責任は、企業ごとに異なり、さらには組織単位ごとにも異なるためです。病院内のACポリシーはプライバシーと適格性に関連する場合があり(例えば、医師とナースプラクティショナーのみが薬を処方できる)、病院のポリシーは軍事システムや金融機関のポリシーとは大きく異なります。特定のビジネス領域内であっても、ポリシーは機関ごとに異なります。さらに、ACポリシーは本質的に動的であり、絶えず進化するビジネス要因、政府規制、環境条件を反映して時間とともに変化する可能性が高いです。よく知られているACポリシーがいくつかあり、それらは任意的または非任意的に分類できます。通常、任意的ACポリシーはIDベースのACに関連付けられ、非任意的ACはルールベースの制御(例えば、強制セキュリティポリシー)に関連付けられます。
Discretionary Access Control
任意アクセス制御
Discretionary AC (DAC) leaves a certain amount of AC to the discretion of the object's owner, or anyone else who is authorized to control the object's access. For example, DAC is generally used to limit a user's access to a file; it is the owner of the file who controls other users' accesses to the file. Only those users specified by the owner may have some combination of read, write, execute, etc. permissions to the file. DAC policy tends to be very flexible and is widely used in commercial and government sectors. However, DAC is known to be inherently weak for two reasons. First, granting read access is transitive; for example, when Ann grants Bob read access to a file, nothing stops Bob from copying the contents of Ann’s file to an object that Bob controls. Bob may now grant any other user access to the copy of Ann’s file without Ann’s knowledge. Second, DAC policy is vulnerable to Trojan horse attacks. Because programs inherit the identity of the invoking user, Bob may, for example, write a program for Ann that, on the surface, performs some useful function, while at the same time destroy the contents of Ann’s files. When investigating the problem, the audit files would indicate that Ann destroyed her own files. Thus, formally, the drawbacks of DAC are as follows:
任意AC(DAC)は、一定量のACをオブジェクトの所有者、またはオブジェクトのアクセスを制御する権限を与えられた他の誰かの裁量に委ねます。例えば、DACは一般にファイルへのユーザーのアクセスを制限するために使用されます。ファイルへの他のユーザーのアクセスを制御するのはファイルの所有者です。所有者によって指定されたユーザーのみが、そのファイルに対して読み取り、書き込み、実行などの権限の何らかの組み合わせを持つことができます。DACポリシーは非常に柔軟である傾向があり、商業部門および政府部門で広く使用されています。しかし、DACには本質的に2つの理由から脆弱であることが知られています。第1に、読み取りアクセスの付与は推移的です。例えば、AnnがBobにファイルへの読み取りアクセスを許可した場合、BobがAnnのファイルの内容をBobが制御するオブジェクトにコピーすることを防ぐものは何もありません。BobはAnnに知られることなく、Annのファイルのコピーへのアクセスを他の任意のユーザーに許可することができます。第2に、DACポリシーはトロイの木馬攻撃に対して脆弱です。プログラムは呼び出し元ユーザーのIDを継承するため、例えばBobは、表面的には有用な機能を実行しながら、同時にAnnのファイルの内容を破壊するプログラムをAnnのために作成することができます。問題を調査する際、監査ファイルはAnnが自身のファイルを破壊したことを示すことになります。したがって、正式には、DACの欠点は次のとおりです。
•Information can be copied from one object to another; therefore, there is no real assurance on the flow of information in a system.
•情報は1つのオブジェクトから別のオブジェクトへとコピーできるため、システム内の情報の流れに関する真の保証はありません。
•No restrictions apply to the usage of information when the user has received it.
•ユーザーが情報を受け取った後の、その情報の使用には制限が適用されません。
•The privileges for accessing objects are decided by the owner of the object, rather than through a system-wide policy that reflects the organization’s safety requirements.
•オブジェクトへのアクセス権限は、組織の安全要件を反映したシステム全体のポリシーを通じてではなく、オブジェクトの所有者によって決定されます。
ACLs and owner/group/other AC mechanisms (e.g. permission bits in UNIX) are by far the most common mechanisms for implementing DAC policies. Other mechanisms, even though not designed with DAC in mind, may have the capabilities to implement a DAC policy.
ACLおよび所有者/グループ/その他のACメカニズム(例:UNIXのパーミッションビット)は、DACポリシーを実装するための群を抜いて最も一般的なメカニズムです。他のメカニズムも、DACを念頭に置いて設計されていない場合であっても、DACポリシーを実装する能力を備えている場合があります。
Non-Discretionary Access Control
非任意アクセス制御
In general, all AC policies other than DAC are grouped under the category of non-discretionary AC (NDAC). As the name implies, policies in this category have rules that are not established at the discretion of the user. Non-discretionary policies establish controls that cannot be changed by users, but only through administrative action. Static NDAC, for example, are MLS, ABAC, and RBAC, and dynamic NDAC such as Separation of duty (SOD) policy can be used to enforce constraints on the assignment of users to roles or tasks. An example of a constraint is the requirement that two roles be mutually exclusive; e.g., if one role requests expenditures and another approves them, the organization may prohibit the same user from being assigned to both roles. So, membership in one role may prevent the user from being a member of one or more other roles, depending on the SOD rules, such as Work Flow and RBAC. Another example of NDAC is a history-based SOD policy that regulates, for example, whether the same subject (role) can access the same object for a variable number of times.
一般に、DAC以外のすべてのACポリシーは、非任意アクセス制御(NDAC)のカテゴリに分類されます。その名が示すように、このカテゴリのポリシーには、ユーザーの裁量では確立されないルールが存在します。非任意ポリシーは、ユーザーによって変更することはできず、管理者によるアクションを通じてのみ変更可能な制御を確立します。例えば、静的NDACにはMLS、ABAC、RBACがあり、職務分離(SOD)ポリシーなどの動的NDACは、役割(ロール)やタスクへのユーザー割り当てに対する制約を強制するために使用できます。制約の例としては、2つの役割が相互排他的でなければならないという要件があります。例えば、一方の役割が支出を申請し、もう一方がそれを承認する場合、組織は同じユーザーが両方の役割に割り当てられることを禁止することがあります。したがって、ワークフローやRBACなどのSODルールに応じて、ある役割に属することで、ユーザーが1つ以上の他の役割に属することが妨げられる場合があります。NDACの別の例としては、例えば同じサブジェクト(役割)が可変回数だけ同じオブジェクトにアクセスできるかどうかを規制する、履歴ベースのSODポリシーがあります。
Due to the fact that DAC policies have no well-defined variables in terms of model definition, they are in general hard to formalize and verify efficiently with first order models, which most of the black box and white box verification tools are based on. This document does not cover DAC policies.
DACポリシーにはモデル定義の観点から明確に定義された変数が存在しないという事実により、それらは一般に、大部分のブラックボックスおよびホワイトボックス検証ツールがベースとしている一階モデルを用いて効率的に形式化および検証することが困難です。本書ではDACポリシーは対象としていません。
2.2 AC Models
2.2 ACモデル
Rather than attempting to evaluate and analyze AC policies exclusively at the mechanism level, security models are usually written to describe the security properties of an AC policy. An AC model is a formal presentation of an AC policy enforced by the mechanism and is useful for proving theoretical limitations of a system so that AC mechanisms can be designed to adhere to the properties of the model. Users see an AC model as an unambiguous and precise expression of requirements. Vendors and system developers see AC models as specification of design and implementation requirements. On one extreme, an AC model may be rigid in its implementation of a single policy. On the other extreme, an AC model will allow for the expression of a wide variety of policies and policy classes. In general, non-discretionary AC polices can be modeled by static, dynamic and historical Finite State Machine (FSM) models from one of the three following classes: static, dynamic and historical.
ACポリシーをメカニズムのレベルだけで評価・分析しようとするのではなく、通常はACポリシーのセキュリティ特性を記述するためにセキュリティモデルが記述されます。ACモデルは、メカニズムによって強制されるACポリシーを形式的に表現したものであり、ACメカニズムがモデルの特性に準拠するように設計できるように、システムの理論的な限界を証明するのに役立ちます。ユーザーはACモデルを要件の曖昧さのない正確な表現と見なします。ベンダーやシステム開発者は、ACモデルを設計および実装要件の仕様と見なします。一方の極端な例として、ACモデルは単一のポリシーの実装において厳格である場合があります。もう一方の極端な例では、ACモデルは多種多様なポリシーおよびポリシークラスの表現を可能にします。一般に、非任意ACポリシーは、静的、動的、履歴という3つのクラスのいずれかから、静的、動的、および履歴有限状態機械(FSM)モデルによってモデル化できます。
a) Static Policy Class
a) 静的ポリシークラス
Policies in the Static Policies Class regulate the access permission by static system states or conditions such as rules, attributes, and system environments (times and locations for access). Popular AC policies with these types of properties include ABAC [NIST_SP-162], MLS, and RBAC [NIST-IR-7316]. These types of policies can be specified by asynchronous or direct specification expressions of an FSM model. The transition relation of authorization states is directly specified as a propositional formula in terms of the current and next values of the state variables. Any current state/next state pair is in the transition relation if and only if it satisfies the formula, as demonstrated in Example 1:
静的ポリシークラスのポリシーは、ルール、属性、システム環境(アクセスの時間や場所)などの静的なシステム状態または条件によってアクセス許可を規制します。これらの種類のプロパティを持つ一般的なACポリシーには、ABAC [NIST_SP-162]、MLS、およびRBAC [NIST-IR-7316]が含まれます。これらのタイプのポリシーは、FSMモデルの非同期仕様表現または直接仕様表現によって指定できます。認可状態の遷移関係は、状態変数の現在の値と次の値の観点から命題論理式として直接指定されます。例1で示されているように、任意の現在の状態/次の状態のペアは、その論理式を満たす場合、かつその場合に限り遷移関係に含まれます。
{ VARIABLES access_state : boolean; /* 1 as grant, 0 as deny*/ ………. INITIAL access_state := 0; TRANS /* transit to next access state */ next (access_state) := ((constraint_1 & constraint_2 & …… constraint_n) | (constraint_a & constraint_b & …… constraint_m) ……..); }
{ VARIABLES access_state : boolean; /* 1はgrant(許可)、0はdeny(拒否) */ ………. INITIAL access_state := 0; TRANS /* 次のアクセス状態へ遷移 */ next (access_state) := ((constraint_1 & constraint_2 & …… constraint_n) | (constraint_a & constraint_b & …… constraint_m) ……..); }
Example 1 – static AC model
例1 – 静的ACモデル
The system state of access authorization is initialized as the deny state and moved to the grant state for any access request that complies with the constraints of the rule corresponding with each constraint predicate (i.e., \(\mathit{constraint\_1} \ldots. \mathbin{\&} \mathit{constraint\_n}\)) in a rule, and stay in the deny state otherwise.
アクセス認可のシステム状態はdeny(拒否)状態として初期化され、ルール内の各制約述語(すなわち、\(\mathit{constraint\_1} \ldots. \mathbin{\&} \mathit{constraint\_n}\))に対応するルールの制約に準拠するすべてのアクセス要求に対してgrant(許可)状態に遷移し、そうでない場合はdeny状態にとどまります。
b) Dynamic Policy Class
b) 動的ポリシークラス
Policies in the Dynamic Policy Class may include temporal constraints that regulate access permission by dynamic system states or conditions such as specified events or system counters or N-person AC policy. An AC model with these types of properties specifies that accesses are permitted only by a certain subject to a certain object with certain limitations (e.g., object x can be accessed no more than i times simultaneously by user group y). For example, if a user’s role is a cashier, he or she cannot be an accountant at the same time when handling a customer’s checks. This type of policy can be specified with asynchronous or direct specification expressions of an FSM model, which uses a variable semaphore to express the dynamic properties of the authorization decision process. Another example of dynamic constraint states is enforcing a limited number of concurrent accesses to an object. The authorization process for a user thus has four states: idle, entering, critical, and exiting. A user is normally in the idle state. The user is moved to the entering state when the user wants to access the critical object. If the limited number of access times is not reached, the user is moved to the critical state, and the number of the current access is increased by 1. When the user finishes accessing the critical object, the user is moved to the exiting state, and the number of the current access is decreased by 1. Then the user is moved from the exiting state to the idle state. The authorization process can be modeled as Example 2:
動的ポリシークラスのポリシーには、指定されたイベントやシステムカウンター、あるいはN人ACポリシーなどの動的なシステム状態や条件によってアクセス許可を規制する時間的制約が含まれる場合があります。このような特性を持つACモデルは、特定の主体による特定のオブジェクトへのアクセスが、特定の制限(例えば、オブジェクトxにはユーザーグループyによって同時にi回までしかアクセスできないなど)の下でのみ許可されることを規定します。例えば、あるユーザーの役割が出納係である場合、そのユーザーは顧客の小切手を処理する際に同時に会計係になることはできません。この種のポリシーは、認可決定プロセスの動的な特性を表現するために変数セマフォを使用するFSMモデルの非同期表現または直接指定表現によって指定できます。動的制約状態の別の例は、オブジェクトへの同時アクセスの制限数を強制することです。したがって、ユーザーの認可プロセスには、idle、entering、critical、exitingの4つの状態が存在します。ユーザーは通常、idle状態にあります。ユーザーがクリティカルオブジェクトにアクセスしようとすると、entering状態に遷移します。アクセスの制限回数に達していない場合、ユーザーはcritical状態に遷移し、現在のアクセス数が1増加します。ユーザーがクリティカルオブジェクトへのアクセスを終了すると、ユーザーはexiting状態に遷移し、現在のアクセス数が1減少します。その後、ユーザーはexiting状態からidle状態に遷移します。認可プロセスは例2のようにモデル化できる:
{ VARIABLES count, access_limit : INTEGER; request_1 : process_request (count); request_2 : process_request (count); ……. request_n: process_request (count); /*max number of user requests allowed by the system*/ access_limit := k; /*max number of concurrent access*/ count := 0; act {rd, wrt}; object {obj}; process_request (access_limit) { VARIABLES permission : {start, grant, deny}; state : {idle, entering, critical, exiting}; INITIAL_STATE (permission) := start; INITIAL_STATE (state) := idle; NEXT_STATE (state) := CASE { state == idle : {idle, entering}; state == entering & ! (count > access_limit): critical; state == critical : {critical, exiting}; state == exiting : idle; OTHERWISE: state}; NEXT_STATE (count) := CASE { state == entering : count + 1; state == exiting : count -1; OTHERWISE: DO_NOTHING }; NEXT_STATE (permission) := CASE { (state == entering)& (act == rd) & (object == obj): grant; OTHERWISE: deny; } } }
{ VARIABLES count, access_limit : INTEGER; request_1 : process_request (count); request_2 : process_request (count); ……. request_n: process_request (count); /*max number of user requests allowed by the system*/ access_limit := k; /*max number of concurrent access*/ count := 0; act {rd, wrt}; object {obj}; process_request (access_limit) { VARIABLES permission : {start, grant, deny}; state : {idle, entering, critical, exiting}; INITIAL_STATE (permission) := start; INITIAL_STATE (state) := idle; NEXT_STATE (state) := CASE { state == idle : {idle, entering}; state == entering & ! (count > access_limit): critical; state == critical : {critical, exiting}; state == exiting : idle; OTHERWISE: state}; NEXT_STATE (count) := CASE { state == entering : count + 1; state == exiting : count -1; OTHERWISE: DO_NOTHING }; NEXT_STATE (permission) := CASE { (state == entering)& (act == rd) & (object == obj): grant; OTHERWISE: deny; } } }
Example 2 – dynamic AC model
例2 – 動的なACモデル
Policies in the Historical Policy Class regulate access permissions by historical access states or recorded and predefined series of events. Representative AC policies for this type of AC policies include Chinese Wall and Workflow AC policies. This policy class can be best described by synchronous or direct specification expressions of an FSM model. For example, the synchronous FSM specification in Example 3 specifies a Chinese Wall AC policy where there are two Conflict of Interest groups \(\mathit{COI}_1\), \(\mathit{COI}_2\) of objects:
履歴ポリシークラスのポリシーは、過去のアクセス状態、または記録され事前に定義された一連のイベントによってアクセス権限を規制します。このタイプのACポリシーの代表例には、チャイニーズウォールおよびワークフローACポリシーが含まれます。このポリシークラスは、FSMモデルの同期的または直接的な仕様表現によって最も適切に記述できます。例えば、例3の同期FSM仕様は、オブジェクトの2つの利益相反(Conflict of Interest)グループ \(\mathit{COI}_1\)、\(\mathit{COI}_2\) が存在するチャイニーズウォールACポリシーを指定している:
c) Historical Policy Class
c) 履歴ポリシークラス
{ VARIABLES access {grant, deny}; act {rd, wrt}; object {none, COI1, COI2}; state {1, 2, 3}; INITIAL_STATE(state) := 1; INITIAL_STATE(object) := none; NEXT_STATE(state) := CASE { state == 1 & act == rd & object == COI1: 2; state == 1 & act == rd & object == COI2: 3; state == 2 & act == rd & object == COI1: 2; state == 2 & act == rd & object == COI2: 2; state == 3 & act == rd & object == COI1: 3; state == 3 & act == rd & object == COI2: 3; OTHERWISE: 1; }; NEXT_STATE(access) := CASE { state == 2 & act == rd & object == COI1: grant; state == 3 & act == rd & object == COI2: grant; OTHERWISE: deny; }; NEXT_STATE (act) := act; NEXT_STATE (object) := object; }
{ VARIABLES access {grant, deny}; act {rd, wrt}; object {none, COI1, COI2}; state {1, 2, 3}; INITIAL_STATE(state) := 1; INITIAL_STATE(object) := none; NEXT_STATE(state) := CASE { state == 1 & act == rd & object == COI1: 2; state == 1 & act == rd & object == COI2: 3; state == 2 & act == rd & object == COI1: 2; state == 2 & act == rd & object == COI2: 2; state == 3 & act == rd & object == COI1: 3; state == 3 & act == rd & object == COI2: 3; OTHERWISE: 1; }; NEXT_STATE(access) := CASE { state == 2 & act == rd & object == COI1: grant; state == 3 & act == rd & object == COI2: grant; OTHERWISE: deny; }; NEXT_STATE (act) := act; NEXT_STATE (object) := object; }
Example 3 – historical AC model
例3 – 歴史的なACモデル
Note that in practice, the same AC policies may be expressed by multiple different AC models or expressed by a single model in addition to extra constraint rules outside of the model. Verifying the conformance of AC policies and models is a non-trivial and critical task. One important aspect of such verification is to formally check for inconsistency and incompleteness of the model and to verify safety requirements, because an AC model does not necessarily explicitly express the policy, which can also be implicitly embedded by mixing with direct access constraints or other AC models.
実際には、同じACポリシーが複数の異なるACモデルで表現されることもあれば、単一のモデルにモデル外の追加の制約ルールを加えて表現されることもある点に注意します。ACポリシーとモデルの適合性を検証することは、容易ではなく、かつ重要な作業です。そのような検証の重要な側面の一つは、モデルの不整合と不完全性を形式的に検査し、安全性要件を検証することです。というのは、ACモデルは必ずしもポリシーを明示的に表現するとは限らず、ポリシーが直接のアクセス制約や他のACモデルと混在する形で暗黙的に組み込まれている場合もあるからです。
3 ACCESS CONTROL SAFETY AND FAULTS
3 アクセス制御の安全性とフォールト
It is more common for a system’s privacy and security to be compromised due to the faulty AC models and mechanism of AC policies than by the failure of cryptographic primitives or protocols. AC faults include leaking privileges, blocking authorized access, and failure to reach the correct result in grant/deny decisions. Such faults can result in serious vulnerabilities, especially when different AC models and constraint rules are combined into one model. This problem becomes increasingly severe as systems become more complex, and are deployed to manage a large amount of sensitive information and resources that are organized into sophisticated structures.
システムのプライバシーやセキュリティが侵害される原因としては、暗号プリミティブやプロトコルの破綻よりも、ACポリシーの欠陥のあるACモデルやメカニズムによるものの方が一般的です。ACフォールトには、特権の漏洩、正当なアクセスのブロック、許可/拒否の決定において正しい結果に達しないことなどが含まれます。特に異なるACモデルと制約ルールが1つのモデルに組み合わされている場合、このようなフォールトは重大な脆弱性をもたらす可能性があります。システムがより複雑になり、高度な構造に編成された大量の機密情報やリソースを管理するために配備されるにつれて、この問題はますます深刻になります。
3.1 Safety
3.1 安全性
Safety is the fundamental property of an AC system, which ensures that the AC model will not result in the leakage of permissions to an unauthorized principal. Thus, an AC model is said to be safe if no privilege can be escalated to unauthorized or unintended principals. But the correct privileges are always accessible to authorized principals. Safety is specified through the use of restricted AC models that can be proven in general for that model describing the safety requirements of any configuration [NIST-IR-7874].
安全性(Safety)はACシステムの基本的な特性であり、ACモデルによって認可されていない主体にアクセス許可が漏洩しないことを保証します。したがって、認可されていない主体や意図しない主体に特権が昇格されることがなければ、ACモデルは安全であると言われます。ただし、正しい特権には認可された主体が常にアクセスできます。安全性は、任意の構成の安全性要件を記述するそのモデルについて一般的に証明可能な、制限されたACモデルを使用することによって規定されます [NIST-IR-7874]。
Among all the safety features, Separation of Duties (SoD) (see Appendix B) is more dynamic than others. SoD refers to the principle that no user should be given enough privileges to misuse the system on their own. For example, the person authorizing paychecks should not also be the one who can prepare them. SoDs can be enforced either statically (by defining conflicting roles, i.e., roles which cannot be executed by the same user) or dynamically (by enforcing the control at access time).
すべての安全性機能の中で、職務分掌(Separation of Duties: SoD)(付録Bを参照)は他よりも動的です。SoDは、単独でシステムを悪用するのに十分な特権をどのユーザーにも与えるべきではないという原則を指します。たとえば、給与小切手を承認する人物は、それを作成できる人物であってはなりません。SoDは、静的(競合するロール、すなわち同一のユーザーが実行できないロールを定義することによる)または動的(アクセス時に制御を強制することによる)のいずれかで実施できます。
3.2 AC Faults
3.2 ACフォールト
AC faults compromise the safety as described in 3.1, at a semantic level. AC faults are usually caused by erroneous or inefficient representation of AC properties or permission algorithms. At a syntactic level, AC faults are simply caused by implementation errors in AC mechanism such as coding errors, or misconfigurations of AC systems. In general, AC faults can be categorized into the following classes.
ACフォールトは、3.1で説明されている安全性を意味論的レベルで損ないます。ACフォールトは通常、AC特性またはパーミッションアルゴリズムの誤った、または非効率的な表現によって引き起こされます。統語論的レベルでは、ACフォールトは単に、コーディングエラーなどのACメカニズムの実装エラー、またはACシステムの誤設定によって引き起こされます。一般に、ACフォールトは次のクラスに分類できます。
Privilege leakage
特権の漏洩
Privilege (i.e. action and resource pair) leakage refers to situations in which a subject is able to access resources that are prohibited by the safety requirements. Such leakage may cause either the privilege escalation from one resource domain or class to prohibited ones such as leakage from lower to higher ranks of an MLS policy, or privilege leak such as from one role to other prohibited ones of an RBAC policy. Privilege leakage can be caused by mistaken privilege assignment directly or careless privilege inheritance indirectly.
特権(すなわち、アクションとリソースのペア)の漏洩とは、主体が安全性要件によって禁止されているリソースにアクセスできる状況を指します。このような漏洩は、MLSポリシーの低ランクから高ランクへの漏洩など、あるリソースドメインまたはクラスから禁止されたドメインまたはクラスへの特権昇格、あるいはRBACポリシーのあるロールから他の禁止されたロールへの特権リークのいずれかを引き起こす可能性があります。特権の漏洩は、直接的な誤った特権の割り当て、または間接的な不用意な特権の継承によって引き起こされる可能性があります。
Privilege blocking
特権の遮断
Opposite to privilege leaking, a privilege blocking fault blocks a legitimate access to rightful resources. Privilege blocking can also occur when the properties of an AC policy cannot render a grant or deny decision, or there is no available logic in the AC policy algorithm for evaluating the access request. Privilege blocking can also be a result of the deadlock of access rules where a rule has a dependency on other rule(s), which eventually depend back on the rule itself, so that a subject’s request will never reach a decision because of the cyclic referencing.
特権の漏洩とは逆に、特権遮断フォールトは正当なリソースへの正当なアクセスをブロックします。特権の遮断は、ACポリシーの特性が許可または拒否の決定を下すことができない場合、あるいはアクセス要求を評価するための利用可能なロジックがACポリシーアルゴリズムに存在しない場合にも発生する可能性があります。特権の遮断は、あるルールが他のルールに依存関係を持ち、そのルールが最終的にそのルール自体に依存して戻るようなアクセスルールのデッドロックの結果である場合もあり、循環参照のために主体の要求が決定に達することが決してなくなります。
Cyclic inheritance
循環継承
Cyclic inheritance fault refers to the problem of privileges inheritance from other users(groups), which also in a chain of inheritance relation inherit back to the user(group)’s privilege. For example, user \(x\) inherits privilege from user \(y\), which inherits privilege from user \(z\), which in turn inherits privilege from user \(x\). Cyclic inheritance leads to undecidable or infinite access evaluation process.
循環継承フォールトとは、他のユーザー(グループ)からの特権の継承において、継承関係の連鎖をたどると、そのユーザー(グループ)自身の特権へ再び継承が戻ってくる問題を指します。例えば、ユーザー \(x\) がユーザー \(y\) から特権を継承し、そのユーザーがユーザー \(z\) から特権を継承し、さらにそのユーザーがユーザー \(x\) から特権を継承する場合です。循環継承は、決定不能または無限のアクセス評価プロセスにつながります。
Privilege conflict
特権の競合
Unlike regular programming logic that a later value assignment of a variable overwrites the previous assigned value of the same variable, the rules of an AC policy normally have no precedence consideration in permission evaluation. In other words, AC rules will not be overwritten by other rules unless specifically allowed to. Thus, privilege conflicts appear when the specifications of two or more access rules result in the conflicting decisions of permitting subjects access requests by either direct or indirect (inherit) access assignments. In addition, when multiple policies are evoked for permission, conflicting decisions between policies may occur.
変数の後からの値の代入が同じ変数の以前に代入された値を上書きする通常のプログラミング論理とは異なり、ACポリシーのルールは通常、アクセス許可の評価において優先順位を考慮しません。言い換えれば、明確に許可されていない限り、ACルールが他のルールによって上書きされることはありません。したがって、2つ以上のアクセスルールの仕様が、直接的または間接的(継承)なアクセス割り当てのいずれかによってサブジェクトのアクセス要求を許可するという矛盾する決定をもたらす場合、特権の競合が発生します。さらに、アクセス許可のために複数のポリシーが呼び出される場合、ポリシー間で矛盾する決定が発生することがあります。
3.3 Multi-policies considerations
3.3 マルチポリシーに関する考慮事項
In an enterprise environment, it may be required to have AC policies specified independently by different collaborative or networked systems in the enterprise. Thus, an inter-system access request may be evaluated by more than one policy that the requesting subject is governed under. Thus, AC policy autonomy should also be preserved for secure inter-system access. Maintaining the autonomy of all collaborative systems is a key requirement of the policy for inter-operation. The principle of autonomy states that if an access is permitted by an individual system, it must also be permitted under secure inter-system access. The principle of security states that if an access is denied by an individual system, it must also be denied under secure inter-system access. In a collaborative system, violations of secure inter-system access can be caused by adding inter-system privilege inheritance relations, for example, Figure 1 shows that privilege k inherits privilege j through legal inter-system privilege inheritance (because both have the same privilege level j), which is granted in network x but denied in network y. These types of violations can be detected by checking for cyclic inheritance, privilege leakage and SoD violation. Thus, both security and autonomy can be characterized as safety requirements of a multi-policies AC policy, which should be preserved during collaborations. [GMH14] A meta policy is a policy that is usually applied for reconciling policy conflicts or to handle priorities of access decisions rendered from more than one policy. Thus, in addition to autonomy requirements, AC safety requirement may include a priority model within the meta policy.
企業環境では、企業内の協調するシステムやネットワーク化されたシステムがそれぞれ独立にACポリシーを規定することが求められる場合があります。そのため、システム間のアクセス要求は、要求元のサブジェクトが従う複数のポリシーによって評価されることがあります。したがって、安全なシステム間アクセスのためには、ACポリシーの自律性も保たれるべきです。協調するすべてのシステムの自律性を維持することは、相互運用のためのポリシーの重要な要件です。自律性の原則とは、個々のシステムで許可されるアクセスは、安全なシステム間アクセスのもとでも許可されなければならないというものです。セキュリティの原則とは、個々のシステムで拒否されるアクセスは、安全なシステム間アクセスのもとでも拒否されなければならないというものです。協調システムでは、システム間の特権継承関係を追加することによって、安全なシステム間アクセスの違反が生じうます。例えば図1は、正当なシステム間特権継承(両者が同じ特権レベルjを持つため)を通じて特権kが特権jを継承する場合を示しており、このアクセスはネットワークxでは許可されるがネットワークyでは拒否されます。この種の違反は、循環継承、特権漏洩、およびSoD違反を検査することで検出できます。したがって、セキュリティと自律性はいずれも、複数ポリシーからなるACポリシーの安全性要件として特徴づけることができ、協調の間も保たれるべきものです。[GMH14] メタポリシーとは、通常、ポリシー間の競合を調停するため、または複数のポリシーから下されたアクセス判定の優先順位を扱うために適用されるポリシーです。したがって、AC安全性要件には、自律性の要件に加えて、メタポリシー内の優先度モデルが含まれることがあります。
図1 システム間特権継承による特権リーク。「network y」(左)と「network x」(右)と書かれた2つの楕円がある。network yでは、ノードmからノードjとノードkへ矢印がある。network xでは、ノードjからノードkへ矢印がある。network yのjからnetwork xのjへ破線矢印があり、network xのjからnetwork yのkへ点線矢印がある。この点線矢印の上に赤い「X」が描かれている。
Figure 1 Privilege leaks through inter-system privilege inheritance
図1 システム間特権継承による特権リーク
3.4 Vulnerability Hierarchies in Access Control Configurations
3.4 アクセス制御構成における脆弱性の階層
It has been shown that there is a hierarchical relationship among vulnerabilities in access control systems [Kuhn11], such that the conditions that allow the exploitation of one are sufficient for triggering other vulnerabilities downstream in the hierarchy. While the number of potential flaws that result in vulnerabilities is vast, the structure of access control rules results in a hierarchy for certain classes of vulnerabilities. This section explains these hierarchies and how they may be used to reduce the number of tests required.
アクセス制御システムにおける脆弱性の間には階層的な関係が存在し、ある脆弱性の悪用を可能にする条件が、階層の下流にある他の脆弱性を引き起こすのに十分であることが示されています [Kuhn11]。脆弱性をもたらす潜在的な欠陥の数は膨大ですが、アクセス制御ルールの構造により、特定の脆弱性クラスに対する階層が生じます。本節では、これらの階層と、必要なテスト数を削減するためにそれらをどのように使用できるかについて説明します。
Access Control Rule Structures
アクセス制御ルールの構造
An access control policy, \(P\), is implemented by a set of rules, \(R\). A vulnerability can be defined as a condition under which the decision from rules \(R\) differs from the intended result specified by policy \(P\), that is, where \(R \ne P\). At a high level, vulnerabilities may be grouped into classes of unauthorized access, (possibly partial) denial of service, or a combination of the two, depending on the conditions under which the decision is grant or deny. For rules where the decision is grant, there are three vulnerability possibilities, where \(R_c\) = grant conditions in implemented policy and \(P_c\) = grant conditions in correct policy:
アクセス制御ポリシー \(P\) は、ルールの集合 \(R\) によって実装されます。脆弱性は、ルール \(R\) による決定がポリシー \(P\) によって指定された意図した結果と異なる条件、すなわち \(R \ne P\) となる条件として定義できます。高いレベルでは、決定がgrant(許可)またはdeny(拒否)となる条件に応じて、脆弱性は不正アクセス、(場合によっては部分的な)サービス拒否、あるいはその2つの組み合わせのクラスに分類できます。決定がgrantであるルールの場合、3つの脆弱性の可能性があります。ここで、\(R_c\) = 実装されたポリシーにおけるgrant条件、\(P_c\) = 正しいポリシーにおけるgrant条件である:
1. \(R_c \Rightarrow P_c\) : a (possibly partial) denial of service (because \(R_c \subset P_c\)).
1. \(R_c \Rightarrow P_c\) : (場合によっては部分的な)サービス拒否(\(R_c \subset P_c\) であるため)。
2. \(R_c \Leftarrow P_c\) : unauthorized access (because \(R_c \supset P_c\))
2. \(R_c \Leftarrow P_c\) : 不正アクセス(\(R_c \supset P_c\) であるため)
3.otherwise : possible combination of unauthorized access or denial of service
3.それ以外 : 不正アクセスまたはサービス拒否の可能性のある組み合わせ
In cases where the decision is deny, the situation is the mirror image of that for grant rules:
決定が拒否(deny)である場合、状況は許可(grant)ルールの状況と鏡像(対称)の関係になります。
1. \(R_c \Rightarrow P_c\) : unauthorized access (because \(R_c \subset P_c\))
1. \(R_c \Rightarrow P_c\) : 不正アクセス(\(R_c \subset P_c\) であるため)
2. \(R_c \Leftarrow P_c\) : a (possibly partial) denial of service (because \(R_c \supset P_c\)).
2. \(R_c \Leftarrow P_c\) : (場合によっては部分的な)サービス拒否(\(R_c \supset P_c\) であるため)。
3.otherwise : possible combination of unauthorized access or denial of service
3.それ以外 : 不正アクセスまたはサービス拒否の可能性のある組み合わせ
An access control policy rule structure is defined here as a configuration of logical operators, policy terms, and decisions, categorized according to how the rules are constructed. Each rule has a condition and a decision. Conditions may be composed of other conditions connected by logical operators, often with a standard structure. Decisions are often binary, but may also have three or more values (e.g., grant, deny, defer). Methods of rule combining may also have a pattern. In many cases, a set of rules that can lead to a grant decision are followed by a single default case “else deny”. Alternatively, rules with grant or deny decisions may be intermixed, followed by a default case. Thus, one way to categorize access control policy rule structures is to specify the condition format, number of decision values, and rule combining format. This taxonomy is introduced solely for the purpose of characterizing access control structures for which fault hierarchies are developed.
アクセス制御ポリシーのルール構造は、ここではルールの構築方法に従って分類された、論理演算子、ポリシー項、および決定の構成として定義されます。各ルールには条件と決定があります。条件は論理演算子で接続された他の条件で構成される場合があり、多くの場合、標準的な構造を持ちます。決定は多くの場合バイナリ(二値)ですが、3つ以上の値(例:grant、deny、defer)を持つこともあります。ルールの結合方法にもパターンが存在する場合があります。多くの場合、許可(grant)の決定につながり得る一連のルールの後に、単一のデフォルトケース「else deny(それ以外は拒否)」が続きます。あるいは、grantまたはdenyの決定を持つルールが混在し、その後にデフォルトケースが続く場合もあります。したがって、アクセス制御ポリシーのルール構造を分類する1つの方法は、条件フォーマット、決定値の数、およびルール結合フォーマットを指定することです。この分類法は、障害階層が開発されるアクセス制御構造を特徴付けることのみを目的として導入されています。
A taxonomy has been defined in [Kuhn11] with the following rule structure attributes and values:
[Kuhn11] では、以下のルール構造属性と値を持つ分類法が定義されています。
• Condition format: \(\mathit{con}\) – conjunction of conditions; \(\mathit{dis}\) – disjunction of conditions; \(\mathit{cnf}\) – conjunctive normal form of conditions.
• 条件の形式:\(\mathit{con}\) – 条件の連言(conjunction)、\(\mathit{dis}\) – 条件の選言(disjunction)、\(\mathit{cnf}\) – 条件の連言標準形(conjunctive normal form)。
• Number of decision values: binary or \(n\)-ary .
• 決定値の数:2値または \(n\) 値。
•Rule combining: singular (all rule decisions of the same type, e.g., grant or deny, followed by a default), or mixed, which refers to mixed grant and deny decisions in rules.
•ルールの結合:単一(すべてのルール決定が同じタイプ、例:許可または拒否であり、デフォルトが続く)、または混合(ルール内の許可と拒否の決定が混在していることを指します)。
Structures can then be categorized in the format [condition format]/[number of decision values]/[rule combining method]. Some structures that can be defined using this taxonomy are discussed below.
構造は、[条件の形式]/[決定値の数]/[ルール結合方法] の形式で分類できます。この分類法を使用して定義できるいくつかの構造について、以下で説明します。
A. \(\mathit{con}/2/\mathit{singular}\): Decisions are determined by the conjunction of conditions under which access is granted. If no ‘grant’ decision matches the input configuration, access is denied.
A. \(\mathit{con}/2/\mathit{singular}\):決定は、アクセスが許可される条件の連言によって決定されます。入力構成に一致する「許可(grant)」決定がない場合、アクセスは拒否されます。
B. \(\mathit{con}/2/\mathit{mixed}\): Decisions are determined by the conjunction of conditions under which access is granted or denied. If no grant decision matches the input configuration, access is denied. The rule set is as defined for \(\mathit{con}/2/\mathit{singular}\) except that decisions above the default may be either grant or deny.
B. \(\mathit{con}/2/\mathit{mixed}\):決定は、アクセスが許可または拒否される条件の連言によって決定されます。入力構成に一致する許可決定がない場合、アクセスは拒否されます。ルールセットは\(\mathit{con}/2/\mathit{singular}\) について定義されたとおりですが、デフォルトより前の決定は許可または拒否のいずれかになる場合があります。
C. \(\mathit{disj}/2/\mathit{singular}\): Decisions are determined by a disjunction of conditions under which access is granted. If no ‘grant’ decision matches the input configuration, access is denied.
C. \(\mathit{disj}/2/\mathit{singular}\):決定は、アクセスが許可される条件の選言によって決定されます。入力構成に一致する「許可(grant)」決定がない場合、アクセスは拒否されます。
D. \(\mathit{disj}/2/\mathit{mixed}\): Decisions are determined by the disjunction of conditions under which access is granted or denied. If no grant decision matches the input configuration, access is denied. The rule set is as defined for \(\mathit{disj}/2/\mathit{singular}\) except that decisions above the default may be either grant or deny.
D. \(\mathit{disj}/2/\mathit{mixed}\):決定は、アクセスが許可または拒否される条件の選言によって決定されます。入力構成に一致する許可決定がない場合、アクセスは拒否されます。ルールセットは\(\mathit{disj}/2/\mathit{singular}\) について定義されたとおりですが、デフォルトより前の決定は許可または拒否のいずれかになる場合があります。
E. \(\mathit{cnf}/2/\mathit{singular}\): Decisions are determined by conditions in conjunctive normal form (CNF) under which access is granted. If no ‘grant’ decision matches the input configuration, access is denied. This rule class is included because it is relatively common in real-world access control problems. The XACML standard is one such widely used framework for implementing access control policies.
E. \(\mathit{cnf}/2/\mathit{singular}\):決定は、アクセスが許可される連言標準形(CNF)の条件によって決定されます。入力構成に一致する「許可(grant)」決定がない場合、アクセスは拒否されます。このルールクラスは、現実世界のアクセス制御の問題において比較的一般的であるため含まれています。XACML標準は、アクセス制御ポリシーを実装するために広く使用されているそのようなフレームワークの1つです。
F. \(\mathit{cnf}/2/\mathit{mixed}\): Decisions are determined by the conjunction of conditions under which access is granted or denied. If no grant decision matches the input configuration, access is denied. The rule set is as defined for \(\mathit{cnf}/2/\mathit{singular}\) except that decisions above the default may be either grant or deny.
F. \(\mathit{cnf}/2/\mathit{mixed}\):決定は、アクセスが許可または拒否される条件の連言によって決定されます。入力構成に一致する許可決定がない場合、アクセスは拒否されます。ルールセットは\(\mathit{cnf}/2/\mathit{singular}\) について定義されたとおりですが、デフォルトより前の決定は許可または拒否のいずれかになる場合があります。
G. \([\mathit{condition}]/n/[\mathit{combining}]\) (\(n\)-ary Decision Rules) When possible decisions are more than grant or deny, rule structures are defined as above with the modification that grant decisions
G. \([\mathit{condition}]/n/[\mathit{combining}]\)(\(n\) 値決定ルール)可能な決定が許可または拒否を超える場合、ルール構造は上記のとおり定義されるが、許可決定が
Vulnerability Classes
脆弱性クラス
This section defines classes of vulnerabilities and determines vulnerability hierarchies for the access control policy structures defined previously. A large number of vulnerabilities can be defined for access control rules, but a reasonable set may include the following. Note that the exact form will vary with the type of access rule structure as defined in the taxonomy above.
本セクションでは、脆弱性のクラスを定義し、前述で定義されたアクセス制御ポリシー構造に対する脆弱性階層を決定します。アクセス制御ルールに対しては多数の脆弱性を定義できますが、妥当なセットには以下のものが含まれる場合があります。正確な形式は、上記の分類で定義されたアクセスルール構造のタイプによって異なることに注意します。
1. Add Condition: A condition \(\mathit{ca}\) that was not specified has been added to the implementation:
1. 条件の追加: 指定されていなかった条件 \(\mathit{ca}\) が実装に追加されている:
2.Delete Condition: A specified condition is missing from the implementation:
2.条件の削除: 指定された条件が実装から欠落している:
3.Replace Condition: A condition is replaced with a different one, not equivalent:
3.条件の置換: 条件が、同等ではない別の条件に置き換えられている:
4.Stuck at True Condition: A condition is always true:
4.Trueへの固定条件(Stuck at True Condition):条件が常にtrueです。
5.Stuck at False Condition: A condition is always false:
5.Falseへの固定条件(Stuck at False Condition):条件が常にfalseです。
6.Negate Condition: A condition is negated:
6.条件の否定(Negate Condition):条件が否定されています。
7.Negate Decision: The specified result for a condition is the opposite of intended. This mutation can apply only when there are two possible decisions, generally Grant or Deny:
7.決定の否定(Negate Decision):条件に対して指定された結果が意図したものと正反対です。このミューテーションは、通常Grant(許可)またはDeny(拒否)のように、可能な決定が2つ存在する場合にのみ適用できます。
8.Delete Rule: A specified rule has been omitted from the implementation.
8.ルールの削除(Delete Rule):指定されたルールが実装から省略されています。
In practical implementations, some of these vulnerabilities could arise from administrator error, such as accidentally deleting or leaving out a condition or rule, and others may result from software failures, such as a module that is intended to verify an attribute and return true or false, but always returns true.
実際の実装において、これらの脆弱性の一部は、条件やルールを誤って削除したり除外したりするなどの管理者エラーに起因する可能性があり、その他は属性を検証してtrueまたはfalseを返すことを意図しているにもかかわらず常にtrueを返すモジュールなどのソフトウェア障害に起因する場合があります。
Vulnerability Hierarchies
脆弱性の階層
For the eight vulnerability classes introduced above, hierarchical relationships exist for the access control rule structures in the taxonomy. (For proofs and additional discussion see [Kuhn11].) In the structures below, vulnerabilities are abbreviated as follows:
上記で導入された8つの脆弱性クラスについて、分類体系におけるアクセス制御ルール構造には階層関係が存在します。(証明および追加の議論については、[Kuhn11]を参照のこと。)以下の構造において、脆弱性は次のように省略されます。
1. \(\mathit{ac}\): add condition
1. \(\mathit{ac}\): 条件の追加
2. \(\mathit{dc}\): delete condition
2. \(\mathit{dc}\): 条件の削除
3. \(\mathit{rc}\): replace condition
3. \(\mathit{rc}\): 条件の置換
4. \(\mathit{tc}\): true condition
4. \(\mathit{tc}\): 真条件
5. \(\mathit{fc}\): false condition
5. \(\mathit{fc}\): 偽条件
6. \(\mathit{nc}\): negate condition
6. \(\mathit{nc}\): 条件の否定
7. \(\mathit{nd}\): negate decision
7. \(\mathit{nd}\): 決定の否定
8. \(\mathit{dr}\): delete rule
8. \(\mathit{dr}\): ルールの削除
Note that this set of vulnerabilities is not claimed to be complete. It could be extended, for example, with vulnerabilities such as “add rule” or “replace rule”. Hierarchical relationships among detection conditions for different vulnerability classes can be determined by checking for implications between the pairs of detection conditions. That is, for all pairs of vulnerabilities \(P_i\) , \(P_j\) , \(i \ne j\) , compute \(P \oplus P_i \Rightarrow P \oplus P_j\), where \(P_i\) and \(P_j\) are access rules for particular faults that lead to vulnerabilities, where \(\oplus\) designates XOR.
この脆弱性の集合が完全であるとは主張されていないことに注意されました。例えば、「ルールの追加」や「ルールの置換」などの脆弱性によって拡張される可能性があります。異なる脆弱性クラスの検出条件間の階層関係は、検出条件のペア間の含意関係をチェックすることによって決定できます。すなわち、すべての脆弱性のペア \(P_i\) , \(P_j\) , \(i \ne j\) について、\(P \oplus P_i \Rightarrow P \oplus P_j\) を計算します。ここで、\(P_i\) および \(P_j\) は脆弱性につながる特定のフォールトに対するアクセスルールであり、\(\oplus\) はXORを示します。
Hierarchies can be shown to exist for policies with multiple (two or more) rules with Grant decisions, where each rule contains two or more conditions that can be treated as Boolean terms, and the same condition is affected in the correct and faulty policy. The analysis below is for the common case of policies containing a series of rules with Grant decisions, followed by a default Deny decision, where each rule has a single variable or condition, or a conjunction of two or more conditions, as shown below.
Grant(許可)決定を伴う複数の(2つ以上の)ルールを持つポリシーにおいて、各ルールがブール項として扱える2つ以上の条件を含み、かつ正しいポリシーと欠陥のあるポリシーで同じ条件が影響を受ける場合、階層が存在することを示すことができます。以下の分析は、以下に示すように、各ルールが単一の変数もしくは条件、または2つ以上の条件の連言(AND)を持ち、Grant決定を持つ一連のルールの後にデフォルトのDeny(拒否)決定が続くという一般的なケースのポリシーを対象としています。
if (\(\mathsf{c}_{11} \cdot \ldots \cdot \mathsf{c}_{1n1}\)) then grant;
if (\(\mathsf{c}_{21} \cdot \ldots \cdot \mathsf{c}_{2n2}\)) then grant;
. . .
if (\(\mathsf{c}_{k1} \cdot \ldots \cdot \mathsf{c}_{kn3}\)) then grant;
else deny;
if (\(\mathsf{c}_{11} \cdot \ldots \cdot \mathsf{c}_{1n1}\)) then grant;
if (\(\mathsf{c}_{21} \cdot \ldots \cdot \mathsf{c}_{2n2}\)) then grant;
. . .
if (\(\mathsf{c}_{k1} \cdot \ldots \cdot \mathsf{c}_{kn3}\)) then grant;
else deny;
(Similar hierarchies can be constructed for other rule patterns in the taxonomy defined above, but are not shown here.)
(上記で定義された分類法における他のルールパターンに対しても同様の階層を構築できますが、ここでは示しません。)
図2 脆弱性階層の例。フォールトの種類を表すノードの有向グラフである。最上部の ac から rc と dr/fc へ下向きの矢印がある。dc/tc、rc、dr/fc からそれぞれ nc へ矢印があり、dr/fc からは nd へも矢印がある。
Figure 2 Example Vulnerability Hierarchy
図2 脆弱性階層の例
Figure 2 shows an example of vulnerability hierarchy, note that for these policies, \(\mathit{dc}\) and \(\mathit{tc}\) are equivalent, because setting one term to true in a set of terms in a conjunction is equivalent to deleting the term, e.g., setting \(a\) to true, \(abc = 1bc = bc\) . Similarly, setting a term to false for this class of rules is equivalent to deleting the entire rule, e.g., setting \(a\) to false , \(abc \to G\) becomes \(0bc \to G = 1 + G = 1\).
図2は脆弱性階層の例を示しています。これらのポリシーに対して \(\mathit{dc}\) と \(\mathit{tc}\) は等価であることに注意されました。連言における一連の項のうち1つの項を true(真)に設定することは、その項を削除することと同等だからです(例:\(a\) を true に設定すると、\(abc = 1bc = bc\))。同様に、このクラスのルールに対して項を偽(false)に設定することは、ルール全体を削除することと同等です(例:\(a\) を false に設定すると、\(abc \to G\) は \(0bc \to G = 1 + G = 1\) となる)。
Implications for testing
テストへの影響
The hierarchy shows that tests capable of identifying certain faults will also identify other types of faults that are subsumed by the former in the hierarchy. As a result, we can determine that some tests are redundant if they are designed to test two types that are related in the hierarchy. Similarly, if mutation testing is being used, the hierarchy tells us in advance which mutations will be equivalent, without generating mutants and applying a model checker or other tool for analyzing the logic.
この階層構造は、特定の障害を特定できるテストが、階層内で前者に包含される他のタイプの障害も特定することを示しています。その結果、階層内で関連付けられている2つのタイプをテストするように設計されている場合、一部のテストが冗長であることを判断できます。同様に、ミューテーションテストが使用されている場合、ミュータントを生成してロジックを解析するためのモデルチェッカーやその他のツールを適用することなく、どのミューテーションが等価になるかを階層構造があらかじめ示してくれます。
These concepts can be clarified with an example. Note that in the hierarchy at stuck at true condition, tc, subsumes a negated condition, nc. A hypothetical policy can be defined as below: if (a & b & c) then grant; if (d & e) then grant; else deny;
これらの概念は例を用いて明確にすることができます。階層において、真に縮退した条件(stuck at true condition)tc は、否定条件(negated condition)nc を包含することに注意されました。仮想的なポリシーは以下のように定義できる:if (a & b & c) then grant; if (d & e) then grant; else deny;
modeled by:
以下によってモデル化される:
Suppose the policy is implemented incorrectly, leaving out condition \(a\):
ポリシーが誤って実装され、条件 \(a\) が省略されていると仮定する:
The detection conditions for this type of flaw in \(P_{\mathit{tc}}\) are:
\(P_{\mathit{tc}}\) におけるこのタイプの欠陥の検出条件は以下のとおりである:
That is, for inputs of either \(\overline{a}\,b\,c\,\overline{d}\) or \(\overline{a}\,b\,c\,\overline{e}\), policy \(P_{tc}\) produces an incorrect result, so a test with either of these inputs will detect the error. A different faulty policy may replace the condition in rule 1 with its negation:
すなわち、\(\overline{a}\,b\,c\,\overline{d}\) または \(\overline{a}\,b\,c\,\overline{e}\) のいずれかの入力に対して、ポリシー \(P_{tc}\) は誤った結果を生成するため、これらの入力のいずれかを用いたテストはエラーを検出します。別の欠陥のあるポリシーでは、ルール1の条件がその否定に置き換えられる場合がある:
For the implementation \(P_{nc}\), the detection conditions are:
実装 \(P_{nc}\) に対する検出条件は次のとおりである:
Thus a test with \(b\,c\,\overline{d} + b\,c\,\overline{e}\) (and either \(a\) or \(\overline{a}\)) would detect the error. Notice that \(P \oplus P_{tc}\), \(\Rightarrow P \oplus P_{nc}\), i.e., the detection conditions for \(P_{tc}\) subsume those for \(P_{nc}\), so a test that detects the faulty policy \(P_{tc}\), with the true condition, will also detect policies with the same condition negated in the same rule. For example, the test \(\overline{a}\,b\,c\,\overline{d}\) would detect both vulnerabilities by evaluating to \(G\) in both faulty implementations, instead of the correct result \(\overline{G}\).
したがって、\(b\,c\,\overline{d} + b\,c\,\overline{e}\)(および \(a\) または \(\overline{a}\) のいずれか)を用いたテストはエラーを検出します。\(P \oplus P_{tc}\), \(\Rightarrow P \oplus P_{nc}\) であること、すなわち \(P_{tc}\) に対する検出条件が \(P_{nc}\) に対する検出条件を包含することに注意されました。そのため、真の条件を持つ欠陥のあるポリシー \(P_{tc}\) を検出するテストは、同じルール内で同じ条件が否定されたポリシーも検出します。例えば、テスト \(\overline{a}\,b\,c\,\overline{d}\) は、欠陥のある両方の実装において \(G\) と評価され、正しい結果 \(\overline{G}\) にならないことによって、両方の脆弱性を検出します。
4 POLICY VERIFICATION PRINCIPLES
4 ポリシー検証の原則
Identifying discrepancies between AC policy, model, and implementation is crucial because correct enforcement of policies is based on the premise that the policy specifications and implementations are correct, therefore the policy specification and implementation must undergo rigorous verification and validation through systematic verification and testing to ensure that they truly encapsulate the desired AC properties from the policy authors. Note that unlike statements of general programming language, where the later value assignment can overwrite the previous ones of the same variable in the sequence of programming logic, privilege assignment in AC rules has no priority orders, i.e. privilege assignment should not be overwritten by the later ones. Therefore, the fundamental goal of AC policy and implementation verification is to detect the conflicting or missing rules (i.e. policy statements) by verifying the AC policy model and testing output of the policy. To achieve this, semantically and syntactically methods with Black-box and/or White-box testing techniques may be used.
ACポリシー、モデル、および実装間の不一致を特定することは極めて重要です。なぜなら、ポリシーの正しい強制はポリシー仕様および実装が正確であるという前提に基づいているからであり、したがって、ポリシー作成者が意図したACプロパティを真に包含していることを確実にするために、ポリシー仕様および実装は体系的な検証およびテストを通じた厳格な検証および妥当性確認を受けなければなりません。一般的なプログラミング言語の文では、プログラミングロジックの順序において後の値の代入が同じ変数の前の代入を上書きできるのとは異なり、ACルールにおける特権割り当てには優先順位が存在しない、すなわち特権割り当ては後のものによって上書きされるべきではない点に注意されました。したがって、ACポリシーおよび実装検証の根本的な目標は、ACポリシーモデルを検証し、ポリシーの出力をテストすることによって、競合または欠落しているルール(すなわちポリシー文)を検出することです。これを達成するために、ブラックボックステストおよび/またはホワイトボックステスト技術を用いた意味論的および構文論的手法が使用され得ます。
Although the general safety computation is proven undecidable [HRU76] for discretionary AC policy models, which are impossible to be described by static policies, practical safety constraints such as confinements can be specified for discretionary AC policies. As a result, verifications can be performed upon the constraints.
静的ポリシーによって記述することが不可能な任意ACポリシーモデルに対しては、一般的な安全性計算は決定不能であることが証明されているものの[HRU76]、閉じ込め(confinement)などの実用的な安全性制約を任意ACポリシーに対して指定することができます。その結果、それらの制約に対して検証を実行することができます。
Safety requirements
安全性要件
In a nutshell, AC policy verification must test if the safety requirements of an AC policy are incorporated in the expressed model, which will be the blueprint for implementing the AC system. The specification of safety requirements can be AC properties, business requirements, specifications of expected/unexpected system security features, or direct translations of policy features. Safety requirements can also include privilege inheritance, for example to verify a separation of duty (SoD) property, a safety requirement may specify that 1) subject \(x\) and \(y\) are mutually exclusive if neither one inherits the other’s privilege directly or indirectly, 2) If subject \(x\) and \(y\) are mutually exclusive, then no other subject inherits privilege from both of them. Similar to SoD, dynamic SoD (DSoD) has the safety requirement: 3) If SoD holds, then DSoD is maintained. Thus, 1) and 2) must be guaranteed. (Antonios)
端的に言えば、ACポリシー検証では、ACポリシーの安全性要件が、ACシステムを実装するための青写真となる表現されたモデルに組み込まれているかどうかをテストしなければなりません。安全性要件の仕様は、ACプロパティ、ビジネス要件、期待される/予期しないシステムセキュリティ機能の仕様、またはポリシー機能の直接的な変換であり得ます。安全性要件には特権の継承も含まれ得ます。例えば職務分掌(SoD)プロパティを検証するために、安全性要件は次のように指定することができます。1) 主体 \(x\) および \(y\) は、どちらも他方の特権を直接的または間接的に継承していない場合、相互排他的です。2) 主体 \(x\) および \(y\) が相互排他的である場合、他のいかなる主体もその両方から特権を継承しません。SoDと同様に、動的SoD(DSoD)には次の安全性要件があります。3) SoDが成立する場合、DSoDは維持されます。したがって、1)および2)が保証されなければなりません。(Antonios)
Note that an AC policy is not necessarily explicitly expressed by a single model; it can also be implicitly embedded by mixing with direct access constraints or other AC models. Thus, an AC policy may be expressed by combining multiple AC models (e.g. for policy combinations) or additional constraints outside of the model into one combined model. Ensuring the conformance of a model to the policy in principle is to formally detect inconsistency and incompleteness faults as described in Section 3. In the former case, for example, an access request can be both accepted and denied, while in the latter case the request is neither accepted nor denied according to the model.
ACポリシーは必ずしも単一のモデルによって明示的に表現されるとは限らず、直接アクセス制約または他のACモデルと混在させることによって暗黙的に組み込まれる場合もあることに注意されました。したがって、ACポリシーは、複数のACモデル(例えばポリシーの組み合わせのため)またはモデル外の追加の制約を1つの結合モデルへと組み合わせることによって表現され得ます。モデルのポリシーに対する適合性を確保することは、原則として、セクション3で説明されているように不整合および不完全性の障害を形式的に検出することです。前者の場合、例えばアクセス要求が承認と拒否の両方をされる可能性があり、後者の場合、モデルによれば要求は承認も拒否もされません。
4.1 Model Verification
4.1 モデルの検証
The general approach for checking the correct specification of an AC model is to use black-box methods to verify the AC model against safety requirements. And since confidence in the model’s correctness depends on the quality of the safety requirements, a white-box property assessment method on entities in the model and safety requirements is required to assess the sufficiency of the safety, covering and confinement of the model. [HKXH11].
ACモデルの正しい仕様を確認するための一般的なアプローチは、ブラックボックス手法を使用して安全性要件に対してACモデルを検証することです。そして、モデルの正確性に対する信頼性は安全性要件の品質に依存するため、モデルの安全性、カバレッジ、および閉じ込めの十分性を評価するには、モデル内のエンティティおよび安全性要件に対するホワイトボックスプロパティ評価手法が必要とされます。[HKXH11]。
In terms of AC attributes, the formal definition of AC model can be illustrated by a deterministic finite state transducer corresponding to a Finite State Machine (FSM) with a five-tuple \(M = (\Sigma, \mathit{ST}, s_0, \delta, F)\), where: \(\Sigma\) is the input alphabet that represents the attributes associated with subjects, actions, objects, and environment conditions. \(\mathit{ST}\) is a finite, non-empty set of recorded AC system states and permissions. \(s_0\) is the initial state, \(\delta\) is the state-transition function, where \(\delta : \mathit{ST} \times \Sigma \rightarrow \mathit{ST}\), \(F\) is the set of final states include \(\mathit{Grant}\), \(\mathit{Deny}\) as the output
AC属性の観点から、ACモデルの形式的定義は、5つ組 \(M = (\Sigma, \mathit{ST}, s_0, \delta, F)\) を持つ有限状態機械(FSM)に対応する決定性有限状態トランスデューサによって説明できます。ここで、\(\Sigma\) は主体、アクション、オブジェクト、および環境条件に関連付けられた属性を表す入力アルファベットです。\(\mathit{ST}\) は記録されたACシステム状態およびパーミッションの有限で空でない集合です。\(s_0\) は初期状態であり、\(\delta\) は状態遷移関数であって \(\delta : \mathit{ST} \times \Sigma \rightarrow \mathit{ST}\) であり、\(F\) は出力としての \(\mathit{Grant}\)、\(\mathit{Deny}\) を含む最終状態の集合である
For static AC models as described in Section 2.2 a), the FSM \(M_{\mathit{static}}\) does not require internal states \(\mathit{st}\) to reach the permission state, thus \(F = \mathit{ST} = \{\mathit{Grant}, \mathit{Deny}\}\), i.e., \(M_{\mathit{static}}\) is just a straightforward FSM model without state transitions. For dynamic AC models as described in Section 2.2 b), the input alphabets of FSM \(M_{\mathit{dynamic}}\) are \(\Sigma_{\mathit{dynamic}} = \{\mathit{gCond}_1, \ldots, \mathit{gCond}_n\}\), where \(\mathit{gCond}_i\) is the threshold indicator of the access limitation, such as the number of persons that have to access at the same time in a N-Person control policy, or the maximum number of accesses allowed for a Limited_Number_of_Access policy. For historical AC models as described in Section 2.2 c), the input alphabets of the FSM \(M_{\mathit{historical}}\) are \(\Sigma_{\mathit{historical}} = \Sigma - \{\mathit{gCond}_1, \ldots, \mathit{gCond}_n\}\), where \(\mathit{sCond}_i\), \(\mathit{aCond}_i\), and \(\mathit{oCond}_i\) contribute to a historical recording that is used as determining factors for the next permission decision. Note that it is possible for different types of AC models to combine into one model such that \(M_{\mathit{combine}} = \{M_{\mathit{static}} \cup M_{\mathit{dynamic}} \cup M_{\mathit{historical}}\}^{2}\) An AC safety requirement \(p\) is expressed by the proposition \(p : \mathit{ST} \times \Sigma^{2} \rightarrow \mathit{ST}\) of FSM, which can be collectively translated in terms of logical formulae such that \(p = (s_i * \mathit{sCond}_1 * \ldots * \mathit{sCond}_n * \mathit{aCond}_1 * \ldots * \mathit{aCond}_n * \mathit{oCond}_1 * \ldots * \mathit{oCond}_n * \mathit{gCond}_1 * \ldots * \mathit{gCond}_n) \rightarrow d\), where \(p \in P\) is a set of safety requirements, and \(*\) is a Boolean operator in terms of logical formulas of temporal logic such as computational tree logic (CTL) and linear-time temporal logic (LTL). The purpose of model checking is to verify the set \(\mathit{ST}\) in \(M\) in which \(p\) is true according to an exhaustive state space search. In addition, by verifying the set of states in which the negation of \(p\) is true, we can obtain the set of counterexamples to make the assertion that \(p\) is true. The satisfaction of an AC model \(M\) to the AC safety requirement \(P\) by model checking is composed of two requirements:
セクション2.2 a) で説明されている静的ACモデルの場合、FSM \(M_{\mathit{static}}\) はパーミッション状態に到達するために内部状態 \(\mathit{st}\) を必要としないため、\(F = \mathit{ST} = \{\mathit{Grant}, \mathit{Deny}\}\) となり、すなわち \(M_{\mathit{static}}\) は状態遷移のない単純なFSMモデルにすぎません。セクション2.2 b) で説明されている動的ACモデルの場合、FSM \(M_{\mathit{dynamic}}\) の入力アルファベットは \(\Sigma_{\mathit{dynamic}} = \{\mathit{gCond}_1, \ldots, \mathit{gCond}_n\}\) であり、ここで \(\mathit{gCond}_i\) は、N人制御ポリシーにおいて同時にアクセスしなければならない人数や、Limited_Number_of_Access ポリシーで許可される最大アクセス数など、アクセス制限のしきい値指標です。セクション2.2 c) で説明されている履歴ACモデルの場合、FSM \(M_{\mathit{historical}}\) の入力アルファベットは \(\Sigma_{\mathit{historical}} = \Sigma - \{\mathit{gCond}_1, \ldots, \mathit{gCond}_n\}\) であり、ここで \(\mathit{sCond}_i\)、\(\mathit{aCond}_i\)、および \(\mathit{oCond}_i\) は、次のパーミッション決定の決定要因として使用される履歴記録に寄与します。異なるタイプのACモデルを組み合わせて1つのモデル \(M_{\mathit{combine}} = \{M_{\mathit{static}} \cup M_{\mathit{dynamic}} \cup M_{\mathit{historical}}\}^{2}\) とすることが可能であることに留意されました。AC安全性要件 \(p\) はFSMの命題 \(p : \mathit{ST} \times \Sigma^{2} \rightarrow \mathit{ST}\) によって表され、これは \(p = (s_i * \mathit{sCond}_1 * \ldots * \mathit{sCond}_n * \mathit{aCond}_1 * \ldots * \mathit{aCond}_n * \mathit{oCond}_1 * \ldots * \mathit{oCond}_n * \mathit{gCond}_1 * \ldots * \mathit{gCond}_n) \rightarrow d\) のような論理式の観点から包括的に変換できます。ここで \(p \in P\) は安全性要件の集合であり、\(*\) は計算木論理(CTL)や線形時相論理(LTL)などの時相論理の論理式の観点におけるブール演算子です。モデル検査の目的は、網羅的な状態空間探索に従って、集合 \(\mathit{ST}\) のうち \(M\) において \(p\) が真であるものを検証することです。さらに、\(p\) の否定が真である状態の集合を検証することにより、反例の集合を取得して \(p\) が真であるという言明を行うことができます。ACモデル \(M\) がAC安全性要件 \(P\) をモデル検査によって充足することは、2つの要件で構成される:
(1) Safety, where \(M\) satisfies \(P\). That is, there is no violation of rules to the logic specified in \(P\), and it is assured that \(M\) will eventually be in a desired state after it takes actions in compliance with a user access request.
(1) 安全性(Safety):\(M\) が \(P\) を満たします。すなわち、\(P\) で指定された論理に対するルールの違反がなく、ユーザーのアクセス要求に従ってアクションを実行した後、\(M\) が最終的に望ましい状態になることが保証されます。
(2) Liveness, where \(M\) will not have neither a deadlock in which the system waits forever for system events, nor a livelock in which the model repeatedly executes the same operations forever. Figure 3 shows the relations between \(M\) and \(P\) in a model checking framework.
(2) 活性(Liveness):\(M\) には、システムがシステムイベントを永久に待機するデッドロックも、モデルが同じ操作を永久に繰り返し実行するライブロックも生じない。図3は、モデル検査フレームワークにおける \(M\) と \(P\) の関係を示しています。
図3 ACモデルと安全性要件。3つの箱がある。左の「Policy: (rules, constraints)」(ポリシー:規則、制約)から中央の箱「Access control model: M = (Σ, ST, s0, δ, F)」(アクセス制御モデル)へ矢印があり、中央の箱には5つの円を矢印で結んだ小さなグラフがある。右の「AC requirements: P ={p1…pn}」(AC要件)から中央の箱へ矢印があり、「Verify the safety and liveness of P」(Pの安全性と活性を検証する)と書かれている。
Figure 3 AC model and safety requirement
図3 ACモデルと安全性要件
Thus, the AC rules define the system behaviors that function as the transition relation \(\delta\) in \(M\). Then when the AC safety requirement is represented by temporal logic formula \(p\), we can represent the assertion that model \(M\) satisfies \(p\) by \(M \models Ab \rightarrow AXp\), where temporal logic quantifier \(A\) represents “always”, and logic quantifier \(X\) represents “is true next state”. The purpose of safety verification and liveness verification using model checking is to determine whether these assertions are true, and to identify a state in which the assertions are not true as a counterexample for the assertions. Since the behavior of the AC mechanism can be represented by FSM \(M\), and the safety requirements that \(M\) must satisfy can be represented by temporal logic formulas, we can define the correctness more precisely as that the model can be led from every possible state that is reachable from initial states to the defined final state while complying with the safety requirement.
したがって、ACルールは、遷移関係 \(\delta\) として \(M\) において機能するシステム動作を定義します。その上で、AC安全性要件が時相論理式 \(p\) で表される場合、モデル \(M\) が \(p\) を満たすという言明は \(M \models Ab \rightarrow AXp\) で表すことができます。ここで、時相論理量化子 \(A\) は「常に(always)」を表し、論理量化子 \(X\) は「次の状態で真である(is true next state)」を表します。モデル検査を用いた安全性検証および活性検証の目的は、これらの言明が真であるかどうかを判定し、言明が真ではない状態をその言明の反例として特定することです。AC機構の動作は FSM \(M\) によって表現でき、\(M\) が満たさなければならない安全性要件は時相論理式によって表現できるため、正しさは、安全性要件に準拠しつつ、初期状態から到達可能なすべての可能な状態から定義された最終状態へとモデルを導くことができることとして、より正確に定義できます。
Even though checked by the black box testing as described above, the model is not fault proof because the temporal logic in the model might not be thorough in covering all possible values of all rules or all conditions in rules. For example, two states determined by opposite assignments of the same Boolean variable are embedded in different sub-state modules, where a third state is triggered only when the constraints of the two states are satisfied. As demonstrated in Figure 4, the two rules will never agree due to the self-negation to the same constraint. In this case, the third state will never be satisfied, but proven correct without counterexamples through the black box checking.
上述のとおりブラックボックステストによって検査されたとしても、モデルに欠陥がないとは限りません。モデル内の時相論理では、すべてのルールのすべての可能な値や、ルール内のすべての条件を網羅できていない可能性があるためです。たとえば、同一のブール変数に相反する値を割り当てることで決まる2つの状態が異なるサブ状態モジュールに組み込まれており、第3の状態は、その2つの状態の制約が満たされた場合にのみ発動されるとします。図4に示すように、同じ制約に対する自己否定のため、2つのルールが一致することは決してありません。この場合、第3の状態が満たされることはありませんが、ブラックボックス検査では反例が見つからず、モデルは正しいと証明されます。
図4 モデルにおける到達不能状態の例。外枠の中に、枠で囲んだ 3 つのコード断片と性質の行がある。枠1: NEXT_STATE(p):= CASE { x :i …. }。枠2: NEXT_STATE(q):= CASE { ! x :j …. }。枠3: NEXT_STATE(access):= CASE { p = = i & q = = j :grant OTHERWISE: deny …… }。枠の下に ……. AG (p = = i & q = = j) → access = grant とある。外枠の右には、AG は、条件 (p = = i & q = = j) → access = grant が CTL 検査によってモデル内のすべての可能な経路のすべての状態で常に(大域的に)真であることを意味する、という注記がある。
Figure 4 Example of unreachable state in the model
図4 モデル内の到達不能な状態の例
To detect this kind of semantic fault, white box testing based on code analysis should be applied such that the resulting mutated versions are used to detects faults of the model. Testing for mutations [MX07] makes sure all paths of a part of a model code are covered by setting the related target variables to all possible values as input, and checking to see if there are different outcomes from the changes. If there is none, then either the code that had been mutated was never executed or the variable was unable to locate the faults. As shown in Figure 4, If we mutate the first case module to change x to !x, the resulting access state will be grant without being affected. (That works the same for the second case module). This fault demonstrates that there is a redundancy in the model, which does not violate the temporal logic of the model. Further investigation to check the model that relates to the variable should reveal that the (p = = i & q = = j) → access = = grant safety requirement will never happen. Note that this fault can be caught if one more safety requirement E! (p = = i & q = = j) (which means there exists some path that eventually in the future will satisfy !(p = = i & q = = j) in CTL model checking) is specified. Hence, it is not expected that all safety requirements are perfectly specified in the beginning. Thus, white box checking can be used as a second line of defense against faults that will not be spotted by black box checking.
この種の意味上の欠陥を検出するには、コード解析に基づくホワイトボックステストを適用し、その結果得られる変異版をモデルの欠陥検出に用いるべきです。変異テスト [MX07] では、関連する対象変数に入力として可能なすべての値を設定してモデルコードの一部のすべての経路を網羅し、変更によって結果が異なるかどうかを確認します。結果に違いがなければ、変異させたコードが一度も実行されなかったか、その変数では欠陥の所在を特定できなかったかのいずれかです。図4に示すように、最初のケースモジュールの x を !x に変異させても、アクセス状態は影響を受けず grant となります。(2番目のケースモジュールでも同様です。)この欠陥は、モデルに冗長性があることを示していますが、モデルの時相論理には違反しません。当該変数に関連するモデルをさらに調べれば、(p = = i & q = = j) → access = = grant という安全要件が決して成立しないことが明らかになるはずです。なお、追加の安全要件 E! (p = = i & q = = j)(CTLモデル検査で、将来のある時点に !(p = = i & q = = j) を満たす経路が存在することを意味する)を指定すれば、この欠陥を検出できます。したがって、すべての安全要件が最初から完全に規定されているとは限りません。そのため、ホワイトボックス検査は、ブラックボックス検査では発見されない欠陥に対する第2の防衛線として利用できます。
Most faults in an AC model result from the nondeterministic automata of FSM states, for example, in Figure 5, white box checking will detect that the value \(x\) will result to a \(\mathit{grant}\) of \(\mathit{access}\) when it is either \(s\) or \(t\). This does not violate the safety requirement; however, the safety property will not meet be maintained if a more stringent safety requirement requires that only one value of x attribute is desired from the policy.
ACモデルにおけるほとんどのフォールトはFSM状態の非決定性オートマトンに起因します。たとえば図5において、ホワイトボックス検証は、値 \(x\) が \(s\) または \(t\) のいずれかであるとき、\(\mathit{access}\) の \(\mathit{grant}\) という結果になることを検出します。これは安全要件に違反しませんが、より厳格な安全要件によってポリシーからx属性の値が1つだけ求められる場合、安全性プロパティは維持されなくなります。
図5 ACモデルにおける曖昧な値と安全性要件の例。外枠の中に、枠で囲んだ 2 つのコード断片と性質の行がある。枠1: NEXT_STATE(p):= CASE { x==s|t :i …. }。枠2: NEXT_STATE(access):= CASE { p == i : grant OTHERWISE: deny …… }。枠の下に ……. AG (p = = i) → access = grant とある。
Figure 5 Example of ambiguous value and the safety requirement in an AC model.
図5 ACモデルにおける曖昧な値と安全要件の例。
Another example shows a transition to an unspecified state for a certain range of data values such as in Figure 6. There is no way for the black box checker to determine the value of \(\mathit{access}\) when \(x\) value is other than \(s\) unless we check with the safety requirement \(\mathrm{AG}\ \mathord{!}\,(p == i) \rightarrow \mathit{access} = \mathit{deny}\). This uncovered value can be detected by the white box checking when different values were assigned to \(x\), which does not match any expected case condition, and results the same \(\mathit{grant}\) of \(\mathit{access}\). Thus, the safety requirement verification informs the users which rules are not covered by the existing safety requirement so that the users can add new properties to cover the uncovered.
もう1つの例は、図6のように、特定範囲のデータ値に対して不特定の状態への遷移を示しています。ブラックボックス検証ツールが \(\mathit{access}\) の値を特定する方法は、\(x\) の値が \(s\) 以外である場合、安全要件 \(\mathrm{AG}\ \mathord{!}\,(p == i) \rightarrow \mathit{access} = \mathit{deny}\) を用いてチェックしない限り存在しません。このカバーされていない値は、\(x\) に異なる値が割り当てられた際にホワイトボックス検証によって検出できます。これは期待されるどのcase条件とも一致せず、同じ \(\mathit{grant}\)(\(\mathit{access}\) の許可)という結果になります。したがって、安全要件の検証は、既存の安全要件でカバーされていないルールをユーザーに通知し、ユーザーが未カバーのものをカバーするための新しいプロパティを追加できるようにします。
図6 ACモデルにおける未カバーの値と安全性要件の例。外枠の中に、枠で囲んだ 2 つのコード断片と性質の行がある。枠1: NEXT_STATE(p):= CASE { x==s :i …. }。枠2: NEXT_STATE(access):= CASE { p == i : grant …… }。枠の下に ……. AG (p == i) → access = grant とある。
Figure 6 Example of uncovered value and the safety requirement in an AC model
図6 ACモデルにおける未カバーの値と安全性要件の例
4.2 Coverage and Confinements Verifications
4.2 カバレッジおよび閉じ込め(Confinements)の検証
The rules in the policy, model, and safety requirements may each describe their own space of permission conditions, and may not be congruent in one space as the initial relation illustrated examples in Figure 7. The safety and liveness check can assure only the logic integrity of some rules against some safety requirements. The complete satisfaction of a model to its policy requires repair of coverage and confinement faults if any violations are detected by additional Coverage and Confinement Check (CCC), the second line of defense against such semantic faults.
ポリシー、モデル、および安全性要件におけるルールは、それぞれ独自の許可条件空間を記述している可能性があり、図7の例で示されている初期関係のように、1つの空間内で一致しない場合があります。安全性および活性のチェックでは、一部の安全性要件に対する一部のルールの論理的完全性しか保証できません。ポリシーに対するモデルの完全な充足には、このようなセマンティックフォールトに対する第2の防衛線である追加のカバレッジおよび閉じ込めチェック(CCC)によって違反が検出された場合、カバレッジフォールトおよび閉じ込めフォールトの修復が必要となります。
図7 ポリシー、モデル、および安全性要件の関係。左から右へ 3 つの段階が曲がった矢印で結ばれている。初期関係(Initial relation): Model と記された破線の円、Confined properties と記された実線の円、Specified properties と記された破線の円が一部重なり、吹き出しに「一部のルールと一部のプロパティが検証済み」とある。Coverage fault fixing(カバレッジフォールトの修正)と記された曲がった矢印が第 2 段階へ続く。第 2 段階では、Confined properties と記された大きな円に Model/ specified properties と記された破線の円が重なり、吹き出しに「すべてのルールとすべてのプロパティが検証済み」とある。Confinement fault fixing(閉じ込めフォールトの修正)と記された曲がった矢印が第 3 段階へ続く。第 3 段階は Confined properties / Model / specified properties と記された 1 つの円で、吹き出しに「すべてのルールとプロパティが検証され、閉じ込められている」とある。
Figure 7 Relations of Policy, Model, and Safety requirements
図 7 ポリシー、モデル、および安全性要件の関係
CCC requires mutant versions of the model, and extra modified properties for additional model checking. As illustrated in Figure 7, the goal of CCC is to ensure that the rules in the safety requirement are completely covered by the model, and to confirm that no exceptional access permissions are granted unless intentionally allowed. The first step of CCC is to discover the rules, which are seeped through the specification of the safety requirement by applying white box checking on mutated versions of the model. The second step is to detect unexpected access permission that might not be the intention of the policy author, by applying model checking on modified rules extracted from the original ones.
CCCには、モデルの変異版と、追加のモデル検査に用いる修正済みプロパティが必要です。図7に示すように、CCCの目的は、安全要件のルールがモデルによって完全に網羅されていることを確認し、意図的に許可されている場合を除き、例外的なアクセス許可が付与されないことを確認することです。CCCの第1段階では、モデルの変異版にホワイトボックス検査を適用し、安全要件の仕様全体に散在するルールを発見します。第2段階では、元のルールから抽出した修正済みルールにモデル検査を適用し、ポリシー作成者の意図に沿わない可能性のある予期しないアクセス許可を検出します。
Rule coverage checking
ルールカバレッジ検査
The key notion of rule coverage checking is to synthesize a version of the given model in such a way that the permission of its rules is mutated such that rule \(r\) is changed to \({\sim}r\). If safety requirements are satisfied by both mutated and original models through model checking, then some of the rules and their mutants would never be applied to the safety requirements; in other words, the safety requirements do not cover all the rules in the model.
ルールカバレッジ検査の重要な概念は、ルールのパーミッションが変異され、ルール \(r\) が \({\sim}r\) に変更されるように、指定されたモデルのバージョンを合成することです。モデル検査を通じて変異モデルと元のモデルの双方が安全性要件を満たす場合、一部のルールおよびその変異体は安全性要件に決して適用されないことになります。言い換えれば、安全性要件はモデル内のすべてのルールを網羅していないことになります。
As an example in Figure 8, the safety and liveness checking verify that the model conforms the safety requirement \(\mathrm{AG}\ (q == i) \rightarrow \mathit{access} = \mathit{grant}\) without counterexamples; however, by applying the CCC by mutating the rule \(u == j : \mathit{grant}\) to \(u == j : \mathit{deny}\) for the coverage checking, the result shows that the safety requirement satisfies the mutated rules as well (without counterexamples), indicating that the variable \(u\) was never applied to the safety requirement \(\mathrm{AG}\ (q == i) \rightarrow \mathit{access} = \mathit{grant}\).
図8の例として、安全性および活性の検証により、モデルが反例なしに安全性要件 \(\mathrm{AG}\ (q == i) \rightarrow \mathit{access} = \mathit{grant}\) に適合することが検証されます。しかし、網羅性検証のためにルール \(u == j : \mathit{grant}\) を \(u == j : \mathit{deny}\) に変異させてCCCを適用すると、その結果は安全性要件が変異させたルールも(反例なしに)満たすことを示しており、これは変数 \(u\) が安全性要件 \(\mathrm{AG}\ (q == i) \rightarrow \mathit{access} = \mathit{grant}\) に決して適用されていなかったことを示しています。
図8 ACモデルにおける未カバーのルールの例。左側の外枠の中に、枠で囲んだ 2 つのコード断片と性質の行がある。枠1: NEXT_STATE(q):= CASE { x :i …. }。枠2: NEXT_STATE(access):= CASE { u == j :grant g == I : grant OTHERWISE: deny …… }で、u == j :grant が強調表示されている。枠の下に …… . AG (q == i) → access = grant(強調表示)とある。Mutant と記された太い矢印が枠2から右側の破線の枠を指し、その中は NEXT_STATE(access):= CASE { u == j :deny g == I : deny OTHERWISE: grant …… } で、u == j が強調表示されている。
Figure 8 Example of uncovered rules in a AC model
図8 ACモデルにおけるカバーされていないルールの例
This result shows that the rule \(u == j : \mathit{grant}\) is not verified with the property \(\mathit{AG}\ (q == i) \rightarrow \mathit{access} = \mathit{grant}\). One way of addressing this insufficiency is by adding a new property that describes proper control of \(u\). Note that it is necessary to check every rule in the model against all safety requirement to achieve thorough verification.
この結果は、ルール \(u == j : \mathit{grant}\) がプロパティ \(\mathit{AG}\ (q == i) \rightarrow \mathit{access} = \mathit{grant}\) で検証されていないことを示しています。この不備に対処する1つの方法は、\(u\) の適切な制御を記述する新しいプロパティを追加することです。徹底的な検証を達成するには、モデル内のすべてのルールをすべての安全性要件に対してチェックする必要があることに注意されました。
Property confinement checking
プロパティ閉じ込め検査
Property confinement checking ensures that there is no exceptional permission allowed in addition to the specified safety requirement; this checking requires a modified safety requirement to be added for the next run of model checking. Confinement check should discover the discrepancy of the specified safety requirement and the safety requirement the AC policy author intend. The rationale is that if the model does not satisfy the modified safety requirement, then there are exceptional access permissions that leak through the safety requirement.
プロパティ閉じ込め検査は、規定された安全要件に加えて例外的な許可が認められていないことを確実にするものであり、この検査には、次回のモデル検査の実行のために、修正した安全要件を追加することが必要です。閉じ込め検査では、規定された安全要件と、ACポリシー作成者が意図する安全要件との食い違いを発見すべきです。その理論的根拠は、モデルが修正した安全要件を満たさない場合、安全要件をすり抜けて漏れている例外的なアクセス許可があるということです。
Figure 9 shows a transition to an unspecified state for a certain range of data values that allow exceptional permission not covered by a specified safety requirement because the value of \(\mathit{access}\) when \(u\) value is different than \(i\) (such as \(u = j\)) also grants access permission by the rule \(\mathit{otherwise} : \mathit{grant}\). This fault can be caught by a counterexample \(\mathit{AG}\ (u == j) \rightarrow \mathit{access} = \mathit{grant}\) when checking the model against the additional confinement property \(\neg \mathit{AG}\ (u == i) \rightarrow \mathit{access} = \mathit{deny}\) derived from original property \(\mathit{AG}\ (u == i) \rightarrow \mathit{access} = \mathit{grant}\). The additional model checking for confinement verification informs the AC policy authors which safety requirement is not confined so that the AC policy author can add new rules to enforce the safety of the model. As in this case, changing the rule \(\mathit{otherwise} : \mathit{grant}\) to \(\mathit{otherwise} : \mathit{deny}\) and adding all granted rules in the state will correct the problem.
図9は、指定された安全性要件でカバーされていない例外的なパーミッションを許可する特定の範囲のデータ値に対して、不特定の状態への遷移を示しています。これは、\(\mathit{access}\) の値が、\(u\) の値が \(i\) と異なる場合(\(u = j\) など)にも、ルール \(\mathit{otherwise} : \mathit{grant}\) によってアクセス権限を付与するためです。このフォールトは、反例 \(\mathit{AG}\ (u == j) \rightarrow \mathit{access} = \mathit{grant}\) によって検出できます。これは、追加の閉じ込めプロパティ \(\neg \mathit{AG}\ (u == i) \rightarrow \mathit{access} = \mathit{deny}\) に対してモデルをチェックする際に得られ、このプロパティは元のプロパティ \(\mathit{AG}\ (u == i) \rightarrow \mathit{access} = \mathit{grant}\) から導出されます。閉じ込め検証のための追加のモデル検査は、どの安全性要件が閉じ込められていないかをACポリシー作成者に通知し、ACポリシー作成者がモデルの安全性を強制するための新しいルールを追加できるようにします。このケースのように、ルール \(\mathit{otherwise} : \mathit{grant}\) を \(\mathit{otherwise} : \mathit{deny}\) に変更し、その状態で許可されるすべてのルールを追加することで問題が修正されます。
図9 プロパティにおける非限定(Unconfined)ルール。左側の外枠の中に、枠で囲んだ 2 つのコード断片と性質の行がある。枠1: NEXT_STATE(u):= CASE { x==s :i x==t :j …. }。枠2: NEXT_STATE(access):= CASE { u== k : deny …… Otherwise grant }。枠の下に ……. AG (u == i) → access = grant(強調表示)があり、その後に波括弧がある。そこから Addition(追加)と記された太い矢印が右側の破線の枠を指し、その中に ¬AG (u == i) → access = deny(強調表示)と波括弧がある。
Figure 9 Unconfined rule in a property
図9 プロパティにおける非限定(Unconfined)ルール
Note that it is possible the AC policy author intentionally allowed the exception for a safety requirement, and it is necessary to check every safety requirement against the set of rules in the model to achieve thorough verification.
ACポリシー作成者が安全性要件に対する例外を意図的に許可した可能性もあることに注意が必要であり、徹底した検証を達成するためには、モデル内の一連のルールに対してすべての安全性要件をチェックすることが不可欠です。
4.3 Implementation Test
4.3 実装テスト
Black box model checking and white box mutation test provide methods for verifying the correct model representation of the policy. Once a model is verified, the AC mechanism can be implemented based on the design of the model and additional constraints if needed. Usually AC mechanisms are code developed in a language the AC system supports, for example dedicated AC language such as XACML [XACML] is commonly used for AC code implementation. AC implementation can be error prone. As the AC model is directly implemented by an algorithm, the errors are often caused by syntactic faults, such as mistakenly changing the + sign to – sign, or typing a letter O instead of 0.
ブラックボックスモデル検査およびホワイトボックスミューテーションテストは、ポリシーの正しいモデル表現を検証するための手法を提供します。モデルが検証されると、モデルの設計および必要に応じて追加の制約に基づいてACメカニズムを実装できます。通常、ACメカニズムはACシステムがサポートする言語で開発されたコードであり、例えばXACML [XACML]などの専用のAC言語がACコードの実装に一般的に使用されます。ACの実装はエラーが発生しやすい可能性があります。ACモデルはアルゴリズムによって直接実装されるため、エラーは多くの場合、+記号を誤って–記号に変更したり、0の代わりに文字Oを入力したりするような構文上のフォールトに起因します。
The correct implementation of the policy needs to be tested. To achieve that, a test oracle (that contains cases of all possible outcomes of the AC safety requirement is required, because implementation faults are unpredictable without a logical trace for detecting. Thus, all the combinations of the variables in the safety requirements need to be covered in the oracle. For example, a safety requirement: “\(x\) read \(y\) grant” where \(x\) has 3 different values and \(y\) has 5 different values then there will be \(3 \cdot 2 \cdot 5 \cdot 2 = 60\) test cases (assume that the AC actions has two values: read and write, and permission has only two values: grant and deny). The implemented AC system will then run these test cases to verify whether the actual test outputs are the same as the expected outputs.
ポリシーの正しい実装はテストされる必要があります。それを達成するためには、実装フォールトは検出のための論理的な追跡なしには予測不可能であるため、テストオラクル(AC安全性要件の考えられるすべての結果のケースを含む)が必要とされます。したがって、オラクル内では安全性要件における変数のすべての組み合わせを網羅する必要があります。例えば、「\(x\) read \(y\) grant」という安全性要件において、\(x\) が3つの異なる値を持ち、\(y\) が5つの異なる値を持つ場合、\(3 \cdot 2 \cdot 5 \cdot 2 = 60\) 個のテストケースが存在することになります(ACアクションには read と write の2つの値があり、パーミッションには grant と deny の2つの値しかないと仮定する)。実装されたACシステムは、実際のテスト出力が期待される出力と同じであるかどうかを検証するために、これらのテストケースを実行します。
It is not uncommon that a verification test includes hundreds of safety requirements; each contains tens of variables, in such case, the number of test cases in a test oracle for the implementation test is too great to be efficiently performed, therefor, additional techniques [ACTS] [HKX08] for reducing the test case size without sacrificing the capability may be required for the test. Section 5.6 describes combinatorial methods for making such large problems tractable.
検証テストに数百もの安全性要件が含まれることは珍しくなく、それぞれに数十の変数が含まれています。そのような場合、実装テスト用のテストオラクルにおけるテストケースの数が多すぎて効率的に実行できなくなるため、能力を損なうことなくテストケースの規模を削減するための追加の技術 [ACTS] [HKX08] がテストに必要とされることがあります。セクション 5.6 では、このような大規模な問題を扱いやすくするための組合せ手法について説明します。
5 VERIFICATION AND TESTING TECHNOLOGY
5 検証およびテスト技術
To verify the correctness of an AC model, the model and verified safety requirements are specified in a formal logic formula (including first and higher logic proof). For example, safety requirements against the model are verified using a model checker. In this process, confidence in the model’s correctness depends on the quality of the specified safety requirements. Hence, white box analysis can be applied to check if the entities (i.e., rules) of the model are sufficiently covered and confined by the safety requirements, as well as the quality of given safety requirements. Finally, test cases are generated from the domain variables in the AC model and specified safety requirements. These test inputs are fed into real AC implementation of the given model to verify whether the actual test outputs are the same as the expected outputs. (IJEKE)
ACモデルの正しさを検証するために、モデルと検証対象の安全性要件は形式論理式(一階述語論理や高階論理の証明を含む)で規定されます。例えば、モデルに対する安全性要件はモデルチェッカーを使用して検証されます。このプロセスにおいて、モデルの正しさに対する信頼性は、規定された安全性要件の質に依存します。したがって、ホワイトボックス分析を適用して、モデルのエンティティ(すなわちルール)が安全性要件によって十分にカバーされ制限されているか、また提示された安全性要件の質をチェックすることができます。最後に、ACモデルのドメイン変数および規定された安全性要件からテストケースが生成されます。これらのテスト入力は、実際のテスト出力が期待される出力と同じであるかどうかを検証するために、所定のモデルの実際のAC実装に投入されます。(IJEKE)
5.1 Model Checker
5.1 モデルチェッカー
A model checker provides the modular hierarchical descriptions, and for the definition of reusable components of the specification of Finite State Machines (FSMs) which range from completely synchronous to completely asynchronous ones, and from detailed to abstract ones. The only data types in the specification are finite Booleans, scalars, fixed arrays, and static data types that can be constructed. The specified model in an FSM describes the transition states of the FSM. In general, any expression in the propositional calculus can be used to define the transition relation of states; however, the flexibility of the expression is accompanied by the risk of a logical contradiction, which makes specifications vacuously true or makes the system unimplementable. Fundamentally, there are three basic types (as described in Section 2.2) of FSM expressions for specifying AC models in terms of the sequence of the state transitions:
モデルチェッカーは、完全に同期的なものから完全に非同期的なものまで、また詳細なものから抽象的なものまでに及ぶ有限状態機械(FSM)の仕様のモジュール式階層記述、および再利用可能なコンポーネントの定義を提供します。仕様における唯一のデータ型は、有限ブール値、スカラー、固定長配列、および構築可能な静的データ型です。FSMにおいて指定されたモデルは、そのFSMの遷移状態を記述します。一般に、命題計算の任意の式を使用して状態の遷移関係を定義できますが、表現の柔軟性には論理的矛盾のリスクが伴い、それにより仕様が無意味に真(vacuously true)になったり、システムが実装不能になったりします。基本的に、状態遷移のシーケンスの観点からACモデルを指定するためのFSM表現には、(セクション 2.2 で説明されているように)3つの基本タイプがある:
•Synchronous. An AC model is expressed by defining the value of AC constraints in the next state (i.e., after each transition), given the value of constraints in the current states (i.e., before transition).
•同期型(Synchronous)。ACモデルは、現在の状態(すなわち遷移前)の制約の値を前提として、次の状態(すなわち各遷移後)のAC制約の値を定義することによって表現されます。
•Asynchronous. An AC model is expressed by a collection of concurrency states. This type of model is for AC systems whose authorization decisions are triggered from more than one clock region such as mutual exclusion, communication protocols, and asynchronous circuits.
•非同期型(Asynchronous)。ACモデルは、並行状態の集合によって表現されます。このタイプのモデルは、相互排他、通信プロトコル、非同期回路など、認可決定が複数のクロック領域からトリガーされるACシステムを対象としています。
•Direct specification. An AC model is specified directly in terms of propositional formulas. The set of possible initial states is specified as a formula in the current state variables. A state is initial if it satisfies the formula. The transition relation is directly specified as a propositional formula in terms of the current and next values of the state variable. Any current state/next state pair is in the transition relation if and only if it satisfies the formula.
•直接指定型(Direct specification)。ACモデルは、命題論理式で直接指定されます。取り得る初期状態のセットは、現在の状態変数の論理式として指定されます。ある状態がその論理式を満たす場合、その状態は初期状態となります。遷移関係は、状態変数の現在値と次の値に関する命題論理式として直接指定されます。任意の現在の状態と次の状態のペアは、その論理式を満たす場合に限り(if and only if)、遷移関係に含まれます。
FSM Model Checking Basic
FSMモデル検査の基本
Based on the type of transition state (as describe above) of the FSM specification, a model checker verifies if a model satisfies a set of desired safety requirements specified by the user. The specifications can be checked by temporal logics such as Computation Tree Logic (CTL), and Linear Temporal Logic (LTL) extended with Past Operators. CTL and TTL formulas consist of atomic propositional logic formulas, plus temporal connectives. The propositional logic formulas are expressions about the state of the system. The temporal connectives are expressions about paths into the future that the state of the system can follow [NuSMV]. And the model checker constructs and prints a counterexample, i.e. a trace of the FSM that falsifies the property.
FSM仕様の遷移状態(上記で説明)のタイプに基づき、モデルチェッカーはモデルがユーザーによって指定された所望の安全性要件のセットを満たすかどうかを検証します。仕様は、計算樹論理(CTL)や、過去演算子で拡張された線形時相論理(LTL)などの時相論理によって検証できます。CTLおよびLTL論理式は、原子命題論理式と時相結合子で構成されます。命題論理式はシステムの状態に関する論理式です。時相結合子は、システムの状態がたどり得る将来へのパスに関する論理式です [NuSMV]。そしてモデルチェッカーは反例、すなわちプロパティを反証するFSMのトレースを構築して出力します。
CTL is a branching-time logic that takes into account the non-deterministic, branching evolution of a FSM. More precisely, the evolution of a FSM such that from a given state the evolution of FSM can be described as an infinite tree, where the nodes are the states and the branching represents the non-determinism transitions of the states. The paths in the tree from one state to the others are the possible evolutions of the FSM from that state. In CTL, one can express properties that should hold for all the paths that start in a state, as well as for properties that should hold just for some of the paths.
CTLは、FSMの非決定論的で分岐的な発展を考慮に入れた分岐時間論理です。より正確には、所与の状態からのFSMの発展を無限木として記述でき、そこではノードが状態であり、分岐が状態の非決定論的遷移を表すようなFSMの発展です。ある状態から他の状態への木におけるパスは、その状態からのFSMの起こり得る発展です。CTLでは、ある状態で始まるすべてのパスに対して保持されるべきプロパティだけでなく、一部のパスに対してのみ保持されるべきプロパティも表現できます。
LTL shares a significant intersection that includes most of the common properties used in CTL; it characterizes each linear path induced by the FSM (linear-time approach). The main difference between LTL and CTL formulas is the absence of existential and universal operators, thus LTL temporal operators do not have path quantifiers. In fact, LTL formulas are evaluated on linear paths, and a formula is considered true in a given state if it is true for all the paths starting in that state, which reflect the linear-time paradigm. LTL properties can also include past temporal operators.
LTLは、CTLで使用される一般的なプロパティの大部分を含む重要な共通部分を共有しています。それはFSMによって導出される個々の線形パスを特徴付けます(線形時間アプローチ)。LTL論理式とCTL論理式の主な違いは、存在演算子と全称演算子が存在しないことであり、したがってLTL時相演算子はパス量化子を持ちません。実際、LTL論理式は線形パス上で評価され、線形時間パラダイムを反映して、ある状態で始まるすべてのパスに対して真である場合、論理式はその所与の状態で真と見なされます。LTLプロパティには、過去時相演算子を含めることもできます。
CTL and LTL operators can be nested in an arbitrary way and can be combined using logic operators. Typical examples of CTL formulas are \(\mathit{AG}\ !p\) (“condition \(p\) is absent in all the evolutions”), \(\mathit{AGEF}\ p\) (“it is always possible to reach a state where \(p\) holds”), and \(\mathit{AG}\ (p \rightarrow \mathit{AF}\ q)\) (“each occurrence of condition \(p\) is followed by an occurrence of condition \(q\)”). And typical example of LTL is \(G\ p\), stating that condition \(p\) holds in all future time instants, and \(F\ p\), stating that condition \(p\) holds in one of the future time instants.
CTLおよびLTL演算子は任意の方法でネストすることができ、論理演算子を使用して組み合わせることができます。CTL論理式の代表的な例としては、\(\mathit{AG}\ !p\)(「すべての発展において条件 \(p\) が存在しない」)、\(\mathit{AGEF}\ p\)(「\(p\) が保持される状態に到達することが常に可能である」)、および \(\mathit{AG}\ (p \rightarrow \mathit{AF}\ q)\)(「条件 \(p\) が発生するたびに、それに続いて条件 \(q\) が発生する」)があります。また、LTLの代表的な例としては \(G\ p\) があり、これは条件 \(p\) がすべての将来の時点で保持されることを述べます。そして \(F\ p\) は、条件 \(p\) が将来の時点のいずれかで保持されることを述べます。
A model checker can also find a counterexample of increasing length, and immediately stops when it succeeds, declaring that the formula is false. The maximum number of iterations can be assigned such that if the maximum number of iterations is reached and no counterexample is found, then the checking is terminated without conclusion that the formula is true, except that any counterexample should be longer than the maximum length.
モデルチェッカーは、長さが増加していく反例を見つけることもでき、成功すると直ちに停止して、論理式が偽であることを宣言します。最大反復回数を設定することができ、最大反復回数に達しても反例が見つからない場合、いかなる反例も最大長より長くなければならないという点を除き、論理式が真であると結論付けることなく検査は終了します。
In general, Bounded Model Checking (BMC) can find two kinds of counterexamples, depending on the property being analyzed. For safety requirements with the bounded number of transitions, a counterexample is a finite sequence of transitions through different states. For liveness properties, counterexamples are infinite but periodic sequences, and can be represented in a bounded setting as a finite prefix followed by a loop, i.e. a finite sequence of states ending with a loop back to some previous state. So, a counterexample demonstrates the falsity that a safety requirement cannot be a finite sequence of transitions.
一般に、有界モデル検査(BMC)は、分析対象のプロパティに応じて2種類の反例を見つけることができます。有界な遷移数を持つ安全性要件の場合、反例は異なる状態を経由する遷移の有限のシーケンスです。活性プロパティの場合、反例は無限だが周期的なシーケンスであり、有界な設定では有限のプレフィックスにループが続く形式、すなわち以前のある状態へのループバックで終わる有限の状態シーケンスとして表現できます。したがって、反例は、安全性要件が遷移の有限シーケンスであり得ないという誤りを実証します。
AC Model Specification in a Model Checker
モデルチェッカーにおけるACモデル仕様
From the viewpoint of model checking, the satisfaction of an AC model to the safety requirements is composed of two requirements. These requirements can be specified as follows in model checking terms.
モデル検査の観点から見ると、ACモデルが安全性要件を満たすことは2つの要件で構成されます。これらの要件は、モデル検査の用語で次のように指定できます。
(1) Safety means that the AC model satisfies the specified safety requirements. Implicit in this description of safety is that there is no violation of the constraints specified in the safety requirements and it is assured that the model will eventually be in the desired situation after it took actions in compliance with the model. (2) Liveness means that the AC model will have neither a deadlock in which the model waits forever for AC events, nor a livelock in which the model repeatedly executes the same operations forever.
(1) 安全性(Safety)とは、ACモデルが指定された安全性要件を満たすことを意味します。この安全性の説明において暗黙的なのは、安全性要件で指定された制約への違反が存在せず、モデルがそのモデルに従ってアクションを実行した後に、最終的に望ましい状況になることが保証されているということです。(2) 活性(Liveness)とは、ACモデルが、モデルがACイベントを永久に待機するデッドロックも、モデルが同じ操作を永久に繰り返し実行するライブロックも発生させないことを意味します。
Figure 10 describes the relations between the AC model, safety requirements, and the model checking framework. The structure model defines in the Kripke structure \(M = (\Sigma, \mathit{ST}, s_0, \delta, F)\) as described in Section 4.1, and safety requirements are described by a set of access rules and system entities. The policy will then be translated to a set of atomic propositions whose truth values are true in the situations. These atomic propositions can represent the assignment of the parameters in each situation.
図10は、ACモデル、安全性要件、およびモデル検査フレームワーク間の関係を示しています。構造モデルは、セクション4.1で説明したクリプキ構造 \(M = (\Sigma, \mathit{ST}, s_0, \delta, F)\) において定義され、安全性要件はアクセスルールとシステムエンティティのセットによって記述されます。その後、ポリシーは、状況において真理値が真である原子命題のセットへと変換されます。これらの原子命題は、各状況におけるパラメータの割り当てを表すことができます。
図10 ACモデルとプロパティ。左上の箱「Safety requirements: Rules, constraints」(安全性要件:規則、制約)から下の箱「Temporal logic properties: always (φ), eventually (ϕ), φ : constraints, ϕ : Final state」(時相論理プロパティ:always (φ)、eventually (ϕ)、φ:制約、ϕ:最終状態)へ矢印がある。両方の箱から右の箱「Access control model: Kripke structure model: M= (Σ, ST, s0, δ, F)」(アクセス制御モデル:クリプキ構造モデル)へ矢印があり、右の箱には5つの円を矢印で結んだ小さなグラフがある。矢印には「Verify if M satisfy always (φ) M satisfy eventually (ϕ)」(Mがalways (φ)を満たすか、Mがeventually (ϕ)を満たすかを検証する)と書かれている。
Figure 10 AC model and property
図10 ACモデルと特性
The AC rule defines the model behavior that functions as the transition relation \(M = (\Sigma, \mathit{ST}, s_0, \delta,\)
ACルールは、遷移関係として機能するモデル動作を定義する \(M = (\Sigma, \mathit{ST}, s_0, \delta,\)
The AC rule defines the model behavior that functions as the transition relation M = (Σ, ST, s0, δ, F). Then when the constraint is represented by CTL formula ϕ, we can represent the assertion (safety requirement) that model M always satisfies ϕ by M |= A ϕ using temporal logic operator A to represent “always”. Likewise, when the final state is represented by CTL formula φ, the assertion (safety requirements) that model M eventually results in the state satisfying φ can be represented by M |= Eφ using temporal logic operator E to represent “eventually”. The purpose of verification and validation using model checking is to determine whether these assertions (safety requirements) are true, and to identify the state in which the assertions (safety requirements) are not true as a counterexample. Since the behavior of the model can be represented by the Kripke structure, the safety requirement that the model must satisfy can be represented by temporal logic formulas, as shown in Figure 10. Using the preceding definition, we can define the validity of safety requirements more precisely as the safety requirement is valid to the model if the model can be lead from every possible state that is reachable from initial states to the defined final state while complying with the operation rule and without violating given constraints [KTAK07].
ACルールは、遷移関係 M = (Σ, ST, s0, δ, F) として機能するモデルの振る舞いを定義します。このとき、制約がCTL式ϕで表される場合、モデルMが常にϕを満たすという表明(安全性要件)は、「常に」を表す時相論理演算子Aを用いて M |= A ϕ と表すことができます。同様に、最終状態がCTL式φで表される場合、モデルMが最終的にφを満たす状態に至るという表明(安全性要件)は、「いずれ」を表す時相論理演算子Eを用いて M |= Eφ と表すことができます。モデル検査を用いた検証と妥当性確認の目的は、これらの表明(安全性要件)が真であるかどうかを判定し、表明(安全性要件)が真でない状態を反例として特定することです。モデルの振る舞いはクリプキ構造で表せるため、モデルが満たさなければならない安全性要件は、図10に示すように時相論理式で表すことができます。前述の定義を用いると、安全性要件の妥当性をより厳密に次のように定義できます。すなわち、初期状態から到達可能なあらゆる状態から、操作ルールに従い、かつ与えられた制約に違反することなく、定義された最終状態へモデルを導くことができる場合に、その安全性要件はモデルに対して妥当です [KTAK07]。
The state transitions of AC models can be categorized by three types of constraints, namely static, dynamic, and historical constraints. These constraints can be expressed directly by the three basic types of FSM models. Thus, an AC model and its safety requirements can be specified in a model checking environment as the examples below:
アクセス制御(AC)モデルの状態遷移は、静的制約、動的制約、履歴制約という3種類に分類できます。これらの制約は、有限状態機械(FSM)の3つの基本モデルで直接表現できます。したがって、以下の例のように、ACモデルとその安全要件をモデル検査環境で指定できます。
For static model Example 1 in Section 2.2, specifications of static constraints are verified through the following safety requirements example expressed in temporal logic formula:
2.2節の静的モデル例1では、静的制約の仕様を、時相論理式で表した次の安全性要件の例によって検証する:
which simply means that all access requests that comply with specified constraints should be granted, and all non-compliant ones should be denied. The form “\(\mathit{AG}\ (b) \rightarrow \mathit{AX}\ (d)\)” indicate that for all paths (the “\(A\)” in “\(\mathit{AG}\)”) for all states globally (the “\(G\)”), if \(b\) holds then ( “\(\rightarrow\)”) for all paths, in the next state (the “\(X\)” in “\(\mathit{AX}\)”) \(d\) will hold.
これは単に、指定された制約に適合するすべてのアクセス要求は許可されるべきであり、適合しない要求はすべて拒否されるべきであることを意味します。形式「\(\mathit{AG}\ (b) \rightarrow \mathit{AX}\ (d)\)」は、すべての経路(「\(A\)」、すなわち「\(\mathit{AG}\)」の先頭の文字)について、大域的にすべての状態(「\(G\)」)について、\(b\) が成り立つならば(「\(\rightarrow\)」)、すべての経路で、次の状態(「\(X\)」、すなわち「\(\mathit{AX}\)」の末尾の文字)において \(d\) が成り立つことを示します。
For dynamic model Example 2 in Section 2.2, specifications of dynamic constraints are verified through the following safety requirements example expressed in temporal logic formula:
2.2節の動的モデル例2では、動的制約の仕様を、時間論理式で表した次の安全要件の例によって検証します。
where temporal logic formula \(\mathit{AG}\ (b) \rightarrow \mathit{AX}\ (d)\) indicates that “if state is true in condition \(b\), condition \(d\) is true at all times later than the state.
ここで、時相論理式 \(\mathit{AG}\ (b) \rightarrow \mathit{AX}\ (d)\) は、「state が条件 \(b\) において真であるならば、条件 \(d\) はその state より後のすべての時点で真である」ことを示します。
For historical model Example 3 in Section 2.2, specifications of historical constraints are verified through the following safety requirements example expressed in temporal logic formula:
2.2節の履歴モデル例3では、履歴制約の仕様を、時相論理式で表した次の安全性要件の例によって検証する:
temporal logic \(\mathit{AG}(b) \rightarrow \mathit{AX}(d)\) indicates that the access event \(d\) is invocated by historical events in \(b\).
時相論理 \(\mathit{AG}(b) \rightarrow \mathit{AX}(d)\) は、アクセス事象 \(d\) が \(b\) における履歴上の事象によって呼び出されることを示します。
Model Checking methods implemented in NuSMV [NuSMV-M] is used by some AC policy verification tools such as NIST’s ACPT and MOHAWK [MOHAWK].
NuSMV [NuSMV-M]に実装されたモデル検査手法は、NISTのACPTやMOHAWK [MOHAWK]など、一部のACポリシー検証ツールで使用されています。
5.2 Multi-Terminal Binary Decision Diagrams (MTBDD)
5.2 多終端二分決定図(MTBDD)
Underlying representation of access-control policies, Multi-Terminal Binary Decision Diagrams (MTBDDs) [CFMYZ93] are a form of decision diagram that map bit vectors over a set of variables to a finite set of results. Figure 11 shows an example of a policy MTBDD representing a simple security policy in which faculty (f) can assign (a) grades (g) and students (s) can receive (r) grades (g). The policy MTBDD has five variables (f, s, r, a, and g). Each combination of Boolean values over these variables maps to one of three policy results (permit, deny, or not-applicable); the results are denoted by the terminals of the policy MTBDD. Given an assignment of Boolean values to the variables, traversing a policy MTBDD from the root to a terminal according to the variable values indicates the result of the policy under that assignment. [Fisler et al 05].
アクセス制御ポリシーの基礎となる表現である多終端二分決定図(MTBDD)[CFMYZ93]は、変数集合上のビットベクトルを有限個の結果へ対応付ける決定図の一種です。図11は、教員(f)が成績(g)を割り当て(a)、学生(s)が成績(g)を受け取る(r)ことを表す単純なセキュリティポリシーのMTBDD例を示します。このポリシーMTBDDには5つの変数(f、s、r、a、g)があります。これらの変数に対するブール値の各組合せは、3つのポリシー結果(許可、拒否、非該当)のいずれかに対応し、その結果はポリシーMTBDDの終端で示されます。変数にブール値を割り当てたうえで、その値に従って根から終端までポリシーMTBDDをたどると、その割当てにおけるポリシーの結果が得られます[Fisler et al 05]。
図11 単純なポリシーのMTBDD。変数ノード f、s、r、a、g と、Non-applicable、Permit、Deny の 3 つの終端からなる決定図である。根の f から、辺 0 が左の s ノードへ、辺 1 が右の s ノードへ向かう。左の s: 0 は Non-applicable へ、1 は左の r ノードへ。左の r: 0 は Non-applicable へ、1 は g へ。右の s: 1 は右の r ノードへ、0 は a へ。右の r: 1 は g へ、0 は a へ。a: 1 は g へ、0 は Non-applicable へ。g: 0 は Non-applicable へ、1 は Permit へ。Deny に至る辺はない。
Figure 11 An MTBDD for a simple policy
図11 単純なポリシーのMTBDD
MTBDDs have three defining characteristics, which are valuable for AC model black box verification. First, they are constructed relative to some fixed ordering on the variables (read from root to terminal): an MTBDD does not allow two subtrees to inspect variables in different orders. This restriction makes MTBDDs a canonical representation up to the chosen variable ordering. Second, MTBDDs maximally share subtrees, in that at most one copy of a subtree appears anywhere in the decision diagram; for example, the three paths to the same grade node in Figure 11. Third, MTBDDs collapse irrelevant variables, meaning that if both values of the same variable refer to the same subtree, the node for that variable is removed, and all references to it are redirected to the shared subtree. The combined effect of the latter two characteristics on the MTBDD in Figure 11 shows the faculty and student variables are false: rather than enumerate the remaining variables’ values, the MTBDD refers directly to the not-applicable terminal.
MTBDDには、ACモデルのブラックボックス検証にとって有用な三つの特徴があります。第一に、MTBDDは変数に対するある固定された順序(根から終端に向かって読む)に基づいて構築されます。MTBDDでは、二つの部分木が異なる順序で変数を調べることは許されません。この制約により、MTBDDは、選択した変数順序のもとで正準な表現となります。第二に、MTBDDは部分木を最大限に共有します。すなわち、決定図全体を通じて、ある部分木の複製は高々一つしか現れません。例えば、図11において同じgradeノードに至る三つの経路がこれにあたります。第三に、MTBDDは無関係な変数を縮約します。すなわち、ある変数の両方の値が同じ部分木を指す場合、その変数のノードは除去され、そのノードへの参照はすべて共有される部分木へ向け直されます。後者二つの特徴を組み合わせた効果は、図11のMTBDDにおいてfaculty変数とstudent変数がともに偽である場合に見られます。残りの変数の値を列挙する代わりに、MTBDDは直接not-applicable終端を参照します。
While in the worst case the number of nodes in an MTBDD is exponential in the number of variables, in practice the number of nodes is often polynomial or even linear. This representation therefore gains dramatically over naive DNF in practice. Operations that combine MTBDDs tend to be efficient in practice; most policy verification needs yield MTBDDs with at most the product of the numbers of nodes of the originals.
最悪の場合、MTBDDのノード数は変数数に対して指数関数的に増えますが、実際には多くの場合、多項式の増加にとどまり、線形となることもあります。そのため、この表現は単純なDNFに比べ、実用上大幅に効率的です。MTBDDを組み合わせる演算も実用上効率的です。ポリシー検証で必要となる処理の多くでは、生成されるMTBDDのノード数は、元のMTBDDのノード数の積以下となります。
Developed in Racket (formal PLT) scheme, Margrave [MARGRAVE] is a software tool suite written in PLT Scheme for verifying safety requirements against AC policies written in XACML. Margrave represents XACML policies as MTBDD models, it allows the user to specify various forms of safety requirements in the Scheme programming language. Margrave uses one variable for each attribute-value pair in the XACML policy. The variables for the policy shown in Figure 11 would correspond to role=faculty, role=student, action=receive, action=assign, and finally resource=grade (the association between attributes, such as role, with values, such as faculty, is stated in the XACML policy). Margrave creates MTBDD models for the individual policy rules, then combines these with MTBDD-combining algorithms that implement the XACML rule- and policy-combining algorithms.
Racket(旧称PLT)Schemeで開発されたMargrave [MARGRAVE] は、XACMLで記述されたACポリシーに対して安全性要件を検証するための、PLT Schemeで書かれたソフトウェアツール群です。MargraveはXACMLポリシーをMTBDDモデルとして表現し、利用者はScheme言語でさまざまな形式の安全性要件を規定できます。Margraveは、XACMLポリシー中の属性と値の組ごとに一つの変数を用います。図11に示すポリシーの変数は、role=faculty、role=student、action=receive、action=assign、そしてresource=gradeに対応します(roleなどの属性とfacultyなどの値との対応は、XACMLポリシー中に記述されています)。Margraveは個々のポリシールールについてMTBDDモデルを作成し、それらを、XACMLのルール結合アルゴリズムおよびポリシー結合アルゴリズムを実装したMTBDD結合アルゴリズムによって結合します。
Margrave views the policy constants permit and deny as rules; an operation called augment-rule takes a Boolean condition on the variables and a rule and constrains the rule to also require the given condition. For example, the left two MTBDD models in Figure 12, the MTBDD models for rules saying that faculty attempting to assign grades should yield permit and students attempting to assign grades should yield deny appear. The third MTBDD model represents the result of combining these two rules using rule-combining algorithms.
Margraveでは、permitとdenyというポリシー定数をルールとして扱います。augment-ruleという演算は、変数に対するブール条件とルールを受け取り、その条件も満たすことをルールに要求します。たとえば、図12の左側にある2つのMTBDDモデルは、教員が成績を割り当てようとした場合に許可となり、学生が成績を割り当てようとした場合に拒否となるルールを表します。3つ目のMTBDDモデルは、ルール結合アルゴリズムを使ってこれら2つのルールを結合した結果を表します。
図12 ルールおよびルール結合のMTBDDの例。3 つの決定図が横に並ぶ。1 つ目: f は 0 で Non-applicable へ、1 で a へ。a は 0 で Non-applicable へ、1 で g へ。g は 0 で Non-applicable へ、1 で Permit へ。2 つ目: s は 0 で Non-applicable へ、1 で a へ。a は 0 で Non-applicable へ、1 で g へ。g は 0 で Non-applicable へ、1 で Deny へ。3 つ目(結合): f は 0 で左の s ノードへ、1 で右の s ノードへ。左の s は 1 で左の a ノードへ、0 で Non-applicable へ。右の s は 0 で中央の a ノードへ、1 で右の a ノードへ。左の a は 1 で左の g ノードへ、0 で Non-applicable へ。中央の a と右の a は、それぞれ 1 で右の g ノードへ、0 で Non-applicable へ。左の g は 1 で Deny へ、0 で Non-applicable へ。右の g は 0 で Non-applicable へ、1 で Permit へ。
Figure 12 Sample MTBDDs for rules and rule combination.
図12 ルールおよびルール結合のMTBDDの例
Margrave allows the user to specify various forms of safety requirements in the Scheme programming language. Margrave’s API can verify these safety requirements and if there exist any counterexamples (being specific requests) that violate the specified safety requirements, these counterexamples are produced. Margrave also provides comprehensive change-impact analysis based on the semantic differences between the MTBDD models representing the policies.
Margraveでは、利用者はScheme言語でさまざまな形式の安全性要件を規定できます。MargraveのAPIはこれらの安全性要件を検証でき、規定された安全性要件に違反する反例(具体的な要求)が存在する場合には、それらの反例を生成します。Margraveはまた、ポリシーを表すMTBDDモデル間の意味的な差異に基づく包括的な変更影響分析も提供します。
The chief novelty of Margrave’s current approach lies in embracing the richness of full first-order predicate logic for specifying policies, systems, and queries. Margrave interacts with a user to produce concrete scenarios in response to user queries. Queries cover not only conventional verification-style safety requirements, but also “what if” style questions about the semantic impact of edits. Margrave also allows users to specify policy rules and safety requirement. It then processes user-defined queries about the policy rules and presents scenarios as output. Scenarios are, informally, snapshots of the system—as governed by the policy rules—in which the query holds. [SND13]
Margraveの現在のアプローチの主な新規性は、ポリシー、システム、クエリの指定に、一階述語論理全体の表現力を活用する点にあります。Margraveはユーザーと対話し、クエリへの回答として具体的なシナリオを生成します。クエリには、従来型の検証における安全要件だけでなく、編集が意味に及ぼす影響を尋ねる「もし〜なら」形式の質問も含まれます。Margraveではポリシールールと安全要件も指定できます。その後、ポリシールールに関するユーザー定義のクエリを処理し、シナリオを出力として提示します。シナリオとは、非形式的には、ポリシールールが適用されるシステムの状態を切り取ったものであり、その中ではクエリが成立します[SND13]。
Margrave supports query-based verification and provides query-based views by computing exhaustive sets of scenarios that yield different results including change-impact analysis for comparing a pair of policies. Margrave provides the benefits of static verification without requiring authors to write formal properties; its power comes from choosing an appropriate policy model in first-order logic, and embracing both scenario-finding and multi-level policy-reasoning. In general, Margrave identifies formulas corresponding to many common firewall-analysis problems automatically, thus providing exhaustive analysis for richer policies and queries.
Margraveはクエリベースの検証に対応し、異なる結果をもたらすシナリオの網羅的な集合を計算して、クエリベースのビューを提供します。この機能には、2つのポリシーを比較する変更影響分析も含まれます。Margraveを使えば、作成者が形式的な性質を記述しなくても静的検証の利点を得られます。その能力は、一階論理で適切なポリシーモデルを選び、シナリオの探索と複数レベルのポリシー推論の両方を活用することから得られます。一般にMargraveは、一般的なファイアウォール分析問題の多くに対応する式を自動的に特定し、より複雑なポリシーやクエリについて網羅的な分析を行います。
5.3 Formal Methods
5.3 形式手法
Formal Methods for the validation of access control policies involving mathematical tools and proofs have also been advocated. Rémi Delmas and Thomas Polacsek [AF08] have proposed a logical modelling framework to find the inconsistencies and incompleteness in access control policies. Providing a mechanism for the detection of these two properties, they have introduced two new properties, applicability and minimality, and their proposed technique is capable of verifying these two properties. By using the concepts of signatures, formula and predicates, they have defined some rules for the logical framework, which works for limited or finite data so their rules are also applicable to the finite data. They provided a mechanism to detect the inconsistency, incompleteness, applicability and minimality. [AS15] They also mentioned that the MSFOL (many-sorted first order logic) [Gallier87] formula should be converted to a pseudo-Boolean logic formula to analyze it. The proposed tool is a three-step procedure where a grounding operation gives the grounded formula in the first step which is converted to a bit-vector expression using the bit-vector encoding in the second step of this process. In the last step of this procedure, the bit-vector expressions are converted into clauses which are in pseudo-Boolean form and give us the pseudo-Boolean formula.
数学的手法や証明を用いてアクセス制御ポリシーを妥当性確認する形式手法も提唱されています。Rémi DelmasとThomas Polacsek [AF08]は、アクセス制御ポリシーの矛盾と不完全性を検出するための論理モデリング枠組みを提案しました。この2つの性質を検出する仕組みとして、適用可能性と最小性という新たな性質を導入し、提案手法で両方を検証できるようにしました。シグネチャ、式、述語の概念を用いて論理枠組みの規則を定義しました。この枠組みは有限または限定されたデータを扱うため、規則も有限データに適用できます。矛盾、不完全性、適用可能性、最小性を検出する仕組みも示しました[AS15]。また、MSFOL(多ソート一階述語論理)[Gallier87]の式を分析するには、擬ブール論理式へ変換すべきであると述べています。提案ツールは3段階の手順で構成されます。第1段階ではグラウンディング処理によりグラウンド式を生成し、第2段階ではビットベクトル符号化を用いてビットベクトル式へ変換します。最後に、ビットベクトル式を擬ブール形式の節へ変換し、擬ブール論理式を得ます。
Z [PST96] is based on axiomatic set theory and first order predicate logic, which can be used for describing and modeling AC policies [Hu02]. Z notation using set theory forms an adequate basis for building the AC model, which allows syntax and type checking, schema expansion, precondition calculation, domain checking, and general theorem proving for model verification by domain checking. Many of the proof obligations are easily proven. In more difficult cases, generating the proof obligation is often a substantial aid in determining whether a specification in the model is meaningful.
Z [PST96]は公理的集合論と一階述語論理に基づいており、アクセス制御ポリシーの記述とモデル化に利用できます[Hu02]。集合論に基づくZ記法は、ACモデルを構築するための十分な基盤となります。これにより、構文・型検査、スキーマ展開、事前条件計算、定義域検査、および定義域検査によるモデル検証のための一般的な定理証明を行えます。証明義務の多くは容易に証明できます。難しい場合でも、証明義務を生成することは、モデル内の仕様に意味があるか判断するうえで大きな助けとなります。
5.4 Mutation Testing
5.4 ミューテーションテスト
Black-box test methods (as described in Section 5.1 through 5.3) may not be sufficient to guard against some unexpected behaviors that are embedded in the AC model as demonstrated in 4.2. To address that, the mutation test of the white box test method generates additional test inputs to cover policy-related entities that are not covered by the black box test methods.
5.1~5.3節で説明したブラックボックステスト手法では、4.2節で示したように、ACモデルに組み込まれた予期しない振る舞いを防ぐには不十分な場合があります。この問題に対処するため、ホワイトボックステスト手法であるミューテーションテストは、ブラックボックステスト手法では網羅されないポリシー関連要素を対象とする追加のテスト入力を生成します。
The following illustrates mutation verification of safety requirement through a simple example. This ABAC policy formalizes a university’s AC model on assigning and accessing grades. It has two subjects: faculty and student, two resources: internal_grades and external_grades, and three actions: assign, view, and receive [Fisler et al]. For this example, we expect the following safety requirements to hold:
以下では、簡単な例を使って、安全要件に対するミューテーション検証を説明します。このABACポリシーは、成績の割当てと閲覧に関する大学のACモデルを形式化したものです。主体は教員と学生の2種類、リソースはinternal_gradesとexternal_gradesの2種類、アクションはassign、view、receiveの3種類です[Fisler et al.]。この例では、次の安全要件が成立すると想定します。
\(S_1\) -- There do not exist members of student who can assign external_grades.
\(S_1\) -- studentの構成員でexternal_gradesをassignできる者は存在しません。
\(S_2\) -- All members of faculty can assign both internal_grades and external_grades.
\(S_2\) -- facultyの構成員は全員、assignをinternal_gradesとexternal_gradesの両方に対して行えます。
\(S_3\) -- There exists no combination of subjects such that a user with those subjects can both receive and assign the resource external_grades.
\(S_3\) -- あるユーザーが持つ主体の組合せによって、receiveとassignの両方をリソースexternal_gradesに対して行える場合は存在しません。
Safety requirement \(S_1\) is intuitive since we certainly do not want students to assign grades. Safety requirement \(S_2\) is to ensure that indeed faculty members can assign grades. \(S_3\) is an example of separation-of-duty since we do not want anyone to assign their own grade, an apparent conflict of interest.
安全要件\(S_1\)は直感的にも妥当です。学生に成績を割り当てさせるべきではないからです。安全要件\(S_2\)は、教員が実際に成績を割り当てられることを保証します。\(S_3\)は職務分離の例です。誰も自分自身の成績を割り当てないようにするためであり、それは明らかな利益相反だからです。
Figure 13 shows the example AC policy model. To keep the example readable and concise, the model is written as simple If Then statements, which do not immediately satisfy these three safety requirements. It is essentially a separation-of-duty (SOD) constraint that restricts any request from having both the faculty and student subjects. All three safety requirements hold in the model.
図13にACポリシーモデルの例を示します。例を簡潔で読みやすくするため、モデルは単純なIf-Then文で記述されており、このままでは3つの安全性要件を直ちに満たしません。これは実質的に、教員と学生の両方の主体を持つ要求を制限する職務分離(SOD)制約です。モデルは3つの安全性要件をすべて満たします。
1 If subject = faculty 2 and resource = (external_grades or internal_grades) 3 and action = (view or assign) 4 Then 5 permit 6 If subject = student 7 and resource = external_grades 8 and action = receive 9 Then 10 permit
1 If subject = faculty 2 and resource = (external_grades or internal_grades) 3 and action = (view or assign) 4 Then 5 permit 6 If subject = student 7 and resource = external_grades 8 and action = receive 9 Then 10 permit
Figure 13 Rules in an example policy model
図13 例示ポリシーモデルのルール
The first step of mutation verification is to generate mutant models using a mutation operator that simply inverts each rule’s effect by changing permit to deny or deny to permit (one at a time for each mutant model). The number of mutant models created by this operator is equal to the number of rules in the model. The example model has only two rules and thus only two mutant models are generated. Figures 14 and 15 show these two mutant models.
ミューテーション検証の第一段階は、各規則の効果を反転させる(permitをdenyに、またはdenyをpermitに変更します。ミュータントモデルごとに1規則ずつ)ミューテーション演算子を用いて、ミュータントモデルを生成することです。この演算子で生成されるミュータントモデルの数は、モデル内の規則の数に等しい値です。例のモデルには規則が2つしかないため、生成されるミュータントモデルは2つだけです。図14と図15に、これら2つのミュータントモデルを示します。
1 If subject = faculty 2 and resource = (external_grades or internal_grades) 3 and action = (view or assign) 4 Then 5 deny 6 If subject = student 7 and resource = external_grades 8 and action = receive 9 Then 10 permit
1 If subject = faculty 2 and resource = (external_grades or internal_grades) 3 and action = (view or assign) 4 Then 5 deny 6 If subject = student 7 and resource = external_grades 8 and action = receive 9 Then 10 permit
Figure 14 The first mutant model
図14 第1のミュータントモデル
1 If subject = faculty 2 and resource = (external_grades or internal_grades) 3 and action = (view or assign) 4 Then 5 permit 6 If subject = student 7 and resource = external_grades 8 and action = receive 9 Then 10 deny
1 If subject = faculty 2 and resource = (external_grades or internal_grades) 3 and action = (view or assign) 4 Then 5 permit 6 If subject = student 7 and resource = external_grades 8 and action = receive 9 Then 10 deny
Figure 15 The second mutant model.
図15 2つ目の変異モデル。
The second step of mutation verification is to determine which safety requirements hold for the original model and each mutant model. The mutant is said to be killed by safety requirement if the safety requirement holds for the original model but does not hold for the mutant model. In other words, the safety requirement reveals the fault seeded in the mutant model. The greater the number of mutants killed, the more comprehensive the original model is in covering the safety requirements.
ミューテーション検証の第2段階では、元のモデルと各変異モデルのどちらで安全要件が成立するかを判定します。元のモデルでは安全要件が成立する一方、変異モデルでは成立しない場合、その安全要件によって変異モデルが「殺された」と表現します。つまり、安全要件が変異モデルに埋め込まれた欠陥を明らかにします。殺される変異モデルの数が多いほど、元のモデルは安全要件をより包括的に網羅しています。
The first mutant model in Figure 14 does not satisfy \(S_2\) and thus the first mutant is killed. Recall \(S_2\) seeks to ensure the policy that all faculty members can assign grades. Since the fault in Figure 14 is precisely the rule that grants this access, the safety requirement is apparently violated. Figure 16 illustrates the output from the black box model verification using Margrave (Section 5.2) on the first mutant model. Each counterexample (i.e., request) is represented as a bit mask where each bit corresponds to the specific attribute-id on Lines 2–11. If the bit is 0, then the corresponding attribute value is not present whereas if the bit is 1 then the corresponding attribute value is present. As expected, the given concrete counterexamples are for a faculty to assign internal_grades and for a faculty to assign external_grades. These two counterexamples correspond to Lines 15 and 16 respectively. Access is denied for both requests, indicating a violation of safety requirement \(S_2\).
図14の最初の変異モデルは\(S_2\)を満たさないため、最初の変異モデルは除去(kill)されます。\(S_2\)は、すべての教員が成績を割り当てられるというポリシーを保証しようとするものでした。図14の欠陥は、このアクセスを許可するルールそのものであるため、安全要件への違反は明らかです。図16は、Margrave(5.2節)を使って最初の変異モデルをブラックボックスモデル検証した出力を示します。各反例(すなわち要求)はビットマスクで表され、各ビットは2~11行目の特定の属性IDに対応します。ビットが0なら対応する属性値は存在せず、1なら存在します。予想どおり、示された具体的な反例は、facultyがassignをinternal_gradesに対して行う要求と、facultyがassignをexternal_gradesに対して行う要求です。この2つの反例は、それぞれ15行目と16行目に対応します。どちらの要求もアクセスが拒否されており、安全要件\(S_2\)への違反を示しています。
1 Counterexample:
2 1:/Action, command, receive/
3 2:/Action, command, OTHER/
4 3:/Resource, resource-class, external_grades/
5 4:/Resource, resource-class, OTHER/
6 5:/Subject, subject, student/
7 6:/Subject, subject, OTHER/
8 7:/Action, command, view/
9 8:/Action, command, assign/
10 9:/Resource, resource-class, internal_grades/
11 10:/Subject, subject, faculty/
12 1
13 1234567890
14 {
15 00000-0111
16 00100-0101
17 }
Figure 16 Counterexamples for the mutant model in Figure 13.
図16 図13の変異モデルに対する反例。
The second mutant model in Figure 15 is not killed by any of the three safety requirements, reflecting that the original model is not comprehensive and does not completely “cover” the safety requirements.
図15の2つ目の変異モデルは、3つの安全要件のどれによっても検出されず(kill されず)、これは、元のモデルが包括的ではなく、安全要件を完全には「網羅」していないことを示しています。
Mutation verification serves the safety requirement with the two purposes: (1) to quantify how thoroughly the model covers safety requirements (2) to facilitate model changes such that the model covers all safety requirements or vice versa.
ミューテーション検証には、安全要件に関してモデルの網羅性を定量化することと、モデルがすべての安全要件を網羅するように、またはその逆となるように、モデル変更を容易にすることの2つの目的があります。
In some cases, instead fixing a model, the mutation verification serves the purpose to patch the safety requirements, thus, fixing the policy. For example, adding safety requirement \(S_4\) as below fails to hold for the second mutant policy in xx4.
モデル自体を修正する代わりに、安全要件を補うことでポリシーを修正する目的でミューテーション検証を使う場合もあります。たとえば、以下の安全要件\(S_4\)を追加すると、xx4の2つ目の変異ポリシーに対して成立しません。
\(S_4\) All members of student can receive external_grades.
\(S_4\) studentの構成員は全員、external_gradesを受け取ることができます。
In Summary, Figure 17 illustrates the necessary inputs and resultant outputs of the mutation verification. The inputs are the model under test and, in this case, a single mutation operator. The mutator then generates a set of mutant models, each with a single fault. The mutation operator generates a mutant for each rule by negating the decision of that rule. Although black box verification executes relatively quickly for the mutants, large models can be used to easily generate thousands of mutant models. An equivalent mutant is a mutant that is syntactically different from the original model while being semantically equivalent. In other words, an equivalent mutant will produce the same result as the original model for all inputs and thus provides no benefit and result in an artificial lowering of the mutant killing ratio, giving an under rated and inaccurate quality measurement. We can also determine which safety requirements hold and which do not hold for both the original model and each mutant model. Note that in order to perform verification programmatically, an executable script and Scheme program for the original model and each mutant model may be required [MX07].
まとめると、図17はミューテーション検証に必要な入力と、その結果得られる出力を示します。入力は検証対象のモデルと、この場合は単一のミューテーション演算子です。ミューテータは、各々に1つの欠陥を持つ変異モデルの集合を生成します。ミューテーション演算子は各ルールの判断を否定し、そのルールごとに変異モデルを生成します。ブラックボックス検証は変異モデルを比較的短時間で実行できますが、大規模なモデルでは容易に数千の変異モデルが生成されます。同等変異モデルとは、元のモデルとは構文上異なるものの、意味的には同等な変異モデルです。つまり、同等変異モデルはすべての入力に対して元のモデルと同じ結果を出すため、利点がなく、変異モデルのkill率を実際より低く見せ、不正確な品質測定につながります。元のモデルと各変異モデルの双方について、どの安全要件が成立し、どれが成立しないかも判定できます。プログラムで検証するには、元のモデルと各変異モデルについて、実行可能なスクリプトおよびSchemeプログラムが必要になる場合があります[MX07]。
図17 ミュータントの生成。文書形の「Model」(モデル)と「Mutation Operator」(ミューテーション演算子)から箱「Mutator」(ミューテーター)へ矢印があり、Mutatorから「Mutant Model 1」「Mutant Model 2」「Mutant Model n」(変異モデル1、2、n。Model 2とModel nの間は破線)へ矢印がある。変異モデルから太い矢印が箱「Model checker (black box)」(モデルチェッカー(ブラックボックス))へ向かい、その下の文書の束「Safety requirements」(安全要件)からも太い矢印がモデルチェッカーへ向かう。モデルチェッカーから太い矢印が、それぞれ「Violated Safety requirements」(違反した安全要件)と書かれた3つの文書の束へ向かう。
Figure 17 Mutant generation
図17 ミュータントの生成
An important step of mutation testing is to compute the mutant-killing ratio. The mutant-killing ratio is the ratio of the number of mutants killed to the total number of mutants. This ratio serves as a metric to quantify the coverage of safety requirements by the model. A high mutant-killing ratio indicates the original model covers a high number of safety requirements. For example, the mutant coverage (i.e., the mutant-killing ratio) for the safety requirements \(S_1\), \(S_2\), and \(S_3\) in the above example is 50% since only one of two mutants is killed. If \(S_4\) is added, then the mutant-killing ratio is increase to 100%.
ミューテーションテストの重要な手順の1つは、変異モデルkill率を計算することです。変異モデルkill率は、killされた変異モデルの数を全変異モデル数で割った値です。この比率は、モデルによる安全要件の網羅性を定量化する指標となります。変異モデルkill率が高いほど、元のモデルが多くの安全要件を網羅していることを示します。たとえば、上記の例では、安全要件\(S_1\)、\(S_2\)、\(S_3\)に関する変異モデル網羅率(すなわち変異モデルkill率)は50%です。2つの変異モデルのうち1つだけがkillされるためです。\(S_4\)を追加すると、変異モデルkill率は100%になります。
The trace files generated by the safety requirement verification described earlier are parsed in order to divide the safety requirement set into four subsets for each mutant. A Venn diagram is illustrated in Figure 18 that describes the relationship of these four sets for a single mutant model. The area inside the box represents the set of all safety requirements. The area inside the left-most circle represents the set of safety requirements that hold true for the original model. Thus the area outside the left-most circle and inside the box is the set of safety requirements that do not hold true for the original model (i.e., these safety requirements fail to be held by the original model). The area inside the right-most circle represents the mutant model that holds false for the safety requirement. Therefore, the area outside the right-most circle and inside the box represents the set of safety requirements that are held true for the mutant model. The area of interest is the intersection of the two circles. If at least one safety requirement is held true for the original model but fails to be held true for the mutant model, then the mutant is killed. If the two circles do not intersect, then the mutant is not killed. A safety requirement that is held true for both the original model and the mutant model has no value in exposing the fault in the mutant model because the safety requirement does not apply to the portion of the model that contains the fault. A safety requirement that is held false for the original model has no value because it is unclear if this false safety requirement is caused by an error in the model or the safety requirement itself. More specifically, before mutation verification is conducted, these safety requirements must be manually inspected to determine whether they fail due to an error in the model, an error in the safety requirement, or an error in the environment constraints.
先に述べた安全要件の検証で生成されたトレースファイルを解析し、ミュータントごとに安全要件の集合を4つの部分集合に分割します。1つのミュータントモデルについて、これら4つの集合の関係を示すベン図を図18に示します。四角形の内側の領域は、すべての安全要件の集合を表します。最も左の円の内側の領域は、元のモデルで成立する安全要件の集合を表します。したがって、最も左の円の外側かつ四角形の内側の領域は、元のモデルで成立しない安全要件(すなわち、元のモデルが満たさない安全要件)の集合です。最も右の円の内側の領域は、その安全要件が偽となるミュータントモデルを表します。したがって、最も右の円の外側かつ四角形の内側の領域は、ミュータントモデルで真となる安全要件の集合を表します。注目すべき領域は、2つの円の共通部分です。元のモデルでは成立するがミュータントモデルでは成立しない安全要件が少なくとも1つあれば、そのミュータントは殺傷されます。2つの円が交わらなければ、そのミュータントは殺傷されません。元のモデルとミュータントモデルの両方で成立する安全要件は、ミュータントモデルの欠陥を明らかにする上で価値がありません。その安全要件は、欠陥を含むモデルの部分に適用されないからです。元のモデルで成立しない安全要件も価値がありません。この成立しない安全要件が、モデルの誤りによるものか、安全要件自体の誤りによるものかが不明確だからです。より具体的には、ミューテーション検証を行う前に、これらの安全要件を手作業で調べ、モデルの誤り、安全要件の誤り、または環境制約の誤りのいずれが原因で成立しないのかを判断しなければなりません。
図18 4種類の安全要件状態を示すベン図。「Safety requirements」(安全要件)と書かれた長方形の中に、重なり合う2つの円がある。左の円の重なっていない部分は「Original True, Mutant True」(元のモデルで真、変異モデルで真)、重なり部分は「Original True, Mutant False」(元のモデルで真、変異モデルで偽)で、「Mutant Killed!」(変異モデルを棄却!)というラベルから曲がった矢印が重なり部分を指す。右の円の重なっていない部分は「Original False, Mutant False」(元のモデルで偽、変異モデルで偽)、両方の円の外側は「Original False, Mutant True」(元のモデルで偽、変異モデルで真)である。
Figure 18 Venn diagram illustrating the four safety requirement states
図18 4種類の安全要件状態を示すベン図
5.5 Automated Combinatorial Testing
5.5 自動組合せテスト
As described in 4.3, a test oracle is required to test the correct implementation of the AC model. However, a real-world AC system is likely to have far too many variables (subjects, actions, objects, conditions, etc.) for generating exhaustive test cases based on the safety requirements. One of the possible solutions for reducing the size therefore efficient in computation for test oracle generation is to apply Automated Combinatorial Testing for Software (ACTS) technology [ACTS] which is a methodology that tests all t-way combinations of input parameter values. The most common form is pairwise testing, in which all pairs of input values are covered in at least one test. Higher strength versions of this method cover 3-way, 4-way, or more interactions at least once. The advantage of combinatorial testing for verifying AC implementation is that AC often relies on a small number of discrete values for most parameters. For example, a multi-level security policy (i.e., standard military classification policy) may have levels unclassified, confidential, secret, top-secret, plus a small number of categories, all applied to a collection of resources such as files and programs. For demonstration, a simplified multi-level model, in which each subject (user) has a clearance level u_l, and each file has a classification level f_l. Levels are given as 0, 1, or 2, which could represent levels such as Confidential, Secret, and Top Secret. A user u can read a file f if u_l ≥ f_l (the “no read up” rule), or write to a file if f_l ≥ u_l (the “no write down” rule) is as the following.
4.3節で述べたとおり、ACモデルが正しく実装されているかをテストするにはテストオラクルが必要です。しかし、実世界のACシステムには変数(主体、アクション、オブジェクト、条件など)が非常に多く、安全要件に基づく網羅的なテストケースの生成は現実的でない場合が多くあります。そこで、テストオラクル生成の規模を縮小し、計算効率を高める方法の1つとして、ソフトウェア自動組合せテスト(Automated Combinatorial Testing for Software: ACTS)技術[ACTS]を適用できます。これは入力パラメータ値のすべてのt-way組合せをテストする手法です。最も一般的なのはペアワイズテストであり、入力値のすべてのペアを少なくとも1つのテストで網羅します。この手法のより強い方式では、3-way、4-way、またはそれ以上の相互作用を少なくとも1回網羅します。AC実装の検証に組合せテストが有効なのは、ACでは多くのパラメータが少数の離散値を取ることが多いためです。たとえば、多段階セキュリティポリシー(すなわち標準的な軍事機密区分ポリシー)では、非機密、機密、秘密、極秘の各レベルと少数のカテゴリが、ファイルやプログラムなどのリソースの集合に適用される場合があります。例として、各主体(ユーザー)にクリアランスレベルu_lがあり、各ファイルに分類レベルf_lがある単純化した多段階モデルを考えます。レベルは0、1、2で表され、Confidential、Secret、Top Secretなどのレベルを表すことができます。ユーザーuはu_l ≥ f_l(「上位読み取り禁止」の規則)の場合にファイルfを読み取ることができ、f_l ≥ u_l(「下位書き込み禁止」の規則)の場合にファイルへ書き込むことができます。この規則を次に示します。
if u_l >= f_l & act = rd then GRANT;
else if f_l >= u_l & act = wr then GRANT;
else DENY;
Figure 19 Simple MLS model
図19 単純なMLSモデル
A 2-way covering array for the example is listed in Figure 20. If we had a larger number of parameters, we could produce test configurations that cover all 3-way, 4-way, etc. combinations. (With only three parameters, 3-way interaction is equivalent to exhaustive testing.)
この例に対する2-way被覆配列を図20に示します。パラメータ数が多い場合は、3-way、4-wayなど、すべての組合せを網羅するテスト構成を生成できます。パラメータが3つだけの場合、3-way相互作用のテストは網羅的テストと同等です。
Number of parameters: 3 Maximum number of values per parameter: 3 Number of configurations: 9
パラメータ数:3 パラメータあたりの最大値数:3 構成数:9
Configuration #1: 1 = u_l=0 2 = f_l=0 3 = act=rd
構成#1:1 = u_l=0 2 = f_l=0 3 = act=rd
Configuration #2: 1 = u_l=0 2 = f_l=1 3 = act=wr
構成#2:1 = u_l=0 2 = f_l=1 3 = act=wr
Configuration #3: 1 = u_l=0 2 = f_l=2 3 = act=rd
構成#3:1 = u_l=0 2 = f_l=2 3 = act=rd
Configuration #4: 1 = u_l=1 2 = f_l=0 3 = act=wr
構成#4:1 = u_l=1 2 = f_l=0 3 = act=wr
Configuration #5: 1 = u_l=1 2 = f_l=1 3 = act=rd
構成#5:1 = u_l=1 2 = f_l=1 3 = act=rd
Configuration #6: 1 = u_l=1 2 = f_l=2 3 = act=wr
構成#6:1 = u_l=1 2 = f_l=2 3 = act=wr
Configuration #7:
構成#7:
Figure 20 Covering array for a 2-way example
図20 2-wayの例に対する被覆配列
The next step is to assign values from the covering array to parameters used in the model. For each test, we claim that the expected result will not occur. The model checker determines combinations that would disprove these claims, outputting these as counterexamples. Each counterexample can then be converted to a test with known expected result. As can be seen below, for each of the 9 configurations in the covering array of Figure 20, we create a SPEC claim of the form:
次のステップは、カバリング配列の値をモデルで使用されるパラメータに割り当てることです。各テストについて、期待される結果は生じないと主張します。モデル検査器は、これらの主張を反証する組合せを特定し、反例として出力します。その後、各反例を、期待結果が既知のテストに変換できます。以下に示すとおり、図20のカバリング配列にある9つの構成のそれぞれについて、次の形式のSPEC主張を作成します。
SPEC AG(( <covering array values> ) -> AX !(access = <result>))
SPEC AG(( <covering array values> ) -> AX !(access = <result>))
(the SPEC is the syntax of the model checker for the safety requirement specification); This process is repeated for each possible result, in this case either “GRANT” or “DENY”, so we have 9 claims for each of the two results as in Figure 21.
(SPECは、安全要件の仕様記述に用いるモデル検査器の構文です)。この処理を起こりうる結果ごとに繰り返します。この場合の結果は「GRANT」または「DENY」のいずれかであるため、図21のように、2つの結果のそれぞれについて9つの主張が得られます。
Excerpt:
抜粋:
... -- reflection of the assign for access --SPEC AG ((u_l >= f_l & act = rd ) -> AX (access = GRANT)); --SPEC AG ((f_l >= u_l & act = wr ) -> AX (access = GRANT)); --SPEC AG (!( (u_l >= f_l & act = rd ) | (f_l >= u_l & act = wr ) ) -> AX (access = DENY));
... -- reflection of the assign for access --SPEC AG ((u_l >= f_l & act = rd ) -> AX (access = GRANT)); --SPEC AG ((f_l >= u_l & act = wr ) -> AX (access = GRANT)); --SPEC AG (!( (u_l >= f_l & act = rd ) | (f_l >= u_l & act = wr ) ) -> AX (access = DENY));
* SPEC AG((u_l = 0 & f_l = 0 & act = rd) -> AX !(access = GRANT)); * SPEC AG((u_l = 0 & f_l = 1 & act = wr) -> AX !(access = GRANT)); SPEC AG((u_l = 0 & f_l = 2 & act = rd) -> AX !(access = GRANT)); SPEC AG((u_l = 1 & f_l = 0 & act = wr) -> AX !(access = GRANT)); * SPEC AG((u_l = 1 & f_l = 1 & act = rd) -> AX !(access = GRANT)); * SPEC AG((u_l = 1 & f_l = 2 & act = wr) -> AX !(access = GRANT)); * SPEC AG((u_l = 2 & f_l = 0 & act = rd) -> AX !(access = GRANT)); SPEC AG((u_l = 2 & f_l = 1 & act = wr) -> AX !(access = GRANT)); * SPEC AG((u_l = 2 & f_l = 2 & act = rd) -> AX !(access = GRANT)); SPEC AG((u_l = 0 & f_l = 0 & act = rd) -> AX !(access = DENY)); SPEC AG((u_l = 0 & f_l = 1 & act = wr) -> AX !(access = DENY)); * SPEC AG((u_l = 0 & f_l = 2 & act = rd) -> AX !(access = DENY)); * SPEC AG((u_l = 1 & f_l = 0 & act = wr) -> AX !(access = DENY)); SPEC AG((u_l = 1 & f_l = 1 & act = rd) -> AX !(access = DENY)); SPEC AG((u_l = 1 & f_l = 2 & act = wr) -> AX !(access = DENY)); SPEC AG((u_l = 2 & f_l = 0 & act = rd) -> AX !(access = DENY)); * SPEC AG((u_l = 2 & f_l = 1 & act = wr) -> AX !(access = DENY)); SPEC AG((u_l = 2 & f_l = 2 & act = rd) -> AX !(access = DENY));
* SPEC AG((u_l = 0 & f_l = 0 & act = rd) -> AX !(access = GRANT)); * SPEC AG((u_l = 0 & f_l = 1 & act = wr) -> AX !(access = GRANT)); SPEC AG((u_l = 0 & f_l = 2 & act = rd) -> AX !(access = GRANT)); SPEC AG((u_l = 1 & f_l = 0 & act = wr) -> AX !(access = GRANT)); * SPEC AG((u_l = 1 & f_l = 1 & act = rd) -> AX !(access = GRANT)); * SPEC AG((u_l = 1 & f_l = 2 & act = wr) -> AX !(access = GRANT)); * SPEC AG((u_l = 2 & f_l = 0 & act = rd) -> AX !(access = GRANT)); SPEC AG((u_l = 2 & f_l = 1 & act = wr) -> AX !(access = GRANT)); * SPEC AG((u_l = 2 & f_l = 2 & act = rd) -> AX !(access = GRANT)); SPEC AG((u_l = 0 & f_l = 0 & act = rd) -> AX !(access = DENY)); SPEC AG((u_l = 0 & f_l = 1 & act = wr) -> AX !(access = DENY)); * SPEC AG((u_l = 0 & f_l = 2 & act = rd) -> AX !(access = DENY)); * SPEC AG((u_l = 1 & f_l = 0 & act = wr) -> AX !(access = DENY)); SPEC AG((u_l = 1 & f_l = 1 & act = rd) -> AX !(access = DENY)); SPEC AG((u_l = 1 & f_l = 2 & act = wr) -> AX !(access = DENY)); SPEC AG((u_l = 2 & f_l = 0 & act = rd) -> AX !(access = DENY)); * SPEC AG((u_l = 2 & f_l = 1 & act = wr) -> AX !(access = DENY)); SPEC AG((u_l = 2 & f_l = 2 & act = rd) -> AX !(access = DENY));
Figure 21 Test cases for test oracle
図21 テストオラクル用のテストケース
A model checker produces counterexamples where the input values would disprove the claims specified in Figure 21. Each of these counterexamples is thus a set of test data that would have the expected result of GRANT or DENY (as listed by a * in Figure 21). We now strip out the parameter names and values, from Figure 21 giving tests that can be applied to the system under test. The tests produced are shown below:
モデル検査器は、図21で指定した主張を反証する入力値を含む反例を生成します。したがって、これらの反例はそれぞれ、期待結果がGRANTまたはDENY(図21で * を付けたもの)となるテストデータの集合です。次に、図21からパラメータ名と値を抜き出し、被テストシステムに適用できるテストを得ます。得られたテストを以下に示します。
u_l = 0 & f_l = 0 & act = rd -> access = GRANT u_l = 0 & f_l = 1 & act = wr -> access = GRANT u_l = 1 & f_l = 1 & act = rd -> access = GRANT u_l = 1 & f_l = 2 & act = wr -> access = GRANT u_l = 2 & f_l = 0 & act = rd -> access = GRANT u_l = 2 & f_l = 2 & act = rd -> access = GRANT u_l = 0 & f_l = 2 & act = rd -> access = DENY u_l = 1 & f_l = 0 & act = wr -> access = DENY u_l = 2 & f_l = 1 & act = wr -> access = DENY
u_l = 0 & f_l = 0 & act = rd -> access = GRANT u_l = 0 & f_l = 1 & act = wr -> access = GRANT u_l = 1 & f_l = 1 & act = rd -> access = GRANT u_l = 1 & f_l = 2 & act = wr -> access = GRANT u_l = 2 & f_l = 0 & act = rd -> access = GRANT u_l = 2 & f_l = 2 & act = rd -> access = GRANT u_l = 0 & f_l = 2 & act = rd -> access = DENY u_l = 1 & f_l = 0 & act = wr -> access = DENY u_l = 2 & f_l = 1 & act = wr -> access = DENY
These test definitions can now be post-processed using simple scripts to produce a test cases for the test oracle.
これらのテスト定義は、簡単なスクリプトで後処理することにより、テストオラクル用のテストケースにできます。
5.6 Pseudo-exhaustive Testing
5.6 擬網羅テスト
This section describes a method of testing for access control systems (or other systems with formally specified rules) that is pseudo-exhaustive, which we define as exhaustive testing of all combinations of attribute values on which an access control decision is dependent [KHFKL16]. An advantage of this method is that it can be used to produce a complete test set, in the sense that all negative cases as well as all positive cases are verified. This approach is analogous to pseudo-exhaustive methods for testing combinational circuits, where the verification problem is reduced by exhaustively testing only the subset of inputs on which an output is dependent, or by partitioning the circuit and exhaustively testing each segment. We can use the basic principle of testing only subsets of attributes on which a decision is dependent, although the partitioning is done in a different manner than for combinational circuits. The structure of the access control problem makes it possible to apply the same principle by rendering the conditions for each grant in disjunctive normal form, then considering each term separately.
本節では、アクセス制御システム(または形式的に規則が規定されたその他のシステム)を対象とする、擬似網羅的なテスト手法を説明します。擬似網羅的とは、アクセス制御の決定が依存する属性値のすべての組合せを網羅的にテストすることと定義します[KHFKL16]。この手法の利点は、すべての否定ケースとすべての肯定ケースが検証されるという意味で、完全なテストセットを作成できることです。この手法は、組合せ回路をテストするための擬似網羅的手法に類似しています。組合せ回路では、出力が依存する入力の部分集合のみを網羅的にテストするか、回路を分割して各部分を網羅的にテストすることにより、検証問題を縮小します。分割の方法は組合せ回路の場合とは異なりますが、決定が依存する属性の部分集合のみをテストするという基本原理は利用できます。アクセス制御問題の構造上、各許可の条件を選言標準形で表し、各項を個別に考えることにより、同じ原理を適用できます。
For example, a rule with attributes \(\mathit{employment\_status}\) and \(\mathit{time\_of\_day}\) might be, “If subject is an employee and the hour is between 9 am and 5 pm, then allow entry.” The problem with this approach is that \(n\) boolean attributes or variables result in potentially \(2^n\) rules. Many such rules may be included in written policy documents, and rules may include a variety of attributes. For any combination of attribute values, the system must implement rules that accurately reflect the written policy. The structure of such rules is typically as follows, where \(R_i\) are boolean conditions evaluating the values of one or more attributes:
たとえば、属性\(\mathit{employment\_status}\)と\(\mathit{time\_of\_day}\)を持つ規則は、「主体が従業員で、時刻が午前9時から午後5時の間なら、入場を許可する」となります。この方法の問題は、\(n\)個のブール属性または変数が最大\(2^n\)個の規則につながり得ることです。記述されたポリシー文書には多くの規則が含まれ、さまざまな属性が使われる場合があります。属性値のどの組合せに対しても、システムは記述されたポリシーを正確に反映する規則を実装しなければなりません。この種の規則は通常、以下の構造をとります。ここで\(R_i\)は、1つ以上の属性の値を評価するブール条件です。
which is equivalent to:
これは次の形式と等価です。
Example: Suppose we have an access rule as shown below:
例:次のようなアクセス規則があるとします。
if (a && (c && !d ||e)) grant(); else if (!a && b && !c) grant(); else deny();
if (a && (c && !d ||e)) grant(); else if (!a && b && !c) grant(); else deny();
This code can be mapped to the following expression:
このコードは次の式に変換できます。
The boolean literals may represent conditions, such as \(\mathit{age} > 18\), or boolean attributes such as \(\mathit{employee}\), but the structure will be as shown in the example. That is, a series of expressions specifying subsets of attribute conditions that must be true for access to be granted, followed by a default deny-access rule when none of the attribute expressions have been instantiated to \(\mathit{true}\).
ブールリテラルは、\(\mathit{age} > 18\)などの条件や\(\mathit{employee}\)などのブール属性を表す場合がありますが、構造は例に示すとおりです。すなわち、アクセスを許可するために真でなければならない属性条件の部分集合を指定する式を並べ、どの属性式も\(\mathit{true}\)にならない場合は既定でアクセスを拒否する規則を続けます。
Testing an implementation requires showing that the policy specified, \(P\), is correctly implemented. The implemented policy \(P'\) must be shown to produce the same response as \(P\) for any combination of attributes used as input. That is, for input attributes \(x_1,\ldots,x_n\), \(P'(x_1,\ldots,x_n) = P(x_1,\ldots,x_n)\).
実装をテストするには、指定されたポリシー\(P\)が正しく実装されていることを示す必要があります。実装されたポリシー\(P'\)は、入力として使用する属性の任意の組合せに対して、\(P\)と同じ応答を返すことを示さなければなりません。すなわち、入力属性\(x_1,\ldots,x_n\)に対して\(P'(x_1,\ldots,x_n) = P(x_1,\ldots,x_n)\)です。
Confirming that access will be granted for users with the right attributes is easy: we can simply read off the attribute conditions for each \(\mathit{grant}\) expression and verify that the access control system returns an authorization in each case. The number of such tests is linear in the number of \(\mathit{grant}\) conditions. However, it is much more difficult to ensure that no invalid combination of attributes will result in authorization. With \(n\) boolean attributes or variables there are \(2^n\) possible combinations of attributes. For example, it would not be unusual to have 50 conditions or Boolean attributes, resulting in \(2^{50} \approx 10^{15}\) combinations, but it must be shown that no combination will improperly allow access.
適切な属性を持つユーザーにアクセスが許可されることの確認は容易です。各\(\mathit{grant}\)式の属性条件を読み取り、各ケースでアクセス制御システムが認可を返すことを検証すればよい。このようなテストの数は\(\mathit{grant}\)条件の数に対して線形です。しかし、属性の無効な組合せによって認可が生じないことを保証するのは、はるかに難しい。\(n\)個のブール属性または変数があれば、属性の組合せは\(2^n\)通りあります。たとえば、50個の条件またはブール属性があることは珍しくなく、その場合は\(2^{50} \approx 10^{15}\)通りの組合せが生じますが、不適切にアクセスを許可する組合せが1つもないことを示さなければなりません。
To make testing tractable, we will use covering arrays of attributes in policies that have been converted to \(k\)-DNF form. \(k\)-DNF refers to disjunctive normal form where no term contains more than \(k\) literals. Recall that a term is a conjunction of one or more literals within the disjunction. For example, \(abc + de\) contains two terms, one with three literals and one with two, so the expression is in 3-DNF form. A 3-way covering will contain all 3-way combinations of variable values (and therefore also all 1-way and 2-way combinations). Where an expression is in \(k\)-DNF, any term containing \(k\) literals that is resolved to true will clearly result in the full expression being evaluated to true. For example, a rule in 2-DNF form could be: “if employee && US_citizen || auditor then grant”. This rule contains one term of two attributes and one term of one attribute, so it is 2-DNF. Because a covering array of strength \(k\) contains every possible setting of all \(k\)-tuples and \(i\)-tuples for \(i < k\), it contains every combination of values of any \(k\) literals.
テストを実行可能にするため、\(k\)-DNF形式に変換したポリシーの属性の被覆配列を用います。\(k\)-DNFとは、どの項も\(k\)個を超えるリテラルを含まない選言標準形をいいます。項とは、選言の中にある1つ以上のリテラルの連言です。たとえば、\(abc + de\)には2つの項があり、1つはリテラルを3つ、もう1つは2つ含むため、この式は3-DNF形式です。3-way被覆は、変数値の3-way組合せをすべて含みます(したがって1-wayと2-wayの組合せもすべて含む)。式が\(k\)-DNFであるとき、\(k\)個のリテラルを含む項が真に解決されれば、式全体も明らかに真と評価されます。たとえば、2-DNF形式の規則は次のように書ける:「if employee && US_citizen || auditor then grant」。この規則には、2つの属性からなる項が1つと、1つの属性からなる項が1つ含まれるため、2-DNFです。強度\(k\)の被覆配列は、すべての\(k\)要素組と\(i\)要素組(\(i < k\))について可能なすべての設定を含むため、任意の\(k\)個のリテラルの値の組合せをすべて含みます。
Covering array generation tools, such as ACTS, make it possible to include constraints that prevent the inclusion of variable combinations that meet criteria specified in a first order logic style syntax. For example, if we are testing applications that run on various combinations of operating systems and browsers, we may include a constraint such as ‘OS = “Linux” => browser != “IE”’. Constraints are typically used in situations such as this, where certain combinations do not occur in practice, and therefore should not be included in tests.
ACTSなどのカバリング配列生成ツールでは、一階論理風の構文で指定した条件を満たす変数の組合せが含まれないようにする制約を組み込めます。たとえば、オペレーティングシステムとブラウザのさまざまな組合せで動作するアプリケーションをテストする場合、‘OS = “Linux” => browser != “IE”’のような制約を含めることがあります。制約は通常、このように特定の組合せが実際には発生せず、したがってテストに含めるべきでない状況で使用します。
Method: Let \(R\) = rule antecedents (left hand side of an implication rule such as \(p\) in \(p \rightarrow q\)) of one or more policy rules being tested in \(k\)-DNF, and \(T_i\) are terms (conjuncts of one or more attributes) in \(R\). For the example included in the introduction, terms \(T_i\) of \(R\) would be \(ac\bar{d}\), \(ae\), and \(\bar{a}b\bar{c}\). \(R\) is not necessarily the complete policy; it may be the set of rules associated with a particular resource that we wish to test, for example.
方法:\(R\) を、規則前件(\(p\) を含む \(p \rightarrow q\) のような含意規則の左辺)とします。これは \(k\)-DNF形式でテストする1つ以上のポリシールールの前件です。また、\(T_i\) は \(R\) に含まれる項(1つ以上の属性の連言)です。導入部の例では、項 \(T_i\) は \(R\) について \(ac\bar{d}\)、\(ae\)、\(\bar{a}b\bar{c}\) となります。\(R\) は必ずしも完全なポリシー全体ではありません。たとえば、テスト対象とする特定のリソースに関連付けられたルール集合でもよいです。
Positive testing: Generate a test set \(\mathrm{GTEST}\) for which every test should produce a response of grant. It must be shown that for all possible inputs, where some combination of \(k\) input values matches a grant condition, a decision of grant is returned. Construct test set \(\mathrm{GTEST}\) with one test for each term of \(R\) as follows:
肯定テスト:テスト集合 \(\mathrm{GTEST}\) を生成します。その各テストはgrant(許可)の応答を返すべきものです。\(k\) 個の入力値の組合せがgrant条件に一致する場合、あらゆる入力に対してgrantの判断が返ることを示さなければなりません。テスト集合 \(\mathrm{GTEST}\) は、\(R\) の各項に対して1つずつテストを作成し、次のように構成します。
The construction ensures that each term in \(P\) is verified to independently produce a response of grant. Negating each term \(T_j\), \(i \ne j\), prevents masking of a fault in the presence of other combinations that would return the same result. For example, if a rule condition is \(ab + cd \rightarrow \mathit{grant}\), inputs of 1100, 1101, 1110 could be used for testing \(ab \rightarrow \mathit{grant}\). However, input 1111 would not detect the fault if the system ignores variable \(a\) or \(b\), because the condition \(cd\) would cause a grant decision, and no other grant predicates would be evaluated. One such test is required for each term in a grant rule, so for \(m\) rules with an average of \(p\) terms each, the number of tests required is proportional to \(mp\).
この構成では、\(P\) の各項が単独でgrantの応答を返すことを検証します。各項 \(T_j\)(\(i \ne j\))を否定すると、同じ結果を返す他の組合せによって欠陥が隠れるのを防げます。たとえば、ルール条件が \(ab + cd \rightarrow \mathit{grant}\) なら、\(ab \rightarrow \mathit{grant}\) をテストする入力として1100、1101、1110を使えます。しかし、システムが変数 \(a\) または \(b\) を無視している場合、入力1111では欠陥を検出できません。条件 \(cd\) によってgrantの判断が生じ、他のgrant述語が評価されないためです。grantルール内の各項についてこのようなテストが1つ必要です。したがって、\(m\) 個のルールに平均 \(p\) 個の項がある場合、必要なテスト数は \(mp\) に比例します。
Negative testing: Generate a test set \(\mathrm{DTEST}\) for which every test should produce a response of deny. It must be shown that for all possible inputs, where no combination of \(k\) input values matches a grant condition, a decision of deny is returned.
否定テスト:テスト集合 \(\mathrm{DTEST}\) を生成します。その各テストはdeny(拒否)の応答を返すべきものです。\(k\) 個の入力値のどの組合せもgrant条件に一致しない場合、あらゆる入力に対してdenyの判断が返ることを示さなければなりません。
\(\mathrm{DTEST}\) = covering array of strength \(k\), for the set of attributes included in \(R\), with constraints specified by \(\sim R\).
\(\mathrm{DTEST}\) = 強度 \(k\) の被覆配列。対象は \(R\) に含まれる属性集合であり、制約は \(\sim R\) で指定します。
Note that the structure of the access control rule evaluation makes it possible to use a covering array for \(\mathrm{DTEST}\), compressing a large number of test conditions into a few tests. Because a deny is issued only after all grant conditions have been evaluated, masking of one combination by another can only occur for \(\mathrm{DTEST}\) when a test produces a response of grant. In such a case, an error has been discovered, which can be repaired before running the test set again. Since \(\mathrm{DTEST}\) is a covering array, the number of tests will be proportional to \(v^k \log n\), for \(v\) values per attribute (normally \(v=2\) since most will be boolean conditions), and \(n\) attributes. For \(m\) rules, the number of tests is multiplied by the constant \(m\).
なお、アクセス制御規則の評価構造により、\(\mathrm{DTEST}\) に被覆配列を使用し、多数のテスト条件を少数のテストに圧縮できます。denyはすべてのgrant条件を評価した後にのみ返されるため、ある組合せが別の組合せによって隠されるのは、\(\mathrm{DTEST}\) のテストがgrantの応答を返す場合に限られます。その場合はエラーが見つかっており、テスト集合を再実行する前に修正できます。\(\mathrm{DTEST}\) は被覆配列であるため、テスト数は \(v^k \log n\) に比例します。ここで \(v\) は属性あたりの値の数(大半がブール条件であるため通常は \(v=2\))、\(n\) は属性数です。ルールが \(m\) 個なら、テスト数には定数 \(m\) を掛けます。
Example: Table 1 gives a set of boolean attributes \(a\) through \(e\), where each row defines values for the attributes that determine a decision, either grant or deny. Thus a covering array for the antecedent \(R\) of a rule in 3-DNF such as (\(ac\bar{d} + \bar{a}b\bar{c} \rightarrow \mathit{grant}\)) is given in Table 1. The total number of 3-way combinations covered is the number of settings of three binary variables multiplied by the number of ways of choosing three variables from five, i.e., \(2^3 \binom{5}{3} = 80\).
例:表1は、ブール属性 \(a\) ~ \(e\) の値の集合を示します。各行は、grantまたはdenyの判断を決める属性値を定義します。したがって、前件 \(R\) に対する被覆配列を表1に示します。これは3-DNF形式の規則、たとえば(\(ac\bar{d} + \bar{a}b\bar{c} \rightarrow \mathit{grant}\))の前件です。網羅される3-way組合せの総数は、3つの二値変数の設定数に、5つの変数から3つを選ぶ方法の数を掛けた値、すなわち \(2^3 \binom{5}{3} = 80\) です。
Table 2 shows a covering array for this set of variables generated using \(\sim R\) as a constraint. That is, the two terms of the rule, \(ac\bar{d}\) and \(\bar{a}b\bar{c}\), have been excluded from the array, but all other 1-, 2-,
表2は、この変数集合について \(\sim R\) を制約として生成した被覆配列を示します。つまり、規則の2つの項 \(ac\bar{d}\) と \(\bar{a}b\bar{c}\) は配列から除外されていますが、他のすべての1-way、2-way、
Table 2 shows a covering array for this set of variables generated using ~ R as a constraint. That is, the two terms of the rule, acd̅ and a̅bc̅, have been excluded from the array, but all other 1-, 2-, and 3-way combinations can be found in the array. Because acd̅ and a̅bc̅ are the only conditions under which access should be granted, the array in Table 2 should result in a deny response from the access control system for every test. Collectively, the tests include all 78 3-way settings of attributes that will not instantiate the access control rule to true.
表2は、~ Rを制約として生成した、この変数集合のカバリング配列です。すなわち、規則の2つの項acd̅とa̅bc̅は配列から除外されていますが、それ以外のすべての1-way、2-way、3-wayの組合せは配列中に存在します。アクセスが許可されるべき条件はacd̅とa̅bc̅のみであるため、表2の配列では、すべてのテストについてアクセス制御システムからdeny応答が返るはずです。これらのテスト全体で、アクセス制御規則を真にしない属性の3-way設定78個がすべて含まれます。
Table 1: 3-way covering array
表1:3-way被覆配列
| A | b | c | d | e | |
|---|---|---|---|---|---|
| 1 | 0 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 1 | 1 | 1 |
| 3 | 0 | 1 | 0 | 1 | 0 |
| 4 | 0 | 1 | 1 | 0 | 1 |
| 5 | 1 | 0 | 0 | 1 | 1 |
| 6 | 1 | 0 | 1 | 0 | 0 |
| 7 | 1 | 1 | 0 | 0 | 1 |
| 8 | 1 | 1 | 1 | 1 | 0 |
| 9 | 1 | 1 | 0 | 0 | 0 |
| 10 | 0 | 0 | 1 | 1 | 0 |
| 11 | 0 | 0 | 0 | 0 | 1 |
| 12 | 1 | 1 | 1 | 1 | 1 |
| A | b | c | d | e | |
|---|---|---|---|---|---|
| 1 | 0 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 1 | 1 | 1 |
| 3 | 0 | 1 | 0 | 1 | 0 |
| 4 | 0 | 1 | 1 | 0 | 1 |
| 5 | 1 | 0 | 0 | 1 | 1 |
| 6 | 1 | 0 | 1 | 0 | 0 |
| 7 | 1 | 1 | 0 | 0 | 1 |
| 8 | 1 | 1 | 1 | 1 | 0 |
| 9 | 1 | 1 | 0 | 0 | 0 |
| 10 | 0 | 0 | 1 | 1 | 0 |
| 11 | 0 | 0 | 0 | 0 | 1 |
| 12 | 1 | 1 | 1 | 1 | 1 |
Table 2: 3-way covering array with constraint \(\sim R\)
表2:制約 \(\sim R\) を適用した3-way被覆配列
| a | b | c | d | e | |
|---|---|---|---|---|---|
| 1 | 0 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 1 | 1 | 1 |
| 3 | 0 | 1 | 1 | 0 | 0 |
| 4 | 1 | 0 | 0 | 1 | 0 |
| 5 | 1 | 0 | 1 | 1 | 0 |
| 6 | 1 | 1 | 0 | 0 | 1 |
| 7 | 1 | 1 | 1 | 1 | 1 |
| 8 | 0 | 0 | 1 | 0 | 1 |
| 9 | 1 | 1 | 0 | 1 | 0 |
| 10 | 0 | 0 | 0 | 1 | 1 |
| 11 | 1 | 0 | 0 | 0 | 0 |
| 12 | 0 | 1 | 1 | 1 | 0 |
| 13 | 1 | 0 | 0 | 0 | 1 |
| 14 | 0 | 1 | 1 | 0 | 1 |
| a | b | c | d | e | |
|---|---|---|---|---|---|
| 1 | 0 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 1 | 1 | 1 |
| 3 | 0 | 1 | 1 | 0 | 0 |
| 4 | 1 | 0 | 0 | 1 | 0 |
| 5 | 1 | 0 | 1 | 1 | 0 |
| 6 | 1 | 1 | 0 | 0 | 1 |
| 7 | 1 | 1 | 1 | 1 | 1 |
| 8 | 0 | 0 | 1 | 0 | 1 |
| 9 | 1 | 1 | 0 | 1 | 0 |
| 10 | 0 | 0 | 0 | 1 | 1 |
| 11 | 1 | 0 | 0 | 0 | 0 |
| 12 | 0 | 1 | 1 | 1 | 0 |
| 13 | 1 | 0 | 0 | 0 | 1 |
| 14 | 0 | 1 | 1 | 0 | 1 |
Fault detection properties: Collectively, tests from \(\mathrm{GTEST}\) and \(\mathrm{DTEST}\) will detect all added, deleted, or altered faults with up to \(k\) literals. If more than \(k\) literals are included in the altered term, some faults are still detected. Proofs of these properties can be found in [IWCT 16], which also details characteristics of faults of more than \(k\) literals which will be detected.
欠陥検出特性:\(\mathrm{GTEST}\) と \(\mathrm{DTEST}\) のテストを合わせると、\(k\) 個以下のリテラルを含む追加・削除・変更の欠陥をすべて検出できます。変更された項に \(k\) 個を超えるリテラルが含まれる場合でも、一部の欠陥は検出されます。これらの特性の証明は[IWCT 16]にあり、\(k\) 個を超えるリテラルを含む欠陥のうち検出されるものの特徴も説明されています。
Generalization of method: Although only two responses are considered in the description of the method above, it is simple to generalize to more than two responses. Because multiple responses are possible, instead of \(\mathrm{Gtest}\) and \(\mathrm{Dtest}\) for grant and deny results, we will refer to \(\mathrm{Ptest}_i\) and \(\mathrm{Ntest}_i\) arrays, for \(i\) possible results, and \(\mathrm{Ptest}_{ij}\) and \(\mathrm{Ntest}_{ij}\) index rows \(j\) of each array.
手法の一般化:上記の手法の説明では応答を2種類だけ扱いますが、3種類以上にも容易に一般化できます。複数の応答があり得るため、grantとdenyの結果に対する \(\mathrm{Gtest}\) と \(\mathrm{Dtest}\) の代わりに、\(\mathrm{Ptest}_i\) と \(\mathrm{Ntest}_i\) の配列を用います。\(i\) は可能な結果を表し、\(\mathrm{Ptest}_{ij}\) と \(\mathrm{Ntest}_{ij}\) は各配列の行 \(j\) を指します。
• Positive testing: Generate a test set \(\mathrm{Ptest}_i\) for which every test should produce a response output of \(O_i\). It must be shown that for all possible inputs, where some combination of \(k\)
• 肯定テスト:テスト集合 \(\mathrm{Ptest}_i\) を生成します。その各テストは \(O_i\) の応答出力を返すべきものです。あらゆる入力について、\(k\) 個の
input values instantiates the condition for \(O_i\) to true, a result of \(O_i\) is returned. The construction for \(\mathrm{Gtest}\) is used for each possible response output \(O_i\) to produce one positive array for each response \(O_i\).
入力値が \(O_i\) の条件を真にする場合、\(O_i\) の結果が返されます。\(\mathrm{Gtest}\) の構成を、あり得る各応答出力 \(O_i\) について用い、各応答 \(O_i\) に対して肯定配列を1つ生成します。
• Negative testing: Similarly, we construct one negative array \(\mathrm{Ntest}_i\) for each possible result output \(O_i\) as a covering array of strength \(k\), for the terms in rules \(R_i\) that result in \(O_i\) with constraints specified by \(\sim R_i\), for each output \(i\).
• 否定テスト:同様に、否定テスト配列 \(\mathrm{Ntest}_i\) を各可能な結果出力 \(O_i\) について1つ作成します。これは強度 \(k\) の被覆配列であり、対象はルール \(R_i\) の項のうち \(O_i\) となるもので、制約は \(\sim R_i\) で指定します。これを各出力 \(i\) について行います。
Note also that the method is not constrained to access control applications, but can be used for any formally specified system where rules can be converted to a \(k\)-DNF form.
また、この手法はアクセス制御アプリケーションに限られず、ルールを \(k\)-DNF形式に変換できる形式仕様システムならどのようなものにも使用できます。
5.7 Real Time AC Rule Implementation Detection
5.7 リアルタイムACルール実装の検出
Most research on AC model or policy verification techniques is focused on one particular model, and almost all of the research is in applied methods, which require the completed AC policies as the input for verification or test processes to generate fault reports (as previously mentioned). Even though correct verification is achieved and counterexamples may be generated along with found faults, those methods provide no information about the source of rule faults that might allow conflicts in privilege assignment, leakage of privileges, or conflict of interest permissions. The difficulty in finding the source of fault is increased especially when the AC rules are intricately covering duplicated variables to a degree of complexity. The complexity is due to the fact that a fault might not be caused by one particular rule; for example, rule \(x\) grants subject/attribute \(s\) access to object/attribute \(o\), and rule \(y\) denies the group subject/attribute \(g\), which \(s\) is a member of, access to object \(o\). Such conflict can only be resolved by removing either rule \(x\) or \(y\), or the \(g\) membership of \(s\) from the policy. But removing \(x\) or \(y\) affects other rules that depend on them (e.g., a member of subject group \(g\) \(k\) is granted access to object \(o\)), and removing \(s\)’s membership in \(g\) will disable \(g\)’s legitimate access to other objects/attributes through the membership. Thus, it requires manually analyzing each and every rule in the policy in order to find the correct solution for the fault. To address the issue, the AC Rule Logic Circuit Simulation (ACRLCS) technique [HS13], which enables the AC authors to detect a fault when the fault-causing AC rule is added to the model, so the fixing can be implemented in real time (on the spot) before adding other rules that further complicate the detecting effort. In other words, instead of checking by retracing the interrelations between rules after the policy is completed, the policy author needs only check the new added rule against previous “correct” ones. In ACRLCS, AC rules are represented in a simulated logic circuit (SLC) (pronounced CELL-see). By simulation, it means ACRLCS is not necessarily implementable by a physical electronic circuit; however, the concept can be implemented and computed through simulated software. ACRLCS is composed of SLCs representing AC rules specified in Boolean expressions. A SLC should be able to preserve the assignments of AC variables and privilege hierarchies (through inheritance) and evaluate access permission (e.g., grant or deny) from the implemented rule. With this principle, the technique includes two main processes:
ACモデルやポリシーの検証技術に関する研究の多くは、特定のモデル1つを対象としています。また、研究のほぼすべてが応用手法に関するものであり、完成したACポリシーを入力として検証やテストを行い、欠陥報告を生成します(前述のとおり)。検証が正しく行われ、欠陥とともに反例が生成されても、特権割当ての競合、特権漏えい、利益相反を許す設定につながるルール欠陥の発生源について、これらの手法は情報を提供しません。重複する変数を複雑に扱うACルールでは、特に欠陥の発生源の特定が難しくなります。欠陥が単一のルールだけに起因するとは限らないためです。たとえば、ルール\(x\)が主体/属性\(s\)にオブジェクト/属性\(o\)へのアクセスを許可し、ルール\(y\)が、グループ主体/属性\(g\)(\(s\)はその構成員である)に対し、オブジェクト\(o\)へのアクセスを拒否するとします。この競合は、ルール\(x\)か\(y\)のいずれか、または\(g\)への\(s\)の所属をポリシーから削除しなければ解消できません。しかし、\(x\)または\(y\)を削除すれば、それらに依存する他のルールにも影響します(たとえば、主体グループ\(g\) \(k\)の構成員がオブジェクト\(o\)へのアクセスを許可される場合)。また、\(s\)の\(g\)への所属を削除すれば、その所属を介した\(g\)の他のオブジェクト/属性への正当なアクセスも無効になります。そのため、欠陥の適切な解決策を見つけるには、ポリシー内の各ルールを手作業で分析しなければなりません。この問題に対処するACルール論理回路シミュレーション(ACRLCS)手法[HS13]は、欠陥の原因となるACルールをモデルに追加した時点でAC作成者が欠陥を検出できるようにし、検出をさらに複雑にする他のルールを追加する前に、その場で(リアルタイムに)修正を実施できるようにします。言い換えると、ポリシー完成後にルール間の相互関係をたどって確認する代わりに、ポリシー作成者は新しく追加したルールを以前の「正しい」ルールと照合するだけでよい。ACRLCSでは、ACルールをシミュレートされた論理回路(SLC、CELL-seeと発音する)として表現します。ここでシミュレーションとは、ACRLCSが必ずしも物理的な電子回路で実装できるわけではないという意味ですが、概念はシミュレーションソフトウェアで実装・計算できます。ACRLCSは、ブール式で指定されたACルールを表すSLCから構成されます。SLCはAC変数の割当てと特権階層(継承によるもの)を保持し、実装されたルールからアクセス許可(たとえばgrantまたはdeny)を評価できなければなりません。この原則に基づき、この手法は次の2つの主要なプロセスを含みます。
•• Construct a SLC based on AC variables specified by Boolean expressions, or relation hierarchies specified by relations in an AC rule. In the SLC, each AC variable is represented by an input switch, and the rule logic operator and hierarchy relation are simulated by logic gates.
•• ブール式で指定されたAC変数、またはACルール内の関係で指定された関係階層に基づいてSLCを構築します。SLCでは、各AC変数を入力スイッチで表し、ルールの論理演算子と階層関係を論理ゲートでシミュレートします。
• Develop an efficient algorithm to detect rule faults in the policy by triggering input switches representing AC rule variables under verification in the currently constructed SLC. Rule faults are generated as positive signal outputs from the SLC, indicating conflicts in privilege assignments caused by a new added rule. Figure 22 implements a simple Bell-Lapadula [BL73] read property of MLS policy model, under which \(\mathit{Top\_Secret}\) rank users can read objects in \(\mathit{Top\_Secret}\), \(\mathit{Secret}\), and \(\mathit{Confidential}\) ranks; \(\mathit{Secret}\) rank users can read objects in \(\mathit{Secret}\) and \(\mathit{Confidential}\) ranks; and \(\mathit{Confidential}\) rank users can only read objects in the \(\mathit{Confidential}\) rank.
• 現在構築中のSLCにおいて、検証対象のACルール変数を表す入力スイッチを作動させることで、ポリシー内のルール欠陥を検出する効率的なアルゴリズムを開発します。ルール欠陥はSLCからの正信号出力として生成され、新たに追加されたルールが引き起こす特権割当ての競合を示します。図22はMLSポリシーモデルの単純なBell-LaPadula [BL73]読み取り特性を実装しています。このモデルでは、\(\mathit{Top\_Secret}\)ランクのユーザーは\(\mathit{Top\_Secret}\)、\(\mathit{Secret}\)、\(\mathit{Confidential}\)ランクのオブジェクトを読み取れます。\(\mathit{Secret}\)ランクのユーザーは\(\mathit{Secret}\)と\(\mathit{Confidential}\)ランクのオブジェクトを読み取れます。\(\mathit{Confidential}\)ランクのユーザーが読み取れるのは\(\mathit{Confidential}\)ランクのオブジェクトだけです。
図22 MLSポリシーモデル。左に入力スイッチ Tu In、To In、Su In、So In、Cu In、Read In、Co In、中央に 2 つの OR ゲート、右に 3 つの AND ゲートがあり、AND ゲートが出力 Tp Out(Top Secret Permission)、Sp Out(Secret Permission)、Cp Out(Confidential Permission)を駆動する論理回路である。Tu In は上の AND ゲートと上の OR ゲートに入り、Su In は上の OR ゲートに入る。上の OR ゲートの出力は中央の AND ゲートと下の OR ゲートに入る。Cu In は下の OR ゲートに入り、その出力は下の AND ゲートに入る。Read In は 3 つの AND ゲートすべてに入る。To In は上の AND ゲートに、So In は中央の AND ゲートに、Co In は下の AND ゲートに入る。
Figure 22 MLS policy model
図22 MLSポリシーモデル
5.8 Test scheme
5.8 テスト方式
General AC system testing framework (as in Figure 23) contains four major functions using the methods as stated in Section 4. The AC Rule Real-time Error detector is used optionally for designing the initial AC models [HS13]. The Black Box Tester checks if a model (original or mutant) holds for the specified Safety Requirements. The Black Box Tester (counterexample results) provides information for original model fix (a human action as dotted line in the figure) and for mutation killing check for White Box Tester. It also takes output from the Test Generator and returns results for test case generation. The White Box Tester generates and kills mutant models based on the original model and safety requirements; its mutated models are sent to the Black Box Tester for mutation killing check, or to the AC model author for original model or safety requirement fix (a human action as shown in dotted lines in the figure). The Test Oracle Generator generates test cases based on the Safety Requirement and the Black Box Tester’s counterexample results. The process steps are listed below:
図23に示す一般的なACシステムテスト枠組みは、4節で示した手法を用いる4つの主要機能から成ります。ACルールのリアルタイムエラー検出器は、初期ACモデルを設計するときに任意で使用します[HS13]。ブラックボックステスターは、モデル(元のモデルまたは変異モデル)が指定された安全性要件を満たすか確認します。ブラックボックステスターが返す反例は、元のモデルの修正(図中の点線で示す人手による作業)や、ホワイトボックステスターによる変異モデルkill判定に使う情報となります。また、テストジェネレーターからの出力を受け取り、テストケース生成の結果を返します。ホワイトボックステスターは、元のモデルと安全性要件に基づいて変異モデルを生成し、kill判定を行います。生成した変異モデルは、kill判定のためブラックボックステスターへ送るか、元のモデルまたは安全性要件の修正のためACモデル作成者へ送ります(後者の修正は図中の点線で示す人手による作業です)。テストオラクルジェネレーターは、安全性要件とブラックボックステスターの反例からテストケースを生成します。各手順を以下に示します。
1.(optional) AC models are designed based on the AC policy by using AC Rule Real-time Error Checker (as described in Section 5.4).
1.1. (任意)5.4節で説明したACルールのリアルタイムエラーチェッカーを使い、ACポリシーに基づいてACモデルを設計します。
2.Safety requirements are specified.
2.2. 安全要件を指定します。
3.Completed original AC model is checked against safety requirements by Black Box Tester (as described in Section 3.1, 4.1 and 5.1). If an error is found, the original model needs to be fixed (thus repeat steps 1 to 3), otherwise proceed to next step 4.
3.完成した元のACモデルを、ブラックボックステスターで安全要件に照らして確認します(3.1、4.1、5.1節を参照してください)。エラーが見つかった場合は元のモデルを修正して手順1~3を繰り返します。見つからなければ手順4へ進みます。
4.Fixed original model sent to White Box Tester for coverage and confinement check (as described in Section 3.2, 4.2 and 5.2). The White Box Tester uses Black Box Tester to decide if generated mutant models were killed. If not, original model or safety requirements need to be fixed (thus repeat step 1 to 4), otherwise, proceed to next step 5.
4.4. 修正済みの元のモデルをホワイトボックステスターに送り、網羅性と閉じ込め性を確認します(3.2、4.2、5.2節を参照してください)。ホワイトボックステスターは、生成した変異モデルがkillされたかをブラックボックステスターで判定します。killされない場合は元のモデルまたは安全要件を修正して手順1~4を繰り返します。そうでなければ手順5へ進みます。
5.Test Oracle Generator generates test cases based on Safety Requirements, which are sent to Black Box Tester for generating permission results used for the test oracle (as described in Section 4.3 and 5.3).
5.5. テストオラクルジェネレーターは安全要件に基づいてテストケースを生成し、許可結果を得るためブラックボックステスターへ送ります。得られた結果をテストオラクルに用います(4.3、5.3節を参照してください)。
Note that the components in Figure 23 and steps listed above are not necessarily all required for an AC model verification; the selections of components and steps might depend on the complexity of the model and the cost for implementing the test framework. Thus, an AC model test framework can contain optional components/functions in Figure 23 except that the Black Box tested is essential.
図23のコンポーネントと上記の手順は、ACモデル検証にすべて必須とは限りません。どのコンポーネントや手順を選択するかは、モデルの複雑さとテスト枠組みの実装コストによって異なります。そのため、ACモデルのテスト枠組みには図23の任意コンポーネント/機能を含めてもよいですが、ブラックボックステスターは必須です。
Test Oracle
テストオラクル
Black Box Tester
ブラックボックステスター
Test
テスト
(cases)
(ケース)
AC model
ACモデル
(Model checker)
(モデルチェッカー)
Oracle
オラクル
Generator
ジェネレーター
/constraints under
/制約の下で
(cases)
(ケース)
(Combinatorial
(組合せ
test
テスト
methods)
手法)
White Box Tester
ホワイトボックステスター
Safety
安全
(Mutated model
(変異モデルの
AC Model
ACモデル
Requirements
要件
generation and
生成と
Generator or
生成器、または
AC policy
ACポリシー
kill)
kill判定)
(optional
(任意の
Author
作成者
AC rule real-time
ACルールのリアルタイム
図23の一部。負号と人物アイコンが描かれ、近くに「Test Oracle (cases)」の箱がある。 [装飾の画像。本文を読むのに必要のない装飾のため、この非公式サイトには掲載していません。原本 PDF を参照してください。]
error detector - ACRLC)
エラーチェッカー(ACRLC)
AC policy
ACポリシー
Figure 23 AC testing framework
図23 ACテスト枠組み
6 EXAMPLE SYSTEM -- NIST ACPT
6 システム例:NIST ACPT
NIST’s Access Control Policy Tool (ACPT) (Figure 24 from the screen shots) provides (1) GUI templates for composing AC models, (2) safety requirements verification for AC models through an NuSMV (Symbolic Model Verification) model checker NuSMV, (3) complete test cases generated by NIST’s combinatorial testing tool ACTS, and (4) XACML policy generation as output of verified model as shown in Figure 25 architecture. Through the four major functions, ACPT performs all the syntactic and semantic verifications as well as the interface for composing and combining AC models for AC policies; ACPT assures the efficiency of specified AC models, and eliminates the possibility of making faulty AC models that leak the information or prohibit legitimate information sharing.
NISTのアクセス制御ポリシーツール(ACPT、画面例は図24)は、(1) ACモデルを作成するためのGUIテンプレート、(2) NuSMV(記号モデル検証)モデルチェッカーによるACモデルの安全要件検証、(3) NISTの組合せテストツールACTSが生成する完全なテストケース、(4) 検証済みモデルからのXACMLポリシー生成(図25の構成を参照)を提供します。これら4つの主要機能により、ACPTは構文検証と意味検証のすべてを行い、ACポリシー用のACモデルを作成・結合するインターフェースも提供します。ACPTは指定されたACモデルの効率を保証し、情報漏えいや正当な情報共有の妨げにつながる欠陥モデルの作成を防ぎます。
ACPT(Access Control Policy Tool)バージョン1.0の起動画面。NISTとAutomated Software Research Engineeringのロゴが表示される。 [NIST のロゴが写っている図。公的な標章のため、この非公式サイトには掲載していません。原本 PDF を参照してください。]
図24 ACPTの画面例(2 枚目の画面)。ACPT - DNI_demo.xml という題のウィンドウで、Subject、Resource、Action、ABAC、MultiLevel、WorkFlow、Property、Combination、Verification、Test、XACML のタブのうち ABAC が選ばれている。左の Navigator 欄には ABAC > Policy A > Rules と Policy B > Rules の木構造があり、それぞれ Government_Category のルール(Federal または State と、CFR_Part_23_Training または Assurance_Level の値)が並ぶ。右の欄は Policy A properties で、Name 欄(Policy A)と Rules の一覧、Add・Update・Remove のボタンがある。下の Log 欄には run NuSMV verification....、It would take time for generating Test oracles...、Test oracle creation is finished.... とある。
Figure 24 ACPT screen shots
図24 ACPTの画面例
図25 ACPTのアーキテクチャ。ACPT と記された大きな枠の上に、AC policy author(ACポリシー作成者)と記されたコンピュータに向かう人物のクリップアートがあり、ACPT 内の最上部の GUI の箱と双方向の矢印で結ばれている。ACPT の中では、GUI から AC Model Templates と Model Generator へそれぞれ双方向の矢印がある。Model Checker と Model Generator は点線の双方向の矢印で結ばれ、Model Generator から Test Suite Generator へ下向きの矢印がある。Combinatorial Array Generator と Test Suite Generator は点線の双方向の矢印で結ばれている。ACPT の外へ、Model Generator から XACML の文書へ、Test Suite Generator から Test suite の文書へ点線の矢印が出ている。青い吹き出しは次のとおりである。GUI: ユーザー、ユーザー属性、アクション、リソース、リソース属性、安全性要件を指定できる。AC Model Templates: テンプレートには ABAC、Workflow、Multi-Level がある。Model Generator: 符号化したモデルを生成する。Model Checker: 安全性要件に照らしてモデルを検証する。Test Suite Generator: テストスイートを生成する。Combinatorial Array Generator: 組合せテスト配列を生成する。XACML: XACML ポリシーのインスタンス。
Figure 25 ACPT architecture
図25 ACPTのアーキテクチャ
ACPT allows users to specify AC models or their combinations, as well as safety requirements through a GUI that contains model templates for three major AC policies: static Attribute-Based AC, Multi-Leveled Security, and stated Work-Flow. ACPT then performs black box model check to verify if the specified safety requirements conform to the specified models. If not, non-conformance messages are returned to the user, otherwise, ACPT proceeds to generate test cases through ACTS, which are ready for testing the AC application implemented according to the models. Figure 26 shows the function flow of the ACPT, followed by the specification of each function.
ACPTでは、ユーザーは、3つの主要なACポリシー(静的な属性ベースAC、多階層セキュリティ、状態遷移型ワークフロー)のモデルテンプレートを備えたGUIを通じて、ACモデルまたはその組合せ、および安全要件を指定できます。続いてACPTは、指定された安全要件が指定されたモデルに適合するかどうかを、ブラックボックスのモデル検査により検証します。適合しない場合は、不適合を示すメッセージをユーザーに返します。適合する場合は、ACTSを通じてテストケースを生成します。このテストケースは、モデルに従って実装されたACアプリケーションのテストにそのまま使用できます。図26にACPTの機能フローを示し、その後に各機能の仕様を述べます。
図26 ACPTの機能フロー。流れ図である。1. Access Control Policy Test Suite (ACPT) GUI(角の丸い箱)から 2 本の矢印が出ており、User filled AC model/constraints(利用者が入力した AC モデル・制約)と記された矢印が 2. AC model Generation へ、User filled safety requirements(利用者が入力した安全性要件)と記された矢印が 3safety requirement Generation へ向かう。2 は文書 AC model -- NuSMV へ、3 は文書 AC safety requirements -- NuSMV へ続き、両者は文書 Model + Safety requirements -- (NuSMV) へ合流し、4. Model-Safety requirements conformance check --NuSMV へ続く。4 からは、右へ Model/Safety requirement inconsistent info --GUI(角の丸い箱)への矢印と、Input Domain from Model と記された下向きの矢印が出ており、後者は 5. Combinatorial Coverage generation --ACTS、文書 6. Combinatorial array insertion -- NuSMV、7. Test case generation script -- NuSMV + ACTS の順に続き、7 から文書 Test cases へ矢印がある。
Figure 26 ACPT function flow
図26 ACPTの機能フロー
1.ACPT GUI prompts users to specify required information for the selected AC models from the model templates stored in the database, models such as MLS, RBAC, Work Flow, Chinese, and AC constraints are available for the selection. This interface provides blanks for fill-in (depends on the models selected), and allows users to select more than one model for their specifications. Users are also required to specify AC safety requirements by composing provided predicate and Boolean logic operators with the filled-in AC variables.
1.ACPTのGUIは、データベースに格納されたモデルテンプレートから選択したACモデルについて、必要な情報を指定するようユーザーに促します。選択可能なモデルには、MLS、RBAC、ワークフロー、チャイニーズ、およびACの制約があります。このインターフェースは(選択したモデルに応じて)記入用の空欄を提供し、ユーザーが複数のモデルを選択して仕様を記述できるようにします。ユーザーは、提供される述語演算子とブール論理演算子を、記入済みのAC変数と組み合わせて、ACの安全要件も指定しなければなりません。
2.AC model generation produces AC model as part of the final NuSMV program according to the information entered in 1. If more than one model were entered and causing conflicts or errors in the process of model combination, the user will be notified for fixing either their models or safety requirements to resolve the problems.
2.ACモデル生成は、1で入力された情報に従って、最終的なNuSMVプログラムの一部となるACモデルを生成します。複数のモデルが入力され、モデルの結合過程で競合やエラーが生じた場合は、問題を解消するためにモデルまたは安全要件のいずれかを修正するようユーザーに通知されます。
3.AC safety requirements generation produces AC safety requirements as part of the final NuSMV program according to the information entered in 1. The generated safety requirements will be combined with the part of NuSMV model program from 2 to form the final NuSMV program.
3.AC安全要件生成では、手順1で入力された情報に従ってAC安全要件を生成し、最終的なNuSMVプログラムの一部とします。生成された安全要件は、手順2のNuSMVモデルプログラム部分と結合され、最終的なNuSMVプログラムを構成します。
•Model-property conformance check invokes NuSMV Model Checker to output counterexamples found, and then terminate its process if rule conflicts or errors found in the specified AC models (generated by step 2) unless there is no counterexample detected.
•モデル特性の適合性チェックは、NuSMVモデルチェッカーを呼び出して検出された反例を出力させ、(手順2で生成された)指定ACモデルに規則の競合やエラーが見つかった場合は、反例が検出されない場合を除き、そのプロセスを終了します。
5.Combinatorial coverage generation scans the variables in the user specified models, and sends the variables with the ranges of their values to the ACTS combinatorial array generation tool. The outputs from ACTS are then collected for the insertion into the NuSMV program generated in 3.
5.組合せカバレッジ生成では、ユーザーが指定したモデル内の変数を調べ、値の範囲とともにACTS組合せ配列生成ツールへ送ります。ACTSからの出力を収集し、手順3で生成したNuSMVプログラムへの挿入に備えます。
6.Combinatorial array insertion replaces the variables in the property statement sections of the NuSMV program in 3, the number of safety requirement statements can be as many as the number of array items generated in 5.
6.組合せ配列挿入では、手順3のNuSMVプログラムにあるプロパティ文のセクション内の変数を置き換えます。安全要件文の数は、手順5で生成された配列項目の数まで増えることがあります。
•Test case generation run the resulting NuSMV program from 6. Because of the massive size of the resulting NuSMV program in 6, caused by the size of the variables and their values, support from cluster computing might be required. The counterexamples (if found) from the output of the NuSMV model checker, along with the expected outputs specified in the safety requirement statements of the program will be translated into test cases, which are the final output of the ACPT [HKX08, HXHA10, HXHAS10, HHX12].
•テストケース生成では、6で得られたNuSMVプログラムを実行します。変数とその値の規模により、6で得られるNuSMVプログラムは巨大になるため、クラスタコンピューティングの支援が必要になる場合があります。NuSMVモデルチェッカーの出力に含まれる反例(見つかった場合)は、プログラムの安全性要件文で指定された期待出力とともにテストケースに変換されます。これがACPTの最終出力です[HKX08, HXHA10, HXHAS10, HHX12]。
Pseudo-exhaustive Testing Function
擬似網羅的テスト機能
An implementation of Pseudo-exhaustive testing (Section 5.6) was added to the ACPT. This implementation uses a Boolean based policy as input; the software then ensure that the policy is in DNF and then solves for Grant conditions by evaluating the individual portions of the DNF policy, and then solves for Deny conditions, by utilizing ACTS with \({\sim}\mathrm{R}\) as a constraint.
ACPTには、擬似網羅的テスト(5.6節)の実装が追加されました。この実装はブール式に基づくポリシーを入力として用います。ソフトウェアはポリシーがDNF(選言標準形)であることを確認し、DNFポリシーの各部分を評価してGrant条件を求めます。次に、\({\sim}\mathrm{R}\)を制約としてACTSを用い、Deny条件を求めます。
Example: Given the Boolean Policy of: mc && ~oc && ~mr || lo && (mc || cc || oc) || pc The explanation of the policy is the following:
例:次のブールポリシーが与えられた場合:mc && ~oc && ~mr || lo && (mc || cc || oc) || pc。ポリシーの説明は次のとおりです。
| Text | Expression |
| (A) The {minor consents: \(\mathbf{mc}\)} to such health care service; no {other consent: \(\mathbf{oc}\)} to such health care service is required by law, regardless of whether the consent of another person has also been obtained; and the minor has not {requested that such person: \(\mathbf{mr}\)} be treated as the personal representative; | \(\mathtt{mc} \mathbin{\mathtt{\&\&}} {\sim}\mathtt{oc} \mathbin{\mathtt{\&\&}} {\sim}\mathtt{mr}\) |
| (B) The {minor may lawfully obtain: \(\mathbf{lo}\)} such health care service without the consent of a parent, guardian, or other person acting in loco parentis, and the {minor: \(\mathbf{mc}\)}, a {court: \(\mathbf{cc}\)}, or {another person: \(\mathbf{oc}\)} authorized by law consents to such health care service; | \(\mathtt{lo} \mathbin{\mathtt{\&\&}} (\mathtt{mc} \mathbin{\mathtt{||}} \mathtt{cc} \mathbin{\mathtt{||}} \mathtt{oc})\) |
| (C) A {parent, guardian, or other person acting in loco parentis assents to an agreement of confidentiality: \(\mathbf{pc}\)} | \(\mathtt{pc}\) |
| テキスト | 式 |
| (A) {未成年者が当該医療サービスに同意する: \(\mathbf{mc}\)}。別の者の同意も得られているかどうかにかかわらず、当該医療サービスに{他の者の同意: \(\mathbf{oc}\)}は法律上必要とされません。かつ、未成年者が、当該者を個人代理人として扱うよう{求めていない: \(\mathbf{mr}\)}場合。 | \(\mathtt{mc} \mathbin{\mathtt{\&\&}} {\sim}\mathtt{oc} \mathbin{\mathtt{\&\&}} {\sim}\mathtt{mr}\) |
| (B) 未成年者が、親、後見人、または親の代わりに行動する他の者の同意なしに当該医療サービスを{合法的に受けられ: \(\mathbf{lo}\)}、かつ、{未成年者: \(\mathbf{mc}\)}、{裁判所: \(\mathbf{cc}\)}、または法律で認められた{他の者: \(\mathbf{oc}\)}が当該医療サービスに同意する場合。 | \(\mathtt{lo} \mathbin{\mathtt{\&\&}} (\mathtt{mc} \mathbin{\mathtt{||}} \mathtt{cc} \mathbin{\mathtt{||}} \mathtt{oc})\) |
| (C) {親、後見人、または親の代わりに行動する他の者が、秘密保持に関する合意に同意する: \(\mathbf{pc}\)}場合。 | \(\mathtt{pc}\) |
Figure 27 shows the ABAC Boolean testing interface in ACPT.
図27に、ACPTのABACブールテストインターフェースを示します。
図27 ABACブールポリシーをテストするACPT。ACPT - verification_and_test_methods_for_access_conhtrol_policies.xml という題のウィンドウで、ABAC Policy タブが選ばれている。Policy Input 欄に mc && ~oc && ~mr || lo && (mc || cc || oc) || pc と入力され、Test ボタンがある。Options には Output Style のラジオボタン 1/0(選択)と True/False がある。Test Results 欄と Log 欄は空である。Test Results Output の下に Delimiter Value 欄(,)と Save Output to File ボタンがある。
Figure 27 ACPT Showing ABAC Boolean Policy Testing
図27 ABACブールポリシーをテストするACPT
The expression is then converted within the software into Disjunctive Normal Form (DNF) to be evaluated. The DNF form of the expression can then be split into sections on each OR operator. Each section can be evaluated to find a GRANT condition (assign TRUE for non-negated variables, a FALSE for negated variables); for variables not found in that section, a value of FALSE is set. Doing this process will generate of all the GRANT conditions, as shown in Figure 28.
次に、この式はソフトウェア内で評価のために選言標準形(DNF)に変換されます。DNF形式の式は、各OR演算子で区切ることができます。各区分を評価してGRANT条件を求めます(否定されていない変数にはTRUE、否定された変数にはFALSEを割り当てます)。その区分に現れない変数にはFALSEを設定します。この処理により、図28に示すように、すべてのGRANT条件が生成されます。
DNF of the input policy: (!mr && !oc && mc) || (cc && lo) || (lo && mc) || (lo && oc) || pc
入力ポリシーのDNF:(!mr && !oc && mc) || (cc && lo) || (lo && mc) || (lo && oc) || pc
図28 Grantの解を求める方法 – ORゲートで区切った各区分。左に (!mr && !oc && mc)、(cc && lo)、(lo && mc)、(lo && oc)、pc の 5 つの青い箱があり、それぞれ線で 1 つの OR ゲートの入力に結ばれ、OR ゲートの出力は GRANT と記された緑の楕円に結ばれている。
Figure 28 Method for finding Grant Solutions – Each Section through an OR Gate
図28 Grantの解を求める方法 – ORゲートで区切った各区分
The resulting GRANT results for the specified policy are below:
指定ポリシーについて得られたGRANT結果を以下に示します。
Table 3: Result of GRANT Testing
表3:許可テストの結果
| Section of Policy | cc | lo | mc | mr | oc | pc |
|---|---|---|---|---|---|---|
| !mr & !oc & mc | 0 | 0 | 1 | 0 | 0 | 0 |
| cc & lo | 1 | 1 | 0 | 0 | 0 | 0 |
| lo & mc | 0 | 1 | 1 | 0 | 0 | 0 |
| lo & oc | 0 | 1 | 0 | 0 | 1 | 0 |
| pc | 0 | 0 | 0 | 0 | 0 | 1 |
| ポリシーのセクション | cc | lo | mc | mr | oc | pc |
|---|---|---|---|---|---|---|
| !mr & !oc & mc | 0 | 0 | 1 | 0 | 0 | 0 |
| cc & lo | 1 | 1 | 0 | 0 | 0 | 0 |
| lo & mc | 0 | 1 | 1 | 0 | 0 | 0 |
| lo & oc | 0 | 1 | 0 | 0 | 1 | 0 |
| pc | 0 | 0 | 0 | 0 | 0 | 1 |
The same table of results is displayed within the software as shown in Figure 29.
図29に示すように、同じ結果表がソフトウェア内にも表示されます。
図29 許可結果の出力例。Test 実行後の同じ ACPT ウィンドウ(ABAC Policy タブ、同じ Policy Input)である。Test Results には #Grant Results、見出し行 #cc, lo, mc, mr, oc, pc と、0, 0, 1, 0, 0, 0(!mr & !oc & mc)、1, 1, 0, 0, 0, 0(cc & lo)、0, 1, 1, 0, 0, 0(lo & mc)、0, 1, 0, 0, 1, 0(lo & oc)、0, 0, 0, 0, 0, 1pc の各行があり、続いて #Deny Results とある。Log には ((!mr & !oc & mc) | (cc & lo) | (lo & mc) | (lo & oc) | pc)、Inverted (DNF -> Not -> to CNF) (~R):、(!pc & (!cc | !lo) & (!lo | !mc) & (!lo | !oc) & (!mc | mr | oc)) とある。
Figure 29 Example Output for Grant Results
図29 許可結果の出力例
To generate the DENY conditions, the DNF of the original policy must be inverted as shown in Figure 30. Then all possible inputs must be found (which, depending on the size of the policy, could take a very long time) – or, using combinatorial testing methods the size of the test set can be reduced; instead of all possible combinations, covering arrays which cover all combinations of inputs can provide coverage. Once the inverted policy is found, it is used as an input into NIST’s ACTS software as a constraint to produce the resulting DENY results.
DENY条件を生成するには、図30に示すように、元のポリシーのDNFを反転させる必要があります。その後、可能なすべての入力を求める必要があります(ポリシーの規模によっては非常に長い時間がかかりうます)。あるいは、組合せテスト手法を用いてテストセットの規模を縮小できます。すなわち、可能なすべての組合せの代わりに、入力のすべての組合せを網羅するカバリング配列によって網羅性を確保できます。反転したポリシーが得られたら、それを制約としてNISTのACTSソフトウェアに入力し、DENY結果を生成します。
In this case, the inverted DNF policy is: (!pc && (!cc || !lo) && (!lo || !mc) && (!lo || !oc) && (!mc || mr || oc))
この場合、反転したDNFポリシーは次のとおりである:(!pc && (!cc || !lo) && (!lo || !mc) && (!lo || !oc) && (!mc || mr || oc))
図30 拒否解を求める方法—各セクションをANDゲートに通す。左に !pc、(!cc || !lo)、(!lo || !mc)、(!lo || !oc)、(!mc || mr || oc) の 5 つの青い箱があり、それぞれ線で 1 つの AND ゲートの入力に結ばれ、AND ゲートの出力は DENY と記された赤い楕円に結ばれている。
Figure 30 Method for finding Deny Solutions – Each Section through an AND Gate
図30 拒否解を求める方法—各セクションをANDゲートに通す
The resulting deny tests are found below:
結果として得られる拒否テストを以下に示します。
Table 4: Result of DENY Testing
表4:拒否テストの結果
| cc | lo | mc | mr | oc | pc |
|---|---|---|---|---|---|
| 1 | 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 0 | 0 |
| 0 | 0 | 1 | 0 | 1 | 0 |
| 0 | 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 | 0 |
| 1 | 0 | 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 1 | 0 | 0 |
| cc | lo | mc | mr | oc | pc |
|---|---|---|---|---|---|
| 1 | 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 0 | 0 |
| 0 | 0 | 1 | 0 | 1 | 0 |
| 0 | 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 | 0 |
| 1 | 0 | 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 1 | 0 | 0 |
The same table of results is displayed within the software, however, the some are not shown in the following screen shot in Figure 31 due to window size.
同じ結果表はソフトウェア内にも表示されますが、ウィンドウサイズの制約により、図31のスクリーンショットには一部が表示されていません。
図31 拒否解の出力例。同じ ACPT ウィンドウ(ABAC Policy タブ、同じ Policy Input)である。Test Results には #Deny Results、見出し行 #cc, lo, mc, mr, oc, pc と、1, 0, 1, 1, 1, 0、1, 0, 0, 0, 0, 0、0, 1, 0, 1, 0, 0、0, 0, 1, 0, 1, 0、0, 0, 0, 1, 1, 0、0, 1, 0, 0, 0, 0、0, 0, 1, 1, 0, 0、1, 0, 0, 1, 1, 0、1, 0, 1, 0, 1, 0 の各行があり、スクロールバーが付いている。Log にはポリシー、Inverted (DNF -> Not -> to CNF) (~R):、反転した式 (!pc & (!cc | !lo) & (!lo | !mc) & (!lo | !oc) & (!mc | mr | oc)) がある。
Figure 31 Example Output for Deny Solutions
図31 拒否解の出力例
Relational Testing
関係式のテスト
In addition to a pure Boolean input policy, some initial support for relational expression testing is included in the software.
純粋なブール入力ポリシーに加えて、本ソフトウェアには、関係式のテストに対する初歩的なサポートも含まれています。
Consider the following policy:
次のポリシーを考えます。
emp & age > 18; & (fa | emt | med)
emp & age > 18; & (fa | emt | med)
The relational expression age > 18; within the policy can be viewed as a Boolean expression; age has values that will evaluate to true (values greater than 18), and those which will evaluate to false (values less than or equal to 18). The software takes the input policy and replaces the relational expressions with temporary Boolean variables. After the replacement, the software processes the input policy normally. Then the software will solve each relational problem to find values that pass and fail, and updates the results with those values as shown in Figure 32.
ポリシー内の関係式 age > 18; は、ブール式とみなすことができます。age には、真と評価される値(18より大きい値)と、偽と評価される値(18以下の値)があります。本ソフトウェアは、入力ポリシーを受け取り、関係式を一時的なブール変数に置き換えます。置換後は、入力ポリシーを通常どおり処理します。その後、各関係問題を解いて、成立する値と成立しない値を求め、図32に示すように、それらの値で結果を更新します。
図32 関係式を解く方法。Policy Input が emp & age > 18; & (fa | emt | med) の ACPT ウィンドウ(ABAC Policy タブ)である。Test Results には #Grant Results、見出し行 #age > 18;, emp, emt, fa, med と、Grant: age: [19 to 100] , 1, 1, 0, 0 (age > 18; & emp & emt)、Grant: age: [19 to 100] , 1, 0, 1, 0 (age > 18; & emp & fa)、Grant: age: [19 to 100] , 1, 0, 0, 1 (age > 18; & emp & med) の 3 行がある。その下に同じ見出し行の #Deny Results があり、一覧は一部だけ見えている。Log には Inverted (DNF -> Not -> to CNF) (~R):、((!e0 | !emp | !emt) & (!e0 | !emp | !fa) & (!e0 | !emp | !med))、Were Relations Feasible: TRUE とある。
Figure 32 Solving for Relational Expressions
図32 関係式を解く方法
7 CONCLUSIONS
7 結論
This document describes a notion of safety for access control, and analyzes verification approaches for static, dynamic, and historical AC models. Static models are those in which no access state is retained, while dynamic models may retain state during a session. Historical models include long-term user and object history in access decisions. An AC system is safe if no privilege can be escalated to unauthorized principals, but the correct privileges are always accessible to authorized principals. We also describe a taxonomy of faults that may occur in access control.
本書では、アクセス制御における安全性の概念を説明し、静的、動的、履歴的なACモデルに対する検証方法を分析しました。静的モデルではアクセス状態を保持しない一方、動的モデルではセッション中に状態を保持する場合があります。履歴的モデルでは、アクセス判断にユーザーとオブジェクトの長期的な履歴を含めます。権限が権限のない主体へ昇格することがなく、認可された主体は常に適切な権限を利用できる場合、ACシステムは安全です。また、アクセス制御で発生し得る障害の分類も示しました。
To verify safety requirements for AC models, this document provide a general approach that expresses AC models and AC safety requirements in the formal specification of black box models or first order logic checkers for verification. Then black box verifiers verify the specified models against the specified safety requirements. In addition to black box checking, white box checking methods that check the semantic coverage of the safety requirements also conforms to the intentions of the AC model authors. Finally, it is necessary to generate test cases to check the conformance of the implementations to their underlying models.
ACモデルの安全要件を検証するため、本書では、ACモデルとAC安全要件をブラックボックスモデルまたは一階論理チェッカーの形式仕様で表現し、検証する一般的な方法を示します。その後、ブラックボックス検証器が指定モデルを安全要件に照らして検証します。ブラックボックス検査に加えて、安全要件の意味的な網羅性を確認するホワイトボックス検査手法もあり、ACモデル作成者の意図との整合性を確認できます。最後に、実装が基礎となるモデルに適合しているかを確認するため、テストケースを生成する必要があります。
Conformance verification of access control model and safety requirements of generic AC policies bring benefits to society in two aspects. First, it should lead to improved verification practices for testing and verifying AC models in improving AC system quality and security in general. Second, innovations in new testing and verification algorithms and tools tend to propagate quickly across application or task domains where AC policies are used.
汎用ACポリシーのアクセス制御モデルと安全要件の適合性検証は、社会に2つの利点をもたらします。第一に、ACモデルの試験・検証手法が改善され、ACシステム全般の品質とセキュリティの向上につながります。第二に、新たなテスト・検証アルゴリズムやツールの技術革新は、ACポリシーが使用される他のアプリケーション分野やタスク分野にも速やかに広がる傾向があります。
APPENDIX A - GLOSSARY
付録A - 用語集
ABAC — an access control paradigm whereby access rights are granted to users through the use of policies which combine attributes together. The policies can use any type of attributes (user attributes, resource attributes, environment attribute etc.
ABAC — ユーザーに対し、属性を組み合わせたポリシーを用いてアクセス権を付与するアクセス制御パラダイム。ポリシーには、あらゆる種類の属性(ユーザー属性、リソース属性、環境属性など)を使用できます。
Access Control — Procedures and controls that limit or detect access to critical information resources. This can be accomplished through software, biometrics devices, or physical access to a controlled space.
アクセス制御(Access Control) — 重要な情報資源へのアクセスを制限または検知する手順および管理策。ソフトウェア、生体認証装置、または管理された空間への物理的アクセスによって実現できます。
Access Control Mechanism — Implementations of formal AC policy such as AC model. Access control mechanisms can be designed to adhere to the properties of the model by machine implementation using protocols, architecture, or formal languages such as program code.
アクセス制御メカニズム(Access Control Mechanism) — ACモデルなどの形式的なACポリシーの実装。アクセス制御メカニズムは、プロトコル、アーキテクチャ、またはプログラムコードなどの形式言語を用いた機械的な実装により、モデルの特性に従うように設計できます。
Access Control Model — Formal presentations of the security policies enforced by AC systems, and are useful for proving theoretical limitations of systems. AC models bridge the gap in abstraction between policy and mechanism.
アクセス制御モデル(Access Control Model) — ACシステムが適用するセキュリティポリシーの形式的な表現であり、システムの理論的な限界を証明するのに役立ちます。ACモデルは、ポリシーとメカニズムの間の抽象度のギャップを埋めます。
Access Control Policy — High-level requirements that specify how access is managed and who may access information under what circumstances.
アクセス制御ポリシー(Access Control Policy) — アクセスをどのように管理し、どのような状況で誰が情報にアクセスしてよいかを定める上位の要件。
ACPT — Access Control Policy Tool.
ACPT — アクセス制御ポリシーツール(Access Control Policy Tool)。
ACTS — Automated Combinatorial Testing for Software.
ACTS — ソフトウェアの自動組合せテスト(Automated Combinatorial Testing for Software)。
Black Box Testing — A method of software testing that examines the functionality of an application without peering into its internal structures or workings. This method of test can be applied to virtually every level of software testing: unit, integration, system and acceptance.
ブラックボックステスト(Black Box Testing) — アプリケーションの内部構造や動作を調べることなく、その機能を検査するソフトウェアテストの手法。この手法は、単体、結合、システム、受入れなど、ほぼあらゆるレベルのソフトウェアテストに適用できます。
Constraint — Access Control rules or confinements that describe the access privileges of resources for subjects.
制約(Constraint) — 主体がリソースにアクセスする権限を記述するアクセス制御の規則または制限。
Discretionary access control (DAC) — leaves a certain amount of access control to the discretion of the object's owner, or anyone else who is authorized to control the object's access. The owner can determine who should have access rights to an object and what those rights should be.
任意アクセス制御(Discretionary access control, DAC) — アクセス制御の一定部分を、オブジェクトの所有者、またはそのオブジェクトへのアクセスを管理する権限を持つ他の者の裁量に委ねる方式。所有者は、誰にオブジェクトへのアクセス権を与えるか、またどのような権限を与えるかを決定できます。
Extensible Access Control Markup Language (XACML) — A general purpose language for specifying access control policies.
拡張可能アクセス制御マークアップ言語(Extensible Access Control Markup Language, XACML) — アクセス制御ポリシーを記述するための汎用言語。
Mandatory access control (MAC) — means that access control policy decisions are made by a central authority, not by the individual owner of an object. User cannot change access rights. An example of MAC occurs in military security, where an individual data owner does not decide who has a top-secret clearance, nor can the owner change the classification of an object from top-secret to secret.
強制アクセス制御(Mandatory access control, MAC) — アクセス制御ポリシーの決定を、オブジェクトの個々の所有者ではなく、中央の権限者が行う方式。ユーザーはアクセス権を変更できません。MACの例は軍事セキュリティに見られ、個々のデータ所有者は、誰が機密(top-secret)の取扱資格を持つかを決めることも、オブジェクトの分類を機密(top-secret)から秘(secret)に変更することもできません。
Security Policy — The statement of required protection for the information objects.
セキュリティポリシー(Security Policy) — 情報オブジェクトに必要な保護を述べた文書。
Safety Requirements — AC properties, business requirements, specifications of expected/unexpected system security features, or directly translation of policy values. Safety requirements can also include privilege inheritance.
安全要件(Safety Requirements) — ACの特性、業務要件、期待される(または期待されない)システムセキュリティ機能の仕様、あるいはポリシー値をそのまま変換したもの。安全要件には、特権継承を含めることもできます。
Separation of Duty (SOD) — refers to the principle that no user should be given enough privileges to misuse the system on their own. For example, the person authorizing a paycheck should not also be the one who can prepare them. Separation of duties can be enforced either statically (by defining conflicting roles, i.e., roles which cannot be executed by the same user) or dynamically (by enforcing the control at access time). An example of dynamic separation of duty is the two-person rule. The first user to execute a two-person operation can be any authorized user, whereas the second user can be any authorized user different from the first [SS94]. There are various types of SOD, an important one is history-based SOD that regulate for example, the same subject (role) cannot access the same object for variable number of times.
職務分離(Separation of Duty, SOD) — いかなるユーザーにも、単独でシステムを悪用できるだけの権限を与えるべきではないという原則。たとえば、給与支払いを承認する者は、その支払いを準備できる者でもあるべきではありません。職務分離は、静的に(競合するロール、すなわち同一ユーザーが実行できないロールを定義することにより)、または動的に(アクセス時に管理を強制することにより)実施できます。動的な職務分離の例が二人ルールです。二人で行う操作を最初に実行するユーザーは任意の認可済みユーザーでよいですが、2番目のユーザーは、最初のユーザーとは異なる任意の認可済みユーザーでなければなりません [SS94]。SODにはさまざまな種類があり、重要なものの一つが履歴ベースのSODです。これは、たとえば、同一の主体(ロール)が同一のオブジェクトに可変の回数だけアクセスすることはできない、といった規制を行います。
White Box Testing — (also known as clear box testing, glass box testing, transparent box testing, and structural testing) is a method of testing software that tests internal structures or workings of an application, as opposed to its functionality (i.e. black-box testing).
ホワイトボックステスト(White Box Testing) — (クリアボックステスト、グラスボックステスト、透過ボックステスト、構造テストとも呼ばれる)アプリケーションの機能(すなわちブラックボックステスト)ではなく、その内部構造や動作をテストするソフトウェアテストの手法。
APPENDIX B – SOD CONSTRAINTS
付録B – SoD制約
1. Static Separation of Duties
1. 静的職務分離
(Simple) Static Separation of Duties (SSSoD) A principal may not be a member of any two exclusive roles.
(単純)静的職務分離(SSSoD):主体は、排他的な2つのロールの両方に所属してはなりません。
2. Dynamic Separation of Duties
2. 動的職務分離
(Simple) Dynamic Separation of Duties (SDSoD) A principal may be a member of any two exclusive roles but must not activate them at the same time.
(単純)動的職務分離(SDSoD):主体は排他的な2つのロールに所属してもよいですが、それらを同時に有効化してはなりません。
Object-based Separation of Duties (ObjSoD) A principal may be a member of any two exclusive roles and may also activate them at the same time, but he must not act upon the same object through both.
オブジェクトベースの職務分離(ObjSoD):主体は排他的な2つのロールに所属し、同時に有効化してもよいですが、両方のロールを通じて同じオブジェクトに対して操作してはなりません。
Operational Separation of Duties (OpSoD) A principal may be a member of some exclusive roles as long as the set of authorizations acquired over these roles does not cover an entire workflow.
運用上の職務分離(OpSoD):これらのロールを通じて取得する認可の集合がワークフロー全体を網羅しない限り、主体はいくつかの排他的なロールに所属してもよいです。
History-based Separation of Duties (HistSoD)
履歴ベースの職務分離(HistSoD)
A principal may be a member of some exclusive roles and the complete set of authorizations acquired over these roles may cover an entire workflow, but a principal must not use all authorizations on the same object(s). [SLS06]
主体は複数の排他的ロールのメンバーであってよく、それらのロールを通じて獲得した認可の全体がワークフロー全体を網羅してもよいですが、主体は同一のオブジェクトに対してすべての認可を使用してはなりません。[SLS06]
REFERENCES
参考文献
[ACTS] Automated Combinatorial testing for Software (ACTS) [Website], National Institute of Standards and Technology. Available at: http://csrc.nist.gov/groups/SNS/acts/index.html.
[ACTS] Automated Combinatorial testing for Software (ACTS) [Website], National Institute of Standards and Technology. 入手先:http://csrc.nist.gov/groups/SNS/acts/index.html.
[AF08] R. Abassi, S. Fatmi, “An Automated Validation Method for Security Policies: the firewall case,” The 4th Int. Conf. on Information Assurance and Security, 2008, pp. 291-294. https://doi.org/10.1109/IAS.2008.52.
[AF08] R. Abassi, S. Fatmi, “An Automated Validation Method for Security Policies: the firewall case,” The 4th Int. Conf. on Information Assurance and Security, 2008年, pp. 291-294. https://doi.org/10.1109/IAS.2008.52.
[AS15] M. Aqib, R. A. Shaikh, “Analysis and Comparison of Access Control Policies Validation Mechanisms,” International Journal of Computer Network and Information Security, 2015, 1, 54-69. https://doi.org/10.5815/ijcnis.2015.01.08.
[AS15] M. Aqib, R. A. Shaikh, “Analysis and Comparison of Access Control Policies Validation Mechanisms,” International Journal of Computer Network and Information Security, 2015年, 1, 54-69. https://doi.org/10.5815/ijcnis.2015.01.08.
[BL73] D.E. Bell, and L.J. LaPadula, Secure Computer Systems: Mathematical Foundations and Model, M74-244, MITRE Corp., Bedford, Mass., 1973 (also available as DTIC AS-771543). Available at: http://www-personal.umich.edu/~cja/LPS12b/refs/belllapadula1.pdf.
[BL73] D.E. Bell および L.J. LaPadula, Secure Computer Systems: Mathematical Foundations and Model, M74-244, MITRE Corp., Bedford, Mass., 1973年(DTIC AS-771543 としても入手可能)。入手先:http://www-personal.umich.edu/~cja/LPS12b/refs/belllapadula1.pdf.
[CFMYZ93] E. Clarke, M. Fujita, P. McGeer, J. Yang, and X. Zhao, “Multi-terminal binary decision diagrams: An efficient data structure for matrix representation,” International Workshop on Logic Synthesis, 1993.Available at: http://repository.cmu.edu/cgi/viewcontent.cgi?article=1456&context=compsci.
[CFMYZ93] E. Clarke, M. Fujita, P. McGeer, J. Yang, and X. Zhao, “Multi-terminal binary decision diagrams: An efficient data structure for matrix representation,” International Workshop on Logic Synthesis, 1993. 入手先:http://repository.cmu.edu/cgi/viewcontent.cgi?article=1456&context=compsci.
[Fisler et al 05] K. Fisler, S. Krishnamurthi, L. A. Meyerovich, and M. C. Tschantz, “Verification and Change Impact Analysis of Access Control Policies,” Proceeding, 27th International Conference on Software Engineering (ICSE’05), pp. 196-205, ACM, New York, NY, 2005. https://doi.org/10.1145/1062455.1062502.
[Fisler et al 05] K. Fisler, S. Krishnamurthi, L. A. Meyerovich および M. C. Tschantz, “Verification and Change Impact Analysis of Access Control Policies,” Proceeding, 27th International Conference on Software Engineering (ICSE’05), pp. 196-205, ACM, New York, NY, 2005年. https://doi.org/10.1145/1062455.1062502.
[Gallier87] J. H. Gallier, Logic for Computer Science: Foundations of Automatic Theorem Proving, ch. 10, pp. 448–476, Wiley, 1987.
[Gallier87] J. H. Gallier, Logic for Computer Science: Foundations of Automatic Theorem Proving, 第10章, pp. 448–476, Wiley, 1987年.
[GMH14] A. Gouglidis, I. Mavridis, V. Hu, “Security policy verification for multi-domains in Cloud systems,” International Journal of Information Security (IJIS13) 13(2), pp. 97-111, April 2014. https://doi.org/10.1007/s10207-013-0205-x.
[GMH14] A. Gouglidis, I. Mavridis, V. Hu, “Security policy verification for multi-domains in Cloud systems,” International Journal of Information Security (IJIS13) 13(2), pp. 97-111, 2014年4月. https://doi.org/10.1007/s10207-013-0205-x.
[HHX12] J. Hwang, V. Hu, and T. Xie, “Paradigm in Verification of Access Control,” Position paper, Workshop on Metrics and Standards for Software Testing, NIST Gaithersburg, Maryland, June 20, 2012. https://doi.org/10.1109/SERE-C.2012.14.
[HHX12] J. Hwang, V. Hu, and T. Xie, “Paradigm in Verification of Access Control,” Position paper, Workshop on Metrics and Standards for Software Testing, NIST Gaithersburg, Maryland, 2012年6月20日. https://doi.org/10.1109/SERE-C.2012.14.
[HKX08] V.C. Hu, D.R. Kuhn, and T. Xie, “Property Verification for Generic Access Control Models,” in Proceeding of The 2008 IEEE/IFIP International Symposium on Trust, Security and Privacy for Pervasive Application (TSP2008), Shanghai, China, December 17-20 2008. https://doi.org/10.1109/EUC.2008.22.
[HKX08] V.C. Hu, D.R. Kuhn および T. Xie, “Property Verification for Generic Access Control Models,” Proceeding of The 2008 IEEE/IFIP International Symposium on Trust, Security and Privacy for Pervasive Application (TSP2008) 所収, 中国・上海, 2008年12月17~20日. https://doi.org/10.1109/EUC.2008.22.
[HKXH11] V. Hu, R. Kuhn, T. Xie, and J. Hwang, “Model Checking for Verification of Mandatory Access Control Models and Properties,” International Journal of Software Engineering and Knowledge Engineering (IJSEKE) 21(1), February 2011. https://doi.org/10.1142/S021819401100513X.
[HKXH11] V. Hu, R. Kuhn, T. Xie, および J. Hwang, “Model Checking for Verification of Mandatory Access Control Models and Properties,” International Journal of Software Engineering and Knowledge Engineering (IJSEKE) 21(1), 2011年2月. https://doi.org/10.1142/S021819401100513X.
[Kuhn11] D.R. Kuhn, “Vulnerability hierarchies in access control configurations,” 4th Symposium on Configuration Analytics and Automation (SAFECONFIG 2011), pp. 1-9, December 2011. https://doi.org/10.1109/SafeConfig.2011.6111679.
[Kuhn11] D.R. Kuhn, “Vulnerability hierarchies in access control configurations,” 4th Symposium on Configuration Analytics and Automation (SAFECONFIG 2011), pp. 1-9, 2011年12月. https://doi.org/10.1109/SafeConfig.2011.6111679.
[Hu02] V.C. Hu, The Policy Machine For Universal Access Control, Dissertation, Computer Science Department, University of Idaho, Idaho, 2002.
[Hu02] V. C. Hu、『ユニバーサルアクセス制御のためのポリシーマシン』、博士論文、アイダホ大学コンピュータサイエンス学科、アイダホ州、2002年。
[HRU76] M.A. Harrison, W.L. Ruzzo, and J.D. Ullman, “Protection in Operating Systems,” Communications of the ACM 19(8), pp. 461-471, August 1976.
[HRU76] M.A. Harrison、W.L. Ruzzo、J.D. Ullman、“Protection in Operating Systems,” Communications of the ACM 19(8), 461–471頁、1976年8月。
https://doi.org/10.1145/360303.360333.
https://doi.org/10.1145/360303.360333。
[HS13] V. Hu and K. Scarfone, “Real-Time Access Control Rule Fault Detection Using a Simulated Logic Circuit,” Proceeding, 2013 ASE/IEEE International Conference on Privacy, Security, Risk and Trust, Washington D.C., September 8-14, 2013, pp. 494-501. https://doi.org/10.1109/SocialCom.2013.76.
[HS13] V. Hu および K. Scarfone, “Real-Time Access Control Rule Fault Detection Using a Simulated Logic Circuit,” Proceeding, 2013 ASE/IEEE International Conference on Privacy, Security, Risk and Trust, Washington D.C., 2013年9月8~14日, pp. 494-501. https://doi.org/10.1109/SocialCom.2013.76.
[HXHA10] J. Hwang, T. Xie, V. Hu, and M. Altunay, “Mining Likely Properties of Access Control Policies via Association Rule Mining,” DBSec 2010: Data and Applications Security and Privacy XXIV: 24th Annual IFIP WG 11.3 Working Conference, Rome, Italy, June 21-23, 2010, Proceedings, Lecture Notes in Computer Science 6166, Springer: Berlin, pp. 193-208. https://doi.org/10.1007/978-3-642-13739-6_13.
[HXHA10] J. Hwang, T. Xie, V. Hu および M. Altunay, “Mining Likely Properties of Access Control Policies via Association Rule Mining,” DBSec 2010: Data and Applications Security and Privacy XXIV: 24th Annual IFIP WG 11.3 Working Conference, Rome, Italy, June 21-23, 2010, Proceedings, Lecture Notes in Computer Science 6166, Springer: Berlin, pp. 193-208. https://doi.org/10.1007/978-3-642-13739-6_13.
[HXHAS10] J. Hwang, T. Xie, V. Hu, and M. Altunay, “ACPT: A Tool for Modeling and Verifying Access Control Policies,” Proceedings of the IEEE International Symposium on Policies for Distributed Systems and Networks (POLICY 2010), System Demo, George Mason University, Fairfax, Virginia, USA, July 21-23, 2010, pp. 40-43. https://doi.org/10.1109/POLICY.2010.22.
[HXHAS10] J. Hwang, T. Xie, V. Hu および M. Altunay, “ACPT: A Tool for Modeling and Verifying Access Control Policies,” Proceedings of the IEEE International Symposium on Policies for Distributed Systems and Networks (POLICY 2010), System Demo, George Mason University, 米国バージニア州フェアファックス, 2010年7月21~23日, pp. 40-43. https://doi.org/10.1109/POLICY.2010.22.
[MX07] E. Martin and T. Xie, “A Fault Model and Mutation Testing of Access Control Policies,” Proceedings of the 16th International Conference on World Wide Web (WWW 2007), Security, Privacy, Reliability, and Ethics Track, Banff, Alberta, Canada, May 2007, pp. 667-676. https://doi.org/10.1145/1242572.1242663.
[MX07] E. Martin および T. Xie, “A Fault Model and Mutation Testing of Access Control Policies,” Proceedings of the 16th International Conference on World Wide Web (WWW 2007), Security, Privacy, Reliability, and Ethics Track, カナダ・アルバータ州バンフ, 2007年5月, pp. 667-676. https://doi.org/10.1145/1242572.1242663.
[KTAK07] S. Kikuchi, S. Tsuchiya, M. Adachi, and T. Katsuyama, “Policy Verification and Validation Framework Based on Model Checking Approach,” Fourth International Conference on Autonomic Computing, 2007 (ICAC ’07), Jacksonville, Florida, USA, June 11-15, 2007, pp. 1–9.
[KTAK07] S. Kikuchi、S. Tsuchiya、M. Adachi、T. Katsuyama、“Policy Verification and Validation Framework Based on Model Checking Approach,” Fourth International Conference on Autonomic Computing, 2007 (ICAC ’07), Jacksonville, Florida, USA, June 11-15, 2007, 1–9頁。
https://doi.org/10.1109/ICAC.2007.31.
https://doi.org/10.1109/ICAC.2007.31。
[KHFKL16] D.R. Kuhn, V.C. Hu, D.F. Ferraiolo, R.N. Kacker, and L. Yu, “Pseudo-exhaustive Testing of Attribute Based Access Control Rules,” Fifth International Workshop on Combinatorial Testing (IWCT 2016), April 13, 2015, Graz, Austria, pp. 51-58. https://doi.org/10.1109/ICSTW.2016.35.
[KHFKL16] D.R. Kuhn, V.C. Hu, D.F. Ferraiolo, R.N. Kacker および L. Yu, “Pseudo-exhaustive Testing of Attribute Based Access Control Rules,” Fifth International Workshop on Combinatorial Testing (IWCT 2016), 2015年4月13日, オーストリア・グラーツ, pp. 51-58. https://doi.org/10.1109/ICSTW.2016.35.
[MARGRAVE] The Margrave Policy Analyzer [Website], available at: http://www.margrave-tool.org/.
[MARGRAVE] The Margrave Policy Analyzer [ウェブサイト], 入手先:http://www.margrave-tool.org/.
[MOHAWK] Mohawk: Automatic Verification of Access-Control Policies [Website], available at: http://kjayaram.mysite.syr.edu/Mohawk.html.
[MOHAWK] Mohawk: Automatic Verification of Access-Control Policies [ウェブサイト], 入手先:http://kjayaram.mysite.syr.edu/Mohawk.html.
[NIST-IR-7316] V.C. Hu, D.F. Ferraiolo, D.R. Kuhn, Assessment of Access Control Systems, NIST Interagency Report 7316, National Institute of Standards and Technology, Gaithersburg, Maryland, September 2006. https://doi.org/10.6028/NIST.IR.7316.
[NIST-IR-7316] V.C. Hu, D.F. Ferraiolo, D.R. Kuhn, Assessment of Access Control Systems, NIST Interagency Report 7316, National Institute of Standards and Technology, メリーランド州ゲイサーズバーグ, 2006年9月. https://doi.org/10.6028/NIST.IR.7316.
[NIST-IR-7874] V.C. Hu and K. Scarfone, Guidelines for Access Control System Evaluation Metrics, NIST Interagency Report 7874, National Institute of Standards and Technology, Gaithersburg, Maryland, September 2012. https://doi.org/10.6028/NIST.IR.7874.
[NIST-IR-7874] V.C. Hu および K. Scarfone, Guidelines for Access Control System Evaluation Metrics, NIST Interagency Report 7874, National Institute of Standards and Technology, メリーランド州ゲイサーズバーグ, 2012年9月. https://doi.org/10.6028/NIST.IR.7874.
[NIST-SP-162] V.C. Hu, D. Ferraiolo, R. Kuhn, A. Schnitzer, K. Sandlin, R. Miller, and K. Scarfone, Guide to Attribute Based Access Control (ABAC) Definition and Considerations, NIST Special Publication 800-162, National Institute of Standards and Technology, Gaithersburg, Maryland, January 2014. https://doi.org/10.6028/NIST.SP.800-162.
[NIST-SP-162] V.C. Hu、D. Ferraiolo、R. Kuhn、A. Schnitzer、K. Sandlin、R. Miller、およびK. Scarfone, Guide to Attribute Based Access Control (ABAC) Definition and Considerations, NIST Special Publication 800-162, National Institute of Standards and Technology, Gaithersburg, Maryland, January 2014. https://doi.org/10.6028/NIST.SP.800-162.
Scarfone, Guide to Attribute Based Access Control (ABAC) Definition and Considerations, NIST Special Publication 800-162, National Institute of Standards and Technology, Gaithersburg, Maryland, January 2014. https://doi.org/10.6028/NIST.SP.800-162.
Scarfone、『属性ベースアクセス制御(ABAC)の定義と検討事項のガイド』、NIST特別刊行物800-162、米国国立標準技術研究所、メリーランド州ゲイサーズバーグ、2014年1月。https://doi.org/10.6028/NIST.SP.800-162。
[NuSMV] R. Cavada, A. Cimatti, G. Keighren, E. Olivetti, M. Pistore, and M. Roveri, NuSMV 2.6 Tutorial, FBK-irst. Available at: http://nusmv.fbk.eu/NuSMV/tutorial/v26/tutorial.pdf.
[NuSMV] R. Cavada, A. Cimatti, G. Keighren, E. Olivetti, M. Pistore, and M. Roveri, NuSMV 2.6 Tutorial, FBK-irst. 入手先:http://nusmv.fbk.eu/NuSMV/tutorial/v26/tutorial.pdf.
[NuSMV-M] NuSMV: a new symbolic model checker [Website], available at:
[NuSMV-M] NuSMV: a new symbolic model checker [Website]、入手先:
http://nusmv.fbk.eu/.
http://nusmv.fbk.eu/。
[PST96] B. Potter, J. Sinclair, and D. Till, An Introduction to Formal Specification and Z, Second Edition, Prentice Hall: Saddle River, New Jersey, 1996.
[PST96] B. Potter、J. Sinclair、D. Till、『形式仕様記述とZ入門』第2版、Prentice Hall、ニュージャージー州サドルリバー、1996年。
[SLS06] A. Schaad, V. Lotz, and K. Sohr, “A Model-checking Approach to Analyzing Organizational Controls in a Loan Origination Process,” Proceedings of the 11th ACM Symposium on Access Control Models and Technologies, Lake Tahoe, California, June 7-9, 2006, pp. 139-149. https://doi.org/10.1145/1133058.1133079.
[SLS06] A. Schaad, V. Lotz, and K. Sohr, “A Model-checking Approach to Analyzing Organizational Controls in a Loan Origination Process,” Proceedings of the 11th ACM Symposium on Access Control Models and Technologies, Lake Tahoe, California, 2006年6月7~9日, pp. 139-149. https://doi.org/10.1145/1133058.1133079.
[SND13] S. Saghafi, T. Nelson, D. J. Dougherty, “Geometric Logic for Policy Analysis,” International Workshop on Automated Reasoning in Security and Software Verification, 2013, pp. 1-9. Available at: http://web.cs.wpi.edu/~tn/publications/snd-arsec13-geometric.pdf.
[SND13] S. Saghafi, T. Nelson, D. J. Dougherty, “Geometric Logic for Policy Analysis,” International Workshop on Automated Reasoning in Security and Software Verification, 2013, pp. 1-9. 入手先: http://web.cs.wpi.edu/~tn/publications/snd-arsec13-geometric.pdf.
[SS94] R.S. Sandhu., and P Samarati, “Access Control: Principles and Practice,” IEEE Communications Magazine 32(9), September 1994, pp. 40-48.
[SS94] R.S. Sandhu., and P Samarati、“Access Control: Principles and Practice,” IEEE Communications Magazine 32(9), 1994年9月、40–48頁。
https://doi.org/10.1109/35.312842.
https://doi.org/10.1109/35.312842。
[XACML] XACML resources [Website], OASIS. Available at: http://docs.oasis-open.org/xacml/.
[XACML] XACML resources[ウェブサイト], OASIS. 入手先:http://docs.oasis-open.org/xacml/.























![Figure 32 Solving for Relational Expressions. The ACPT window (ABAC Policy tab) with Policy Input emp & age > 18; & (fa | emt | med). Test Results shows #Grant Results, the header #age > 18;, emp, emt, fa, med and three rows: Grant: age: [19 to 100] , 1, 1, 0, 0 (age > 18; & emp & emt); Grant: age: [19 to 100] , 1, 0, 1, 0 (age > 18; & emp & fa); Grant: age: [19 to 100] , 1, 0, 0, 1 (age > 18; & emp & med). Below are #Deny Results with the same header and a partly visible list. The Log shows Inverted (DNF -> Not -> to CNF) (~R):, ((!e0 | !emp | !emt) & (!e0 | !emp | !fa) & (!e0 | !emp | !med)) and Were Relations Feasible: TRUE.](assets/192/p0060-figure-01.png)