home *** CD-ROM | disk | FTP | other *** search
/ Hackers Toolkit v2.0 / Hackers_Toolkit_v2.0.iso / HTML / archive / Rainbow / ncsc / norangencsc.txt < prev    next >
Text File  |  1999-11-04  |  87KB  |  1,918 lines

  1.  
  2.  
  3.  
  4.  
  5.                                                  NCSC-TG-003
  6.                                                    VERSION-1
  7.  
  8.  
  9.  
  10.  
  11.               NATIONAL COMPUTER SECURITY CENTER
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.                          A GUIDE TO
  20.                        UNDERSTANDING
  21.                        DISCRETIONARY
  22.                        ACCESS CONTROL
  23.                             IN
  24.                       TRUSTED SYSTEMS
  25.  
  26.  
  27.  
  28.  
  29.                       30 September 1987
  30.  
  31.  
  32.  
  33.               Approved for Public Release:
  34.               Distribution Unlimited.
  35.  
  36.  
  37.  
  38.         NATIONAL COMPUTER SECURITY CENTER
  39.     FORT GEORGE G. MEADE, MARYLAND 20755-6000
  40.  
  41.  
  42.  
  43.                                                            NCSC-TG-003-87
  44.                                                         Library No. S-228,576
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.                                   FOREWORD
  52.  
  53.  
  54. This publication, "A Guide to Understanding Discretionary Access Control In
  55. Trusted Systems," is issued by the National Computer Security Center (NCSC)
  56. under the authority of and in accordance with Department of Defense (DoD)
  57. Directive 5215.1, "Computer Security Evaluation Center." The guidelines
  58. defined in this document are intended to be used by computer hardware and
  59. software designers who are building systems with the intent of meeting the
  60. requirements of the Department of Defense Trusted Computer System Evaluation
  61. Criteria, DoD 5200.28-STD.
  62.  
  63. Recommendations for revision to this publication are encouraged and will be
  64. reviewed biannually by the NCSC through a formal review process.  Address all
  65. proposals for revision through appropriate channels to:
  66.  
  67.          National Computer Security Center
  68.          9800 Savage Road
  69.          Fort George G. Meade, MD 20755-6000
  70.  
  71.          Attention: Chief, Technical Guidelines Division
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83. Patrick R. Gallagher, Jr.                                  30 September 1987
  84. Director
  85. National Computer Security Center
  86.  
  87.  
  88.                                 i
  89.  
  90.                          ACKNOWLEDGEMENTS
  91.  
  92.  
  93. Special recognition and acknowledgement for their contributions to this
  94. document are extended to the following:
  95.  
  96. Carole S.  Jordan, National Computer Security Center (NCSC), as primary author
  97. and preparer of this document.  Dr.  Deborah Downs, the Aerospace Corporation,
  98. who prepared an in-depth technical report on DAC mechanisms that became the
  99. major input to this document.  Grant Wagner and Steve LaFountain, NCSC, who
  100. contributed their technical expertise and assistance throughout this effort.
  101. Dr.  Dixie B.  Baker, the Aerospace Corporation, who meticulously reviewed the
  102. document and suggested many changes.
  103.  
  104. Special thanks are extended to the many computer vendor representatives who
  105. enthusiastically gave of their time and technical expertise in reviewing the
  106. material and providing valuable comments and suggested changes.  Among the
  107. vendor representatives who were so helpful were: Steven B.  Lipner, Digital
  108. Equipment Corp., Dr.  Roger Schell, Gemini Computers, Earl Boebert, Honeywell,
  109. Inc., and C.T.  Bougas, Harris Corporation.
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.                         ii
  140.  
  141.                                Contents
  142.                                                             Page
  143. FOREWORD...................................................................  i
  144. ACKNOWLEDGEMENTS..........................................................  ii
  145.  
  146.  
  147. 1.  INTRODUCTION.............................................................1.
  148. 2.  PURPOSE................................................................  1
  149. 3.  SCOPE..................................................................  1
  150. 4.  CONTROL................................................................  2
  151. 5.  DEFINITIONS............................................................  3
  152. 6.  AN INHERENT DEFICIENCY IN DISCRETIONARY ACCESS CONTROL.................  5
  153.      6.1 A FUNDAMENTAL FLAW IN DISCRETIONARY ACCESS CONTROL................  5
  154.      6.2 AN EXAMPLE OF A TROJAN HORSE......................................  5
  155. 7.  AN OVERVIEW OF DAC MECHANISMS..........................................  7
  156.      7.1 CAPABILITIES....................................................... 7
  157.      7.2 PROFILES..........................................................  8
  158.      7.3 ACCESS CONTROL LISTS (ACLs).......................................  9
  159.             7.3.1 WILD CARDS...............................................  9
  160.             7.3.2 DEFAULT ACLs............................................. 10
  161.             7.3.3 NAMED ACLs..............................................  10
  162.      7.4 PROTECTION BITS................................................... 11
  163.      7.5 PASSWORD DAC MECHANISMS..........................................  11
  164.      7.6 SUMMARY........................................................... 12
  165. 8.  THE SET OF DAC ACCESS TYPES............................................ 13
  166.      8.1 CONTROL PERMISSIONS............................................... 13
  167.             8.1.1 CONTROL MODELS..........................................  13
  168.                   8.1.1.1 HIERARCHICAL..................................... 13
  169.                   8.1.1.2 CONCEPT OF OWNERSHIP............................  14
  170.                   8.1.1.3 LAISSEZ-FAIRE.................................... 15
  171.                   8.1.1.4 CENTRALIZED.....................................  15
  172.             8.1.2 FILE STRUCTURES AND CONTROL PERMISSIONS.................. 15
  173.       8.2 ACCESS MODES....................................................  16
  174.             8.2.1 FILE STRUCTURES AND ACCESS MODES......................... 17
  175. 9.  MEETING THE CRITERIA REQUIREMENTS.......................................19
  176.  
  177.                                     iii
  178.                                                              Page
  179.  
  180.     9.1 THE C1 DAC REQUIREMENT............................................  19
  181.             9.1.1 MINIMUM FUNCTIONALITY...................................  19
  182.             9.1.2 FUNCTIONALITY NOT REQUIRED..............................  20
  183.             9.1.3 AN ACCEPTABLE IMPLEMENTATION............................  20
  184.      9.2 THE C2 THROUGH B2 DAC REQUIREMENT................................  20
  185.            9.2.1 MINIMUM FUNCTIONALITY..................................... 21
  186.            9.2.2 FUNCTIONALITY NOT REQUIRED...............................  21
  187.            9.2.3 AN ACCEPTABLE IMPLEMENTATION.............................. 22
  188.      9.3 THE B3 THROUGH A1 DAC REQUIREMENT................................  22
  189.            9.3.1 MINIMUM FUNCTIONALITY..................................... 23
  190.            9.3.2 AN ACCEPTABLE IMPLEMENTATION.............................  23 
  191. 10.  OTHER TOPICS.........................................................  25
  192.  
  193.      10.1 PROTECTED SUBSYSTEMS............................................. 25
  194.      10.2 ADMINISTERING AND USING DAC...................................... 25
  195.      10.3 AUDITING DAC..................................................... 26
  196.      10.4 VERIFYING DAC...................................................  26
  197.      10.5 DAC ADD-ONS...................................................... 27
  198. 11.  SUMMARY OF DESIRED DAC FEATURES........................................28
  199. 12.  REFERENCES..........................................................   29
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.                                      iv
  225.  1.  INTRODUCTION 
  226.  
  227. The main goal of the National Computer Security Center is to encourage the
  228. widespread availability of trusted computer systems.  In support of that goal
  229. a metric was created, the Department of Defense Trusted Computer System
  230. Evaluation Criteria (the Criteria) Il], against which computer systems could
  231. be evaluated for security.
  232.  
  233. 2. PURPOSE
  234.  
  235.  
  236. One of the features of the Criteria that is required of a secure system is the
  237. enforcement of discretionary access control (DAC).  DAC is a means of
  238. restricting access to objects based on the identity of subjects and/or groups
  239. to which they belong.  The controls are discretionary in the sense that a user
  240. or process given discretionary access to information is capable of passing
  241. that information along to another subject.  This guide discusses issues
  242. involved in designing, implementing and evaluating DAC mechanisms.  Its
  243. primary purpose is to provide guidance to manufacturers on how to select and
  244. build effective DAC mechanisms.  Any examples of DAC mechanisms in this
  245. document are not to be construed as the only implementations that will satisfy
  246. the Criteria requirement.  The examples are merely suggestions of appropriate
  247. implementations.  The Criteria is the only metric against which systems are to
  248. be evaluated.  In addition to showing examples of DAC mechanisms, this guide
  249. will restate and elaborate on the Criteria requirements for DAC.  This guide
  250. is part of an on-going program to augment the Criteria on the issues and
  251. features it addresses.
  252.  
  253. 3. SCOPE
  254.  
  255.  
  256. The guidelines and interpretations established in this document apply to the
  257. discretionary access control requirements as expressed in the Criteria.  The
  258. recommendations apply to computer systems and products that are being built or
  259. modified with the intention of meeting the requirements of the Criteria.
  260.  
  261. 4. CONTROL OBJECTIVES
  262.  
  263. The term ``control objective'' refers to a statement of intent with respect to
  264. control over some aspect of an organization's resources or processes.  In
  265. terms of a computer system, control objectives provide a framework for
  266. developing a strategy for fulfilling a set of security requirements.  In
  267. particular, a given system can only be said to be secure with respect to its
  268. enforcement of some specific policy [2].  The control objective for security
  269. policy is as follows:
  270.  
  271.     "The security policy is a statement of intent with regard to control over
  272.     access to, dissemination of, and modification of information.  The
  273.     security policy must be precisely defined and implemented for each system
  274.     that is used to process sensitive information.  The security policy must
  275.     accurately reflect the laws, regulations, and general policies from which
  276.     it is derived.''
  277.  
  278. Discretionary control is the most common type of access control mechanism
  279. implemented in computer systems today.  The basis of this kind of security is
  280. that an individual user, or program operating on the user's behalf, is allowed
  281. to specify explicitly the types of access other users (or programs executing
  282. on their behalf) may have to information under the user's control.
  283. Discretionary security differs from mandatory security in that it implements
  284. the access control decisions of the user.  Mandatory controls are driven by
  285. the results of a comparison between the user's trust level or clearance and
  286. the sensitivity designation of the information.
  287.  
  288. Discretionary controls are not a replacement for mandatory controls.  In any
  289. environment in which information is protected, discretionary security provides
  290. for a finer granularity of control within the overall constraints of the
  291. mandatory policy.  Both discretionary and mandatory controls can be used to
  292. implement an access control policy to handle multiple categories or types of
  293. information, such as proprietary, financial, personnel or classified
  294. information.  Such information can be assigned different sensitivity
  295. designations and those designations enforced by the mandatory controls.
  296. Discretionary controls can give a user the discretion to specify the types of
  297. access other users may have to information under the user's control,
  298. consistent with the overriding mandatory policy restrictions.  In a classified
  299. environment, no person may have access to classified information unless: (a)
  300. that person has been determined to be trustworthy, i.e., granted a personnel
  301. security clearance - MANDATORY, and (b) access is necessary for the
  302. performance of official duties, i.e., determined to have need-to-know -
  303. DISCRETIONARY.  The discretionary security control objective is:
  304.  
  305.     Security policies defined for systems that are used to process classified
  306.     or other sensitive information must include provisions for the enforcement
  307.     of discretionary access control rules.  That is, they must include a
  308.     consistent set of rules for controlling and limiting access based on
  309.     identified users who have been determined to have need-to-know for the
  310.     information.
  311.  
  312.     
  313.  
  314.  
  315.  
  316.  
  317.  
  318.                                 2
  319.  5. DEFINITIONS
  320.  
  321. Discretionary Access Control (DAC)-The Criteria defines discretionary access
  322. control as:
  323.  
  324.     ``A means of restricting access to objects based on the identity of
  325.     `subjects and/or groups to which they belong.  The controls are
  326.     `discretionary in the sense that a subject with a certain access
  327.     `permission is capable of passing that permission (perhaps indirectly) on
  328.     `to any other subject."
  329.  
  330. DAC controls are used to restrict a user's access to protected objects on the
  331. system.  The user may also be restricted to a subset of the possible access
  332. types available for those protected objects.  Access types are the operations
  333. a user may perform on a particular object (e.g., read, write, execute).
  334. Typically, for each object, a particular user or set of users has the
  335. authority to distribute and revoke access to that object.  Users may grant or
  336. rescind access to the objects they control based on "need to know" or "whom do
  337. I' like" or other rules.  DAC mechanisms control access based entirely on the
  338. identities of users and objects.
  339.  
  340. The identity of the users and objects is the key to discretionary access
  341. control.  This concept is relatively straightforward in that the access
  342. control matrix, defined below, contains the names of users on the rows and the
  343. names of objects on the columns.  Regardless of how the matrix is represented
  344. in memory, whether by rows or by columns, the names of the users and objects
  345. must be used in the representation.  For example, in a row-based
  346. representation an entry might read the equivalent of ``KIM can access KIMSFILE
  347. and DONSFILE".  In a column-based representation, one might find the
  348. equivalent of "DONSFILE can be accessed by DON, JOE and KIM".
  349.  
  350. Other Definitions:
  351.  
  352. access control matrix-a two-dimensional matrix representing users on the rows
  353. and objects on the columns.  Each entry in the matrix represents the access
  354. type held by that user to that object.  Access control matrices are usually
  355. sparsely populated and are represented in memory by row or by column,
  356. eliminating storage requirements for empty entries.  Sea figure 1 in Section 7
  357. for an example of an access control matrix.
  358.  
  359.  
  360. access mode-entries in the access control matrix that specify certain
  361. operations a user may perform on an object, (e.g., read, write, execute,
  362. delete).
  363.  
  364. access permission-permission of a user to access an object in some manner.
  365. Entries in the access control matrix specify access permission.  No access or
  366. ``null'' access may also be specified if desired.
  367.  
  368. control permission-a certain access mode that allows users to grant/revoke
  369. access permission> and change access modes to objects.  Sometimes this
  370. includes the ability to pass control permission to other users.
  371.  
  372. defined groups-groups which have been defined to the DAC mechanism before
  373. being used in access control decisions.  Groups are normally defined by users
  374. with special privileges, such as the system administrator.  A group should be
  375. defined by listing the identities of the members to be included in the group.
  376.  
  377.                                      3
  378.  
  379.  
  380. least privilege-this principle requires that each subject in a system be
  381. granted the most restrictive set of privileges needed for the performance of
  382. authorized tasks.  The application of this principle limits the damage that
  383. can result from accident, error, or unauthorized use.
  384.  
  385. named users-users that are uniquely identified to the TCB.  The unique
  386. identifier is to be used by the DAC mechanism to perform access control
  387. decisions.
  388.  
  389. object-a passive entity that contains or receives information.  Access to an
  390. object potentially implies access to the information it contains.  Examples of
  391. objects can be: records, blocks, pages, segments, files, directories,
  392. directory trees, and programs, as well as processors, video displays,
  393. printers, network interfaces, 1/0 ports, etc.
  394.  
  395. ownership-a concept in which one user has total control over access to an
  396. object.  A subject operating on behalf of that user is normally the creator of
  397. the object and is totally responsible for controlling access to it.
  398.  
  399. subject-an active entity, generally in the form of a process or device
  400. operating on behalf of a user that causes information to flow among objects or
  401. changes the system state.  Technically, a process/domain pair.
  402.  
  403. Trojan horse-a computer program with an apparently or actually useful function
  404. that contains additional (hidden) functions that surreptitiously exploit the
  405. legitimate authorizations of the invoking process.  An example is a program
  406. that makes a "blind copy" of a sensitive file for the creator of the Trojan
  407. horse.
  408.  
  409. Trusted Computing Base (TCB)The totality of protection mechanisms within a
  410. computer system - including hardware, firmware, and software - the combination
  411. of which is responsible for enforcing a security policy.  A TCB consists of
  412. one or more components that together enforce a unified security policy over a
  413. product or system.
  414.  
  415. *-property--A Bell-LaPadula security model rule, called the ''star*property,''
  416. that allows a subject write access to an object only if the security level of
  417. the subject is dominated by the security level of the object.  Also known as
  418. the Confinement Property.
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.                                      4
  440.  
  441.  
  442. 6. AN INHERENT DEFICIENCY IN DISCRETIONARY ACCESS CONTROL
  443.  
  444. 6.1 A FUNDAMENTAL FLAW IN DISCRETIONARY ACCESS CONTROL
  445.  
  446. Discretionary access control mechanisms restrict access to objects based
  447. solely on the identity of subjects who are trying to access them.  This basic
  448. principle of discretionary access control contains a fundamental flaw that
  449. makes it vulnerable to Trojan horses [3], [4].  On most systems, any program
  450. which runs on behalf of a user inherits the DAC access rights of that user
  451. [5].  An example of the workings of a Trojan horse will illustrate how most
  452. DAC mechanisms are vulnerable.  Reference [6] contains such an example, which
  453. is similar to the following:
  454.  
  455. 6.2 AN EXAMPLE OF A TROJAN HORSE
  456.  
  457. Consider a system where an access control list mechanism (as described in
  458. Section 7.3) is used to implement discretionary access control.  There are two
  459. users on this particular system: an honest user, DOE; and a dishonest user,
  460. DRAKE.  DOE has a data file which contains highly sensitive data; this file is
  461. known as DOESFILE.  He has diligently set the ACL to allow only himself to
  462. read the file.  No other users are authorized to access the file.  DOE is
  463. confident that no one but himself will be able to access his data file.
  464.  
  465. DRAKE is determined to gain access to DOESFILE.  He has legitimate access to
  466. the system which allows him to implement a useful utility program.  In this
  467. utility DRAKE embeds a covert function to read DOESFILE and copy the `contents
  468. into a file in DRAKE's address space called DRAKESFILE.  DRAKESFILE has an ACL
  469. associated with it that allows processes executing on DOE's behalf to write to
  470. it, while allowing DRAKE's processes to read it.
  471.  
  472. DRAKE induces DOE to execute his utility program by telling him how useful and
  473. efficient it is.  DRAKE is careful not to tell DOE about the covert function
  474. (Trojan horse) that is resident in the utility program.  DOE executes the
  475. corrupted program and it appears to perform perfectly.  However, while it is
  476. operating on DOE's behalf, it assumes his identity and thus his access rights
  477. to DOESFILE.  At this time it copies the contents of DOESFILE to DRAKESFILE.
  478. This copying takes place completely within the constraints of the DAC
  479. mechanism, and DOE is unaware of what is happening.
  480.  
  481. This example should make clear the danger of Trojan horse attacks and the
  482. inadequacy of most DAC mechanisms to protect against such attacks.  It should
  483. be noted that an elaborate DAC mechanism may provide illusory security to
  484. users who are unaware of its vulnerability to Trojan horse attacks.
  485.  
  486. Configuration management, testing, and trusted distribution should ensure that
  487. software produced by the computer system manufacturer does not contain Trojan
  488. horses, especially if the system has a high EPL rating.  However, software
  489. from other sources does not come with these assurances.  In very high threat
  490. environments, it is wise to assume that unevaluated software does contain
  491. Trojan horses.  This assumption dictates that discretionary access control not
  492. be used as the sole protection mechanism in high threat environments.
  493.  
  494. The Trojan horse threat can be reduced in systems that implement many domains
  495. or dynamic small domains for each process.  In most systems today, with only
  496. user and supervisor
  497.  
  498.                                 5
  499.  
  500.  
  501.  domains, all of the user's objects are available to a process running on that
  502. user's behalf.  If domains were created dynamically for each process, with
  503. only the necessary objects available in that domain (implementing the least
  504. privilege principle), then a Trojan horse would be limited to accessing only
  505. those objects within the domain [5], [7].
  506.  
  507. A reference monitor which implements a mandatory security policy which
  508. includes the *-property would provide robust protection against Trojan horse
  509. attacks.  The mandatory access control implementation would prevent the Trojan
  510. horse from disclosing the information to a user who is not permitted access to
  511. the information under the mandatory access rules.  Assume the same scenario as
  512. was described previously with the following changes.  The computer system now
  513. implements a mandatory security policy with two hierarchical sensitivity
  514. levels.  For the sake of simplicity, the levels are called sensitive and
  515. non-sensitive.  DOE operates at the sensitive level, and DOESFILE is
  516. sensitive.  DRAKE is not authorized to access sensitive data, so he operates
  517. at the non-sensitive level.  DRAKE is only allowed to read non-sensitive
  518. files, so DRAKESFILE is non-sensitive.  As before, DRAKE's Trojan horse
  519. program is executed by DOE.  The program takes on the sensitivity level and
  520. the identity of DOE.  Within the constraints of the mandatory and the
  521. discretionary security policies, the program reads DOESFILE.  However, when
  522. the Trojan horse tries to write the sensitive data to DRAKESFILE, the
  523. reference monitor disallows the operation.  Since the Trojan horse is now
  524. executing at the sensitive level, the program cannot be allowed to write to a
  525. non-sensitive file.  That would be a violation of the *-property [1].
  526.  
  527. This example should show the reader that discretionary access control is only
  528. effective to restrict the ``honest'' user in browsing through other users'
  529. files and preventing accidental disclosure or destruction of information.  The
  530. malicious user who is determined to gain unauthorized access to data on the
  531. computer system must be restricted by other means, such as mandatory access
  532. controls.
  533.  
  534.  
  535.  
  536.  
  537.  
  538.  
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.                                      6
  557.  
  558.  
  559. 7. AN OVERVIEW OF DAC MECHANISMS
  560.  
  561. This section presents an overview of the most commonly used DAC mechanisms.
  562. Each mechanism will be described briefly.  Section 9 explains how each of
  563. these mechanisms rates against the Criteria.
  564.  
  565. Implementing a complete DAC system requires retaining the information that is
  566. represented by the access control matrix model in some form.  An access
  567. control matrix has users represented on the rows and protected objects on the
  568. columns (see figure 1).  The entries in the matrix describe what type of
  569. access each user has to each object.  Current operating systems have attempted
  570. to represent that information using five basic mechanisms:
  571.  
  572.   1 Capabilities
  573.   2. Profiles
  574.   3. Access Control Lists (ACLs)
  575.   4. Protection Bits
  576.   5. Passwords
  577.  
  578.                            ACCESS CONTROL MATRIX
  579.  
  580.         Objects    KIMSFILE    DONSFILE    PAYROL1    PAYROL2    DOESFILE
  581.       Users:
  582.         Kim           rw          r          rw          r
  583.         Joe                       r
  584.         Don                      rw           r
  585.         Jones                                 r
  586.         Doe                                                         rw
  587.         Mgr Jim       cp         cp           c          c           c
  588.         Jan                                  rw         rw
  589.  
  590.                                   Figure 1
  591.  
  592. The access control matrix such as the example in figure 1- above, is a
  593. pictorial view of a set of users and their access permissions to a set of
  594. protected objects.  The access type ``r'' denotes read access and the access
  595. type ``w'' denotes write access.  The access type ``c'' means control
  596. permission and the access type ``cp'' means control with passing ability.  The
  597. access types are explained in Section 8.
  598.  
  599. Capabilities and profiles represent the access control matrix information by
  600. row, connecting the accessible objects to the user.  ACLs and protection bits
  601. represent the access control matrix information by column, connecting a list
  602. of users to an object.  As the balance of this section will demonstrate, ACLs
  603. are the most flexible and usable DAC mechanism that can be implemented with
  604. existing technology.
  605.  
  606. 7.1 CAPABILITIES
  607.  
  608. In a capability-based system, access to protected objects such as files is
  609. granted if the would- be accessor possesses a capability for the object.  The
  610. capability is a protected identifier that both identifies the object and
  611. specifies the access rights to be allowed to the accessor who possesses the
  612. capability.  Two fundamental properties of capabilities are that they may be
  613.  
  614.                                      7
  615.  
  616.  
  617.  passed from one accessor (subject) to another, and that the accessor who
  618. possesses capabilities may not alter or fabricate capabilities without the
  619. mediation of the operating system TCB.
  620.  
  621. Capability-based systems [8] provide dynamically changeable domains (name
  622. spaces) for processes to run in.  Ability to access an object is demonstrated
  623. when a process has a capability or ``ticket'' to the object.  The capability
  624. also contains allowable access modes (e.g., read, write, execute).  In some
  625. implementations, programs can contain capabilities or capabilities can be
  626. stored in files.  They are protected by hardware and software mechanisms or by
  627. encryption.  Capabilities can usually be passed along to other processes and
  628. can sometimes be increased or decreased in scope.
  629.  
  630. A pure capability system includes the ability for users to pass the capability
  631. to other users.  Because this ability is not controlled and capabilities can
  632. be stored, determining all the users who have access for a particular object
  633. generally is not possible.  This makes a complete DAC implementation,
  634. including revocation, very difficult.  (Revocation may not be an issue,
  635. however, since a user who has access to an object can make a copy of the
  636. information in another object.  Revoking the user's access on the original
  637. object does not revoke access to the information contained in the user's copy.
  638. After revocation, however, changes can be made to the original object without
  639. the knowledge of revoked users.) For a discussion on revokable capabilities,
  640. see Redell's paper [9].
  641.  
  642. Since capabilities implement dynamic domains they can ideally limit the
  643. objects accessible to any program.  This would limit a Trojan horse's access
  644. to only the protected objects handed to it.  At this time, few systems have
  645. been implemented with capabilities and very few, if any, have attempted to
  646. implement a complete DAC mechanism.  Some research has been conducted in
  647. restricting capabilities by overlaying a DAC mechanism [10].
  648.  
  649. Capabilities could be useful in enforcing the least privilege principle and
  650. providing dynamically changeable domains, making discretionary access controls
  651. less vulnerable to Trojan horse attacks.  However, in order to pass the class
  652. C2 and above DAC requirements, the ability for users to pass capabilities to
  653. other users must be sufficiently controlled.  There could be some design
  654. difficulties in building capability-based mechanisms to satisfy the B3 DAC
  655. requirement because of difficulty in implementing precisely defined groups
  656. [11].  Also, at class B3 it is required that users be able to specify a list
  657. of users that have permission (or do not have permission) to access each
  658. object.  Capability-based systems are row-based mechanisms and do not easily
  659. lend themselves to this function.  Deletion of an object from the system and
  660. revocation of access present yet another problem.  The problem is that
  661. row-based systems do not provide an efficient means of determining which users
  662. have access to a given object.
  663.  
  664. 7.2 PROFILES
  665.  
  666. Profiles [12], which have been implemented in some form on several systems,
  667. use a list of protected objects associated with each user.  Since object names
  668. are not consistent or amenable to grouping, their size and number are
  669. difficult to reduce.  If a user has access to many protected objects, the
  670. profile can get very large and difficult to manage.  Also, all protected
  671. object names must be unique so full pathnames must be used.  Creating,
  672. deleting and changing access to protected objects requires many operations
  673. since multiple users' profiles must be updated.  Timely revocation of access
  674. to an object is very difficult unless the user's profile is automatically
  675. checked each time the object is accessed.  Deleting an object
  676.  
  677.                                      8
  678.  
  679.  
  680. may require some method of determining every user who has the object in his
  681. profile.  In general, with profiles as with capabilities, answering the
  682. question of who has access to a protected object is very difficult.  Since
  683. this is usually an important question in a secure system and more efficient
  684. mechanisms exist, profiles are not a recommended implementation of DAC.
  685.  
  686. 7.3 ACCESS CONTROL LISTS (ACLs)
  687.  
  688. ACLs allow any particular user to be allowed or disallowed access to a
  689. particular protected object.  They implement the access control matrix by
  690. representing the columns as lists of users attached to the protected objects.
  691. The lists do not have to be excessively long if groups and wild cards (see
  692. below) are used.  The use of groups raises the possibility of conflicts
  693. between group and individual user.  As an example, the ACL entries "PAYROL rw"
  694. and "Jones.PAYROL r" appear to conflict, but can be resolved in the design of
  695. the DAC mechanism.  The Apollo system has a multiple, hierarchical group
  696. mechanism.  The ACL entry has the form ``user-id.group.organization .node." As
  697. in Multics, if the ACL specifies access rights for the user by user-id then
  698. group access rights are ignored.  This allows a particular user to be excluded
  699. or restricted in access rights [13].  In the Apollo, if a user is not on the
  700. ACL by user-id, but is a member of a group, those rights are used and
  701. organization and node memberships are not examined.  Multiple group mechanisms
  702. add more complexity and may facilitate administrative control of a system, but
  703. do not affect the utility of a DAC mechanism.
  704.  
  705. Access to ACLs should be protected just as other objects are protected.  The
  706. creation of groups must be controlled, since becoming a member of a group can
  707. change the objects accessible to any member.  In many systems, e.g., Multics
  708. [14], a user must be a member of at least one group.  One detriment of the
  709. group mechanism is that changing the members of a group results in changes to
  710. an unknown set of ACLs for protected objects.  Allocation of groups could be a
  711. Systems Administrator function only, or it could be distributed to a Project
  712. Administrator type function.  Problems could result from allowing any user to
  713. create a group and then be "owner'' of that group.  If users were prohibited
  714. from listing the members of groups they are not in because of covert channels
  715. and privacy, it would be difficult to determine if a group was the correct one
  716. to use.  System or Project Administrator control is a preferred mechanism.
  717.  
  718. 7.3.1 Wild Cards
  719.  
  720. A wild card mechanism allows a string replacement where the wild card is
  721. specified.  For example, in the Multics system ```PAYROL rw'' gives read and
  722. write access to any user in the PAYROL group.  ``Smith.* r'' gives Smith read
  723. access, no matter what group the user Smith belongs to.  ``*.*'' gives any
  724. user access.  The group and wild card mechanisms allow the ACL list to be kept
  725. to a reasonable size.  The use of wild cards raises the possibility of
  726. conflicts if a user has multiple ACL entries for an object.  In the above
  727. example, Smith has a possible conflict; as a member of any group he can read
  728. and as a member of the PAYROL group he can read and write.  The system must
  729. make a decision as to which one of the ACL entries it will apply when granting
  730. Smith access to the object.  Various systems have different rules for
  731. resolving conflicts.  One approach might be to have the system enforce an
  732. ordering of the ACLs.  Another approach might be to allow ordering of the ACLs
  733. by the users.  
  734.  
  735.                                      9
  736.  
  737.  
  738. In any case, the users must understand the rules in order to create effective
  739. ACL entries.  A wild card mechanism adds more complexity, but does not affect
  740. the utility of a DAC mechanism.  An exclusion capability, which allows a group
  741. to be specified with certain members to be excluded, is also useful and is
  742. required at class B3 and above.
  743.  
  744. 7.3.2 Default ACLs
  745.  
  746. There are many side issues in the implementation of access control lists.
  747. Default ACLs are usually necessary for the user friendliness of the DAC
  748. mechanism.  At the very least, when an object is created by a user, the user
  749. should be placed on its ACL by default.  Some of the other possible default
  750. mechanisms include a system-wide default, a user-associated default or if the
  751. file structure is a tree, a default associated with the directory.
  752.  
  753. A system-wide default could be used as the default in cases where no other
  754. default had been specified.  A system-wide default might give access only to
  755. the creating user.  A user-associated default might work well on a system with
  756. a flat file structure.  When a user is first entered on the system, his
  757. default ACL would have to be specified.
  758.  
  759. For file structures that are trees, a default(s) associated with the directory
  760. could be most efficient.  If the user organizes the directory structure to
  761. represent project work or areas of interest, then the ACLs for all objects in
  762. a sub-tree would be similar.  One default ACL in the directory would be for
  763. children that are files.  For children that are directories either a separate
  764. sub-directory default ACL should be specified or the default ACLs should have
  765. to be stated explicitly by the user.  Otherwise, unless care is taken, those
  766. with access to the root sections of the storage hierarchy could by automatic
  767. default get access to all of the storage hierarchy.  The overriding principle
  768. of least privilege implies that the use of defaults should not inadvertently
  769. give away more access than the user intended.  In other words, to err on the
  770. conservative side is preferred.  In all implementations some user(s) must have
  771. permission to change the ACLs after they have been set by default, and the
  772. ability to change the defaults is very useful.  Defaults can be implemented in
  773. two ways: they can be copied to the ACL or they can be pointed to by the ACL.
  774. If they are copied, then changes to the default will not affect the ACL;
  775. otherwise, changes in the default may cause changes in many ACLs.
  776.  
  777. 7.3.3 Named ACLs
  778.  
  779. Another possible user friendly feature is "named" ACLs.  One implementation of
  780. this feature uses a named ACL as a template.  If a user often sets ACLs to the
  781. same list of Users, the setting user may want to create a named ACL as a
  782. template which, when used, copies that list into the ACL.  When the named ACL
  783. is changed, there is no effect on the ACLs already in existence.  This use of
  784. named ACLs has no particular detriments and is of limited usefulness.  The
  785. other implementation of named ACLs places a pointer in the real ACL to the
  786. named ACL.  Now when the named ACL gets changed, all of the real ACLs that use
  787. it also get changed.  This is very convenient for the user, but when a named
  788. ACL is changed the user has no way of determining all of the protected objects
  789. affected by the change.  The named ACLs also have to be protected in the same
  790. way as the real ACLs.  Most of the features of named ACLs can be replaced by
  791. some group and default mechanisms.
  792.  
  793.                                      10
  794.  
  795.  
  796. In summary, access control lists are the most desirable implementation of
  797. discretionary access control.  ACLs conveniently lend themselves to specifying
  798. a list of named users who are allowed to access each object.  Also, providing
  799. access to defined groups of users is easily done with ACL-based mechanisms.
  800. ACLs, if properly implemented, will satisfy the B3 DAC requirement.  At class
  801. B1 and above, care must be taken so that the implementation does not conflict
  802. with mandatory controls.
  803.  
  804. 7.4 PROTECTION BITS
  805.  
  806. Protection bits are an incomplete attempt to represent the access control
  807. matrix by column.  Implementation of protection bits include systems such as
  808. UNIX [15], which use protection bits associated with objects instead of a list
  809. of users who may access an object.  (UNIX is a registered trademark of AT&T.)
  810. In the UNIX case the protection bits indicate whether everyone, the object's
  811. group or only the owner has any of the access modes to the protected object.
  812. The user who created the object is the owner, and that can only be changed
  813. through superuser privileges.  The owner is the only one (besides a superuser)
  814. who can change protection bits.
  815.  
  816. The problem with protection bits is that they are an incomplete implementation
  817. of the access control matrix model.  The system cannot conveniently allow or
  818. disallow access to a protected object on any single user basis.  It has been
  819. suggested that groups be set up so that any needed combination of users can be
  820. specified.  But, for more than a few users, the combinatorics of such a
  821. solution are unrealistic.  Also, groups are controlled by the system
  822. administrator, and such a scheme would require full-time attention.
  823.  
  824. 7.5 PASSWORD DAC MECHANISMS
  825.  
  826. Password protection of objects attempts to represent the access control matrix
  827. by row.  If each user possessed his own password to each object, then the
  828. password is a ticket to the object, similar to a capability system (except, of
  829. course, with no dynamic domains).  In most implementations of password
  830. protection, only one password per object or one password per object per access
  831. mode exists.  Passwords.  on protected objects have been used in IBM's MVS
  832. [16] and with other mechanisms in CDC's NOS [17] to implement DAC.
  833.  
  834. Many problems are associated with using a password protected DAC system.  The
  835. use of passwords prevents the TCB from controlling distribution of access
  836. permissions.  The sharing of passwords takes place outside the system.  For a
  837. user to remember a password for each protected object is virtually impossible,
  838. and if the passwords are stored in programs they are vulnerable.  To restrict
  839. access to certain access modes requires a password for each combination of
  840. access modes, but in most systems that use passwords, access to a protected
  841. object is all or none.  In such implementations, revoking a user's access
  842. requires revoking access from all other users with similar access and then
  843. distributing a new password to those who are to retain access.  This becomes
  844. almost Impossible when passwords are stored in programs.  To be secure,
  845. passwords should be changed periodically, which is very difficult to do in
  846. such password protected DAC systems.  In systems such as MVS the default
  847. access to a file is unrestricted access.  A file is protected only when the
  848. password protection is initiated for that file.  Thus a new file in MVS is not
  849. protected until the password protection mechanism is invoked.
  850.  
  851.                                      11
  852.  
  853.  
  854. If passwords are used as in the CDC NOS system to supplement another DAC
  855. mechanism, they do have one positive aspect.  If all objects are protected
  856. with different passwords, Trojan horses can be restricted to only the objects
  857. that are handed to them.  The use of passwords for a complete DAC is strongly
  858. discouraged, because there is no way to determine who has access to an object,
  859. and because managing such a system properly is very difficult.
  860.  
  861. 7.6 SUMMARY
  862.  
  863. Access control lists, if implemented properly, can satisfy the DAC requirement
  864. for any class.  Protection bits lack the ability to conveniently control
  865. access to each object to the granularity of a single user.  Row-based
  866. mechanisms, such as capabilities and profiles, may encounter design problems
  867. with revocation of access and group access to objects.  Passwords should not
  868. be used for discretionary access controls, except as a supplement to another
  869. DAC mechanism, to reduce that mechanism's vulnerability to Trojan horses.
  870.  
  871.  
  872.  
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.                                      12
  908.  
  909.  
  910. 8. THE SET OF DAC ACCESS TYPES
  911.  
  912. In this section, control permissions and access modes for objects are
  913. discussed.  In the access control matrix (see figure I, in the previous
  914. section), control permissions and access modes are the entries in the matrix
  915. that specify what kind of access the subject has to the object.
  916.  
  917. Control permissions define which subjects have the ability to grant and revoke
  918. access permissions and change access modes.  Sometimes control permissions
  919. include the ability to pass these control permissions to other subjects.
  920.  
  921. In contrast, access modes indicate a specific action that can be applied to
  922. the object.  For example, the `execute' mode allows the object to be executed.
  923.  
  924. 8.1 CONTROL PERMISSIONS
  925.  
  926. In many current systems, the concept of control permissions is not separated
  927. from access modes.  In Multics, ``modify access'' on the directory is actually
  928. the ability to change the ACLs of the children of the directory.  It is
  929. recommended that control permissions and access modes be kept conceptually
  930. separate on any DAC system.  This separation allows control of the object to
  931. be separated from access to the object.
  932.  
  933. Two basic control permissions exist: control and control with passing ability.
  934. The difference between these permissions is the.  ability of the holder to
  935. propagate control to other subjects.
  936.  
  937.   - control - Subjects who have control permission to objects are able to pass
  938. access permission and to set access modes to those objects for other
  939. subjects.  Control permission does not allow subjects who possess it to give
  940. control to other subjects.
  941.  
  942.   - control with passing ability - This control permission is identical to
  943. control with the exception that the holder can pass his control permission to
  944. other subjects.  In a system implementing this permission, objects may have
  945. more than one subject who are able to control them.
  946.  
  947. Since control permissions allow a subject to specify access to an object, they
  948. can be used to implement the control model for a DAC system.
  949.  
  950. 8.1.1 Control Models
  951.  
  952. The Criteria requires DAC controls on the ability to assign access permission
  953. to an object by a user already possessing access permission.  The ability to
  954. assign these permissions should be controlled with the same precision as the
  955. ability to access the objects themselves.  For example, at class B3 it should
  956. be possible to permit or prohibit both users and groups the authorization to
  957. assign access permission.  Four basic models for DAC control exist:
  958. hierarchical, concept of ownership, laissez-faire, and centralized.
  959.  
  960. 8.1.1.1 Hierarchical
  961.  
  962. Permissions to specify control of objects can be organized so that control is
  963. hierarchical, similar to the way most businesses operate.  A simple example
  964. would have the system administrator at the root of the hierarchical tree.  The
  965. system administrator would eve control permission to all objects on the
  966. system.  This control permission would include the ability to pass those
  967. control permissions to other subjects.  The system administrator would
  968.  
  969.                                13
  970.  
  971.  
  972. divide everyone else into subsets (e.g., departments), with each subset being
  973. represented by a directory in the storage hierarchy.  The default access for
  974. each department would give the department head control permission for that
  975. directory.  The department heads would divide their subordinates into subsets
  976. (e.g., projects) and set the defaults so that for each project, they give the
  977. project heads control permission on their project directories.  The users at
  978. the bottom of the hierarchy would have no control permissions on any object.
  979. Notice that those in the hierarchy who have control permission on an object
  980. would be able to give themselves any access mode on the object.  A
  981. hierarchical or tree-structure file system is not required in order to
  982. implement a hierarchical control model.
  983.  
  984. The advantage of a hierarchical structure is that control can be placed in the
  985. most trusted hands and the control can mimic the organizational environment.
  986. This should not imply, however, that control should be distributed based on
  987. one's position in the hierarchy.  It is sometimes appropriate that a manager
  988. have no authorization for a subordinate's objects.  The previously defined
  989. hierarchical structure provides the ability for multiple users to have the
  990. ability to control an object.  Other hierarchical organizations can be
  991. imagined and implemented using control permissions.  Hierarchical
  992. organizations could also be programmed into the DAC system without using
  993. control permissions, but such a restrictive implementation would result in a
  994. specific, fixed hierarchical structure.  Such inflexible hierarchical control
  995. is not recommended.  The hierarchical control model would satisfy the DAC
  996. requirement for all classes.
  997.  
  998. 8.1.1.2 Concept of Ownership
  999.  
  1000. Another control model associates with each object an owner (usually the
  1001. creator of the object) who is the only user that has control permission to
  1002. this object.  The owner is always in ``full'' control of the objects that he
  1003. has created and has no ability to pass that control to any other subject.
  1004. Hence the owner may change the access permissions at any time in order to
  1005. grant and to deny the access rights of the objects under his control.
  1006.  
  1007. This near absolute control by owner can be implemented administratively.  The
  1008. system administrator could set up the system so that the default access would
  1009. always contain control permission, but the ability to pass control permission
  1010. to other users would never be used on the system.  Of course, the system
  1011. administrator has the ability to alter all of the access control on the
  1012. system.  Therefore, owner control can be viewed as a limited hierarchical
  1013. system of only two levels and could be implemented with a flexible
  1014. hierarchical control model.
  1015.  
  1016. Another way to implement owner control is by programming it into the DAC
  1017. system and not implementing any control permissions.  This will enforce the
  1018. owner concept because the creator of an object is known to the DAC mechanism
  1019. and can change the access, but has no method of passing control permission to
  1020. another user.  UNIX is an example of an operating system where only the owner
  1021. of an object has the ability to change its access (protection bits).
  1022.  
  1023. A disadvantage of owner control is the difficulty it creates with regard to
  1024. non-owner users changing their access modes for an object (i.e., it is harder
  1025. to share the objects).  In order to gain or lose any access to an object,
  1026. users must ask the owner of the object to grant or
  1027.  
  1028.                                      14
  1029.  
  1030.  
  1031. revoke access for them.  However, in some operating environments, this
  1032. disadvantage is actually a desired system characteristic.
  1033.  
  1034. Owner control of objects eliminates confusion concerning who controls access
  1035. to each object.  This particular control model will meet the DAC requirement
  1036. for all classes.
  1037.  
  1038. 8.1.1.3 Laissez-Faire
  1039.  
  1040. In this scheme, any user who has control permission with passing ability to an
  1041. object may pass that permission on to any other user.  No concept of ownership
  1042. exists.  The ACL will show all the users who can change the ACL of an object.
  1043. Once a user has passed on control permission with passing ability to other
  1044. users, they may pass this permission to other users without the consent of the
  1045. creator of the object.  Once the access permissions are given away, keeping
  1046. control of an object is difficult.  So long as the passing of control
  1047. permission is separate from the granting of access permission, the
  1048. laissez-faire control model will meet the DAC requirement for all classes.
  1049. However, if the model were to require the passing of control permission in
  1050. order to grant an access permission to a user, then the model would not meet
  1051. the C2 DAC requirement, because it could not control the propagation of access
  1052. rights.
  1053.  
  1054. 8.1.1.4 Centralized
  1055.  
  1056. This control model gives one user, typically the system administrator, control
  1057. permission to all objects on the system.  That user does not have the ability
  1058. to pass control on to other users.  Thus- all control permission is held by
  1059. one user.  To obtain access to any object, a user must request that the
  1060. controlling user grant him access permission.  This places a considerable
  1061. burden on the controlling user.  Additionally, if requests for access
  1062. permission are numerous, delays would probably result from the inflexibility
  1063. of this model.  Although it has limited flexibility, this control model would
  1064. satisfy the DAC requirements for all classes.
  1065.  
  1066. 8.1.2 File Structures and Control Permissions
  1067.  
  1068. Use of control permissions is also related to the structure of the storage
  1069. system.  In operating systems where the storage system is tree structured, two
  1070. types of objects are involved: directories and files.  (Directories are
  1071. sometimes called nodes, and files are sometimes called segments.) Control
  1072. permissions can be applied to both directories and files.  Control permission
  1073. on a file changes control only to that particular file, but control permission
  1074. on a directory may be implemented as the ability to control not only the
  1075. directory but also all of the subdirectories and files under it (let us call
  1076. this extended directory control).  This extended directory control implements
  1077. a very hierarchical control structure, since control permission on a directory
  1078. means that the subject can change any access on the whole subtree below that
  1079. directory.
  1080.  
  1081. A pure owner control policy could be implemented without using the extended
  1082. directory control.  The subject who creates a file or a directory would
  1083. receive the ability to control either.  The hierarchical control scheme
  1084. described above would use the extended directory control and the control
  1085. permission with passing ability.  Giving the system administrator, the
  1086. department heads and the project leaders extended directory control to the
  1087. appropriate directory in the storage structure would give them control over
  1088. the appropriate portion of
  1089.  
  1090.                                      15
  1091.  
  1092.  
  1093. the file system.  Laissez-faire could use the extended directory control,
  1094. along with control permission with passing ability on both the directories and
  1095. the files.
  1096.  
  1097. Depending on the situation, one of the above schemes or a combination of the
  1098. above schemes could be used to implement the control model of the DAC
  1099. mechanism for any evaluation class.
  1100.  
  1101. 8.2 ACCESS MODES
  1102.  
  1103. A fairly wide range of access modes are available in various DAC mechanisms.
  1104. Some implementations may combine some access modes, while other
  1105. implementations do not provide many access modes.  How the access modes are
  1106. combined should be given careful consideration, because combining access modes
  1107. can limit the flexibility of the DAC mechanism.  The names of any of the
  1108. access modes may vary from system to system.  Many types of write access modes
  1109. have been implemented in different systems for controlling what changes can be
  1110. done to an object.  This section discusses various read, write, execute, and
  1111. delete access modes.
  1112.  
  1113.   -READ - allows an object to be read but not changed in any way.  On most of
  1114. the systems, the READ mode also allows the object to be copied.  Thus READ
  1115. gives all access to the object except WRITE, EXECUTE, and DELETE.
  1116.  
  1117.   -WRITE-APPEND - allows a user to expand an object but does not allow a user
  1118. to change the previous contents of or view an object.  WRITE-APPEND is also
  1119. known as WRITE-EXPAND.
  1120.  
  1121.   -WRITE-CHANGE - allows a user to modify and to delete all or part of the
  1122. contents of an object but does not allow a user to expand or view the object.
  1123.  
  1124.   -WRITE-UPDATE - allows a user to modify the contents of an object but does
  1125. not allow a user to add to, delete from, or view an object.
  1126.  
  1127.   -WRITE - allows a user to modify, add, or delete the contents of an object
  1128. in any manner but does not allow a user to view an object.
  1129.  
  1130. In most operating systems little is known about the semantics of the data
  1131. stored in files, although some objects such as directories and mailboxes may
  1132. have more operating system manipulated structure associated with them.  In
  1133. general write accesses such as WRITE- CHANGE and WRITE-UPDATE are very
  1134. difficult for an operating system to implement reliably.  WRITE-APPEND, which
  1135. forces new data to be added only at the beginning or the end of an object, is
  1136. in the realm of most operating system architecture.  If an operating system
  1137. could support it, WRITE-APPEND would be useful for logging and transaction
  1138. type operations.
  1139.  
  1140.   -EXECUTE - allows a subject to run the object as an executable file.  On
  1141. some systems EXECUTE access requires READ access.  An EXECUTE without READ
  1142. would be recommended if a correct implementation is possible.
  1143.  
  1144.   -DELETE - access mode allows an object to be deleted.
  1145.  
  1146.   -NULL - access mode grants no access permissions and is used to allow
  1147. exclusion of a particular user in an ACL.  Often a NULL access mode does not
  1148. exist but is implied in the ACL by specifying no access modes for a particular
  1149. entry.
  1150.  
  1151.                                      16
  1152.  
  1153.  
  1154.   -CONTROL - (See Section 8.1)
  1155.   -CONTROL WITH PASSING ABILITY - (See Section 8.1)
  1156.  
  1157. 8.2.1 File Structures and Access Modes
  1158.  
  1159.  
  1160. If the files are organized in a tree structure then the directories are used
  1161. to represent the non-leaf nodes of the tree.  Three methods are available for
  1162. controlling the access to the directories and their associated files:
  1163.  
  1164.   1. access controls on the files but not on the directories
  1165.  
  1166.   2. access controls on the directories but not on the files
  1167.  
  1168.   3. access controls on both the files and the directories.
  1169.  
  1170. If access mode controls are placed only on the directories then once a user is
  1171. given any access to a directory, he has the same access to all files under
  1172. this directory.  Of course if one of the objects under this directory is
  1173. another directory (which we call a subdirectory) then users need access mode
  1174. permission to the subdirectory before they can access the objects under the
  1175. subdirectory.  Placing access controls only on directories requires users to
  1176. group files according to access types.  This requirement could be too
  1177. constrictive and could conflict with other reasons for grouping files.  If
  1178. access mode controls are placed only on files then controls are of a finer
  1179. granularity.  Access to individual files is controlled independently of other
  1180. files under the same directory.  But if no access controls are placed on
  1181. directories, users could browse through the storage structure looking at the
  1182. names of other users' files.  Also, there is no control on where in the tree
  1183. structure a subject could place a file, and this is usually the main purpose
  1184. of a tree structure.  By having the access mode controls on both directories
  1185. and files, a subject needs the correct access mode permissions to both the
  1186. directory and the file before it is allowed to access the file.  Access modes
  1187. for files are the basic software and hardware implemented access modes, such
  1188. as those listed in Section 8.2, since the operating system has no knowledge of
  1189. the semantics of the files.  The rest of the objects (directories, mailboxes,
  1190. etc.) are data structures maintained by the operating system, and their access
  1191. modes are generally more elaborate extensions of the basic access modes and
  1192. are usually implemented by protected subsystems.  In a system like UNIX, the
  1193. lack of execute access implies no access to the existing entire sub-tree under
  1194. that directory (ignoring an implementation of links as in UNIX and our earlier
  1195. discussion of access permissions).  A user cannot give another user access to
  1196. a file without also giving the correct read access to the parent directories.
  1197. In Multics, the philosophy chosen was to enable a user to grant access to a
  1198. file just by setting the ACLs correctly on that file.  Null access on a
  1199. directory will prevent a user from seeing the names or ACLs of the children of
  1200. that directory.  But if the user has an access mode to a child, he can access
  1201. the child (he must already know its name).  This complicates decisions about
  1202. when access should be given to the other attributes of a file (e.g., length,
  1203. date contents modified).  Such decisions depend on the particular
  1204. implementation.
  1205.  
  1206.                                17
  1207.  
  1208.  
  1209. Write-append allows a user to add new objects to the directory (i.e., to
  1210. create files and sub- directories under the directory).  Null is implied if no
  1211. access mode is specified.
  1212.  
  1213. In order to have more detailed access control, an implementor may add other
  1214. access modes to the minimal set.  But the final implementation of the access
  1215. modes should not be so complicated that users cannot easily remember the
  1216. implication of each mode.  If users cannot distinguish the functions of each
  1217. access mode, they will just grant to other subjects either the full access
  1218. rights or no access rights to an object.  Also, implementations of any access
  1219. type must be consistent and guaranteed to always function correctly.  In
  1220. implementing any access type, the designer must consider how much complexity
  1221. it adds to the trusted computing base, relative to the gain in functionality.
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.                                18
  1261.  
  1262.  
  1263. 9. MEETING THE CRITERIA REQUIREMENTS
  1264.  
  1265. This section of the guide explains the DAC requirements in the Criteria and
  1266. presents implementation examples that will satisfy each requirement.  DAC
  1267. requirements may be viewed as three levels.  The first level is at the C1
  1268. Criteria class.  The next level begins at class C2 and does not change through
  1269. class B2.  The highest level requirement begins at class B3 and remains the
  1270. same at class Al.  At each of these levels, this guide quotes the requirement
  1271. from the Criteria, explains what the requirement means, describes the minimum
  1272. functionality that is necessary to meet the requirement at that level (and the
  1273. functionality that is not required at that level), and presents an
  1274. implementation example which satisfies the requirement.
  1275.  
  1276. The reader should keep in mind that the implementations presented are not the
  1277. only ones that will meet their respective requirement.  The combinations
  1278. possible with the mechanisms mentioned are too numerous to list here.  Each
  1279. implementation must be evaluated on an individual basis.  The implementation
  1280. selected should be as simple and user friendly as possible, while meeting the
  1281. control objective.  Since the mechanism is user-invoked, if it is overly
  1282. complicated, users may avoid using it to its fullest extent.
  1283.  
  1284. 9.1 THE C1 DAC REQUIREMENT
  1285.  
  1286. Following is the DAC requirement for Criteria class C1:
  1287.  
  1288.    "The TCB shall define and control access between named users and named
  1289.    objects (e.g., files and programs) in the ADP system.  The enforcement
  1290.    mechanism (e.g., self/group/public controls, access control lists) shall
  1291.    allow users to specify and control sharing of those objects by named
  1292.    individuals or defined groups or both."
  1293.  
  1294. Note that the class C1 requirement names examples of DAC mechanisms.  These
  1295. examples are not the only mechanisms that will satisfy the requirement.  Many
  1296. mechanisms are adequate to satisfy the C1 DAC requirement.
  1297.  
  1298. At class C1 , users do not need special privileges to be authorized to control
  1299. access to objects.  Unprivileged users may control access to objects they can
  1300. access.  A user with access to an object can in turn grant access to that
  1301. object to other users.
  1302.  
  1303. The class C1 DAC mechanism need only provide support to allow access/no
  1304. access; separate modes for read and write need not be supported.
  1305.  
  1306. Objects may be shared by defined groups.  That is, a group of users that may
  1307. have access to an object must be defined to the TCB.  Groups can be defined by
  1308. naming the users to be included in each group.
  1309.  
  1310. 9.1.1 Minimum Functionality
  1311.  
  1312.   - The DAC mechanism should control access to individual named objects by
  1313. named users.
  1314.  
  1315.   - If the mechanism is not capable of the above function, it must at least
  1316. control access to each individual named object by defined user groups.
  1317.  
  1318.   - The DAC mechanism must recognize and control access to individual objects.
  1319.  
  1320.                                19
  1321.  
  1322.  
  1323. 9.1.2 Functionality Not Required
  1324.  
  1325.   - Class C1 does not require that users be uniquely identified to the TCB.
  1326. The users could be members of a group and thereby lose uniqueness.  Therefore,
  1327. it is not necessary for the C1 DAC mechanism to control access based on
  1328. individual user identities.
  1329.  
  1330.   - Although it is not required, user groups should be predefined by
  1331. authorized users; that is, users who define groups should have some sort of
  1332. special privilege to do so.
  1333.  
  1334.    In definitions for user groups, defining the members of the group by unique
  1335. user identifier is not necessary.  For example, defining a group consisting of
  1336. anyone whose name starts with "M'' by using a wildcard such as ``M*'' would be
  1337. permissible.
  1338.  
  1339.   - Newly created named objects do not need to be automatically protected.
  1340. Default public access is permissible at C1
  1341.  
  1342.   - The C1 DAC requirement does not mandate controls to limit the propagation
  1343. of access rights.  In other words, users possessing a certain access right may
  1344. or may not be permitted to pass that right on to other users at their own
  1345. discretion.
  1346.  
  1347.   - It is not necessary to define different access modes, such as read and
  1348. write.  The mechanism need only provide support to allow access/no access to
  1349. objects.
  1350.  
  1351. 9.1.3 An Acceptable Implementation
  1352.  
  1353. This section describes a DAC mechanism which would satisfy the C1 DAC
  1354. requirement.  This example is included for purposes of illustrating the
  1355. functionality necessary to meet this requirement.
  1356.  
  1357. This mechanism, called SEE-ONE, utilizes profiles, which contain a list of
  1358. accessible objects for each subject.  When a new object is created on this
  1359. system, it is unprotected until the system administrator identifies it to the
  1360. DAC mechanism.  From that point on, a subject must have that object's name in
  1361. his profile before he can access it.  The system administrator must place the
  1362. name of the object on the profiles of the subjects who should be allowed to
  1363. access it.  No access modes appear on the profiles.  If an object is in a
  1364. subject's profile, that subject has total access to that object (read, write,
  1365. execute, delete).  Subjects cannot pass access permissions on to other
  1366. subjects.  This particular mechanism does not support user groups.
  1367.  
  1368. While SEE-ONE will satisfy the C1 DAC requirement, it is not without
  1369. drawbacks.  Decentralizing control of protected objects from the system
  1370. administrator to the user community may be desirable.  Most systems have a
  1371. considerable amount of object creation and deletion.  Excessive object
  1372. creation and deletion could overburden the system administrator.  The
  1373. implementation described here contains only the minimal functionality
  1374. necessary to meet the C1 DAC requirement.
  1375.  
  1376. 9.2 THE C2 THROUGH B2 DAC REQUIREMENT
  1377.  
  1378. Following is the DAC requirement for Criteria classes C2 through B2:
  1379.  
  1380.   "The TCB shall define and control access between named users and named
  1381.   objects (e.g., files and programs) in the ADP system.  The enforcement
  1382.   mechanism. 
  1383.  
  1384.                                      20
  1385.   
  1386.   
  1387.    (e.g., self/group/public controls, access control lists) shall allow users
  1388.    to specify and control sharing of those objects by named individuals, or
  1389.    defined groups of individuals, or by both, and shall provide controls to
  1390.    limit propagation of access rights.  The discretionary access control
  1391.    mechanism shall, either by explicit user action or by default, provide that
  1392.    objects are protected from unauthorized access.  These access controls
  1393.    shall be capable of including or excluding access to the granularity of a
  1394.    single user.  Access permission to an object by users not already
  1395.    possessing access permission shall only be assigned by authorized users.''
  1396.  
  1397. At this level protection on newly created objects must not default to public
  1398. access.  Either the system must have a specific rule that limits access to
  1399. each object to its creator or to a previously specified subset of users, or
  1400. the system must require the creator of an object to specify who will be
  1401. allowed to access it before allowing him to create that object.  Limiting
  1402. access to the creator of the object is the method that is preferred.
  1403.  
  1404. The mechanism must have the ability to include or exclude access to objects on
  1405. a per user basis.  If group access controls are provided, groups must be
  1406. precisely defined by listing the unique names of the users in the group.
  1407. Hence, groups are made of named users.
  1408.  
  1409. Users must possess special authorization to control access to objects.  This
  1410. special authorization is called control permission (see section 8.1).  The
  1411. authorization required may range from system administrator to users
  1412. controlling access to objects that they have created.  The latter is preferred
  1413. because it does not require system administrator intervention.  Either method
  1414. is acceptable, but the former method could result in delays if the system
  1415. administrator is not available.
  1416.  
  1417. 9.2.1 Minimum Functionality
  1418.  
  1419. The minimum requirements specified here are in addition to the functionality
  1420. required to satisfy the C1 DAC requirement.
  1421.  
  1422.   - The mechanism must provide the capability of including or excluding access
  1423. to each object on a per user (or per group if groups are implemented) basis.
  1424.  
  1425.   - The mechanism must provide that all objects are protected.  Protection by
  1426. default must be provided for all newly created objects at creation time.
  1427.  
  1428.   - Users must possess control permission to assign access permission to
  1429. objects.  This authorization usually takes the form of a special access type,
  1430. sometimes called CONTROL or OWNER.
  1431.  
  1432.   - If group access controls are provided, groups must be precisely defined by
  1433. using the unique identifier of each member of the group.
  1434.  
  1435. 9.2.2 Functionality Not Required
  1436.  
  1437.   - Providing access to objects by groups of users is optional at this level.
  1438.  
  1439.   - It is not necessary to define different access modes, such as read and
  1440. write.  The mechanism need only provide support to allow access/no access to
  1441. objects.
  1442.  
  1443.                                21
  1444.  
  1445.  
  1446. 9.2.3 An Acceptable Implementation
  1447.  
  1448. This section describes a DAC mechanism called SEE-TWO which would meet the
  1449. C2-B2 DAC requirement.  The purpose of this description is to illustrate the
  1450. functionality that is necessary to meet the requirement.
  1451.  
  1452. This particular mechanism uses an ACL-like DAC mechanism.  Each object has a
  1453. list of users who are allowed to access the object, along with the modes of
  1454. access the users have to the object.  By including or excluding users' names
  1455. on the list, access can be controlled on each object to the granularity of a
  1456. single user.
  1457.  
  1458. When a creator requests the creation of an object, he must specify the desired
  1459. access controls.  Otherwise, the mechanism will enforce a restrictive default
  1460. access control.  The creator can grant other users the privilege of accessing
  1461. the object as he wishes.  Only the creator has the privilege of passing access
  1462. on to other users.  This concept is called ownership.  Ownership is not
  1463. transferrable to other users.  If the creator wishes, he can specify a default
  1464. protection list for all objects he creates.  The default would contain a list
  1465. of all users which will be added to the protection list of any new objects
  1466. created by that subject.
  1467.  
  1468. This SEE-TWO implementation will satisfy the C2-B2 DAC requirement.
  1469. Furthermore, it has an advantage over the SEE-ONE implementation; the
  1470. management of an object is decentralized from the system administrator to the
  1471. owner of that object.  A disadvantage of the SEE-TWO implementation is that it
  1472. does not provide the capability to grant access to groups of uniquely
  1473. identified users.  Using this mechanism could be cumbersome in some
  1474. environments since all users must be explicitly listed.  In other
  1475. environments, however, requiring the users to be explicitly listed is
  1476. desirable.
  1477.  
  1478. 9.3 THE B3 THROUGH Al DAC REQUIREMENT
  1479.  
  1480. Following is the DAC requirement for Criteria classes B3 and A1.
  1481.  
  1482.    "The TCB shall define and control access between named users and named
  1483.    objects (e.g., files and programs) in the ADP system.  The enforcement
  1484.    mechanism (e.g., access control lists) shall allow users to specify and
  1485.    control sharing of those objects, and shall provide controls to limit
  1486.    propagation of access rights.  The discretionary access control mechanism
  1487.    shall, either by explicit user action or by default, provide that objects
  1488.    are protected from unauthorized access.  These access controls shall be
  1489.    capable of specifying, for each named object, a list of named individuals
  1490.    and a list of groups of named individuals with their respective modes of
  1491.    access to that object.  Furthermore, for each such named object, it shall
  1492.    be possible to specify a list of named individuals and a list of groups of
  1493.    named individuals for which no access to the object is to be given.  Access
  1494.    permission to an object by users not already possessing access permission
  1495.    shall only be assigned by authorized users.''
  1496.  
  1497. At this level the requirement mandates that the DAC mechanism control access
  1498. to each named object.  Access must be controlled on a per user basis.  In
  1499. addition, access control based on groups of named users is required at this
  1500. level.  Authorized users who control access to objects must be able to list
  1501. specific named users that are allowed to access each object they control.
  1502. They also must have the capability to list groups of named users that will be
  1503.  
  1504.                                      22
  1505.  
  1506.  
  1507. allowed to access each object.  These lists must also contain the respective
  1508. access modes that each named user or group of named users has on each object.
  1509.  
  1510. Additionally, for each object, authorized users must be able to specify a list
  1511. of named users and a list of groups of named users that are not to be allowed
  1512. to access that object.  Thus, for example, an object could exist on a system
  1513. that is public read-only except for JOE.  USER who is not allowed to access
  1514. the object at all.
  1515.  
  1516. 9.3.1 Minimum Functionality
  1517.  
  1518. In addition to the minimum requirements stated in this section for the C1 and
  1519. C2-B2 DAC requirements, the following functionality must be supplied in order
  1520. for a mechanism to satisfy the B3-A DAC requirement.
  1521.  
  1522. - For each named object, the mechanism must provide the ability for authorized
  1523. users to specify a list of named users along with each user's respective modes
  1524. of access to the object.
  1525.  
  1526. - The mechanism must provide support to allow different access modes, such as
  1527. read and write.  Merely providing for access/no access to objects is not
  1528. sufficient.
  1529.  
  1530. - For each named object, the mechanism must provide the ability for authorized
  1531. users to specify a list of groups of named users along with each group's
  1532. respective modes of access to the object.
  1533.  
  1534. - For each named object, the mechanism must provide the ability for authorized
  1535. users to specify a list of named users and groups of named users for which no
  1536. access will be allowed to that object.
  1537.  
  1538. 9.3.2 An Acceptable Implementation
  1539.  
  1540. Following is an example of a DAC mechanism, called BEE-THREE, that would be
  1541. sufficient to satisfy the B3-A1 DAC requirement.  This example is included for
  1542. the purpose of illustrating the functionality necessary to meet the
  1543. requirement.
  1544.  
  1545. When an object is created, an ACL that only permits access for the creator is
  1546. associated with the object.  All objects are protected.  Each object's ACL
  1547. describes the users or groups that can access it, along with their respective
  1548. access modes to that object.  Protected objects are segments and directories.
  1549. The available access modes on segments are read, execute, and write.  On
  1550. directories the available access modes are search, modify, and append.  A
  1551. process must have modify access to the containing directory of an object in
  1552. order to modify the ACL of the object.
  1553.  
  1554. Access groups are defined by the system projects, which are also used for
  1555. accounting purposes.  Only the system administrator can define projects by
  1556. listing the unique identities of each user to be included in the projects.
  1557. Users can be defined in more that one project, but can only be active in one
  1558. project at a time.  Changing projects requires that users logout of the
  1559. system, and then login under the new project name.
  1560.  
  1561. If a user or group of users is listed on an object's ACL without an access
  1562. mode, that individual or group has no access to that object.  If a subject has
  1563. more than one ACL entry on an object with conflicting access modes, the system
  1564. takes the most restrictive access mode.  This makes it possible to give
  1565. everyone on a project access to an object, while
  1566.  
  1567.                                23
  1568.  
  1569.  
  1570. denying certain members of that project any access at all.  This can be done
  1571. by including the project name on the ACL with the access mode desired while,
  1572. at the same time, including those users to be excluded on the ACL with no
  1573. access modes.
  1574.  
  1575. This BEE-THREE implementation will satisfy the B3-A1 DAC requirement.
  1576. Furthermore, it has an advantage over the SEE-TWO implementation: it provides
  1577. the capability to grant access to individual users or to groups of uniquely
  1578. identified users.  However, in this implementation it is impossible to allow a
  1579. group some access to an object (such as read), but allow one group member some
  1580. additional access (such as read, write) to that object.
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591.  
  1592.  
  1593.  
  1594.  
  1595.  
  1596.  
  1597.  
  1598.  
  1599.  
  1600.  
  1601.  
  1602.  
  1603.  
  1604.  
  1605.  
  1606.  
  1607.  
  1608.  
  1609.  
  1610.  
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.  
  1621.                                24
  1622.  
  1623.  
  1624. 10. OTHER TOPICS
  1625.  
  1626. 10.1 PROTECTED SUBSYSTEMS
  1627.  
  1628. In order to provide users with access types finer than the basic read, write,
  1629. execute, etc., some systems (actually a rather limited number) support
  1630. protected subsystems.  Saltzer and Schroeder [13] refer to the need for
  1631. ``protected subsystems,'' which they define as user- provided programs which
  1632. control access to files.  By extending the access control mechanism to allow
  1633. objects to be accessed in ways specified by subjects (programs as well as
  1634. users), a system may allow a specific user-written program to be designated
  1635. ``the only subject" allowed any access or a particular type of access to
  1636. specific files.  A protected subsystem can be defined as a collection of
  1637. procedures and data objects that is encapsulated so that the internal
  1638. structure of a data object is accessible only to the procedures of the
  1639. protected subsystem, and the procedures may be called only at designated
  1640. domain entry points and only by designated subjects.  The encapsulated data
  1641. files are the protected objects.  Programs in a protected subsystem act as
  1642. managers for the protected objects and enforce user-written access controls on
  1643. them.  Subjects outside the protected subsystem are allowed to manipulate the
  1644. protected objects only by invoking the manager programs.  Any access
  1645. constraints that can be specified in an algorithm can be implemented in a
  1646. protected subsystem.  Giving users the ability to construct protected
  1647. subsystems out of their own program and data files allows users to provide
  1648. more flexible controls on sharing.  By allowing programs inside a protected
  1649. subsystem to invoke programs in another protected subsystem without
  1650. compromising the security of either, multiple protected subsystems can be used
  1651. to perform tasks.  This limits the extent of damage a malicious or
  1652. malfunctioning borrowed program might inflict on objects protected by the
  1653. subsystem.  Likewise, the lending user could also encapsulate the lent program
  1654. in a protected subsystem of its own to protect it from the programs of the
  1655. borrower.  The danger of Trojan horse attacks and the inadequacy of most DAC
  1656. mechanisms to protect against such attacks was discussed in Section 6.  A
  1657. protected subsystem which incorporates one of the DAC mechanisms discussed
  1658. earlier is no less vulnerable to attacks on objects within that subsystem.
  1659. Furthermore, readers should consider the effects of illusory security which
  1660. may be inherent with a protected subsystem.  Apollo's Domain [18] implements
  1661. limited protected subsystems.  Domain allows users to write their own
  1662. subsystems, but it does not provide a mechanism for protected subsystems to
  1663. interact with one another.  A user has the ability to add a subsystem name to
  1664. a system- wide list of subsystems, thereby creating the subsystem.  The user
  1665. then assigns a certain file to be a manager of the subsystem and another file
  1666. to be an object.  The user then removes all other access to the object, making
  1667. the manager an exclusive accessor.  Access to the subsystem is controlled by
  1668. the access control lists associated with the subsystem manager.
  1669.  
  1670. 10.2 ADMINISTERING AND USING DAC
  1671.  
  1672. The Trusted Facility Manual (TFM) must explain to the system administrator how
  1673. to set up the DAC mechanism and how to properly administer a DAC system.  The
  1674. manual must
  1675.  
  1676.                                25
  1677.  
  1678.  
  1679. explain how to identify the system security administrator and any project
  1680. administrators and their functions.  The correct access must be set on the
  1681. system administration database, which would include user registry, group
  1682. definitions, etc.  The manual must explain how access must be set to handle
  1683. fixing system problems including viewing dumps, and repairing file systems,
  1684. etc.  Access must be set correctly to the standard libraries, including the
  1685. system commands and subroutines, initialization modules, and the operating
  1686. system's code.  ACLs may need to be set on the supervisor entry points and the
  1687. I/O daemons or device queues.
  1688.  
  1689. The TFM must be easy to understand and follow, since proper set-up and proper
  1690. administration of the DAC mechanism is critical to its effectiveness.  In
  1691. general, documentation should describe how to initialize the ACLs to best
  1692. provide a protected environment.  If the DAC mechanism is flexible and
  1693. provides the ability to set up different control structures, examples should
  1694. be given for a range of control structures and must indicate settings required
  1695. for the product's evaluation class.  The manual should explain Trojan horse
  1696. attacks and should give an example of one that could defeat the DAC mechanism
  1697. and be undiscovered by the audit mechanism.
  1698.  
  1699. The Security Features Users Guide (SFUG) must explain and give examples of how
  1700. to use the DAC mechanism.  The manual should be easy for the users to
  1701. understand, since the mechanism is user-invoked.  Like the manual for the
  1702. system administrator, the users' manual should explain Trojan horse attacks
  1703. and give an example of one that could defeat the DAC mechanism and be
  1704. undiscovered by the audit mechanism.
  1705.  
  1706. 10.3 AUDITING DAC
  1707.  
  1708. Auditing is an important part of a secure computer system.  Much of the
  1709. auditing on any operating system is not specific to the DAC mechanism, but in
  1710. many instances the DAC mechanism should place an entry in the audit log.  Any
  1711. operation that changes the control structure of the DAC should be auditable.
  1712. Any change in any ACL, including the default ACLs, should be auditable.  Any
  1713. attempt to access a DAC-protected object should be auditable.  Any changes to
  1714. group definitions should be auditable.  In general an audit log message should
  1715. include a timestamp, the subject's identity, the object's identity, the type
  1716. of action and any other pertinent information.
  1717.  
  1718. 10.4 VERIFYING DAC
  1719.  
  1720. Verifying the correctness of the DAC mechanism is not well understood.  As can
  1721. be seen by this paper, DAC does not have well defined rules as does mandatory
  1722. access control.  In fact no formal model of the myriad of DAC implementations
  1723. currently exists although some mention is made of the DAC mechanisms in the
  1724. Bell and LaPadula [19] formal model for mandatory access control.  In systems
  1725. such as SCOMP [20] whose design has been formally verified for security, the
  1726. only property that was proven about the DAC mechanism was that it did not
  1727. violate the mandatory access formal model.  Research is needed in developing a
  1728. formal model(s) for DAC and verification of systems where DAC is important
  1729. should at least provide assurance by a structured argument that demonstrates
  1730. the DAC implementation's sufficiency to implement its specification.
  1731.  
  1732.                                26
  1733.  
  1734.  
  1735. 10.5 DAC ADD-ONS
  1736.  
  1737. For some operating systems (e.g..  IBM MVS), products which provide DAC
  1738. mechanisms are available as `add-ons' (e.g., ACF2, Top Secret, RACF).  The DAC
  1739. checks are made before the operating system gets a request for an object, and
  1740. the request is not forwarded to the operating system if it requests illegal
  1741. access.  Such add-ons are basing their assurance on the inability of a user to
  1742. either get access to the operating system through another interface or to
  1743. cause the operating system to retrieve illegal data with a legal request.
  1744. Most add-on packages are applied to systems that would receive a D rating
  1745. against the Criteria if evaluated on their own.  To demonstrate that an add-on
  1746. product operates as claimed, the add- on, along with the underlying operating
  1747. system, is evaluated as a total system.  The security provided by the add-on
  1748. relies on the correct operation of the underlying system.
  1749.  
  1750.  
  1751.  
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.  
  1758.  
  1759.  
  1760.  
  1761.  
  1762.  
  1763.  
  1764.  
  1765.  
  1766.  
  1767.  
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.                                      27
  1787.  
  1788.  
  1789. 11. SUMMARY OF DESIRED DAC FEATURES
  1790.  
  1791. Regardless of the Criteria class a DAC mechanism is intended to satisfy, the
  1792. preferred DAC mechanism within the current state-of-the-art is the access
  1793. control list.  The deletion of subjects and objects is a potential problem for
  1794. any DAC mechanism, including ACLs.  Regardless of whether a subject or object
  1795. is deleted, the mechanism should handle the deletion efficiently, making sure
  1796. that any dangling references do not grant unintended access after the
  1797. deletion.  An asset of ACLs is their design, which represents the access
  1798. control matrix by column.  An object's ACLs are automatically purged when the
  1799. object is deleted.  Unlike row-based mechanisms, ACLs do not require searching
  1800. the profiles of all subjects to determine who has access to the deleted
  1801. object.  However, when subjects are removed from the ADP system, ACLs pose the
  1802. same problem; all system objects must be searched to purge that subject from
  1803. all ACLs.  Since objects are much more volatile than subjects, ACLs are more
  1804. efficient than profiles.
  1805.  
  1806. At classes B3 through A1, access modes must be implemented, but they are
  1807. highly recommended at all lower levels of the Criteria.  The access modes
  1808. read, execute, and write should be implemented at a minimum and write-append
  1809. should be considered.
  1810.  
  1811. At class C2 and above, some sort of control permission must be implemented.
  1812. The control models described in Section 8.1.1 are acceptable.  The preferred
  1813. model is the concept of ownership model.  This model assures that some user is
  1814. accountable for each object on the ADP system.  Ownership should not be
  1815. transferrable between users.  If it is transferrable, ownership transfers must
  1816. be audited.
  1817.  
  1818. Discretionary Access Control cannot deter hostile attempts to access sensitive
  1819. information.  DAC mechanisms can be designed to eliminate casual browsing
  1820. through the storage system, to prevent accidental disclosure, modification,
  1821. and destruction of data, and to provide for the sharing of data between users.
  1822. A mandatory security policy must also be implemented to provide adequate
  1823. protection if users are not allowed to share all data on the system.  An
  1824. effective audit trail mechanism is also necessary in order to detect hostile
  1825. attacks on the DAC mechanism.
  1826.  
  1827.  
  1828.  
  1829.  
  1830.  
  1831.  
  1832.  
  1833.  
  1834.  
  1835.  
  1836.  
  1837.  
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.                                      28
  1845.  
  1846.  
  1847. 12.  REFERENCES
  1848.  
  1849. 1.  Department of Defense Trusted Computer System Evaluation
  1850. Criteria, DoD, DoD 5200.28-STD, 1985. 
  1851.  
  1852. 2.  Schell, R.  R., ``Security Kernels: A Methodical Design of System
  1853. Security,'' in Technical Papers, USE Inc., Spring Conference, 5-9 March 1979,
  1854. pp.  245-250.
  1855.  
  1856. 3.  Schroeder, M.D., Cooperation of Mutually Suspicious Subsystems, PhD
  1857. dissertation, M.I.T., 1972.
  1858.  
  1859.  
  1860. 4.  Boebert, W.E., and Ferguson, C.T., ``A Partial Solution to the
  1861. Discretionary Trojan Horse Problem,'' 9th Security Conference, DoD/NBS,
  1862. September 1985, pp 141-144.  
  1863.  
  1864. 5.  Downs, D, ``Discretionary Access Control Guideline,'' Aerospace Report,
  1865. The Aerospace Corporation, September 1985.
  1866.  
  1867. 6.  Boebert, W.E., Kain, R.Y.  and Young, W.D., ``Secure Computing: The Secure
  1868. Ada Target Approach,'' Scientific Honeyweller, Vol.  6, No.  2 July 1985, pp
  1869. 1-17.
  1870.  
  1871.  
  1872. 7.  Saltzer, Jerome H., ``Protection and the Control of Information in
  1873. Multics,'' Communications of the ACM, Vol.  17, No.  7, July 1974, pp.
  1874. 388-402.  
  1875.  
  1876. 8.  Fabry, R.S., ``Capability-Based Addressing,'' Communications of
  1877. the ACM, Vol.  17, No.  7, July 1974, pp.  403-411.  
  1878.  
  1879. 9.  Redell, D.D., ``Naming and Protection in Extensible Operating Systems,''
  1880. AD-A001 721, published by M.I.T., Cambridge MA, November 1974.
  1881.  
  1882. 10.  Karger, P.A.  and Herbert, A.J., ``Lattice Security and Traceability of
  1883. Access,'' Symposium on Security and Privacy, IEEE, April 1984, pp.  13-23.
  1884.  
  1885. 11.  Gligor, V., Huskamp, J., Welke, S., Linn, C., and Mayfield, W.,
  1886. ``Traditional Capability-Based Systems: An Analysis of Their Ability to Meet
  1887. the Trusted Computer Security Evaluation Criteria,'' IDA Paper Pl 935, October
  1888. 1986.
  1889.  
  1890. 12.  Computer Associates, CA-SENTINEL Reference Guide, 1983.
  1891.  
  1892. 13.  Saltzer, Jerome H.  and Schroeder, Michael D., ``The Protection of
  1893. Information in Computer Systems,'' Proceedings of the IEEE, Vol.  63, No.  9,
  1894. September 1975, pp.  1278- 1308.
  1895.  
  1896. 14.  Honeywell Informations Systems, Inc., Multics Programmer's
  1897. Manual-Reference Guide, 7 ed., AG91.  
  1898.  
  1899. 15.  UC Berkeley, UNIX Programmer's Manual, 7 ed., 1981.
  1900.  
  1901. 16.  IBM, Access Method Services, 1983.  
  1902.  
  1903. 17.  Control Data Corporation, NOS Version 2 Reference Set, 3 ed., 1983.
  1904.  
  1905. 18.  APOLLO Computer Inc., The DOMAIN System Administrator's Guide, 3 ed.,
  1906. 1983.
  1907.  
  1908. 19.  Bell, D.E.  and LaPadula, L.J., ``Secure Computer Systems: Unified
  1909. Exposition and Multics Interpretation','' Tech.  report MTR-2997 Rev.  1,
  1910. MITRE Corp., March 1976.
  1911.  
  1912. 20.  Benzel Vickers, T., ``Overview of the SCOMP Architecture and
  1913. Security Mechanisms,'' Tech.  report MTR-9071, MITRE Corp., September 1983.
  1914.  
  1915.                                      29
  1916.  
  1917.  
  1918.