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

  1. A Guide to Understanding Trusted Recovery in
  2. Trusted Systems
  3.  
  4.  
  5.  
  6. Table of Contents
  7.  
  8.      FOREWORD 
  9.      ACKNOWLEDGMENTS 
  10.      1 INTRODUCTION 
  11.           1.1 BACKGROUND 
  12.           1.2 PURPOSE 
  13.           1.3 SCOPE 
  14.           1.4 CONTROL OBJECTIVE 
  15.           1.5 DOCUMENT OVERVIEW 
  16.      2 FAILURES, DISCONTINUITIES, AND RECOVERY 
  17.           2.1 STATE-TRANSITION (ACTION) FAILURES 
  18.           2.2 TCB FAILURES 
  19.           2.3 MEDIA FAILURES 
  20.           2.4 DlSCONTINUITY OF OPERATION 
  21.      3 PROPERTIES OF TRUSTED RECOVERY 
  22.           3.1 SECURE STATES 
  23.           3.2 SECURE STATE TRANSITIONS 
  24.      4 DESIGN APPROACHES FOR TRUSTED RECOVERY 
  25.           4.1 RESPONSIBILITY FOR TRUSTED RECOVERY 
  26.           4.2 SOME PRACTICAL DIFFICULTIES WITH CURRENT FORMALISMS 
  27.           4.3 SUMMARY OF CURRENT APPROACHES TO RECOVERY 
  28.                4.3.1 Types of System Recovery 
  29.                4.3.2 Current Approaches 
  30.                4.3.3 Implementation of Atomic State Transitions 
  31.                     4.3.3.1 Shadowing 
  32.                     4.3.3.2 Logging 
  33.                     4.3.3.3 Logging and Shadowing 
  34.                4.3.4 Recovery with Non-Atomic State Transitions 
  35.                     4.3.4.1 Sources of Inconsistency---A Generic Example 
  36.                     4.3.4.2 Non-Atomic TCB Primitives 
  37.                     4.3.4.3 Idempotency of Recovery Procedures 
  38.                     4.3.4.4 Recovery With Non-Atomic System Primitives 
  39.           4.4 DESIGN OPTIONS FOR TRUSTED RECOVERY 
  40.      5 IMPACT OF OTHER TCSEC REQUIREMENTS ON TRUSTED RECOVERY 
  41.           5.1 OPERATIONAL ASSURANCE 
  42.           5.2 LIFE-CYCLE ASSURANCE 
  43.                5.2.1 Security Testing 
  44.                5.2.2 Design Specification and Verification 
  45.                5.2.3 Configuration Management 
  46.                5.2.4 Trusted Distribution 
  47.           5.3 DOCUMENTATION 
  48.                5.3.1 Trusted Facility Manual 
  49.                5.3.2 Test Documentation 
  50.                5.3.3 Design Documentation 
  51.      6 SATISFYING THE TCSEC REQUIREMENTS 
  52.           6.1 REQUIREMENTS FOR SECURITY CLASS B3 
  53.                6.1.1 Operational Assurance 
  54.                     6.1.1.1 System Architecture 
  55.                     6.1.1.2 Trusted Facility Management 
  56.                6.1.2 Life-Cycle Assurance 
  57.                     6.1.2.1 Security Testing 
  58.                     6.1.2.2 Design Specification and Verification 
  59.                     6.1.2.3 Configuration Management 
  60.                6.1.3 Documentation 
  61.                     6.1.3.1 Trusted Facility Manual 
  62.                     6.1.3.2 Test Documentation 
  63.                     6.1.3.3 Design documentation 
  64.           6.2 ADDITIONAL REQUIREMENTS OF SECURITY CLASS A1 
  65.                6.2.1 Additional Life-Cycle Assurance Requirements 
  66.                     6.2.1.1 Configuration Management 
  67.                     6.2.1.2 Trusted Distribution 
  68.      GLOSSARY 
  69.      BIBLIOGRAPHY 
  70.  
  71.  
  72. NCSC-TG-022
  73.  
  74. Library No. S-236,061 Version 1
  75.  
  76. FOREWORD
  77.  
  78. A Guide to Understanding Trusted Recovery in Trusted Systems provides a
  79. set of good practices related to trusted recovery. We have written this
  80. guideline to help the vendor and evaluator community understand the
  81. requirements for trusted recovery, as well as the level of detail required
  82. for trusted recovery at all applicable classes, as described in the
  83. Department of Defense Trusted Computer Systems Evaluation Criteria. In an
  84. effort to provide guidance, we make recommendations in this technical
  85. guideline that are not requirements in the Criteria.
  86.  
  87. The Trusted Recovery Guide is the latest in a series of technical
  88. guidelines published by the National Computer Security Center. These
  89. publications provide insight to the Trusted Computer Systems Evaluation
  90. Criteria requirements for the computer security vendor and technical
  91. evaluator. The goal of the Technical Guideline Program is to discuss each
  92. feature of the Criteria in detail and to provide the proper
  93. interpretations with specific guidance.
  94.  
  95. The National Computer Security Center has established an aggressive
  96. program to study and implement computer security technology. Our goal is
  97. to encourage the widespread availability of trusted computer products for
  98. use by any organization desiring better protection of its important data.
  99. One way we do this is by the Trusted Product Evaluation Program. This
  100. program focuses on the security features of commercially produced and
  101. supported computer systems. We evaluate the protection capabilities
  102. against the established criteria presented in the Trusted Computer System
  103. Evaluation Criteria. This program, and an open and cooperative business
  104. relationship with the computer and telecommunications industries, will
  105. result in the fulfillment of our country's information systems security
  106. requirements. We resolve to meet the challenge of identifying trusted
  107. computer products suitable for use in processing information that needs
  108. protection.
  109.  
  110. I invite your suggestions for revising this technical guideline. We will
  111. review this document as the need arises.
  112.  
  113. 30 December 1991 
  114. Patrick R. Gallagher, Jr. 
  115. Director 
  116. National Computer Security Center 
  117.  
  118. ACKNOWLEDGMENTS
  119.  
  120. The National Computer Security Center extends special recognition and
  121. acknowledgment to Dr. Virgil D. Gligor as the primary author of this
  122. document. James N. Menendez and Capt. James A. Muysenberg (USAF) are
  123. recognized for the development of this guideline, and Capt. Muysenberg is
  124. recognized for its editing and publication.
  125.  
  126. We wish to thank the many members of the computer security community who
  127. enthusiastically gave their time and technical expertise in reviewing this
  128. guideline and providing valuable comments and suggestions.
  129.  
  130. 1 INTRODUCTION
  131.  
  132. 1.1 BACKGROUND
  133.  
  134. The principal goal of the National Computer Security Center (NCSC) is to
  135. encourage the widespread availability of trusted computer systems. In
  136. support of this goal the NCSC created a metric, the DoD Trusted Computer
  137. System Evaluation Criteria (TCSEC) [17], against which computer systems
  138. could be evaluated.
  139.  
  140. The TCSEC was originally published on 15 August 1983 as CSC-STD-001-83. In
  141. December 1985 the Department of Defense adopted it, with a few changes, as
  142. a Department of Defense Standard, DoD 5200.28-STD. DoD Directive 5200.28,
  143. Security Requirements for Automatic Information Systems (AISs) [10],
  144. requires the Department of Defense to use the TCSEC. The TCSEC is the
  145. standard used for evaluating the effectiveness of security controls built
  146. into DoD AISs.
  147.  
  148. The TCSEC is divided into four divisions: D, C, B, and A. These divisions
  149. are ordered in a hierarchical manner. The TCSEC reserves the highest
  150. division (A) for systems providing the best available level of assurance.
  151. Within divisions C and B are subdivisions known as classes, which also are
  152. ordered in a hierarchical manner to represent different levels of security
  153. in these divisions.
  154.  
  155. 1.2 PURPOSE
  156.  
  157. An important assurance requirement of the TCSEC, which appears in classes
  158. B3 to A1, is trusted recovery. The objective of trusted recovery is to
  159. ensure the maintenance of the security and accountability properties of a
  160. system in the face of failures and discontinuities of operation. To
  161. accomplish this, a system should incorporate a set of mechanisms enabling
  162. it to remain in a secure state whenever a well- defined set of anticipated
  163. failures or discontinuities occur. It also should include a set of
  164. procedures enabling the administrators to bring the system to a secure
  165. state whenever unanticipated failures or discontinuities occur. (Chapter 6
  166. explains the distinction between anticipated and unanticipated failures.)
  167.  
  168. Besides these mechanisms, the TCSEC's B3-A1 classes require the
  169. implementor to follow specific design principles and practices,
  170. collectively called assurance measures. The TCSEC further requires the
  171. developer to provide specific documentation evidence sufficient for an
  172. evaluator or accreditor to verify that the mechanisms and assurances are
  173. sufficient to meet specified requirements.
  174.  
  175. This guide presents the issues involved in the design of trusted recovery.
  176. It provides guidance to manufacturers on what functions of trusted
  177. recovery to incorporate into their systems. It also provides guidance to
  178. system evaluators and accreditors on how to evaluate the design and
  179. implementation of trusted recovery functions. This document contains
  180. suggestions and recommendations derived from TCSEC objectives but which
  181. the TCSEC does not require. Examples in this document are not the only way
  182. of accomplishing trusted recovery. Nor are the recommendations
  183. supplementary requirements to the TCSEC. The only measure of TCSEC
  184. compliance is the TCSEC itself.
  185.  
  186. This guideline isn't a tutorial introduction to the topic of recovery.
  187. Instead, it's a summary of trusted recovery issues that should be
  188. addressed by operating systems designed to satisfy the requirements of the
  189. B3 and A1 classes. We assume the reader of this document is an operating
  190. system designer or evaluator who is already familiar with the notion of
  191. recovery in operating systems. The guide explains the security properties
  192. of system recovery (and the notion of trusted recovery). It also defines a
  193. set of baseline requirements and recommendations for the design and
  194. evaluation of trusted recovery mechanisms and assurance. The reader who is
  195. unfamiliar with the notion of system recovery and security modeling
  196. required of B3 and Al systems may find it useful to refer both to the
  197. recovery literature (such as [1, 5, 14-16, 20-23, 25, 27]) and the
  198. security literature (such as [3,11, 26, 29]) cited in this guide.
  199.  
  200. 1.3 SCOPE
  201.  
  202. Trusted recovery refers to mechanisms and procedures necessary to ensure
  203. that failures and discontinuities of operation don't compromise a system's
  204. secure operation. The guidelines for trusted recovery presented refer to
  205. the design of these mechanisms and procedures required for the classes B3
  206. and A1 of the TCSEC. These guidelines apply to computer systems and
  207. products built or modified with the intention of satisfying TCSEC
  208. requirements. We make additional recommendations derived from the stated
  209. objectives of the TCSEC.
  210.  
  211. Not addressed are recovery measures designed to tolerate failures caused
  212. by physical attacks on ADP equipment, natural disasters, water or fire
  213. damage, nor administrative measures that deal with such events. The
  214. evaluation of these measures is beyond the scope of the TCSEC [17, p. 89].
  215.  
  216. 1.4 CONTROL OBJECTIVE
  217.  
  218. Trusted recovery is one of the areas of operational assurance. The
  219. assurance control objective states:
  220.  
  221. "Systems that are used to process or handle classified or other sensitive
  222. information must be designed to guarantee correct and accurate
  223. interpretation of the security policy and must not distort the intent of
  224. that policy. Assurance must be provided that correct implementation and
  225. operation of the policy exists throughout the system's life-cycle." [17,
  226. p. 63]
  227. This objective affects trusted recovery in two important ways. First, the
  228. design and implementation of the recovery mechanisms and procedures must
  229. satisfy the life-cycle assurance requirements of correct implementation
  230. and operation. Second, both a system's administrative procedures and
  231. recovery mechanisms should ensure correct enforcement of the system
  232. security policy in the face of system failures and discontinuities of
  233. operation. The notions of failure and discontinuity of operation are
  234. defined in Chapter 2.
  235.  
  236. 1.5 DOCUMENT OVERVIEW
  237.  
  238. This guide contains five chapters besides this introductory chapter.
  239. Chapter 2 reviews the key notions of failure, discontinuity of operation,
  240. and recovery. Chapter 3 discusses the properties of trusted recovery.
  241. Chapter 4 presents recovery design approaches and options that can be used
  242. for trusted recovery. Chapter 5 discusses the impact of the other TCSEC
  243. requirements on trusted recovery. Chapter 6 presents TCSEC requirements
  244. that affect the design and implementation of trusted recovery functions,
  245. and includes additional recommendations corresponding to B3-A1 evaluation
  246. classes. The glossary contains the definitions of the significant terms
  247. used. Following this is a list of the references cited in the text.
  248.  
  249. 2 FAILURES, DISCONTINUITIES, AND RECOVERY
  250.  
  251. The TCSEC requires for security classes B3 and A1 that:
  252.  
  253.      "Procedures and/or mechanisms shall be provided to assure that, after
  254.      an ADP system failure or other discontinuity, recovery without a
  255.      protection compromise is obtained." [17, p. 39]
  256.  
  257. In this chapter we discuss the notions of failure and discontinuity of
  258. Trusted Computing Base (TCB) operations, and present an informal
  259. qualitative description of their effects on system states. We also briefly
  260. present general recovery approaches used in practice. Throughout this
  261. chapter and document we use the term "failure" for an event causing a
  262. system function to behave inconsistently with its informal specification.
  263. We reserve the term "discontinuity" of operation for failures caused by
  264. user, administrator, or operator action.
  265.  
  266. Recovery mechanisms of computer systems are designed to respond to
  267. anticipated failures or discontinuities of operation. These mechanisms do
  268. not handle "unanticipated" failures nor "unanticipated" discontinuities of
  269. operation; therefore, computer-system documentation should include
  270. descriptions of administrative procedures to handle such events. In a
  271. well-designed system, unanticipated failures and discontinuities of
  272. operation are events expected to occur with very low frequency, i.e., once
  273. or twice per year. For this reason, administrative procedures, as opposed
  274. to automated mechanisms in the system, represent an adequate response to
  275. unanticipated failures and discontinuities of operation, even when these
  276. procedures are complex and extensive.
  277.  
  278. One can't establish formal models of failure and discontinuity of
  279. operation in which proofs demonstrate the model's internal consistency.
  280. Neither physical systems, such as devices, processing units, and storage,
  281. nor behaviors of users, administrators, and operators, have formal
  282. properties [21]. Therefore, formal modeling and specification of expected
  283. failures and discontinuities of operation can't be required. Only informal
  284. assumptions derived from operational experience can be made about expected
  285. failures, discontinuities, their effects, and their frequencies.
  286. References [14, 15, 21] present examples of such assumptions. These
  287. informal assumptions, which should be stated explicitly in system
  288. documentation, form the basis for the design of the recovery mechanisms
  289. and the definition of the administrative recovery procedures.
  290.  
  291. However, recovery mechanisms and administrative procedures must
  292. reconstruct consistent system states, or prevent state transitions to
  293. inconsistent states, as a direct response to occurrences of expected
  294. failures or discontinuities of operation [8, 9]. A system state is
  295. "consistent" if the variables defining it satisfy given predicates
  296. expressing formally or informally invariant properties of the system,
  297. discussed in Section 3.1. A "state transition" is a function which changes
  298. the variables of a system state in a specified way, i.e., specified as
  299. constraints on the system's rules of operation -discussed in Section 3.2.
  300. Therefore, the design of recovery mechanisms and administrative procedures
  301. should use invariant properties and state-transition constraints of the
  302. security model defined for the system, viz., discussion in Chapter 3.
  303.  
  304. The role of recovery mechanisms and of trusted recovery can be best
  305. understood by illustrating the effect of failures and discontinuities of
  306. operation on typical systems. Informal and qualitative assumptions of
  307. failures derived from operational experience with various systems have
  308. been presented in the literature [14,15, 21]. Using these informal
  309. assumptions we can define general classes of failures that affect the
  310. operation of a TCB.
  311.  
  312. One class of failures is identical to the class of errors caused when
  313. users pass wrong parameters to TCB primitives, or invoke the wrong TCB
  314. primitives, and when system resources are exhausted or found in an
  315. inconsistent state because of user actions. These are called
  316. state-transition failures or action failures. We cover this type of
  317. user-induced failure, which falls more naturally in the area of exception
  318. processing, for two reasons: (1) the failures of this class are,
  319. nevertheless, TCB domain failures regardless of their cause; and (2) the
  320. processing of these failures---not just their specification and
  321. documentation---is relevant to system security.
  322.  
  323. For example, incorrect error processing can bring the system into a state
  324. where a user cannot communicate with the TCB, or can contribute to the
  325. mishandling of covert channels. However, we place the major emphasis in
  326. this guideline on the more traditional notions of failure, namely TCB
  327. failures, media failures, and administrator-induced discontinuity of
  328. operation.
  329.  
  330. 2.1 STATE-TRANSITION (ACTION) FAILURES
  331.  
  332. State-transition failures, also called action failures, occur whenever a
  333. TCB primitive, which causes a state transition, cannot complete its
  334. function because it detects exceptional conditions during its execution.
  335. State-transition failures can be caused by bad parameters passed to TCB
  336. primitives, by exhaustion of resource limits, by missing objects needed
  337. during TCB primitive execution, and so on.
  338.  
  339. The effects of state-transition failures on TCB states are not as
  340. far-reaching as those of other failures. Because these failures occur
  341. often, the code of TCB primitives usually includes recovery mechanisms
  342. that undo the temporary modifications of system states before the
  343. primitive's return, thus returning the system to a consistent state. If
  344. the recovery mechanisms of TCB primitives fail to undo temporary
  345. modifications of system states, the system may remain in an inconsistent
  346. state and eventually crash. A crash is a failure that causes the
  347. processors' registers to be reset to some standard values [21]. Because
  348. consistent system states cannot be recovered from processor and primary
  349. memory registers after a crash, these registers are referred to as
  350. "volatile" storage. In contrast, consistent system states can usually be
  351. recovered from magnetic media such as disks and tapes; these media are
  352. called "nonvolatile" storage.
  353.  
  354. Examples of recovery mechanisms included in TCB primitives to undo
  355. temporary state modifications after state-transition failures are found in
  356. most contemporary operating systems. For instance, consider the "creat"
  357. primitive of a hypothetical UNlX system which allocates i-node table
  358. entries before allocating file table entries [l]. If the file table entry
  359. is full at the time "creat" call is made, a state-transition failure would
  360. occur. Before returning to the caller, the recovery code of "creat"
  361. deallocates the i-node table entry allocated for the file that couldn't be
  362. created. Failure to deallocate such entries would cause the i-node table
  363. to fill up and remain full, causing a system crash.
  364.  
  365. 2.2 TCB FAILURES
  366.  
  367. TCB failures occur whenever the TCB code detects an error below the TCB
  368. primitives' interface which can't be fixed; i.e., the error cannot be
  369. masked. TCB failures are caused by persistent inconsistencies in critical
  370. system tables, by wild branches of the TCB code (possibly caused by
  371. transient hardware failures), by power failures, by processor failures,
  372. and so on. TCB failures always cause a system crash.
  373.  
  374. In systems providing a high degree of hardware fault tolerance, system
  375. crashes still occur because of software errors. Since crashes cause
  376. volatile storage to be lost, and since nonvolatile media usually survive
  377. crashes, recovery mechanisms can reconstruct consistent states in a
  378. maintenance mode of operation. After reconstructing a consistent state,
  379. the recovery mechanisms restart the system with no process execution in
  380. progress, e.g., processes that were active, blocked, or swapped out before
  381. the crash are aborted. New processes, which run the code of aborted
  382. processes executing at the time of the crash, can be started by users
  383. after the consistent state is reconstructed. Recovery mechanisms can
  384. reconstruct consistent states by either removing or completing incomplete
  385. updates of various objects represented on nonvolatile media. Properties of
  386. and design approaches for recovery mechanisms able to reconstruct
  387. consistent states from nonvolatile storage after TCB failures are
  388. discussed in Section 3.2 and Chapter 4.
  389.  
  390. Some TCB failures allow a system to shut down in an orderly manner. These
  391. failures may be caused by process swap-space exhaustion, timer-interrupt
  392. table exhaustion, and, in general, by conditions that can't be handled by
  393. TCB primitives themselves in normal modes of operation. Traps originated
  394. by persistent hardware failures, such as memory and bus parity errors,
  395. also may cause failures.
  396.  
  397. 2.3 MEDIA FAILURES
  398.  
  399. Media failures occur whenever errors are detected on some nonvolatile
  400. storage device that the TCB cannot fix (i.e., the errors can't be masked).
  401. Media failures are caused by hardware failures such as disk head crashes,
  402. persistent read/write failures due to misaligned heads, worn-out magnetic
  403. coating, dust on the disk surface, and so on. They also are caused by
  404. software failures such as TCB failures which make media unreadable.
  405.  
  406. The effect of media failures is that part, or all, of the media
  407. representing TCB objects become inaccessible and corrupt. Data structures
  408. relevant to system security also may be corrupted by media failures, e.g.,
  409. object security labels. The system usually crashes unless the lost data
  410. can be retrieved from archival storage and rebuilt on a redundant storage
  411. device. Of course, media failures that don't affect TCB objects may not
  412. cause system crashes. If redundant media aren't available, or if users and
  413. administrators don't keep archival data up-to-date, media failures may
  414. become unrecoverable failures. Administrative recovery procedures may have
  415. to be used to bring the system to a consistent state. As discussed in
  416. Chapters 5 and 6, all these procedures should be explained in the system's
  417. Trusted Facility Manual.
  418.  
  419. 2.4 DlSCONTINUITY OF OPERATION
  420.  
  421. Failures induced by users, administrators, and operators cause
  422. discontinuities of operation. Inside an operating system, discontinuities
  423. of operation manifest themselves most often as state-transition failures,
  424. TCB failures, and, less often, as media failures. They are caused by
  425. erroneous actions, such as unexpected system shutdowns, e.g., by turning
  426. off the power. Also, they can be caused by lack of action, such as
  427. ignoring the exhaustion of critical system resources under administrative
  428. control despite documented or on-line warnings, e.g., audit trail is 95%
  429. full, insufficient swap space left, inadequate configuration installed,
  430. etc.
  431.  
  432. The effects of discontinuities of operation are the same as those of the
  433. state-transition and TCB failures mentioned above. Recovery mechanisms or
  434. administrative procedures necessary for the reconstruction of a consistent
  435. state also are correspondingly similar to those used for failures. For
  436. example, cancellation of a TCB primitive call by depressing the "break"
  437. key during the call's execution might have the same effect as a
  438. state-transition failure detected by the TCB primitive. Each TCB primitive
  439. and state transition would have to be designed either to ignore user
  440. cancellation signals during execution of critical code sections or to
  441. clean up internal data structures during the processing of such signals.
  442.  
  443. Actions such as system shutdowns by power-off action during execution of
  444. TCB code may cause TCB failures. Recovery mechanisms for TCB failures
  445. caused by power failures also may be able to handle unexpected system
  446. shutdowns. In either case, during subsequent power-on procedures, the TCB
  447. not only detects that TCB failures left the system in an inconsistent
  448. state, but also initiates recovery of a consistent state before the system
  449. enters the normal mode of operation.
  450.  
  451. Somewhat less often, administrator or operator actions cause media
  452. failures. For example, initiation of on-line diagnostic tests of a media
  453. controller during normal mode of system operation, instead of the
  454. maintenance mode, would most likely cause media failures. Similarly,
  455. initiation of TCB maintenance actions such as disk reformatting in the
  456. normal mode of operation would certainly cause subsequent media failures.
  457. Discontinuity of operation caused by administrator- or operator-induced
  458. failures may require use of administrative recovery procedures.
  459.  
  460. 3 PROPERTIES OF TRUSTED RECOVERY
  461.  
  462. The properties of trusted recovery are defined in terms of two notions:
  463. secure states and secure state transitions. A system state is secure
  464. whenever consistency invariants derived from valid interpretations of
  465. security and accountability models are satisfied. A state transition is
  466. secure if both its input state and its output state are secure, and it
  467. satisfies the constraints placed on it by valid interpretations of
  468. security policy and accountability policy models.
  469.  
  470. Accountability models include models of user authentication, trusted path,
  471. and audit. The notions of invariants for secure states and constraints for
  472. specific state transitions are briefly illustrated in this chapter and
  473. discussed in detail in reference [11]. Reference [29] discusses the notion
  474. of a valid interpretation of a security model in detail and reference [3]
  475. illustrates it. For the sake of brevity, interpretations of security
  476. models aren't illustrated in this guideline.
  477.  
  478. 3.1 SECURE STATES
  479.  
  480. State-machine (or "state-transition") models of security, such as the Bell
  481. La Padula model [3], define a state in terms of the following abstract
  482. variables:
  483.  
  484.      a. subjects (trusted and untrusted)
  485.      b. objects
  486.      c. access privileges
  487.      d. access matrix (defining the privileges of subjects to objects)
  488.      e. current access set (defining the privileges subjects can currently
  489.      exercise over objects)
  490.      f. security function (defining the subject's maximum and current
  491.      subject clearance and the object classification)
  492.      g. object hierarchy
  493.  
  494. These abstract variables are used in defining state invariants that help
  495. define the notion of the secure state. The following paragraphs labeled
  496. (1)-(5) discuss the use and characteristics of state invariants for
  497. trusted recovery.
  498.  
  499. (1) Security in variants are derived formally from security model
  500. interpretations.
  501.  
  502. State-machine models also include conditions, or axioms, whose
  503. interpretations in a given system provide invariant properties which must
  504. be satisfied by secure states. For example, the conditions of the Bell-La
  505. Padula model include the following:
  506.  
  507.      a. the simple-security condition for subjects
  508.      b. the *-property for the security function
  509.      c. the discretionary security condition for access privileges of
  510.      current access sets
  511.      d. the compatibility condition for object hierarchies
  512.  
  513. The model description [3] precisely defines the specific meaning of these
  514. conditions in terms of the variables of the system states and the examples
  515. of their valid interpretations.
  516.  
  517. (2) Informally derived in variants should augment formally derived
  518. invariants whenever necessary.
  519.  
  520. State-transition models might not include all the conditions that are
  521. relevant to the notion of security or accountability. Whenever this is
  522. true, new invariants need to be defined to augment the set of existing
  523. invariants derived from interpretation of model conditions (or axioms).
  524. For example, additional invariants may be defined for objects such as the
  525. password file, user-account file, security map file, and system
  526. configuration file, which are used by trusted processes of a system
  527. supporting the Bell-La Padula model. These invariants may refer to
  528. multiple types of objects, as illustrated in this example:
  529.  
  530.      In all system states, all user and group identifiers must be unique,
  531.      integer values; the identifiers' length may vary from zero to a
  532.      defined maximum number of characters.
  533.  
  534. User and group identifiers may be included in a password file, a user
  535. account file, and a file defining group membership. Additional invariants
  536. also may be needed for areas of security and accountability policy where
  537. the interpretations of the model's conditions provide insufficient detail
  538. for a given system. For example, an in- variant that is specific to TCBs
  539. implementing Multics-like access control lists (ACLs) [26] for
  540. discretionary access control may state:
  541.  
  542.      In all system states, the entries of an ACL must be sorted as
  543.      follows:
  544.      <user id.group id > entries precede <user id.* > entries
  545.      <user id.* > entries precede < *.group id > entries
  546.      < *.group id > entries precede < *.* > entries
  547.      where "*" represents the wild-card qualifier.
  548.  
  549. Similar invariants also should augment other areas of access control and
  550. accountability (e.g., invariants for user and system security profiles
  551. including minimum and maximum user clearances and object classifications;
  552. invariants for audit mechanisms).
  553.  
  554. Recovery mechanisms of a TCB become trusted only if they maintain secure
  555. states in the normal mode of operation, or detect insecure states and
  556. reconstruct secure states in the maintenance mode of operation, despite
  557. the occurrence of failures and discontinuities. To detect insecure states
  558. after system failures or to verify that recovered states are secure,
  559. recovery mechanisms must check whether security invariants are satisfied.
  560. All security invariants are relevant to the recovery mechanisms handling
  561. state-transition failures. These failures usually leave the system in the
  562. normal mode of operation, instead of causing the system to enter
  563. maintenance mode. Therefore, all invariants which must hold in the normal
  564. mode of operation also must hold after recovery from state-transition
  565. failures.
  566.  
  567. (3) Some security invariants may be irrelevant for trusted recovery.
  568.  
  569. Not all security invariants are relevant for other classes of failures.
  570. For example, consider the case of TCB failures when all volatile memory is
  571. lost and the system enters maintenance mode. In maintenance mode,
  572. consistent states are recovered, security invariants are checked, and the
  573. system is placed back in normal mode of operation in a secure state that
  574. usually includes an empty set of user processes (i.e., untrusted subjects)
  575. and a corresponding empty current access set.
  576.  
  577. In most system-recovery designs, recovery mechanisms restart only a few of
  578. the trusted processes (e.g., the "login" process listening to terminals).
  579. User processes in execution at the time of TCB failure are aborted because
  580. their state is lost either along with the loss of volatile memory or
  581. during the recovery of secure states. Users can start new processes
  582. executing the code of these aborted processes after the system is placed
  583. in normal mode of operation. Therefore, after TCB failures, recovery
  584. mechanisms need not check invariant properties referring to the current
  585. access set.
  586.  
  587. For example, from the set of the invariants derived from the conditions of
  588. the Bell-La Padula model, only those corresponding to the simple-security
  589. condition and from the compatibility condition remain relevant for trusted
  590. processes and for the object hierarchy, respectively, after system
  591. crashes. However, if the current state of at least some user processes can
  592. be recovered after a TCB failure, other invariants derived from the
  593. conditions of the Bell-La Padula model (e.g., the *-property), also become
  594. relevant. Thus, the types of relevant invariants depend on the type of
  595. desired and possible system-state recovery (e.g., a state with no active
  596. processes), no opened files or devices, or a state with at least some
  597. active processes, opened files and devices. The type of system-state
  598. recovery is determined by either the designers choice or by other,
  599. non-TCSEC requirements. However, a complete set of security invariants
  600. should be derived from interpretations of security models for any type of
  601. system-state recovery.
  602.  
  603. (4) All TCB integrity invariants should be satisfied by trusted recovery.
  604.  
  605. To detect insecure states, or to verify that recovered states are secure,
  606. recovery mechanisms also must verify whether integrity invariants of the
  607. TCB are satisfied. Internal TCB integrity invariants do not necessarily
  608. refer only to state variables defined by user-level security or integrity
  609. models. They also may refer to internal TCB variables used for object and
  610. subject representation, and may not be visible either at the user nor at
  611. the administrative interface of the TCB. For example, internal
  612. TCB-integrity invariants may require the satisfaction of the conditions
  613. below.
  614.  
  615. For all recovered states:
  616.  
  617. a. A disk sector is either free or allocated.
  618.  
  619. b. The sum of free and allocated disk sectors equals the total number of
  620. disk sectors.
  621.  
  622. c. Every allocated disk sector occurs exactly once in exactly one object
  623. representation,
  624.  
  625. and all free disk sectors do not belong to any object.
  626.  
  627. d. All active objects are reachable from the root of their hierarchy.
  628.  
  629. e. If an object's link count or reference count is zero, neither a link
  630. nor a reference exists
  631.  
  632. to that object.
  633.  
  634. Most operating systems provide recovery mechanisms which attempt to detect
  635. internal inconsistencies after crashes and to recover consistent states.
  636. [1, º5.18] provides examples of internal operating system invariants for
  637. the UNIX file system which are enforced by the file system checking
  638. program "fsck."
  639.  
  640. (5) Lack of security invariants makes trusted recovery impossible.
  641.  
  642. The key role of secure-state determination in trusted recovery underlines
  643. the importance of security invariants. Lack of such invariants makes it
  644. impossible to determine whether TCB primitives can tolerate
  645. state-transition failures, i.e., whether TCB primitives clean up temporary
  646. state modifications before they return to their caller. Similarly, lack of
  647. security invariants make it impossible for the recovery mechanisms and
  648. procedures to determine whether the recovered state is secure even if all
  649. state transitions are designed to satisfy all model's constraints in the
  650. face of "expected" failures and discontinuities of operations, discussed
  651. in Section 3.2. "Unexpected" TCB failures, media failures, or
  652. discontinuities may still leave the system in insecure states. Whether
  653. such states are secure or insecure can only be determined by verifying the
  654. state invariants.
  655.  
  656. 3.2 SECURE STATE TRANSITIONS
  657.  
  658. A secure state transition originating from a secure input state guarantees
  659. that (1) its output state is secure, and that (2) all security constraints
  660. defined for it are satisfied. In contrast with an invariant, which is
  661. defined on the variables of individual states and holds for all state
  662. transitions, a constraint is a predicate that relates the variables of two
  663. or more states. A constraint may be relevant only to specific state
  664. transitions. A typical constraint is the following:
  665.  
  666.      For any TCB primitive which changes the security level of an object,
  667.      the new level must dominate the original security level of the
  668.      object.
  669.  
  670. This constraint expresses a policy requirement that users can only
  671. upgrade, but not downgrade, the classification of an object. Other,
  672. similar constraints can be found in the appendix of reference [3], and in
  673. reference [11].
  674.  
  675. (1) Trusted recovery requires the satisfaction of all constraints.
  676.  
  677. TCB primitives implement secure state transitions. The primitives may
  678. temporarily place the system in insecure states before they return to
  679. their caller. Any failure or discontinuity of operation during a state
  680. transition may leave the system in an insecure state. Furthermore, even if
  681. the recovered system state appears secure, it's possible that the
  682. constraints placed on the secure state transition (during which the TCB
  683. failed) are violated as a result of the failure.
  684.  
  685. For example, consider a state transition which changes the security level
  686. of an object and satisfies the constraint defined above in absence of
  687. failures. Because a security level may be a multi-field, multi-word data
  688. structure, any update to it requires the execution of several instructions
  689. including at least one I/0 instruction. A failure may occur in the middle
  690. of the security level update; e.g., a power failure during the disk-write
  691. operation may leave the security level only partially updated. This may
  692. violate the constraint defined above but may not affect any state
  693. invariant. The update may have changed the clearance field and some, but
  694. not all, of the category fields of the security level before the failure.
  695. As a consequence, the resulting object security level would no longer
  696. dominate the original object security level, violating the above
  697. constraint. However, it's possible the resulting object security level
  698. satisfies all state invariants, such as those derived from the
  699. interpretation of the simple- security and compatibility conditions of the
  700. Bell-La Padula model. Recovery mechanisms would have no way to detect
  701. whether the recovered state, which would include the update, is insecure.
  702.  
  703. Similar, and more probable, problems may appear when the TCB crashes in
  704. the middle of writing a label of a newly created file, in the middle of a
  705. security map update by a system-administrator process, or in the middle of
  706. an update to a file containing an access control list or any other
  707. security-relevant data structure. The notion of atomicity, discussed in
  708. the paragraph below labeled (2), would prevent this type of recovery
  709. problem from violating system-security policy.
  710.  
  711. Recovery mechanisms can detect that the system is in an insecure state
  712. following a TCB or media failure, after extensive, time-consuming checks
  713. of security in- variants, without relying on special designs of TCB code
  714. implementing secure state transitions. However, seldom are the recovery
  715. mechanisms able to recover an old secure state, or construct the new
  716. secure state from nonvolatile media, without relying on special design and
  717. implementation of TCB code that anticipates various types of failures.
  718.  
  719. Because constraints relate variables of old states with those of the new
  720. states created by secure state transitions, failures may make it
  721. impossible to verify constraints. In other words, the values of the old
  722. states may no longer be available, whereas the values of the new states
  723. may not be fully updated at the time of the failure. Thus, it's important
  724. to design the TCB code implementing state transitions so assurances
  725. provide the recovery of either the secure input state or the secure output
  726. state of a transition. In the latter case, the recovery mechanism should
  727. be guaranteed to satisfy the transition's security constraints---not just
  728. the secure-state invariants.
  729.  
  730. (2) Atomicity of all TCB primitives ensures trusted recovery.
  731.  
  732. Atomicity is the key property of the TCB code implementing secure state
  733. transitions, enabling the recovery mechanisms to reconstruct secure states
  734. despite the occurrence of (anticipated) failures. Assuming that all state
  735. transitions can be serialized by concurrency control mechanisms [21], a
  736. state transition is "atomic" in the face of failures if it's either
  737. carried out completely or has no effect at all. In practice, this property
  738. implies that the TCB code implementing state transitions is designed to
  739. ensure that, for the class of anticipated failures, the recovery
  740. mechanisms are always able to reconstruct either input secure states or
  741. output secure states after failures.
  742.  
  743. The literature describes various approaches for providing atomicity at the
  744. operating system level [16, 21, 23, 25, 27], and at the data base
  745. management system level [14,15]. We summarize these approaches in Chapter
  746. 4.
  747.  
  748. (3) Atomicity of all TCB primitives is not always necessary for trusted
  749. recovery.
  750.  
  751. In many operating systems or TCB primitives, it may be difficult to ensure
  752. that all secure-state transitions are atomic. Some operating system
  753. primitives consist of many individual object updates, and atomicity
  754. requires the implementation of these primitives as "transactions" (defined
  755. in Section 4.2.2 and in references [14,15,16, 21,23,25,27]). The
  756. performance penalties and complexity of implementing transactional
  757. behavior in all TCB primitives might be prohibitive for many small
  758. operating systems.
  759.  
  760. In many small operating systems, a more practical approach is taken to the
  761. design of TCB primitives and object representations to aid recovery
  762. mechanisms in the detection of inconsistencies. It's acceptable to
  763. implement TCB-primitive mechanisms which only help detect inconsistent
  764. (insecure) states after crashes, but do not ensure atomicity of
  765. secure-state transitions. These implementations leave the task of
  766. reconstructing consistent or secure states to administrative users and
  767. tools. The choice of which TCB primitives should be made atomic (if any)
  768. or which TCB primitives should only help detect insecure states after
  769. crashes (but not be atomic) belongs to the system designers.
  770.  
  771. An example of a file system design allowing the detection of inconsistent
  772. states by a "scavenging" process is provided in [22]. The scavenging
  773. process recovers files whose representation is intact, and deletes files
  774. whose representations become inconsistent after crashes. To a large
  775. extent, the UNIX system calls are designed to ensure that the "fsck"
  776. program can detect a variety of file system inconsistencies after crashes,
  777. with only some facilities for consistent state recovery without
  778. administrative intervention, viz., [1, Chs. 5.16-5.18] and [5]. Section
  779. 4.2 presents examples of design considerations for TCB primitives which
  780. help the recovery mechanisms detect and correct inconsistencies.
  781.  
  782. 4 DESIGN APPROACHES FOR TRUSTED RECOVERY
  783.  
  784. In this chapter we discuss the responsibilities of administrative users in
  785. trusted recovery, outline some practical difficulties in designing trusted
  786. recovery mechanisms, and summarize several nonexclusive design approaches
  787. to recovery that may be used in trusted systems. We also review the main
  788. options for trusted recovery available to operating system designers. The
  789. primary goal of this chapter is to give the reader an overview of the
  790. recovery design issues presented in the literature and implemented in
  791. various systems during the past decade.
  792.  
  793. 4.1 RESPONSIBILITY FOR TRUSTED RECOVERY
  794.  
  795. The responsibilities for trusted recovery fall into two categories
  796. depending on the type of failure that occurred: (1) TCB design
  797. responsibility, and (2) administrator responsibility. State-transition
  798. failures are routinely handled by designs of TCB primitives without
  799. placing the system in maintenance mode. Controlled system shutdown and
  800. subsequent rebooting also is performed by the TCB with little or no
  801. administrative intervention, viz., the "fsck" program of UNIX.
  802.  
  803. In contrast, emergency system restarts and cold starts are performed
  804. primarily by system administrators using TCB-supported tools. Among the
  805. system administrators, the System Programmer role is responsible for
  806. trusted recovery functions (e.g., consistency checks on system objects, on
  807. individual TCB files and databases, repair of damaged security labels, and
  808. so on [24]). The Security Administrator also may perform recovery
  809. responsibilities whenever the System Programmer's role is not separately
  810. identified by the system's design.
  811.  
  812. The System Programmer role may have additional tools necessary for
  813. checking the integrity of TCB structures and the security invariants of
  814. the initial state, i.e., for establishing the initial secure-system state.
  815. The determination of this state is similar to the determination of whether
  816. a recovered state is secure. However, the initial system state may not
  817. necessarily be identical to a recovered state because, unlike a recovered
  818. state, the initial state may not contain any user-visible objects. Thus,
  819. fewer invariants may be relevant for determining the security of the
  820. initial states.
  821.  
  822. Tools such as the ones suggested in reference [2], for identifying
  823. vulnerabilities of certain system states, also may be useful both for
  824. establishing secure initial states and recovered states. Because some of
  825. the tools used for detecting insecure states and for repairing various
  826. system data structures place the TCB in maintenance mode (e.g., fsck tools
  827. [1, 5]), the use of these tools should be restricted to the System
  828. Programmer role.
  829.  
  830. 4.2 SOME PRACTICAL DIFFICULTIES WITH CURRENT FORMALISMS
  831.  
  832. The key role of secure state invariants and of state-transition
  833. constraints in trusted recovery suggests that designs of B3-A1 systems
  834. should use state-machine models of security policy [11], instead of other
  835. types of models, such as information flow models, which are not defined in
  836. terms of secure states and secure-state transitions. Although in principle
  837. this suggestion appears to be sound, in practice the existing
  838. state-machine models of security policy, such as [3], are not fully
  839. adequate for designing trusted recovery mechanisms. This is the case for
  840. at least the following two reasons.
  841.  
  842. First, when current state-transition models are interpreted, the state
  843. invariants and transition constraints for trusted processes acting on
  844. behalf of system administrators are inadequate in number. Second, extant
  845. models do not include accountability properties of secure systems, thus
  846. making the formal derivation of accountability invariants and constraints
  847. impossible. The apparent reason for these inadequacies of extant
  848. state-machine models is that they are too abstract to include system-
  849. specific invariants and constraints for the areas mentioned above.
  850.  
  851. Invariants and constraints that need to be defined for trusted processes
  852. and for administrative programs in the accountability area are
  853. significantly more numerous and complex than those derived from extant
  854. state-machine models for other TCB areas. An attempt to define state
  855. invariants in the trusted process area ---for formal security-verification
  856. purposes, not for trusted recovery---is reported in [4]. Appendix E of
  857. reference [19] defines a fairly extensive list of invariant conditions for
  858. state variables in the accountability area for the specific purpose of
  859. verifying the security of initial and recovered system states.
  860.  
  861. Lack of formal invariants and constraints for state variables and state
  862. transitions of trusted processes and accountability programs makes it
  863. difficult to determine formally whether TCB primitives can tolerate even
  864. state-transition failures, e.g., determine formally whether inconsistent
  865. states are cleaned-up properly before primitives return to callers. To
  866. determine formally whether recovery mechanisms can reconstruct current
  867. states, or complete state transitions in maintenance mode after expected
  868. TCB or media failures, is a challenging task for anyone. However, informal
  869. derivation of system-specific invariants and constraints is acceptable for
  870. design of trusted-recovery mechanisms so long as evidence is provided of
  871. their correct and extensive use in design of these mechanisms. Such use
  872. represents significant added assurance these mechanisms are designed
  873. correctly.
  874.  
  875. 4.3 SUMMARY OF CURRENT APPROACHES TO RECOVERY
  876.  
  877. 4.3.1 Types of System Recovery
  878.  
  879. Operating systems' responses to failures can be classified into three
  880. general categories: (1) system reboot, (2) emergency system restart, and
  881. (3) system cold start [14].
  882.  
  883. System reboot is performed after shutting down the system in a controlled
  884. manner in response to a TCB failure. For example, when the TCB detects the
  885. exhaustion of space in some of its critical tables, or finds inconsistent
  886. object data structures, it closes all objects, aborts all active user
  887. processes, and restarts with no user process in execution. Before restart,
  888. however, the recovery mechanisms make a best effort to correct the source
  889. of inconsistency. Occasionally, the mere termination of all processes
  890. frees up some important resources, allowing restart with enough resources
  891. available. Note that system rebooting is useful when the recovery
  892. mechanisms can determine that TCB and user data structures affecting
  893. system security and integrity are, in fact, in a consistent state.
  894.  
  895. Emergency system restart is done after a system fails in an uncontrolled
  896. manner in response to a TCB or media failure. In such cases, TCB and user
  897. objects on nonvolatile storage belonging to processes active at the time
  898. of TCB or media failure may be left in an inconsistent state. The system
  899. enters maintenance mode, recovery is performed automatically, and the
  900. system restarts with no user processes in progress after bringing up the
  901. system in a consistent state.
  902.  
  903. System cold start takes place when unexpected TCB or media failures take
  904. place and the recovery procedures cannot bring the system to a consistent
  905. state. TCB and user objects may remain in an inconsistent state following
  906. attempts to recover automatically. Intervention of administrative
  907. personnel is now required to bring the system to a consistent state from
  908. maintenance mode.
  909.  
  910. 4.3.2 Current Approaches
  911.  
  912. A possible view of automated recovery mechanisms for TCBs would be to
  913. consider all internal TCB data structures and seCurity attributes as a
  914. database. This view is useful because significant technological advances
  915. in database consistency and recovery have been made in the last decade; in
  916. principle, one could use these advances for the design of trusted recovery
  917. for TCBs. For this reason, we review possible approaches used in data
  918. management and other storage systems for implementing atomic actions and
  919. transactions.
  920.  
  921. An alternative approach to recovery, used mostly at the operating system
  922. level, relies on detection of inconsistencies caused by failures during
  923. non-atomic state transitions and subsequent correction of those
  924. inconsistencies. This approach, generally called the "optimistic" approach
  925. to recovery (and to the serializability of actions), assumes that TCB
  926. failures are rare, and therefore the overhead penalties of its extensive
  927. recovery mechanisms don't affect the overall performance significantly. In
  928. general, the optimistic approach to recovery has better overall
  929. performance than approaches which make all state transitions atomic, but
  930. recovery is significantly more difficult to design. Section 4.3.4 provides
  931. examples of operating system mechanisms that help detect TCB
  932. inconsistencies after failures.
  933.  
  934. 4.3.3 Implementation of Atomic State Transitions
  935.  
  936. An action is atomic if it's unitary and serializable; it's unitary if it
  937. either happens or has no effect; it's serializable if it's part of a
  938. collection of actions where any two or more actions relating to the same
  939. object appear to execute in seemingly serial order [14,15,21,25,27]. A
  940. transaction consists of a sequence of read and write actions, and is
  941. atomic if its entire sequence of actions is unitary and serializable.
  942. Examples of TCB primitives which should be implemented as atomic actions
  943. or transactions include updating a password file, updating a security map,
  944. changing a security level, changing a user security profile, updating an
  945. ACL, and linking or unlinking an object to a hierarchy.
  946.  
  947. Three basic techniques are used to implement atomic actions and
  948. transactions:
  949.  
  950. (1) update shadowing, (2) update logging, and (3) combinations of update
  951. shadowing and logging. A major difference between shadowing and logging is
  952. that systems using shadowing accomplish all updates to redundant disk
  953. pages or files until all updates of an atomic transaction are finished,
  954. and then introduce these updates into the original system data; whereas
  955. systems using only logging write each update on a log first and then
  956. update the original system data directly, i.e., the updates are done in
  957. place.
  958.  
  959. The advantages and disadvantages of both alternatives, the storage and I/O
  960. requirements for nonvolatile memory, and the notions of two-phase commits
  961. in transaction implementations are discussed in [14,15].
  962.  
  963. 4.3.3.1 Shadowing
  964.  
  965. The central idea behind making a TCB primitive behave as an atomic
  966. transaction is that of updating the primitive in two phases. First, all
  967. the updates of the primitive are collected in a set of "intentions,"
  968. without changing the system's data, i.e., the updates are not performed in
  969. place. The last action of the primitive is to commit its updates by adding
  970. a special "commit" record to the set of intentions.
  971.  
  972. Second, the updates of the intentions set replace the original data in the
  973. system, making the updates visible to other system actions or
  974. transactions.
  975.  
  976. If a crash occurs after the commit record is written, but before all
  977. intentions replace the original data on nonvolatile storage, the second
  978. phase is restarted by the recovery mechanisms as often as necessary
  979. (because there may be subsequent crashes during recovery), without leaving
  980. any undesirable side effects. Thus, the recovery mechanisms can complete a
  981. state transition interrupted by the crash by carrying out all update
  982. intentions. Then the set of intentions is erased.
  983.  
  984. The recovery mechanisms are able to construct the new secure (output)
  985. state which would have been produced by the state transition had failure
  986. not interrupted it. If a crash occurs before writing the commit record,
  987. the recovery mechanisms can only find, or reconstruct, an incomplete set
  988. of intentions on nonvolatile storage and erase them. Thus, the recovery
  989. mechanisms retain the original secure (input) state prevailing before the
  990. crash interrupted the state transition.
  991.  
  992. To ensure that the above scheme works correctly for an expected set of TCB
  993. and media failures, the nonvolatile media must be designed in such a way
  994. that (1) the recovery mechanisms can find or reconstruct complete sets of
  995. intentions after a crash or determine the intentions list is incomplete
  996. (e.g., no commit record is found for it); and (2) the action which writes
  997. the commit record, and therefore completes the set of intentions, is
  998. itself atomic.
  999.  
  1000. To ensure property (1) above, redundant storage is used to represent sets
  1001. of intentions, e.g., a pair of related disk pages are written sequentially
  1002. with the same intention data. The placement of each page of a pair on
  1003. nonvolatile media, which defines the pair's relationship, is chosen so at
  1004. least one of the two pages survives all "expected" failures. For example,
  1005. if the redundant storage containing intentions lists is expected to
  1006. survive disk-head crashes, the disk should be duplexed and page "a" on the
  1007. first disk also is written as page "a" on the second disk. However, if the
  1008. redundant storage is only expected to survive disk-read failures, page "a"
  1009. also is written as page "f(a)" on the same disk, where the function "f"
  1010. defines the relationship between the addresses of the two pages. The only
  1011. inconsistency-detection and reconstruction tasks to be performed relate to
  1012. the recovery of complete intentions sets after each crash. Note that the
  1013. inconsistency-detection and reconstruction tasks are placed at a low level
  1014. within the TCB and, therefore, need not concern themselves with the
  1015. maintenance of type properties of various objects the TCB may have updated
  1016. at the time of the crash.
  1017.  
  1018. To ensure (2) above, the last disk-write operation to the intentions set,
  1019. which commits the transaction, should be implemented with a single
  1020. hardware-provided I/0 instruction that's either atomic or detectably
  1021. non-atomic with respect to the set of expected failures. Most commercially
  1022. available I/0 hardware satisfies this requirement.
  1023.  
  1024. This scheme, called shadowing, was conceived by Lampson and Sturgis in
  1025. 1976, was reported in detail in [21], and was implemented in several
  1026. distributed storage systems at Xerox PARC [20,23,25,27].
  1027.  
  1028. 4.3.3.2 Logging
  1029.  
  1030. Mechanisms which assure that a TCB primitive exhibits transaction
  1031. atomicity and which are based on logging assume that nonvolatile storage
  1032. exists which can be made reliable enough to survive all expected failures,
  1033. e.g., by storage duplexing. With logging, each update of a TCB primitive,
  1034. including both the original object values and the update values, is
  1035. written onto a log represented on nonvolatile storage before the object
  1036. being updated is actually modified in storage, i.e., updated in place. The
  1037. last action of the primitive is to write a commit record on the log,
  1038. signifying the end of the primitive's invocation.
  1039.  
  1040. If the system crashes before the commit point, the entire TCB primitive,
  1041. i.e., transaction, is aborted. Because the log is written before any
  1042. individual update is made in place, all updates can be undone during
  1043. recovery merely by reading the log records of the primitive and restoring
  1044. the original values saved in the log entries. Complex consistency checks
  1045. are unnecessary. Thus, the recovery mechanisms can retain the original
  1046. (input) state prevailing before the state transition was interrupted by
  1047. the crash. This protocol is called "the write-ahead log" protocol in
  1048. [14,15] and implemented in [18]. However, if the system crashes after
  1049. writing the commit record onto the log, then all updates of that TCB
  1050. primitive can be redone from the log records. Thus, the only
  1051. reconstruction activity remaining is that of restoring object contents
  1052. from the log records.
  1053.  
  1054. Logging mechanisms similar to the one just outlined have been used in
  1055. database management systems for a long time. Complete description of
  1056. similar logging mechanisms, which in practice also may include state check
  1057. pointing and transaction save pointing features, are found in [14, 15],
  1058. and in systems reference manuals of many commercially available database
  1059. management systems [18].
  1060.  
  1061. 4.3.3.3 Logging and Shadowing
  1062.  
  1063. Both logging and shadowing have relative advantages and disadvantages.
  1064. These are discussed in [15]. Gray et al. point out that the performance
  1065. characteristics of shadowing make it a desirable mechanism for small
  1066. databases and systems, whereas logging is desirable in large database
  1067. systems. In practice many systems combine both mechanisms to retain the
  1068. advantages of each [15,16].
  1069.  
  1070. In general, operating systems and TCBs maintain relatively small databases
  1071. for implementing security policies. Many of the extant operating systems,
  1072. such as UNIX, already use simple versions of file shadowing to do some
  1073. atomic actions and transactions. Few operating systems implement logging
  1074. at the TCB level for recovery reasons. Logging is used mostly at the
  1075. application level, outside the TCB.
  1076.  
  1077. Both informal [21] and formal [16] proofs of correctness for recovery
  1078. mechanisms using shadowing, or shadowing and logging, are in the
  1079. literature. All these proofs make only informal assumptions of failure
  1080. behavior.
  1081.  
  1082. 4.3.4 Recovery with Non-Atomic State Transitions
  1083.  
  1084. Many of the extant operating systems take an "optimistic" approach to
  1085. recovery. Designs of such systems assume failures requiring system restart
  1086. are rare. Therefore, the performance penalties in normal mode of operation
  1087. and design complexity caused by TCB primitives with atomic behavior may be
  1088. unwarranted. Whether such penalties are significant is still a matter of
  1089. some debate. For some performance figures the reader should consult
  1090. references [14] and [23].
  1091.  
  1092. Subtle system-specific properties are encountered in designs of TCB
  1093. primitives that don't support atomic state transitions but nevertheless
  1094. help ensure that the recovery mechanisms can reconstruct a consistent
  1095. system state. In this section, we present an example of a generic source
  1096. of inconsistency caused by TCB crashes and illustrate specific properties
  1097. of non-atomic TCB primitives enabling recovery of consistent, secure
  1098. states. Of course, these properties aren't necessarily sufficient for
  1099. trusted recovery. Although other similar properties may be found for
  1100. trusted recovery, demonstrating their sufficiency for trusted recovery
  1101. with non-atomic TCB primitives remains a challenge of individual system
  1102. design.
  1103.  
  1104. 4.3.4.1 Sources of Inconsistency---A Generic Example
  1105.  
  1106. A typical inconsistency caused by TCB crashes appears in operating systems
  1107. maintaining several related data structures within the TCB to enable the
  1108. sharing, protection, and management of objects. For example, user-level
  1109. references to an object, which are stored in directories, typically point
  1110. to a single "object map" (e.g., an entry in the "object map table," in the
  1111. "master object directory," in the "global object table," in a "volume
  1112. table of contents," or an i-node in the "i-node space"). This map contains
  1113. various fields defining object attributes such as length, status
  1114. (active/inactive, locked/unlocked, access and modification time, etc.),
  1115. access privileges or ACL references, and a list of memory blocks allocated
  1116. to the object referenced by the map. The map identifies the object's
  1117. representation on secondary storage. A copy of all the object maps
  1118. representing active objects is kept in primary memory. These copies
  1119. identify the representation of objects in a cache of active objects. The
  1120. memory blocks allocated to the object representation may themselves
  1121. contain user- level references to other objects, e.g., whenever the object
  1122. is a directory.
  1123.  
  1124. Any TCB primitive which deletes such an object has to invalidate and/or
  1125. deallocate at least two of the three related data structures, viz., the
  1126. object representation and the object map. In most systems, the outstanding
  1127. user-level references to the deallocated object, e.g., user-directory
  1128. entries for the deallocated object, also have to be invalidated or
  1129. deleted. Capability-based systems are an exception to this because
  1130. capabilities are user-level object references which can't be reused owing
  1131. to their use of system-wide unique identifiers [12].
  1132.  
  1133. The invalidation or deletion of the three types of related structures
  1134. (user-level references ~ object map ~ object representation) during a
  1135. TCB-primitive invocation should be performed in a single atomic action or
  1136. transaction. Similarly, any TCB-primitive invocation which creates an
  1137. object and a reference to it would have to allocate all three related
  1138. structures in a single atomic action or transaction. Should the TCB
  1139. primitives allocate/deallocate the three related structures independently
  1140. using non-atomic actions, crashes between the allocation/deallocation of
  1141. one of the related structures and the rest might leave references pointing
  1142. to nonexistent objects, causing a "dangling-reference" problem.
  1143. Alternatively, such crashes might leave references to already allocated
  1144. objects of other users, causing an "object-reuse" problem.
  1145.  
  1146. 4.3.4.2 Non-Atomic TCB Primitives
  1147.  
  1148. Some designs of TCB primitives enable recovery mechanisms to reconstruct
  1149. consistent states without requiring atomicity of (all) TCB primitives and
  1150. (all) object updates. We present two properties of TCB designs below
  1151. illustrating this fact.
  1152.  
  1153. Example 1---Ordered Disk-Writes within TCB Primitives
  1154.  
  1155. TCB primitives which allocate,1deallocate TCB structures, such as the
  1156. three related structures mentioned previously, could order their write
  1157. (update) operations to nonvolatile storage in such a way as to prevent
  1158. both dangling references and object reuse problems after crashes. Consider
  1159. the following order of updates and requirement for synchronous writes:
  1160.  
  1161.      (1) In any TCB primitive which deallocates user-level references,
  1162.      object map, and object representations within one invocation, the
  1163.      necessary diskwrite operations should follow the direction of
  1164.      references; i.e., the objects containing the user-level reference
  1165.      should be written to the disk first, the objeCt map next, and the
  1166.      object representation last.
  1167.      In any TCB primitive which allocates user-level references, object
  1168.      map, and object representation within one invocation, the necessary
  1169.      disk operations should follow the direction opposite to that of
  1170.      references; i.e., the object representation should be written to the
  1171.      disk first, the object map next, and the object containing the
  1172.      user-level reference last.
  1173.      (2) All disk-write operations of a TCB primitive which updates
  1174.      user-level references, object map, and object representation within
  1175.      one invocation, should be synchronous; i.e., the caller should not be
  1176.      allowed to proceed until the disk-write operation completes.
  1177.  
  1178. The usefulness of ordering disk-writes in all relevant TCB primitives is
  1179. apparent when one considers the effects of system crashes and subsequent
  1180. TCB rebooting. Suppose the order of disk-write operations mentioned above
  1181. does not hold for a TCB primitive which deallocates an object along with
  1182. the last reference to it. In this scenario, the object map and
  1183. representation could be deallocated first, and their corresponding tables
  1184. could be updated by two disk-write operations before the object containing
  1185. the user-level reference would be updated.
  1186.  
  1187. A crash occurring after the completion of the first two disk-write
  1188. operations leaves the user-level reference dangling. This requires the
  1189. recovery procedures to search the entire directory system to find the
  1190. dangling reference (if any) before the TCB is rebooted and before the
  1191. deallocated object map and representation space are reallocated. Should
  1192. this not happen, or should recovery procedures fail to discover dangling
  1193. references after crashes, the system might enter an insecure state causing
  1194. object-reuse problems. A similar problem appears when the crash occurs
  1195. after the deallocation of the object representation but before the
  1196. deletion of the object map and the user-level reference.
  1197.  
  1198. In contrast, if the disk-write operations required by object deallocation
  1199. and reference deletion are ordered as suggested in requirement (1) of
  1200. Example 1, a crash between two consecutive disk-write operations could
  1201. only cause objects or their maps to become inaccessible. This might cause
  1202. a denial-of-service problem but not an object-reuse problem.
  1203.  
  1204. For example, a crash could occur after the last user-level reference was
  1205. deleted, and after the corresponding disk-write was completed, but before
  1206. the disk writes required by the object map and representation deletions
  1207. could be completed. Both the object representation and map become
  1208. inaccessible to any user-level programs.
  1209.  
  1210. Object inaccessibility also could be caused by crashes occurring after
  1211. both user-level references and object map are deleted. However, to handle
  1212. object inaccessibility, recovery procedures need only do "garbage
  1213. collection" operations. Should these operations (inherently simpler than
  1214. those finding all dangling references) not be done or should they fail to
  1215. find all inaccessible objects after a crash, denial-of-service (but not
  1216. security policy violations) may occur. This example shows that the proper
  1217. ordering of disk-write operations in all relevant TCB primitives helps
  1218. reduce the security vulnerability of a system after crashes.
  1219.  
  1220. The requirement (2) above for synchronous disk-write operations is
  1221. necessary to preserve the ordering of disk-writes suggested in requirement
  1222. (1). Asynchronous disk-write operations don't necessarily preserve such
  1223. ordering.
  1224.  
  1225. Similar disk-write ordering rules apply to multi-leaf trees of references.
  1226. Such a tree appears in sets of related data structures (user-level
  1227. references ~ object map ~ object representation) when a reference to a
  1228. separate ACL object is placed in, or is implicitly associated with, the
  1229. object map (i.e., object map ~ object representation and object map ~
  1230. ACL). In such a case, both the object representation and the ACL should be
  1231. created before the object map, and the object map should be deleted before
  1232. both the object representation and the ACL. Failure to order the disk-
  1233. write operations in the proper sequence may cause the reuse of the ACL
  1234. with foreign objects after crashes. This would represent a serious access
  1235. control problem if left uncorrected.
  1236.  
  1237. Example 2---Redundancy of TCB Storage Structures
  1238.  
  1239. The idea of maintaining redundant storage for critical data structures,
  1240. enabling recovery mechanisms to reconstruct consistent system states, is
  1241. neither new nor novel. Similar ideas have led to the use of "double-entry
  1242. bookkeeping" in accounting systems to accomplish similar goals.
  1243. Furthermore, it could be argued the design approaches for atomic actions
  1244. or transactions of TCB primitives ---as discussed in the previous section
  1245. ---also use redundant storage structures. We suggest here that redundant
  1246. storage structures can be used solely to aid recovery mechanisms to
  1247. detect, and possibly correct, inconsistent TCB structures, and not
  1248. necessarily to provide failure atomicity for all TCB primitives.
  1249.  
  1250. Although minimized TCBs, as those required for security classes B3 and A1
  1251. are likely to present at their interface only objects with a very simple
  1252. structure, e.g., segments as opposed to files, the representation of these
  1253. objects on nonvolatile storage usually requires the maintenance of other
  1254. more primitive structures. The discovery of inconsistent or even
  1255. inaccessible objects after a crash, but not necessarily the provision of
  1256. atomic object updates, can be assured by maintenance of redundant,
  1257. low-level TCB structures.
  1258.  
  1259. For example, consider a system in which a segment representation on the
  1260. disk consists of a set of not necessarily contiguous pages (i.e., disk
  1261. sectors) identified by an index page. To enable recovery mechanisms to
  1262. detect inconsistent segment structures, redundant structures can be
  1263. maintained independently of index pages that define the unique association
  1264. between object identifiers and pages. All TCB primitives would be designed
  1265. to reflect every update of an index page in the redundant structure also,
  1266. and vice versa; however, updates would be reflected only after disk writes
  1267. to originals had completed successfully (i.e., disk writes to index pages
  1268. are synchronous). Recovery mechanisms would detect, and possibly correct,
  1269. inconsistencies of segment representation by comparing the contents of
  1270. index pages with those of the corresponding redundant structures. The
  1271. additional ability to detect which of the two structures is affected by a
  1272. failure, and the ability to ensure that one of the two structures survives
  1273. all expected failures, enables recovery mechanisms to correct either one
  1274. of the two structures, as necessary.
  1275.  
  1276. Redundancy of segment representation structures can't guarantee that the
  1277. segment contents would be internally consistent, nor that they would be
  1278. consistent with the contents of other segments. Failure-atomicity of TCB
  1279. primitives wouldn't be guaranteed in any way by the maintenance of
  1280. redundant structures suggested in Example 2, although similar structures
  1281. could be used as the basis for additional mechanisms which would implement
  1282. failure atomicity [23].
  1283.  
  1284. 4.3.4.3 Idempotency of Recovery Procedures
  1285.  
  1286. Recovery procedures should be restartable after repeated crashes, and
  1287. every time they're restarted, the TCB should be left in no worse state
  1288. than before. This property is called idempotency, and should exist
  1289. regardless of the type of diskwrites or redundancy used within the TCB.
  1290. Repeated crashes of recovery procedures would have no undesirable side
  1291. effects in the system's TCB. Although recovery procedures of systems
  1292. supporting atomic TCB primitives and transactions also must be idempotent,
  1293. the demonstration of idempotency of these procedures seems significantly
  1294. simpler than in systems in which failure-atomicity of TCB primitives isn't
  1295. supported. The idempotency property of recovery mechanisms using
  1296. "intention sets" ---discussed in Section 4.3.3.1---is presented in [21].
  1297.  
  1298. 4.3.4.4 Recovery With Non-Atomic System Primitives
  1299.  
  1300. Example 1 --- The UNIX File System
  1301.  
  1302. The ordering of synchronous disk-write operations is enforced by UNIX
  1303. kernels [1]. For example, whenever the "unlink" primitive deletes the last
  1304. link to an object and deallocates the object, and whenever the "creat"
  1305. primitive allocates an object and places a reference to it in a directory,
  1306. the disk-write operations are ordered as suggested in (1) of Section
  1307. 4.3.4.2 and are performed synchronously. User-level references are
  1308. represented in UNIX by i-node numbers in directory entries, object maps by
  1309. -nodes, and object representations by disk blocks. Reference [1, ch. 5]
  1310. describes the negative consequences of not ordering the disk-write
  1311. operations, and of not doing them synchronously.
  1312.  
  1313. The UNIX program "fsck" is also a good example of a typical recovery
  1314. program. Fsck detects dangling i-nodes and i-node numbers, duplicate
  1315. i-nodes associated with the same disk block, unbalanced i-node references
  1316. and object links, as well as lost and corrupted i-nodes and disk blocks.
  1317. However, for dangling i-nodes and -node numbers, duplicate i-nodes
  1318. associated with the same disk block, and unbalanced i-node references and
  1319. object links, "fsck" requires the intervention of administrative users to
  1320. resolve inconsistencies. As pointed out in [5], seldom is enough
  1321. information available enabling administrators to make correct decisions
  1322. and resolve inconsistencies. Suggested changes proposed in [5] would help
  1323. administrators make sound low-level recovery decisions. Thus, not only
  1324. should non-atomic system primitives be designed to support recovery but
  1325. recovery mechanisms should enable administrators to make correct recovery
  1326. decisions.
  1327.  
  1328. Example 2---The Cambridge File Server
  1329.  
  1330. The Cambridge File Server (CFS) actually implements failure-atomic updates
  1331. of individual files [23]. Although a good example of disk redundancy, the
  1332. mechanism provided by CFS can be used to guarantee only that recovery
  1333. mechanisms can reconstruct consistent file structures, not necessarily
  1334. file Contents.
  1335.  
  1336. In the CFS, a file's representation on the disk consists of one or more
  1337. index pages pointing to data pages. A file can be viewed as a single-root
  1338. tree whose nodes are index pages and whose leaves are data pages. CFS
  1339. maintains a redundant structure, called the cylinder map, to represent the
  1340. relationship between file identifiers, file pages, and page status for all
  1341. objects of each disk cylinder. Each cylinder map entry contains (1) the
  1342. unique identifier of the file to which the defined page belongs, (2) the
  1343. tree address occupied by the page in the file representation, and (3) the
  1344. allocation and use state of the page. Thus, each disk page is defined by
  1345. its entry in the cylinder map and by its position in the tree of pages
  1346. representing the structure.
  1347.  
  1348. The CFS primitives update the cylinder maps only after a file's tree is
  1349. updated consistently. Thus, the CFS recovery procedures can rebuild the
  1350. file system structure using redundant information after a crash-producing
  1351. failure. For example, whenever a crash corrupts a file's index page, the
  1352. recovery procedures search the cylinder maps to find all pages belonging
  1353. to that file. At the end of the search, all pages referenced by the
  1354. corrupted index page and their tree positions are found, and the corrupted
  1355. index page can be reconstructed. Conversely, whenever a cylinder map is
  1356. corrupted by a crash, the recovery procedures examine each file structure
  1357. starting at the root of the file system to find all disk pages belonging
  1358. to the corrupted cylinder map. At the end of the search, which may include
  1359. the entire file system and may take as long as half an hour with current
  1360. disk technology, the corrupted cylinder map is reconstructed.
  1361.  
  1362. The cylinder maps of the CFS are used for additional functions, including
  1363. that of keeping status information for pages of intention sets. Although
  1364. the use of the redundancy function of cylinder maps in providing
  1365. recoverable storage for implementing atomic actions has been less
  1366. successful than that used in shadow paging [23], the use of this function
  1367. for automated recovery of file system structures is quite adequate.
  1368.  
  1369. Example 3---Selective Atomicity
  1370.  
  1371. Another approach to recovery in a secure state without using atomic TCB
  1372. primitives is "selective atomicity." Selective atomicity means that only a
  1373. subset of the TCB actions are atomic when operating on a specific subset
  1374. of TCB objects. The intent is to preserve the consistency of the
  1375. representation of certain objects (e.g., those implemented in nonvolatile
  1376. storage) and object hierarchies (e.g., file systems) but not necessarily
  1377. of object contents. Whenever it's security-relevant, the consistency of
  1378. object contents is left in the care of the particular application. Special
  1379. atomicity mechanisms maintain the consistency of the content of
  1380. security-relevant objects -a small subset of all system's objects.
  1381.  
  1382. The advantages of using the selective-atomicity approach are that the
  1383. performance penalties of full atomicity are avoided and system recovery in
  1384. a secure state is simplified. For example, recovery programs could restore
  1385. the structure of a file system (including directories, disk blocks, and
  1386. indices to physical records), minimizing administrative intervention -a
  1387. feature not found in most recovery programs such as the "fsck."
  1388.  
  1389. Selective atomicity exists in the AIX system version 3.1. In this system,
  1390. a fairly robust file system is obtained by implementing atomic updates for
  1391. segments that contain directories, i-nodes, and indirect file blocks.
  1392. Also, any change to the disk- block allocation map is atomic [6]. The
  1393. implementation of the atomicity features is based on logging using a
  1394. concept called "database memory," because of its resemblance to the
  1395. logging features of database management systems [7]. Note that the
  1396. selective atomicity implemented in AlX 3.1 does not refer to non-kernel
  1397. objects (e.g., objects implemented by system processes). Thus, a TCB using
  1398. the AlX 3.1 kernel would have to carry out atomic or recoverable actions
  1399. within trusted processes whenever such actions are required.
  1400.  
  1401. 4.4 DESIGN OPTIONS FOR TRUSTED RECOVERY
  1402.  
  1403. The design and implementation of trusted recovery mechanisms and
  1404. procedures should include the following nonexclusive options:
  1405.  
  1406.      (1) For the set of all state-transition failures, TCB recovery code
  1407.      should ensure the restoration of the secure input state; i.e., remove
  1408.      all temporary modifications of the secure state which violate
  1409.      security invariants.
  1410.      (2) For the set of expected TCB or media failures (appropriately
  1411.      chosen by the system designers), TCB code that causes state
  1412.      transitions should be designed, whenever possible, to make
  1413.      secure-state transitions atomic; i.e., the recovery mechanisms should
  1414.      reconstruct either the secure input states or the secure output
  1415.      states of those transitions.
  1416.      (3) For the subset of state transitions that aren't atomic in the
  1417.      face of expected TCB or media failures, the recovery mechanisms
  1418.      should detect that these state transitions have left the TCB in
  1419.      insecure states. TCB-supported administrative tools should enable the
  1420.      reconstruction of a predictable secure state, with or without
  1421.      administrative-user intervention. This state may differ from both the
  1422.      secure input and output states of the transition during which the
  1423.      failure occurred.
  1424.      (4) For the complementary set of "unexpected" or rare TCB and media
  1425.      failures, administrative procedures and tools (used to restore a
  1426.      predictable secure state) should be defined and documented. This
  1427.      secure state also may differ from both the secure input and output
  1428.      states of the transition during which the failure occurred.
  1429.  
  1430. Options (3) and (4) above suggest that expected TCB or media failures
  1431. caused by either spontaneous events or user-, administrator-, or
  1432. operator-induced discontinuities may create secure states which,
  1433. nevertheless, violate integrity and availability requirements of user
  1434. applications. Clearly, if the recovered state differs from either the
  1435. secure input or secure output states of the transition during which the
  1436. failure occurred, then both "lost" updates and "dirty" reads are possible
  1437. [13,14]. However, options (3) and (4) are still acceptable for systems
  1438. evaluated under the TCSEC because the TCSEC does not include application
  1439. integrity and availability requirements.
  1440.  
  1441. If user applications require higher degrees of integrity and availability
  1442. than those supported by the TCB, they could always implement additional,
  1443. separate recovery mechanisms. In fact, this approach is taken by most
  1444. current applications including database management systems [14,15]. This
  1445. approach is also sound from a system architecture point of view because it
  1446. separates application recovery mechanisms from those of the TCB. Support
  1447. of application level recovery within the TCB is both unnecessary and
  1448. unwarranted. It's unnecessary because application portability rules out
  1449. reliance on the recovery features of a specific TCB, and thus applications
  1450. tend to implement their own recovery features. It's unwarranted because it
  1451. violates the class B3-A1 requirement for TCB minimality and increases the
  1452. assurance burden.
  1453.  
  1454. Trusted recovery requires that the state-transition models used for secure
  1455. system design include both state invariants and transition constraints. A
  1456. model that includes only state invariants is inadequate because trusted
  1457. recovery requires that state-transition constraints be satisfied (viz.,
  1458. discussion in Section 3.2). Similarly, a model that includes only
  1459. transition constraints is inadequate because the occurrence of
  1460. unanticipated failures and discontinuities of operations may prevent the
  1461. system from completing state transitions and place it in insecure states.
  1462. These states can only be determined to be insecure after checking that
  1463. secure-state invariants are not satisfied (viz., discussion in Section
  1464. 3.1).
  1465.  
  1466. The reader should note that state-transition models of security policy are
  1467. particularly suitable for the design of trusted recovery mechanisms.
  1468. Because these models include the notion of secure states and secure state
  1469. transitions, they can be integrated with recovery models, all defined in
  1470. terms of states and state transitions (which are possibly different).
  1471. Unlike the state-transition models, information flow and noninterference
  1472. models don't include explicitly the notions of state and state
  1473. transitions, and thus are more difficult, if not impossible, to use for
  1474. defining formally the notion of trusted recovery. Furthermore, information
  1475. flow and noninterference models cover nondiscretionary access controls and
  1476. thus lack discretionary access control and other policy components. This
  1477. makes the use of such models impractical for the formal definition of
  1478. trusted recovery.
  1479.  
  1480. 5 IMPACT OF OTHER TCSEC REQUIREMENTS ON
  1481. TRUSTED RECOVERY
  1482.  
  1483. Security policy and accountability requirements of the TCSEC are only
  1484. indirectly relevant to trusted recovery. That is, specific requirements of
  1485. these areas, which may be relevant to trusted recovery, have already been
  1486. levied on trusted facility management functions and interfaces [24]. In
  1487. this chapter, we focus only on the TCSEC areas specific to trusted
  1488. recovery; we discuss the relevance or irrelevance of specific
  1489. requirements.
  1490.  
  1491. 5.1 OPERATIONAL ASSURANCE
  1492.  
  1493. Most of the assurance requirements of the TCSEC apply to trusted recovery
  1494. because trusted-recovery code is part of a system's TCB. Some TCSEC
  1495. assurance requirements become irrelevant because interfaces to trusted
  1496. recovery functions are either invisible to users or, whenever they are
  1497. visible, can be used only by administrative personnel authorized by
  1498. trusted facility management. The user visibility of trusted recovery
  1499. interfaces, or lack thereof, is established under the assurance
  1500. requirements of trusted facility management [24], and therefore we don't
  1501. repeat it here.
  1502.  
  1503. In the operational assurance area, only the trusted facility management
  1504. and the system architecture areas have specific requirements relevant to
  1505. trusted recovery. Because system integrity requirements refer to the
  1506. diagnostic testing of the hardware and firmware elements of the TCB, they
  1507. have no special relevance here beyond that of addressing hardware/firmware
  1508. elements that may include recovery mechanisms. Covert channel analysis of
  1509. TCB interfaces offered by trusted recovery isn't necessary.
  1510.  
  1511. Administrative users are the only users who may use trusted recovery
  1512. mechanisms. They have multi-level access to system and user data and are
  1513. trusted to maintain the data secrecy and not exploit covert channels while
  1514. operating in administrative roles. Thus, administrative users must be
  1515. cleared to the highest level of data classification present on the system.
  1516. Furthermore, all code implementing trusted recovery functions should be
  1517. scrutinized to ensure, to the largest extent possible, these functions
  1518. don't contain any Trojan Horses or Trap Doors. 
  1519.  
  1520. Most system-architecture requirements of the TCB apply to trusted-recovery
  1521. code. For example, TCB programs and data structures implementing trusted
  1522. recovery must comply with the following requirements:
  1523.  
  1524.      a. Satisfy modularity requirements.
  1525.      b. Make significant use of abstraction and information hiding.
  1526.      c. Use layering of recovery functions.
  1527.      d. Satisfy the requirements of the least privilege principle to the
  1528.      largest possible extent.
  1529.  
  1530. Since trusted recovery is used mostly in maintenance mode when all
  1531. storage, segmented or not, must be available to recovery code, most
  1532. protection mechanisms are disabled. Thus, application of the least
  1533. privilege principle and insistence on use of logically distinct objects
  1534. with separate attributes is less obvious here than when mechanisms are
  1535. used in the normal mode of system operation.
  1536.  
  1537. The only trusted facility management requirement affecting trusted
  1538. recovery is that of segregating the security-relevant from the
  1539. security-irrelevant administrative functions. Because trusted recovery
  1540. functions are obviously security relevant, they must be allocated either
  1541. to the System Administrator or to the System Programmer roles [24].
  1542.  
  1543. 5.2 LIFE-CYCLE ASSURANCE
  1544.  
  1545. In contrast with the operational assurance, all areas of life-cycle
  1546. assurance are relevant to trusted recovery. These areas are security
  1547. testing, design specification and verification, configuration management,
  1548. and trusted distribution.
  1549.  
  1550. 5.2.1 Security Testing
  1551.  
  1552. The purpose of testing trusted recovery mechanisms is to uncover design
  1553. and implementation flaws allowing failure recovery to place the TCB in
  1554. insecure states. The major issue in this area is delimiting the scope of
  1555. security testing, i.e., reconciling the general objectives and practices
  1556. of security testing with the limited coverage of failures and
  1557. discontinuities of operation which is possible in practice.
  1558.  
  1559. The objectives of security testing suggest that security testing should be
  1560. performed using test fixtures external to the TCB, should not require TCB
  1561. instrumentation, should be repeatable, and should include precise coverage
  1562. analysis. For testing trusted recovery functions, only the requirements of
  1563. class B3 are relevant because, as discussed below, formal top-level
  1564. specifications aren't necessary for trusted recovery, viz., [24].
  1565.  
  1566. However, only state-transition failures and discontinuities of operation
  1567. (but not all TCB and media failures) can be generated from outside the TCB
  1568. in a repeatable manner and without any TCB instrumentation. Whenever TCB
  1569. and media failures cannot be generated from outside the TCB in a
  1570. repeatable manner and without any internal TCB instrumentation, design and
  1571. implementation analysis and review are necessary to determine whether the
  1572. recovery mechanisms can handle the untested failure responses.
  1573. State-transition failures can be generated using similar test-plan
  1574. structures and programs as those used for security testing of other TCB
  1575. areas, e.g., testing security policy enforcement and covert channel
  1576. bandwidth.
  1577.  
  1578. Discontinuities of operation can be generated using administrative
  1579. interfaces in ways causing at least some TCB, and possibly media, failures
  1580. repeatedly. In contrast, spontaneous TCB and media failures cannot be
  1581. regenerated without software and hardware instrumentation of the TCB. Use
  1582. of such instrumentation would violate one of the major objectives of
  1583. security testing. Recall that TCB instrumentation is undesirable because
  1584. either it precludes testing the system in normal mode configuration or it
  1585. leaves test fixtures that may become exploitable Trap Doors in the TCB.
  1586. Therefore, security testing of trusted recovery functions is limited to
  1587. the use of test plans, i.e., test conditions, data, and coverage analysis,
  1588. which cover only state- transition failures and discontinuity of
  1589. operation, as defined in Chapter 2. Within this limited context, all
  1590. conventional security-testing requirements and recommendations are
  1591. applicable.
  1592.  
  1593. 5.2.2 Design Specification and Verification
  1594.  
  1595. Inherent inability to define formal models of TCB failures and
  1596. discontinuities of operations (viz., Chapter 2 of this guideline and
  1597. reference [21]), and general lack of formal models of trusted facility
  1598. management and administrative roles, makes the TCSEC requirement for
  1599. top-level specification correspondence with the formal policy model
  1600. irrelevant to trusted recovery. However, the requirement for use of a
  1601. security policy model, and more precisely for a state-machine model, is
  1602. relevant to trusted recovery in two areas.
  1603.  
  1604. First, state-machine models enable designers and implementors to define
  1605. the notions of secure system states and state transitions. These notions
  1606. are the key to trusted recovery as they provide the security invariants
  1607. and constraints recovery mechanisms should satisfy. Recovery functions
  1608. earn their trust only if they satisfy these invariants and constraints, as
  1609. discussed in Chapter 4.
  1610.  
  1611. Second, the response of TCB primitives to state-transition failures
  1612. (defined in Chapter 2) is modeled by formal security-policy models and
  1613. specified by top-level specifications. For example, the Bell-La Padula
  1614. model represents a clear, albeit incomplete, attempt to model these
  1615. failures through the provision of the "error" and "?" elements of the TCB
  1616. response set (Dm) to invocations of TCB requests (Rk) [3]. Thus, the
  1617. specification of error messages and exceptions provided by TCB primitives
  1618. in response to state-transition failures also is required for trusted
  1619. recovery reasons.
  1620.  
  1621. 5.2.3 Configuration Management
  1622.  
  1623. All configuration management requirements of classes B3 and A1 apply as
  1624. stated.
  1625.  
  1626. 5.2.4 Trusted Distribution
  1627.  
  1628. All trusted distribution requirements of class A1 apply to the TCB
  1629. functions and interfaces implementing trusted recovery as stated.
  1630.  
  1631. 5.3 DOCUMENTATION
  1632.  
  1633. Most documentation requirements of the classes B3 and A1 apply to trusted
  1634. recovery as stated in each evaluation class. However, some requirements,
  1635. such as those stating the need for a Security Features Users' Guide (SFUG)
  1636. and for covert channel documentation, are obviously not relevant. The SFUG
  1637. is relevant for non-administrative users whereas trusted recovery is
  1638. exclusively a responsibility of system administrators. The administrators
  1639. are implicitly trusted not to disclose classified and proprietary
  1640. information they can obtain from the system directly without having to use
  1641. covert channels.
  1642.  
  1643. 5.3.1 Trusted Facility Manual
  1644.  
  1645. The Trusted Facility Manual (TFM) requirements are not only relevant but
  1646. important to trusted recovery. The TFM must include the description of
  1647. procedures necessary "to resume secure system operation after any lapse of
  1648. system operation." Thus the TFM should include a description of the types
  1649. of TCB failures and discontinuities of operation and a list of procedures,
  1650. tools, warnings, and examples of how these failures might be best handled.
  1651.  
  1652. All TCB recovery procedures must be defined in the TFM. These procedures
  1653. include analyzing system "dumps" after crashes, crash-recovery and restart
  1654. actions, checking the consistency of TCB files and directories, changing
  1655. system configuration parameters (e.g., table sizes, devices and device
  1656. drivers, etc.), running periodic system-integrity checks, and repairing
  1657. object inconsistencies and damaged labels. A list of the approved tools
  1658. for TCB recovery, relevant commands, exceptions, warnings, and advice also
  1659. should be in the TFM.
  1660.  
  1661. 5.3.2 Test Documentation
  1662.  
  1663. The trusted recovery testing documentation consists of test plan, test
  1664. program, and test result documentation. The general structure of the
  1665. trusted-recovery test plan and test results is the same as that of all
  1666. other test plans and results. For example, the test plans should contain a
  1667. test condition section, a test data section (i.e., including a test
  1668. environment setup, test parameters, and expected test outcomes), and test
  1669. coverage analysis.
  1670.  
  1671. However, the content of these sections should differ substantially from
  1672. that of other test plans. For example, the test conditions should identify
  1673. the type of discontinuity of operation (and the induced TCB or media
  1674. failure) generated by using the administrative interfaces for the current
  1675. test. In the test data area, the environment setup should define the
  1676. system initialization data, including TCB and user-level data structures
  1677. and objects, which are necessary to generate the specified discontinuity
  1678. of operation. The parameters and the commands used by administrators to
  1679. generate discontinuity of operation also should be listed.
  1680.  
  1681. The outcomes of the test should include the specification of the automated
  1682. (e.g., reboot, warm-start) procedures and of the manual (e.g., cold-start,
  1683. emergency restart) procedures for trusted recovery and their expected
  1684. effects on the system.
  1685.  
  1686. The coverage analysis should explain the scope of the tests in terms of
  1687. the classes of discontinuities covered by the test and the classes of
  1688. spontaneous failures remaining uncovered because of inability to induce
  1689. them by administrative action.
  1690.  
  1691. 5.3.3 Design Documentation
  1692.  
  1693. The documentation of the trusted-recovery design should include the
  1694. following items corresponding to the B3 and A1 requirements of the TCSEC:
  1695.  
  1696.      a. Description of the anticipated classes of failures and
  1697.      discontinuities of operation handled, automatically or using
  1698.      administrative procedures, by trusted recovery.
  1699.      b. Trusted recovery philosophy (e.g., use of failure-atomicity in the
  1700.      design of TCB primitives, of non-atomic actions which allow recovery
  1701.      of secure states, the type of recovered secure states-input-secure
  1702.      state, output- secure state of a transition, or some arbitrary secure
  1703.      state).
  1704.      c. Warnings about the "unanticipated" failures that can't be handled
  1705.      in a routine manner.
  1706.      d. State-security invariants and constraints maintained by trusted
  1707.      recovery.
  1708.      e. Descriptive Top-Level Specification (DTLS) of the TCB primitives
  1709.      implementing trusted-recovery functions.
  1710.  
  1711. The accuracy of the design documentation should be commensurate with that
  1712. of other similar documentation for B3 and A1 systems. In this area there
  1713. are no substantive differences between the B3 and A1 requirements. This is
  1714. true for the same reasons as those discussed in the design specification
  1715. and verification area.
  1716.  
  1717. 6 SATISFYING THE TCSEC REQUIREMENTS
  1718.  
  1719. In the TCSEC, there are no requirements for Trusted Recovery for security
  1720. classes below class B3. Furthermore, security policy and accountability
  1721. requirements which also may apply to trusted recovery are already included
  1722. in the requirements for trusted facility management [24]. This chapter
  1723. includes only additional requirements and recommendations specific to
  1724. trusted recovery.
  1725.  
  1726. 6.1 REQUIREMENTS FOR SECURITY CLASS B3
  1727.  
  1728. 6.1.1 Operational Assurance
  1729.  
  1730. 6.1.1.1 System Architecture
  1731.  
  1732. The TCB programs and data structures implementing trusted recovery must
  1733. meet the following requirements:
  1734.  
  1735.      a. Satisfy modularity requirements.
  1736.      b. Make significant use of abstraction, information hiding, and
  1737.      layering in the design and implementation of trusted recovery
  1738.      functions.
  1739.  
  1740. 6.1.1.2 Trusted Facility Management
  1741.  
  1742. Trusted recovery functions shall be assigned exclusively to administrative
  1743. personnel with security-relevant responsibility, e.g., System Programmer
  1744. or Security Administrator roles [24].
  1745.  
  1746. 6.1.2 Life-Cycle Assurance
  1747.  
  1748. 6.1.2.1 Security Testing
  1749.  
  1750. Security testing requirements of class B3 apply to the functions and
  1751. interfaces of the TCB for user-induced failures (i.e., for
  1752. state-transition failures as defined in Chapter 2 of this guideline), and
  1753. to functions and interfaces of administrative roles but only for
  1754. discontinuities generated by administrative personnel. See discussion in
  1755. Section 5.2.
  1756.  
  1757. 6.1.2.2 Design Specification and Verification
  1758.  
  1759. DTLSs of the TCB functions and interfaces implementing trusted recovery
  1760. must be maintained that completely and accurately describe these functions
  1761. and interfaces in terms of exceptions, error messages, and effects.
  1762.  
  1763.      a. A formal security model should be used to define the TCB response
  1764.      to state-transition failures (defined in Chapter 2 and discussed in
  1765.      Section 5.2).
  1766.      b. A formal security model should be used for the derivation of the
  1767.      security policy invariants and constraints used for the design of
  1768.      trusted recovery.
  1769.      c. Additional invariants and constraints should be used for the
  1770.      design of trusted recovery in the accountability area as needed.
  1771.  
  1772. 6.1.2.3 Configuration Management
  1773.  
  1774. All configuration management requirements of class B3 apply to trusted
  1775. recovery as stated.
  1776.  
  1777. 6.1.3 Documentation
  1778.  
  1779. 6.1.3.1 Trusted Facility Manual
  1780.  
  1781. The following items should be included in the trusted recovery section of
  1782. the Trusted Facility Manual:
  1783.  
  1784.      a. Procedures for analysis of system dumps, for consistency checking
  1785.      of TCB objects, and for system cold start and emergency restart.
  1786.      b. A description of the types of tolerated failures and examples of
  1787.      the recommended procedures for responding to such failures.
  1788.      c. Procedures for running periodic integrity checks on the TCB
  1789.      database and for repairing damaged security labels.
  1790.      d. Procedures for handling inconsistencies of the system objects
  1791.      (e.g., duplicate allocation of disk blocks to objects, inconsistent
  1792.      object links).
  1793.      e. Lists of commands, system calls, and function definitions for
  1794.      trusted recovery (whenever these aren't documented in the system's
  1795.      DTLS).
  1796.      f. Examples of, and warnings about, potential misuse of trusted
  1797.      recovery procedures.
  1798.  
  1799. 6.1.3.2 Test Documentation
  1800.  
  1801. All test documentation requirements of class B3, except those for covert
  1802. channel testing (viz., Section 5.1), apply to the TCB functions and
  1803. interfaces implementing trusted recovery as stated. The test plans for
  1804. trusted recovery should include the following:
  1805.  
  1806.      a. Test conditions; i.e., a list of discontinuities of operation that
  1807.      can be generated through administrative interfaces and their effects
  1808.      on the system.
  1809.      b. Test data, consisting of the following:
  1810.           (1) Environment setup; e.g., the TCB and user-level data
  1811.           structures and objects needed to generate the planned
  1812.           discontinuity.
  1813.           (2) Parameters and commands used by the administrators to
  1814.           generate the discontinuity.
  1815.           (3) Expected outcome; e.g., the type of procedures that are
  1816.           started automatically or manually for handling the generated
  1817.           discontinuity and the effect of those procedures on the system
  1818.           state.
  1819.      c. Coverage analysis; e.g., this includes a list of failures, or
  1820.      classes of failures, whose effect is covered by the generated
  1821.      discontinuities, and a list of spontaneous failures, or classes of
  1822.      failures, whose effect isn't covered by the test.
  1823.  
  1824. 6.1.3.3 Design documentation
  1825.  
  1826.      Documentation shall describe the following:
  1827.      a. Interfaces between the TCB modules implementing trusted recovery
  1828.      functions
  1829.      b. Specific TCB protection mechanisms used ensuring trusted-recovery
  1830.      functions are available only to administrative users.
  1831.      c. DTLS of the TCB modules implementing interfaces of trusted
  1832.      recovery; (Formal Top Level Specifications (FTLS) aren't required for
  1833.      trusted recovery interfaces---viz., relevant discussion in [24] for
  1834.      administrative interfaces).
  1835.      Design documentation also should include a description of the
  1836.      following:
  1837.      a. Anticipated classes of failures and discontinuities of operation
  1838.      handled by trusted recovery, automatically or using administrative
  1839.      procedures.
  1840.      b. Trusted recovery philosophy; viz., Section 5.3.
  1841.      c. Warnings concerning the "unanticipated" (i.e., rare) failures that
  1842.      can't be handled in a routine manner.
  1843.      d. State-security invariants and constraints maintained by trusted
  1844.      recovery.
  1845.      e. DTLS of the TCB primitives implementing trusted-recovery
  1846.      interfaces.
  1847.      The accuracy of the design documentation should be commensurate with
  1848.      that of other similar documentation for B3 and A1 systems.
  1849.  
  1850. 6.2 ADDITIONAL REQUIREMENTS OF SECURITY CLASS A1
  1851.  
  1852. All requirements of the security class B3 are included here. The only
  1853. additional requirements are in the following life-cycle assurance areas.
  1854.  
  1855. 6.2.1 Additional Life-Cycle Assurance Requirements
  1856.  
  1857. 6.2.1.1 Configuration Management
  1858.  
  1859. All additional configuration management requirements of class A1 apply as
  1860. stated.
  1861.  
  1862. 6.2.1.2 Trusted Distribution
  1863.  
  1864. All trusted distribution requirements of class A1 apply to the TCB
  1865. functions and interfaces implementing trusted recovery as stated.
  1866.  
  1867. GLOSSARY
  1868.  
  1869. ACCESS
  1870.  
  1871. A specific type of interaction between a subject and an object that
  1872. results in the flow of information from one to the other.
  1873.  
  1874. ADMINISTRATOR
  1875.  
  1876. See Security Administrator.
  1877.  
  1878. APPROVAL/ACCREDITATION
  1879.  
  1880. The official authorization that is granted to an ADP system to process
  1881. sensitive information in its operational environment, based upon
  1882. comprehensive security evaluation of the system's hardware, firmware, and
  1883. software security design, configuration, and implementation and of the
  1884. other system procedural, administrative, physical, TEMPEST, personnel, and
  1885. communications security controls.
  1886.  
  1887. AUDIT
  1888.  
  1889. To conduct the independent review and examination of system records and
  1890. activities.
  1891.  
  1892. AUDITOR
  1893.  
  1894. An authorized individual, or role, with administrative duties, which
  1895. include selecting the events to be audited on the system, performing
  1896. system operations to enable the recording of those events, and analyzing
  1897. the trail of audit events.
  1898.  
  1899. AUDIT MECHANISM
  1900.  
  1901. The device, or devices, used to collect, review, and/or examine system
  1902. activities.
  1903.  
  1904. AUDIT TRAIL
  1905.  
  1906. A chronological record of system activities that is sufficient to enable
  1907. the reconstruction, reviewing, and examination of the sequence of
  1908. environments and activities surrounding or leading to an operation, a
  1909. procedure, or an event in a transaction from its inception to final
  1910. results.
  1911.  
  1912. CATEGORY
  1913.  
  1914. A restrictive label that has been applied to classified or unclassified
  1915. data as a means of increasing the protection of the data and further
  1916. restriCting access to the data.
  1917.  
  1918. CRASH
  1919.  
  1920. A system failure that causes the processors' registers to be reset to some
  1921. standard values.
  1922.  
  1923. DATA
  1924.  
  1925. Information with a specific physical representation.
  1926.  
  1927. DESCRIPTIVE TOP-LEVEL SPECIFICATION (DTLS)
  1928.  
  1929. A top-level specification that is written in a natural language (e.g.,
  1930. English), an informal program design notation, or a combination of the
  1931. two.
  1932.  
  1933. DISCRETIONARY ACCESS CONTROL (DAC)
  1934.  
  1935. A means of restricting access to objects based on the identity and
  1936. need-to- know of the user, process and/or groups to which they belong, or
  1937. based on the possession of system-protected tickets that contain
  1938. privileges for objects (e.g., capabilities). The controls are
  1939. discretionary in the sense that a subject with a certain access permission
  1940. is capable of passing that permission (perhaps indirectly) on to any other
  1941. subject.
  1942.  
  1943. FORMAL SECURITY POLICY MODEL
  1944.  
  1945. A mathematically precise statement of a security policy. To be adequately
  1946. precise, such a model must represent the initial state of a system, the
  1947. way in which the system progresses from one state to another, and a
  1948. definition of a "secure" state of the system. To be acceptable as a basis
  1949. for a TCB, the model must be supported by a formal proof that if the
  1950. initial state of the system satisfies the definition of a "secure" state
  1951. and if all assumptions required by the model hold, then all future states
  1952. of the system will be secure. Some formal modeling techniques include:
  1953. state transition models, denotational semantics models, and algebraic
  1954. specification models.
  1955.  
  1956. FORMAL TOP-LEVEL SPECIFICATION (FTLS)
  1957.  
  1958. A top-level specification that is written in a formal mathematical
  1959. language to allow theorems showing the correspondence of the system
  1960. specification to its formal requirements to be hypothesized and formally
  1961. proven.
  1962.  
  1963. IDEMPOTENT ACTIONS
  1964.  
  1965. An ordered list of actions (e.g., procedure calls, etc.) is said to be
  1966. idempotent if repeated incomplete executions of that list of actions
  1967. followed by a complete execution has the effect of a single complete
  1968. execution of that list of actions. An idempotent action is a restartable
  1969. action; i.e., if the action was in progress at the time of a crash, the
  1970. action can be repeated during crash recovery with no undesirable side
  1971. effects [14,21].
  1972.  
  1973. OBJECT
  1974.  
  1975. A passive entity that contains or receives information. Access to an
  1976. object potentially implies access to the information it contains. Examples
  1977. of objects are: records, blocks, pages, segments, files, directories,
  1978. directory trees, programs, bits, bytes, words, fields, processors, video
  1979. displays, keyboards, clocks, printers, and network nodes.
  1980.  
  1981. OPERATOR
  1982.  
  1983. An administrative role or user assigned to perform routine maintenance
  1984. operations of the ADP system and to respond to routine user requests.
  1985.  
  1986. PASSWORD
  1987.  
  1988. A protected/private character string used to authenticate an identity.
  1989.  
  1990. PROCESS
  1991.  
  1992. A program in execution.
  1993.  
  1994. READ
  1995.  
  1996. A fundamental operation that results only in the flow of information from
  1997. an object to a subject.
  1998.  
  1999. SECURITY ADMINISTRATOR
  2000.  
  2001. An administrative role or user responsible for the security of an
  2002. Automated Information System and having the authority to enforce the
  2003. security safeguards on all others who have access to the Automated
  2004. Information System (with the possible exception of the Auditor.)
  2005.  
  2006. SECURITY LEVEL
  2007.  
  2008. The combination of a hierarchical classification and a set of
  2009. non-hierarchical categories that represents the sensitivity of
  2010. information.
  2011.  
  2012. SECURITY MAP
  2013.  
  2014. A map defining the correspondence between the binary and ASCll formats of
  2015. security levels (e.g., between binary format of security levels and
  2016. sensitivity labels).
  2017.  
  2018. SECURITY POLICY
  2019.  
  2020. The set of laws, rules, and practices that regulate how an organization
  2021. manages, protects, and distributes sensitive information.
  2022.  
  2023. SECURITY POLICY MODEL
  2024.  
  2025. A presentation of the security policy model enforced by the system. It
  2026. must identify the set of rules and practices that regulate how a system
  2027. manages, protects, and distributes sensitive information.
  2028.  
  2029. SECURITY TESTING
  2030.  
  2031. A process used to determine that the security features of a system are
  2032. implemented as designed. This includes hands-on functional testing,
  2033. penetration testing, and verification.
  2034.  
  2035. SUBJECT
  2036.  
  2037. An active entity, generally in the form of a person, process, or device,
  2038. that causes information to flow among objects or changes the system state.
  2039. Technically, a process/domain pair.
  2040.  
  2041. SYSTEM PROGRAMMER
  2042.  
  2043. An administrative role or user responsible for the trusted system
  2044. distribution, configuration, installation, and non-routine maintenance.
  2045.  
  2046. TOP-LEVEL SPECIFICATION (TLS)
  2047.  
  2048. A non-procedural description of system behavior at the most abstract
  2049. level; typically, a functional specification that omits all implementation
  2050. details.
  2051.  
  2052. TRAP DOOR
  2053.  
  2054. A hidden software or hardware mechanism that can be triggered to permit
  2055. system protection mechanisms to be circumvented. It is activated in some
  2056. innocent-appearing manner (e.g., a special "random" key sequence at a
  2057. terminal). Software developers often introduce trap doors in their code to
  2058. enable them to re-enter the system and perform certain functions.
  2059. Synonymous with back door.
  2060.  
  2061. TROJAN HORSE
  2062.  
  2063. A computer program with an apparently or actually useful function that
  2064. contains additional (hidden) functions that surreptitiously exploit the
  2065. legitimate authorizations of the invoking process to the detriment of
  2066. security. For example, making a "blind copy" of a sensitive file for the
  2067. creator of the Trojan Horse.
  2068.  
  2069. TRUSTED COMPUTING BASE (TCB)
  2070.  
  2071. The totality of protection mechanisms within a computer system---including
  2072. hardware, firmware, and software ---the combination of which is
  2073. responsible for enforcing a security policy. A TCB consists of one or more
  2074. components that together enforce a unified security policy over a product
  2075. or system. The ability of a TCB to enforce correctly a unified security
  2076. policy depends solely on the mechanisms within the TCB and on the correct
  2077. input by system administrative personnel of parameters (e.g., a user's
  2078. clearance level) related to the security policy.
  2079.  
  2080. USER
  2081.  
  2082. Person or process accessing an Automated Information System either by
  2083. direct connections (i.e., via terminals), or indirect connections (i.e.,
  2084. prepare input data or receive output that is not reviewed for content or
  2085. classification by a responsible individual).
  2086.  
  2087. VERIFICATION
  2088.  
  2089. The process of comparing two levels of system specification for proper
  2090. correspondence (e.g., security policy model with top-level specification,
  2091. TLS with source code, or source code with object code). This process may
  2092. or may not be automated.
  2093.  
  2094. WRITE
  2095.  
  2096. A fundamental operation that results only in the flow of information from
  2097. a subject to an object.
  2098.  
  2099. BIBLIOGRAPHY
  2100.  
  2101. [1] Bach, M. J., The Design of the UNIX Operating System, Prentice-Hall
  2102. Inc., Englewood Cliffs, New Jersey, 1986.
  2103.  
  2104. [2] Baldwin, R. W., Rule-Based Analysis of Computer Security,
  2105. Massachusetts Institute of Technology, Cambridge, Massachusetts, Technical
  2106. Report MlT/LCS/TR-401, March 1988.
  2107.  
  2108. [3] Bell, D. E., and L. J. La Padula, Secure Computer System: Unified
  2109. Exposition and Multics Interpretation, MlTRE Corp., Bedford,
  2110. Massachusetts, Rep. No. MTR-2997, 1976. Available as NTlS AD-A023 588.
  2111.  
  2112. [4] Benzel, T. V., and Travilla, D. A., "Trusted Software Verification: A
  2113. Case Study," Proceedings of the IEEE Symposium on Security and Privacy,
  2114. Oakland, California, April 1985, pp. 14-30.
  2115.  
  2116. [5] Bina, E. J., and P. A. Emrath, "A Faster fsck for BSD UNIX," in
  2117. Proceedings of the USENIX Conference, San Diego, California, February
  2118. 1989, pp. 173- 185.
  2119.  
  2120. [6] Chang, A., M. Mergen, S. Porter, R. Rader, and J. Roberts, "Evolution
  2121. of Storage Facilities in the AX System," in IBM Risc System/6000
  2122. Technology, SA23-261 9, IBM Corporation, Austin Communications Department,
  2123. 11400 Burnet Road, Austin, TX 78758, pp. 138---142.
  2124.  
  2125. [7] Chang, A., and M. Mergen, "801 Storage: Architecture and Programming,"
  2126. ACM Transactions on Computer Systems, vol. 6, no. 2, February 1988,
  2127. pp.28-50.
  2128.  
  2129. [8] Cristian, F., "Correct and Robust Programs," IEEE Transactions on
  2130. Software Engineering, SE-1 0/2, March 1984, pp. 163-174.
  2131.  
  2132. [9] Cristian, F., "A Rigorous Approach to Fault-Tolerant Programming,"
  2133. IEEE Transactions on Software Engineering, SEll/I, January 1985, pp.
  2134. 23-31.
  2135.  
  2136. [10] Department of Defense, Security Requirements for Automated
  2137. Information Systems (AISs), DoD Directive 5200.28,21 March 1988.
  2138.  
  2139. [11] Gasser, M., Building A Secure Computer System, Van Nostrand Reinhold,
  2140. New York, 1988.
  2141.  
  2142. [12] Gligor, V. D., J. C. Huskamp, S. R. Welke, C. J. Linn, W. T.
  2143. Mayfield, Traditional Capability-Based Systems: An Analysis of their
  2144. Ability to Meet the Trusted Computer Security Evaluation Criteria,
  2145. Institute for Defense Analyses, Alexandria, VA. IDA Paper P-1935, February
  2146. 1987; available as NTlS AD-B119332.
  2147.  
  2148. [13] Gligor, V. D., "A Note on the Denial-of-Service Problem," Proceedings
  2149. of the 1983 IEEE Symposium on Security and Privacy, Oakland, California,
  2150. April 1983, pp. 5101-5111.
  2151.  
  2152. [14] Gray, J. N., "Notes on Database Operating Systems," in Operating
  2153. Systems---An Advanced Course, R. Bayer, R. M. Graham, and G. Seegmuller,
  2154. eds., Springer-Verlag, New York, 1978, pp. 393~81. Also published as IBM
  2155. Research Report RJ 2188, February 1978.
  2156.  
  2157. [15] Gray, J. N., Paul McJones, Mike Blasgen, Bruce Lindsay, Raymond
  2158. Lorie, Tom Price, Franco Putzolu, and Irving Traiger, "The Recovery
  2159. Manager of the System R Database Manager," Computing Surveys, 13/2, June
  2160. 1981, pp.223-242.
  2161.  
  2162. [16] Hecht, M. S., and Gabbe, J. D., "Shadowed Management of Free Disk
  2163. Pages with a Linked List," ACM Transactions on Database Systems, 8/4,
  2164. December 1983, pp. 503-514.
  2165.  
  2166. [17] National Computer Security Center, Department of Defense Trusted
  2167. Computer System Evaluation Criteria, DOD 5200.28-STD, December 1985.
  2168.  
  2169. [18] IBM Corp., "Information Management System/Virtual Systems (MS/VS),
  2170. Programming Reference Manual," IBM Form No. SH20-9027-2, Section 5.
  2171.  
  2172. [19] IBM Corp., Secure Xenix, Version 1.1---System Administrators Guide,
  2173. June 1987.
  2174.  
  2175. [20] Israel, J., J. Mitchell, and H. Sturgis, "Separating Data from
  2176. Function in a Distributed File System," Proceedings of the Second
  2177. International Symposium on Operating Systems, IRlA, Rocquencourt, France,
  2178. October 1978.
  2179.  
  2180. [21] Lampson, B. W., "Atomic Transactions," in Distributed Systems ---an
  2181. Advanced Course, B. W. Lampson, M. Paul, and H. J. Siegert, eds.,
  2182. SpringerVerlag, New York, 1981, pp. 246-265.
  2183.  
  2184. [22] Lampson, B. W., Robert F. Sproull, "An Open Operating System for a
  2185. Single User Machine," in Proceedings of the Seventh Symposium on Operating
  2186. Systems Principles, Pacific Grove, California, December 1979, pp. 98-105.
  2187.  
  2188. [23] Mitchell, J. G, and J. Dion, "A Comparison of Two Network-Based File
  2189. Servers," Communications of the ACM, 25/4, April 1982, pp. 233-245.
  2190.  
  2191. [24] National Computer Security Center, A Guide to Understanding Trusted
  2192. Facility Management, NCSC-TG-01 5, version 1,18 October 1989.
  2193.  
  2194. [25] Paxton, W. H., "A Client-Based Transaction System to Maintain Data
  2195. Integrity," Proceedings of the Seventh Symposium on Operating Systems
  2196. Principles, Pacific Grove, California, December 1979, pp. 18---23.
  2197.  
  2198. [26] Saltzer, J. H., "Protection and Control of Information Sharing in
  2199. Multics," Communications of the ACM, vol. 17, no. 8, July 1974, pp.
  2200. 388---402.
  2201.  
  2202. [27] Swinehart, Daniel, Gene McDaniel Boggs, "WFS: a Simple Shared File
  2203. System for a Distributed Environment," Proceedings of the Seventh
  2204. Symposium on Operating Systems Principles, Pacific Grove, California,
  2205. December 1979, pp. 9-17.
  2206.  
  2207. [28] Walker, S. T., "The Advent of Trusted Computer Operating Systems,"
  2208.  
  2209. National Computer Conference Proceedings, May, 1980, pp. 655---665.
  2210.  
  2211. [29] Walter, K. J., W. F. Ogden, W. C. Pounds, F. T. Bradshaw, S. R. Ames,
  2212. K. J. Biba, J. M. Gilligan, D. D. Schaefer, S. l. Schaen, D. G. Shumway,
  2213. Modeling the Security Interface, Technical Report, Case Western Reserve,
  2214. University, Cleveland, Ohio, August 1974.
  2215.  
  2216.  
  2217.  
  2218.  
  2219.  
  2220.  
  2221.