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

  1. NCSC-TG-030
  2.                                                                 VERSION-1
  3.  
  4.            NATIONAL COMPUTER SECURITY CENTER
  5.  
  6.                              A GUIDE TO
  7.                            UNDERSTANDING
  8.                                  COVERT
  9.                                 CHANNEL
  10.                                ANALYSIS
  11.                                     OF
  12.                          TRUSTED SYSTEMS
  13.  
  14.                               November 1993
  15.  
  16.  
  17.  
  18.                    NATIONAL COMPUTER SECURITY CENTER
  19.                  FORT GEORGE G. MEADE, MARYLAND 20755-6000
  20.  
  21.                                                                 NCSC-TG-030
  22.                                                       Library No. S-240,572
  23.                                                                   Version 1
  24.  
  25.                                FOREWORD
  26.  
  27. A Guide to Understanding Covert Channel Analysis of Trusted Systems
  28. provides a set of good practices related to covert channel analysis. We
  29. have written this guide to help the vendor and evaluator communities
  30. understand the requirements for covert channel analysis as described in
  31. the Department of Defense Trusted Computer System Evaluation Criteria
  32. (TCSEC). In an effort to provide guidance, we make recommendations in this
  33. technical guide that are not cited in the TCSEC. 
  34.  
  35. This guide is the latest in a series of technical guidelines published by
  36. the National Computer Security Center. These publications provide insight
  37. to the TCSEC requirements for the computer security vendor and technical
  38. evaluator. The goals of the Technical Guideline Program are to discuss
  39. each feature of the TCSEC in detail and to provide the proper
  40. interpretations with specific guidance. 
  41.  
  42. The National Computer Security Center has established an aggressive
  43. program to study and implement computer security technology. Our goal is
  44. to encourage the widespread availability of trusted computer products for
  45. use by any organization desiring better protection of its important data.
  46. One way we do this is by supporting the Trusted Product Evaluation
  47. Program. This program focuses on the security features of commercially
  48. produced and supported computer systems. We evaluate the protection
  49. capabilities against the established criteria presented in the TCSEC. This
  50. program, and an open and cooperative business relationship with the
  51. computer and telecommunications industries, will result in the fulfillment
  52. of our country's information systems security requirements. We resolve to
  53. meet the challenge of identifying trusted computer products suitable for
  54. use in processing information that requires protection. 
  55.  
  56. I invite your suggestions for revising this technical guide. We will
  57. review this document as the need arises. 
  58.  
  59. _________________________________ November 1993 
  60. Patrick R. Gallagher, Jr.
  61. Director
  62. National Computer Security Center
  63.  
  64.  
  65.  
  66.                          ACKNOWLEDGMENTS
  67.  
  68. The National Computer Security Center (NCSC) extends special recognition
  69. and acknowledgment to Virgil D. Gligor as primary author and preparer of
  70. this document, to Jonathan K. Millen for providing significant technical
  71. input for the covert channel identification and bandwidth estimation
  72. sections, and to the first covert channel working group of the NCSC (which
  73. met from 1989 to 1991) for providing most of the material presented in
  74. Appendices A and 1B. Capt. James K. Goldston (USAF) and Capt. James A.
  75. Muysenberg (USAF) are recognized for the development, editing, and
  76. publication of this guide. 
  77.  
  78. We wish to thank the many members of the computer security community who
  79. enthusiastically gave their time and technical expertise in reviewing this
  80. guide and providing valuable comments and suggestions. 
  81.  
  82.  
  83.                         TABLE OF CONTENTS
  84.  
  85.      FOREWORD 
  86.      ACKNOWLEDGMENTS 
  87.      1.0 INTRODUCTION 
  88.           1.1 Background 
  89.           1.2 Purpose 
  90.           1.3 Scope 
  91.           1.4 Control Objective 
  92.           1.5 Document Overview 
  93.      2.0 COVERT CHANNEL DEFINITION AND CLASSIFICATION 
  94.           2.1 Definition and Implications 
  95.           2.2 Classification 
  96.                2.2.1 Storage And Timing Channels 
  97.                2.2.2 Noisy And Noiseless Channels 
  98.                2.2.3 Aggregated And Non-Aggregated Channels 
  99.           2.3 Covert Channel and Flawed TCB Specifications 
  100.      3.0 COVERT CHANNEL IDENTIFICATION 
  101.           3.1 Sources of Information for Covert Channel Identification 
  102.           3.2 Identificaiton Methods 
  103.                3.2.1 Syntactic Information-Flow Analysis 
  104.                3.2.2 Addition of Semantic Components to Information-Flow
  105.                Analysis 
  106.                3.2.3 Shared Resource Matrix (SRM) Method 
  107.                3.2.4 Noninterference Analysis 
  108.           3.3 Potential versus Real Covert Channels 
  109.           3.4 TCSEC Requirements and Recommendations 
  110.      4.0 COVERT CHANNEL BANDWIDTH ESTIMATION 
  111.           4.1 Factors Affecting the Bandwidth Computation 
  112.                4.1.1 Noise and Delay 
  113.                4.1.2 Coding and Symbol Distribution 
  114.                4.1.3 TCB Primitive Selection 
  115.                4.1.4 Measurements and Scenarios of Use 
  116.                4.1.5 System Configuration and Initialization Dependencies 
  117.                4.1.6 Aggregation of Covert Channels 
  118.                4.1.7 Transient Covert Channels 
  119.           4.2 Bandwidth Estimation Methods 
  120.                4.2.1 Information-Theory-Based Method for Channel-Bandwidth
  121.                Estimation 
  122.                4.2.2 Informal Method for Estimating Covertt Channel
  123.                Bandwidth 
  124.                4.2.3 Differences Between the Two Methods 
  125.           4.3 TCSEC Requirements and Recommendations 
  126.      5.0 COVERT CHANNEL HANDLING 
  127.           5.1 Elimination of Covert Channels 
  128.           5.2 Bandwidth Limitation 
  129.           5.3 Auditing the Use of Covert Channels 
  130.           5.4 TCSEC Requirements and Recommendations 
  131.           5.5 Handling Policies Based on Threat Analysis 
  132.      6.0 COVERT CHANNEL TESTING 
  133.           6.1 Testing Requirements and Recommendations 
  134.           6.2 Test Documentation 
  135.      7.0 SATISFYING THE TCSEC REQUIREMENTS FOR COVERT CHANNEL ANALYSIS 
  136.           7.1 Requirements for Class B2 
  137.                7.1.1 Covert Channel Analysis 
  138.                7.1.2 Audit 
  139.                7.1.3 Design Documentation 
  140.                7.1.4 Test Documentation 
  141.           7.2 Additonal Requirements for Class B3 
  142.                7.2.1 Covert Channel Analysis 
  143.                7.2.2 Audit 
  144.                7.2.3 Design Documentation 
  145.                7.2.4 Test Documentation 
  146.           7.3 Additonal Requirements for Class A1 
  147.      ACRONYMS AND ABBREVIATIONS 
  148.      GLOSSARY 
  149.      REFERENCES 
  150.      APPENDIX A - ADDITONAL EXAMPLES OF COVERT CHANNELS 
  151.           A.1 Storage Channels 
  152.                A.1.1 Table-Space Exhaustion Channel 
  153.                A.1.2 Unmount of Busy File System Channel 
  154.                A.1.3 Printer Attachment Channel 
  155.           A.2 Timing Channels 
  156.                A.2.1 I/O Scheduling Channels 
  157.                A.2.2 I/O Operation Completion Channels 
  158.                A.2.3 Memory Resource Management Channels 
  159.                     A.2.3.1 Data Page Pool Channels 
  160.                     A.2.3.2 Active Segment Table Channels 
  161.                A.2.4 Device Controller Contention Channels 
  162.                A.2.5 Exclusive Use of Segment Channels 
  163.                A.2.6 Synchronization Primitive Contention Channels 
  164.      APPENDIX B - TOOLS FOR COVERT CHANNEL ANALYSIS 
  165.           B.1 FDM Ina Flow Tool 
  166.                B.1.1 MLS 
  167.                B.1.2 SRM 
  168.           B.2 GYPSY Flow Analyzer 
  169.           B.3 EHDM MLS Tool 
  170.           B.4 Source-Code Analysis Tool 
  171.  
  172.  
  173.  
  174. 1.0 INTRODUCTION
  175.  
  176. 1.1 BACKGROUND
  177.  
  178. The principal goal of the National Computer Security Center (NCSC) is to
  179. encourage the widespread availability of trusted computer systems. In
  180. support of this goal, the NCSC created a metric, the Department of Defense
  181. (DoD) Trusted Computer System Evaluation Criteria (TCSEC) [NCSC TCSEC],
  182. against which computer systems could be evaluated. 
  183.  
  184. The TCSEC was originally published on 15 August 1983 as CSC-STD-001-83. In
  185. December 1985, the Department of Defense adopted it, with a few changes,
  186. as a Department of Defense Standard, DoD 5200.28-STD. DoD Directive
  187. 5200.28, Security Requirements for Automated Information Systems (AISs)
  188. [DoD Directive], requires the TCSEC be used throughout the Department of
  189. Defense. The TCSEC is the standard used for evaluating the effectiveness
  190. of security controls built into DoD AISs. 
  191.  
  192. The TCSEC is divided into four divisions: D, C, B, and A. These divisions
  193. are ordered in a hierarchical manner, with the highest division (A) being
  194. reserved for systems providing the best available level of assurance and
  195. security. Within divisions C and B are subdivisions known as classes,
  196. which are also ordered in a hierarchical manner to represent different
  197. levels of security in these divisions. 
  198.  
  199. 1.2 PURPOSE
  200.  
  201. An important set of TCSEC requirements, which appears in classes B2 to
  202. A1,is that of covert channel analysis (CCA). The objectives of CCA are: 
  203.  
  204.      Identification of covert channels; 
  205.      Determination of covert channels' maximum attainable bandwidth; 
  206.      Handling covert channels using a well-defined policy consistent with
  207.      the TCSEC objectives; and 
  208.      Generation of assurance evidence to show that all channels are
  209.      handled according to the policy in force. 
  210.  
  211. To help accomplish these objectives, this guide (1) presents the relative
  212. merits of covert channel identification methods and of the covert channel
  213. information sources, (2) recommends sound bandwidth determination and
  214. handling policies and methods based on the TCSEC requirements, and (3)
  215. defines the types of evidence that should be provided for handling
  216. assurance. 
  217.  
  218. This document provides guidance to vendors on what types of analyses they
  219. should carry out for identifying and handling covert channels in their
  220. systems, and to system evaluators and accreditors on how to evaluate the
  221. manufacturer's analysis evidence. Note, however, that the only measure of
  222. TCSEC compliance is the TCSEC. This guide contains suggestions and
  223. recommendations derived from TCSEC objectives but which are not required
  224. by the TCSEC. 
  225.  
  226. This guide is not a tutorial introduction to any topic of CCA. Instead, it
  227. is a summary of analysis issues that should be addressed by operating
  228. systems designers, evaluators, and accreditors to satisfy the requirements
  229. of the B2-A1 classes. Thus, we assume the reader is an operating system
  230. designer or evaluator already familiar with the notion of covert channels
  231. in operating systems. For this reader, the guide defines a set of baseline
  232. requirements and recommendations for the analysis and evaluation of covert
  233. channels. For the reader unfamiliar with CCA techniques used to date, the
  234. following areas of further documentation and study may be useful: 
  235.  
  236.      Mandatory security models and their interpretation in operating
  237.      systems [Bell and La Padula76, Biba77, Denning83, Gasser88,
  238.      Honeywell85a, Honeywell85b, Luckenbaugh86, Rushby85, Walter74]; 
  239.      Experience with covert channel identification reported in the
  240.      literature to date [Benzel84, Haigh87, He and Gligor90, Karger and
  241.      Wray91, Kemmerer83, Lipner75, Loepere85, Millen76, Millen8l,
  242.      Millen89b, Schaefer77, Tsai90, Wray91]; 
  243.      Bandwidth estimation techniques using standard information theory
  244.      [Huskamp78, Millen89a, Shannon and Weaver64]; informal bandwidth
  245.      estimation techniques [Tsai and Gligor88j; 
  246.      Covert channel handling techniques [Schaefer77, Shieh and Gligor90,
  247.      Hu91]; and 
  248.      Other TCSEC guidelines relevant to covert channel handling [NCSC
  249.      Audit, NCSC Testing]. 
  250.  
  251. The reader who is intimately familiar with CCA techniques may want to
  252. refer only to the sections on the "TCSEC Requirements and Recommendations"
  253. (i.e., Sections 3.4, 4.3, and 6.1) and on "Satisfying the TCSEC
  254. Requirements for Covert Channel Analysis" (Chapter 7). 
  255.  
  256. 1.3 SCOPE
  257.  
  258. This guide refers to covert channel identification and handling methods
  259. which help assure that existent covert channels do not compromise a
  260. system's secure operation. Although the guide addresses the requirements
  261. of systems supporting the TCSEC mandatory policy, the analysis and
  262. handling methods discussed apply equally well to systems supporting any
  263. nondiscretionary (e.g., mandatory) security policy [Saltzer and
  264. Schroeder75]. We make additional recommendations which we derive from the
  265. stated objectives of the TCSEC. Not addressed are covert channels that
  266. only security administrators or operators can exploit by using privileged
  267. (i.e., trusted) software. We consider use of these channels an irrelevant
  268. threat because these administrators, who must be trusted anyway, can
  269. usually disclose classified and sensitive information using a variety of
  270. other more effective methods. 
  271.  
  272. This guide applies to computer systems and products built with the
  273. intention of satisfying TCSEC requirements at the B2-A1 levels. Although
  274. we do not explicitly address covert channels in networks or distributed
  275. database management systems, the issues we discuss in this guide are
  276. similar to the ones for those channels. 
  277.  
  278. 1.4 CONTROL OBJECTIVE
  279.  
  280. Covert channel analysis is one of the areas of operational assurance. As
  281. such, its control objective is that of assurance. The assurance objective
  282. provided in [NCSC TCSEC] is the following: 
  283.  
  284.      Systems that are used to process or handle classified or other
  285.      sensitive information must be designed to guarantee correct and
  286.      accurate interpretation of the security policy and must not
  287.      distort the intent of that policy. Assurance must be provided
  288.      that correct implementation and operation of the policy exists
  289.      throughout the system's life-cycle. 
  290.  
  291. This objective affects CCA in two important ways. First, covert channels
  292. are the result of an implementation of a nondiscretionary security policy
  293. at the operating system level; therefore, depending on how this policy is
  294. implemented within a given system, the resulting system will have fewer or
  295. more covert channels. Second, the existence of covert channels poses a
  296. potential threat to the use of the mandatory policy throughout the
  297. system's life cycle. Thus, the identification and handling of covert
  298. channels represents an important tenet of mandatory policy support in
  299. B2-A1 systems. 
  300.  
  301. 1.5 DOCUMENT ORGANIZATION
  302.  
  303. This guide contains seven chapters, a glossary, a bibliography, and two
  304. appendices. Chapter 2 reviews various definitions of covert channels,
  305. presents the policy implications of those definitions, and classifies
  306. channels. Chapter 3 presents various sources of covert channel information
  307. and identification methods, and discusses their relative practical
  308. advantages. Chapter 4 describes bandwidth estimation and illustrates a
  309. technique based on standard information theory that can be applied
  310. effectively in practice. Chapter 5 reviews various covert channel handling
  311. methods and policies that are consistent with the TCSEC requirements.
  312. Chapter 6 discusses covert channel testing and test documentation. Chapter
  313. 7 presents TCSEC requirements for CCA, and includes additional
  314. recommendations corresponding to B2-A1 evaluation classes. The glossary
  315. contains the definitions of the significant terms used herein. The
  316. bibliography lists the references cited in the text. Appendix A cites some
  317. examples of storage and timing channels. Appendix B describes the
  318. capabilities of several tools for covert channel identification. 
  319.  
  320.  
  321.  
  322. 2.0 COVERT CHANNEL DEFINITION AND
  323. CLASSIFICATION
  324.  
  325. In this chapter we provide several definitions of covert channels and
  326. discuss the dependency of these channels on implementations of
  327. nondiscretionary access control policies (i.e., of policy models). Also,
  328. we classify channels using various aspects of their scenarios of use. 
  329.  
  330. 2.1 DEFINITION AND IMPLICATIONS
  331.  
  332. The notion of covert communication was introduced in [Lampson73] and
  333. analyzed in [Lipner75, Schaefer77, Huskamp78, Denning83, Kemmerer83],
  334. among others. Several definitions for covert channels have been proposed,
  335. such as the following: 
  336.  
  337.      Definition 1 - A communication channel is covert if it is neither
  338.      designed nor intended to transfer information at all. [Lampson73]
  339.      (Note: Lampson's definition of covert channels is also presented in
  340.      [Huskamp78].) 
  341.      Definition 2 - A communication channel is covert (e.g., indirect) if
  342.      it is based on "transmission by storage into variables that describe
  343.      resource states." [Schaefer77] 
  344.      Definition 3 - Covert channels "will be defined as those channels
  345.      that are a result of resource allocation policies and resource
  346.      management implementation." [Huskamp78] (Note: The computing
  347.      environment usually carries out resource allocation policies and
  348.      implementation.) 
  349.      Definition 4 - Covert channels are those that "use entities not
  350.      normally viewed as data objects to transfer information from one
  351.      subject to another." [Kemmerer83] 
  352.  
  353. The last three of the above definitions have been used successfully in
  354. various security designs for new and retrofitted operating systems and in
  355. general covert channel analyses. However, none of the above definitions
  356. brings out explicitly the notion that covert channels depend on the type
  357. of nondiscretionary access control (e.g., mandatory) policy being used and
  358. on the policy's implementation within a system design. A new definition
  359. using these concepts can be provided that is consistent with the TCSEC
  360. definition of covert channels, which states that a covert channel is "a
  361. communication channel that allows a process to transfer information in a
  362. manner that violates the system's security policy." 
  363.  
  364.      Definition 5 - Given a nondiscretionary (e.g., mandatory) security
  365.      policy model M and its interpretation I(M) in an operating system,
  366.      any potential communication between two subjects I(Sh) and I(Si) of
  367.      I(M) is covert if and only if any communication between the
  368.      corresponding subjects Sh and Si of the model M is illegal in M.
  369.      [Tsai90] 
  370.  
  371. The above definition has several consequences that help explain the
  372. relevance (or lack thereof) of covert channels to different access control
  373. policies, as listed below: 
  374.  
  375. (1) Irrelevance of Discretionary Policy Models 
  376.  
  377. The above definition implies that covert channels depend only on the
  378. interpretation of nondiscretionary security models. This means the notion
  379. of covert channels is irrelevant to discretionary security models. 
  380.  
  381. Discretionary policy models exhibit a vulnerability to Trojan Horse
  382. attacks regardless of their interpretation in an operating system [NCSC
  383. DAC, Gasser88]. That is, implementations of these models within operating
  384. systems cannot determine whether a program acting on behalf of a user may
  385. release information on behalf of that user in a legitimate manner.
  386. Information release may take place via shared memory objects such as
  387. files, directories, messages, and so on. Thus, a Trojan Horse acting on
  388. behalf of a user could release user-private information using legitimate
  389. operating system requests. Although developers can build various
  390. mechanisms within an operating system to restrict the activity of programs
  391. (and Trojan Horses) operating on behalf of a user [Karger87], there is no
  392. general way, short of implementing nondiscretionary policy models, to
  393. restrict the activity of such programs. Thus, given that discretionary
  394. models cannot prevent the release of sensitive information through
  395. legitimate program activity, it is not meaningful to consider how these
  396. programs might release information illicitly by using covert channels. 
  397.  
  398. The vulnerability of discretionary policies to Trojan Horse and virus
  399. attacks does not render these policies useless. Discretionary policies
  400. provide users a means to protect their data objects from unauthorized
  401. access by other users in a relatively benign environment (e.g., an
  402. environment free from software containing Trojan Horses and viruses). The
  403. role of nondiscretionary policies is to confine the activity of programs
  404. containing Trojan Horses and viruses. In this context, the implementation
  405. of mandatory policies suggested by the TCSEC, which forms an important
  406. subclass of nondiscretionary security policies, must address the problem
  407. of unauthorized release of information through covert channels. 
  408.  
  409. (2) Dependency on Nondiscretionary Security Policy Models 
  410.  
  411. A simple example illustrates the dependency of covert channels on the
  412. security policy model used. Consider a (nondiscretionary) separation model
  413. M that prohibits any flow of information between two subjects Sh and Si
  414. Communication in either direction, from Sh to Si and vice versa, is
  415. prohibited. In contrast, consider a multilevel security model, M', where
  416. messages from Sh to Si are allowed only if the security level of Si
  417. dominates that of Sh. Here, some communication between 5h and Si may be
  418. authorized in M'. 
  419.  
  420. The set of covert channels that appears when the operating system
  421. implements model M' may be a subset of those that appear when the same
  422. operating system implements model M. The covert channels allowing
  423. information to flow from Sh to Si in interpretations of model M could
  424. become authorized communication channels in an interpretation of model M'.
  425.  
  426. The dependency of covert channels on the (nondiscretionary) security
  427. policy models does not imply one can eliminate covert channels merely by
  428. changing the policy model. Certain covert channels will exist regardless
  429. of the type of nondiscretionary access control policy used. However, this
  430. dependency becomes important in the identification of covert channels in
  431. specifications or code by automated tools. This is the case because
  432. exclusive reliance on syntactic analysis that ignores the semantics of the
  433. security model implementation cannot avoid false illegal flows. We discuss
  434. and illustrate this in sections 3.2.2 and 3.3. 
  435.  
  436. (3) Relevance to Both Secrecy and Integrity Models 
  437.  
  438. In general, the notion of covert channels is relevant to any secrecy or
  439. integrity model establishing boundaries meant to prevent information flow.
  440. Thus, analysis of covert channels is equally important to the
  441. implementation of both nondiscretionary secrecy (e.g., [Bell and La
  442. Padula76, Denning76, Denning77, Denning83, NCSC TCSEC]) and integrity
  443. models (e.g., [Biba77, Clark and Wilson87]). In systems implementing
  444. nondiscretionary secrecy models, such as those implementing the mandatory
  445. security policies of the TCSEC at levels B2-A1, CCA assures the discovery
  446. of (hopefully all) illicit ways to output (leak) information originating
  447. from a specific secrecy level (e.g., "confidential/personnel files/") to a
  448. lower, or incomparable, secrecy level (e.g., "unclassified/telephone
  449. directory/"). Similarly, in systems implementing nondiscretionary
  450. integrity models, such analysis also assures the discovery of (hopefully
  451. all) illicit ways to input information originating from a specific
  452. integrity level (e.g., "valued/personnel registry/") to a higher, or
  453. incomparable, integrity level (e.g., "essential/accounts payable/").
  454. Without such assurances, one cannot implement appropriate countermeasures
  455. and, therefore, nondiscretionary security claims become questionable at
  456. best. Figures 2-1(a) and 2-1(b) illustrate the notion of illegal flows in
  457. specific nondiscretionary secrecy and nondiscretionary integrity models. 
  458.  
  459. FIGURE MISSING 
  460.  
  461.                     Figure 2-1. Legal and Illegal Flows
  462.  
  463. Example 0 - Relevance of Covert Channels to an Integrity Model
  464.  
  465. Figure 2-2 illustrates the relevance of covert channels to
  466. nondiscretionary integrity models. Although this figure assumes a specific
  467. nondiscretionary integrity model (i.e., Biba's [Biba77]), covert channels
  468. are equally relevant to all nondiscretionary integrity models. In Figure
  469. 2-2, a user logged in at the integrity level IL1 invokes, through a
  470. command processor (i.e., the shell), an accounts payable application that
  471. prints payees, names on signed-check papers on a printer. The user is
  472. trusted to operate at integrity level IL1 and, by virtue of this trust,
  473. his input to the accounts payable application is also classified at
  474. integrity level IL1. For similar reasons, both the accounts payable
  475. application and the printer are activated at the current integrity level
  476. IL1. However, the accounts payable application (and, possibly, the shell)
  477. consists of an untrusted set of programs. 
  478.  
  479. FIGURE MISSING 
  480.  
  481.        Figure 2-2. Relevance of Covert Channels to an Integrity Model
  482.  
  483. The presence of untrusted software in the above example should not be
  484. surprising. Most application programs running on trusted computing bases
  485. (TCBs) supporting nondiscretionary secrecy consist of untrusted code.
  486. Recall that the ability to run untrusted applications on top of TCBs
  487. without undue loss of security is one of the major tenets of trusted
  488. computer systems. Insisting that all applications that might contain a
  489. Trojan Horse, which could use covert channels affecting integrity, be
  490. included within an integrity TCB is analogous to insisting that all
  491. applications that might contain a Trojan Horse, which could use covert
  492. channels affecting secrecy, be included within a secrecy TCB, and would be
  493. equally impractical. 
  494.  
  495. If the untrusted accounts payable application contains a Trojan Horse, the
  496. Trojan Horse program could send a (legal) message to a user process
  497. running at a lower integrity level IL2, thereby initiating the use of a
  498. covert channel. In this covert channel, the Trojan Horse is the receiver
  499. of (illegal) lower integrity-level input and the user process is the
  500. sender of this input. 
  501.  
  502. The negative effect of exploiting this covert channel is that an untrusted
  503. user logged in at a lower integrity level could control the accounts
  504. payable application through illegal input, thereby producing checks for
  505. questionable reasons. One can find similar examples where covert channels
  506. help violate any nondiscretionary integrity boundary, not just those
  507. provided by lattice-based integrity models (e.g., [Biba77]). Similar
  508. examples exist because, just as in the case of TCBs protecting sensitive
  509. information classified for secrecy reasons, not all applications running
  510. on trusted bases protecting sensitive information for integrity reasons
  511. can be verified and proved to be free of miscreant code. 
  512.  
  513. (4) Dependency on TCB Specifications 
  514.  
  515. To illustrate the dependency of covert channels on a system's TCB
  516. specifications (Descriptive or Formal Top-Level), we show that changes to
  517. the TCB specifications may eliminate existent, or introduce new, covert
  518. channels. The specifications of a system's TCB include the specifications
  519. of primitives which operate on system subjects, objects, access
  520. privileges, and security levels, and of access authorization,
  521. object/subject creation/destruction rules, for example. Different
  522. interpretations of a security model are illustrated in [Honeywell85a,
  523. Honeywell85b, Luckenbaugh86]. Changes to a TCB's specifications may not
  524. necessarily require a change of security model or a change of the security
  525. model interpretation. 
  526.  
  527. Example 1 - Object Allocation and Deallocation
  528.  
  529. As an example of the effect of TCB specification changes on covert channel
  530. existence (and vice versa), consider the case of an allocator of
  531. user-visible objects, such as memory segments. The specifications of the
  532. allocator must contain explicit "allocate/deallocate" (TCB) operations
  533. that can be invoked dynamically and that subjects can share. A covert
  534. channel between the subjects using these user-visible objects exists here
  535. [Schaefer77]. However, if the dynamic allocator and, consequently, its
  536. specifications are changed to disallow the dynamic allocation/deallocation
  537. of objects in a shared memory area, the covert channel disappears. Static
  538. object allocation in a shared memory area, or dynamic object allocation in
  539. a memory area partitioned on a security level basis, need not change the
  540. interpretation of the system's subjects and objects; it only needs to
  541. change the specification of the rules for the creation and destruction of
  542. a type of object. Although eliminating dynamic sharing of resources and
  543. either preallocating objects or partitioning resources on a per-
  544. security-level basis represent effective ways to remove some covert
  545. channels, they are neither necessary nor possible in all cases because
  546. they may cause performance losses. 
  547.  
  548. Though this example illustrates the dependency of covert channels on TCB
  549. specifications, it is not a general solution for eliminating covert
  550. channels. In fact, we can find other examples to show that changing a
  551. TCB's specifications may actually increase the number of covert channels. 
  552.  
  553. Example 2 - Upgraded Directories
  554.  
  555. As a second example of the strong dependency between the covert channel
  556. definition and TCB specifications, consider the creation and destruction
  557. of upgraded directories in a system supporting mandatory security and
  558. using specifications of interfaces similar to those of UNlX. The notion of
  559. an upgraded directory [Whitmore73, Schroeder77, Gligor87], its creation
  560. and removal, is illustrated in Figures 2-3(a)-(d). 
  561.  
  562. In such a system, whenever a user attempts to remove an upgraded directory
  563. from level Lh > Li where he is authorized to read and write it (as in
  564. Figure 2-3(c)), the remove operation fails because it violates the
  565. mandatory authorization check (the level of the removing process, Lh, must
  566. equal that of the parent directory, Li). In contrast, the same remove
  567. operation invoked by a process at level Li < Lh succeeds (Figure 2-3(d)). 
  568.  
  569. However, a covert channel appears because of the specification semantics
  570. of the remove operation in UNIX "rmdir." This specification says a
  571. nonempty directory cannot be removed. Therefore, if the above user logs in
  572. at level Li and tries to remove the upgraded directory from the higher
  573. level Lh, the user process can discover whether any files or directories
  574. at level Lh > Li are linked to the upgraded directory. Thus, another
  575. process at level Lh can transmit a bit of information to the user process
  576. at level Li < Lh by creating and removing (e.g., unlinking) files in the
  577. upgraded directory. Figure 2-4 illustrates this concept. 
  578.  
  579. Figure Missing 
  580.  
  581.  Figure 2-3. Creation and Destruction of an Upgraded Directory at Level Lh
  582.                                     > Li
  583.  
  584. Figure Missing 
  585.  
  586.    Figure 2-4. Covert Channel Caused by (UNIX) TCB Interface Conventions
  587.                               (where Lh > Li)
  588.  
  589. This covert channel would not appear if nonempty directories, and the
  590. directory subtree started from them, could be removed (e.g., as in Multics
  591. [Whitmore73, Bell and La Padula76]). However, if the specification of
  592. directory removal is changed, disallowing removal of nonempty directories
  593. (as in UNIX), the covert channel appears. One cannot eliminate the channel
  594. without modifying the UNIX user-visible interface. This is an undesirable
  595. alternative given that user programs may depend on the interface
  596. convention that nonempty UNIX directories cannot be removed. One cannot
  597. invent a new TCB specification under which either directories are not
  598. user-visible objects or in which the notion of upgraded directories
  599. disappears for similar reasons; that is, the UNIX semantics must be
  600. modified. 
  601.  
  602. 2.2 CLASSIFICATION
  603.  
  604. 2.2.1 Storage and Timing Channels
  605.  
  606. In practice, when covert channel scenarios of use are constructed, a
  607. distinction between covert storage and timing channels [Lipner75,
  608. Schaefer77, NCSC TCSEC, Hu91, Wray91] is made even though theoretically no
  609. fundamental distinction exists between them. A potential covert channel is
  610. a storage channel if its scenario of use "involves the direct or indirect
  611. writing of a storage location by one process [i.e., a subject of I(M)] and
  612. the direct or indirect reading of the storage location by another
  613. process." [NCSC TCSEC] A potential covert channel is a timing channel if
  614. its scenario of use involves a process that "signals information to
  615. another by modulating its own use of system resources (e.g., CPU time) in
  616. such a way that this manipulation affects the real response time observed
  617. by the second process." [NCSC TCSEC] In this guide, we retain the
  618. distinction between storage and timing channels exclusively for
  619. consistency with the TCSEC. 
  620.  
  621. In any scenario of covert channel exploitation, one must define the
  622. synchronization relationship between the sender and the receiver of
  623. information. Thus, covert channels can also be characterized by the
  624. synchronization relationship between the sender and the receiver. In
  625. Figure 2- 5, the sender and the receiver are asynchronous processes that
  626. need to synchronize with each other to send and decode the data. The
  627. purpose of synchronization is for one process to notify the other process
  628. it has completed reading or writing a data variable. Therefore, a covert
  629. channel may include not only a covert data variable but also two
  630. synchronization variables, one for sender- receiver synchronization and
  631. the other for the receiver-sender synchronization. Any form of synchronous
  632. communication requires both the sender-receiver and receiver-sender
  633. synchronization either implicitly or explicitly [Haberman72]. Note that
  634. synchronization operations transfer information in both directions, namely
  635. from sender to receiver and vice versa and, therefore, these operations
  636. may be indistinguishable from data transfers. Thus, the synchronization
  637. and data variables of Figure 2-5 may be indistinguishable. 
  638.  
  639. Some security models, and some of their interpretations, allow
  640. receiver-sender communication for subsets of all senders and receivers
  641. supported in the system. For example, all mandatory security models
  642. implemented in commercial systems to date allow information to flow from a
  643. low security level to a higher one. However, sender-receiver
  644. synchronization may still need a synchronization variable to inform the
  645. receiver of a bit transfer. A channel that does not include
  646. sender-receiver synchronization variables in a system allowing the
  647. receiver-sender transfer of messages is called a quasi-synchronous
  648. channel. The idea of quasi-synchronous channels was introduced by Schaefer
  649. in 1974 [Reed and Kanodia78]. 
  650.  
  651. Figure Missing 
  652.  
  653.     Figure 2-5. Representation of a Covert Channel between Sender S and
  654.                   Receiver R (where Lh > Li or Lh * * Li)
  655.  
  656. In all patterns of sender-receiver synchronization, synchronization data
  657. may be included in the data variable itself at the expense of some
  658. bandwidth degradation. Packet-formatting bits in ring and Ethernet local
  659. area networks are examples of synchronization data sent along with the
  660. information being transmitted. Thus, explicit sender-receiver
  661. synchronization through a separate variable may be unnecessary. Systems
  662. implementing mandatory security models allow messages to be sent from the
  663. receiver to the sender whenever the security level of the sender dominates
  664. that of the receiver. In these cases, explicit receiver-sender
  665. synchronization through a separate variable may also be unnecessary. 
  666.  
  667. The representation of a covert channel illustrated in Figure 2-5 can also
  668. be used to distinguish between scenarios of storage and timing channels.
  669. For example, a channel is a storage channel when the synchronization or
  670. data transfers between senders and receivers use storage variables,
  671. whereas a channel is a timing channel when the synchronization or data
  672. transfers between senders and receivers include the use of a common time
  673. reference (e.g., a clock). Both storage and timing channels use at least
  674. one storage variable for the transmission/sending of the information being
  675. transferred. (Note that storage variables used for timing channels may be
  676. ephemeral in the sense that the information transferred through them may
  677. be lost after it is sensed by a receiver. We discuss this in more detail
  678. in Appendix A.) Also, a timing channel may be converted into a storage
  679. channel by introducing explicit storage variables for synchronization; and
  680. vice versa, a storage channel whose synchronization variables are replaced
  681. by observations of a time reference becomes a timing channel. 
  682.  
  683. Based on the above definitions of storage and timing channels, the
  684. channels of Examples 1 and 2 are storage channels. Examples 3 and 4 below
  685. illustrate scenarios of timing channels. Appendix A presents additional
  686. examples of both storage and timing channels. 
  687.  
  688. Example 3 - Two Timing Channels Caused by CPU Scheduling
  689.  
  690. Quantum-based central processing unit (CPU) scheduling provides two
  691. typical examples of timing channels (Figure 2-6). In the first example,
  692. the sender of information varies the nonzero CPU time, which it uses
  693. during each quantum allocated to it, to send different symbols. For 0 and
  694. 1 transmissions, the sender picks two nonzero values for the CPU time used
  695. during a quantum, one representing a 0 and the other a 1. This channel is
  696. called the "quantum-time channel" in [Huskamp78]. The receiver of the
  697. transmitted information decodes the transmitted information by measuring
  698. its waiting time for the CPU. If only the receiver and the sender are in
  699. the system, the receiver can decode each transmitted bit correctly with
  700. probability one for some quantum sizes. A condition of this channel is
  701. that the sender be able to block itself before the end of some quantum and
  702. reactivate itself before the beginning of the next quantum. The sender can
  703. meet this condition in a variety of ways depending upon the size of the
  704. quantum (e.g., a typical range for quanta is 50- 1000 milliseconds). For
  705. example, the sender may use an "alarm clock" to put itself to sleep for a
  706. fraction of the quantum time, or it may generate a page fault (whose
  707. handling may take only a fraction of a quantum time also). A quantum of
  708. 100-200 milliseconds is sufficiently large for either case. 
  709.  
  710. Figure Missing 
  711.  
  712.                     Figure 2-6. Two CPU Timing Channels
  713.  
  714. In the second example of Figure 2-6, the sender transmits information to
  715. the receiver by encoding symbols, say 0s and 1s, in the time between two
  716. successive CPU quanta. This channel is called the "interquantum-time
  717. channel" [Huskamp78], and is shown in Figure 2-6(b) for the case where
  718. only the sender and the receiver appear in the system. To send
  719. information, the sender and the receiver agree on set times for sending
  720. the information. The transmission strategy is for the sender to execute at
  721. time "ti" if the i-th bit is 1, and to block itself if the i-th bit is 0.
  722. The receiver can tell whether the sender executes at time ti because the
  723. receiver cannot execute at the same time. 
  724.  
  725. Example 4 - Other Timing Channels Caused by Shared Hardware
  726. Resources
  727.  
  728. The CPU scheduling channels of Example 3 appear because processes at
  729. different secrecy or integrity levels share a hardware resource, namely
  730. the CPU. Other sharable hardware resources provide similar timing
  731. channels. For example, in any multiprocessor design, hardware resources
  732. are shared. Multiple processors share the same bus in shared-bus
  733. architectures, share the same memory ports in bus-per-processor
  734. architectures, and share multiple busses and memory ports in
  735. crossbarswitch architectures, as shown in Figure 2-7. In all
  736. multiprocessor architectures, each instruction referencing the memory must
  737. lock the shared resource along the CPU-memory interconnection path for at
  738. least one memory cycle. (The number of cycles during which the shared
  739. resource must be locked depends on the instruction semantics.) Hardware
  740. controllers of the shared resource mediate lock conflicts. When the shared
  741. resource is no longer needed during the execution of the instructon, the
  742. resource is unlocked. 
  743.  
  744. Whenever two processes at two different levels execute concurrently on two
  745. separate processors, a covert channel appears that is similar to the CPU
  746. interquantum channel presented in Example 3. That is, the sender and the
  747. receiver processes establish by prior agreement that the sender process
  748. executes at time"ti"if the i-th bit is a 1 and does not execute (or at
  749. least does not execute memoryreferencing instructions) at time "ti" if the
  750. i-th bit is a 0. The receiver can execute a standard set of
  751. memory-referencing instructions and time their execution. Thus, the
  752. receiver can discover whether the sender executes at time "ti" by checking
  753. whether the duration of the standard set of timed instructions was the
  754. expected 1 or longer. As with the CPU channels of Example 3, these
  755. channels appear in any multiprocessor system regardless of the
  756. nondiscretionary model interpretation. Note that adding per-processor
  757. caches, which helps decrease interprocessor contention to shared hardware
  758. resources, cannot eliminate these channels. The sender and receiver
  759. processes can fill up their caches and continue to exploit interprocessor
  760. contention to transmit information. 
  761.  
  762. Appendix A provides other examples of timing channels, which also appear
  763. due to the sharing of other hardware resources. 
  764.  
  765. Figure Missing 
  766.  
  767. Figure 2-7. Examples of Shared Hardware Resources in Multiprocessor
  768. Architectures 
  769.  
  770. 2.2.2 Noisy and Noiseless Channels
  771.  
  772. As with any communication channel, covert channels can be noisy or
  773. noiseless. A channel is said to be noiseless if the symbols transmitted by
  774. the sender are the same as those received by the receiver with probability
  775. 1. With covert channels, each symbol is usually represented by one bit
  776. and, therefore, a covert channel is noiseless if any bit transmitted by a
  777. sender is decoded correctly by the receiver with probability 1. That is,
  778. regardless of the behavior of other user processes in the system, the
  779. receiver is guaranteed to receive each bit transmitted by the sender. 
  780.  
  781. The covert channel of Example 2 is a noiseless covert channel. The sender
  782. and receiver can create and remove private upgraded directories, and no
  783. other user can affect in any way whether the receiver receives the
  784. error/no_error signal. Thus, with probability 1, the receiver can decode
  785. the bit value sent by the sender. In contrast, the covert channels of
  786. Examples 3 and 4 are noisy channels because, whenever extraneous
  787. processes-not just the sender and receiver-use the shared resource, the
  788. bits transmitted by the sender may not be received correctly with
  789. probability 1 unless appropriate error-correcting codes are used. The
  790. error-correcting codes used depend on the frequency of errors produced by
  791. the noise introduced by extraneous processes (shown in Figure 2- 5) and
  792. decrease the maximum channel bandwidth. Thus, although error-correcting
  793. codes help change a noisy channel into a noiseless one, the resulting
  794. channel will have a lower bandwidth than the similar noise-free channel. 
  795.  
  796. We introduce the term "bandwidth" here to denote the rate at which
  797. information is transmitted through a channel. Bandwidth is originally a
  798. term used in analog communication, measured in hertz, and related to
  799. information rate by the "sampling theorem" (generally attributed to H.
  800. Nyquist although the theorem was in fact known before Nyquist used it in
  801. communication theory [Haykin83]). Nyquist's sampling theorem says that the
  802. information rate in bits (samples) per second is at most twice the
  803. bandwidth in hertz of an analog signal created from a square wave. In a
  804. covert channel context, bandwidth is given in bits/second rather than
  805. hertz, and is commonly used, in an abuse of terminology, as a synonym for
  806. information rate. This use of the term "bandwidth" is also related to the
  807. notion of "capacity." The capacity of a channel is its maximum possible
  808. error-free information rate in bits per second. By using error-correcting
  809. codes, one can substantially reduce the error rates of noisy channels.
  810. Error-correcting codes decrease the effective (i.e., error-free)
  811. information rate relative to the noisy bit rate because they create
  812. redundancy in the transmitted bit stream. Note that one may use
  813. error-detecting, rather than error-correcting, codes in scenarios where
  814. the receiver can signal the sender for retransmissions. All of these
  815. notions are standard in information theory [Gallager68]. 
  816.  
  817. 2.2.3 Aggregated versus Nonaggregated Channels
  818.  
  819. Synchronization variables or information used by a sender and a receiver
  820. may be used for operations on multiple data variables. Multiple data
  821. variables, which could be independently used for covert channels, may be
  822. used as a group to amortize the cost of synchronization (and, possibly,
  823. decoding) information. We say the resulting channels are aggregated.
  824. Depending on how the sender and receiver set, read, and reset the data
  825. variables, channels can be aggregated serially, in parallel, or in
  826. combinations of serial and parallel aggregation to yield optimal (maximum)
  827. bandwidth. 
  828.  
  829. If all data variables are set, reset, and read serially, then the channel
  830. is serially aggregated. For example, if process Ph of Example 2 (Figure
  831. 2-4) uses multiple upgraded directories designated "empty/nonempty" before
  832. transferring control to process Pi, the signaling channel will be serially
  833. aggregated. Similarly, if all data variables are set, reset, and read in
  834. parallel by multiple senders and receivers, then the channel is aggregated
  835. in parallel. Note that combinations of serial/parallel aggregaton are also
  836. possible. For example, the data variables may be set in parallel but read
  837. serially and vice versa. However, such combinations do not maximize
  838. bandwidth and are, therefore, of limited interest. 
  839.  
  840. Parallel aggregation of covert channel variables requires, for bandwidth
  841. maximization reasons, that the sender and receiver pairs be scheduled on
  842. different processors at the same time as a group, as illustrated in Figure
  843. 2-8 and in [Gligor86]. Otherwise, the bandwidth of the parallel
  844. aggregation degrades to that of a serially aggregated channel. The
  845. application programmer can strictly control group scheduling of senders
  846. and receivers in multiprocessor operating systems such as Medusa or StarOS
  847. [Osterhout80, Jones79], which use "coscheduling" [Osterhout82]. Also group
  848. scheduling may be possible in multiple workstation systems such as those
  849. used in LOCUS [Walker83] or Apollo [Leach83] whenever multiple workstatons
  850. are available to a single application. In such systems, the analysis of
  851. individual covert channels is insufficient to determine the maximum covert
  852. channel bandwidth. 
  853.  
  854. Figure Missing 
  855.  
  856.           Figure 2-8. Example of n Channels Aggregated in Parallel
  857.  
  858. Parallel aggregation of covert channels also requires, for bandwidth
  859. maximizaton reasons, that the synchronization messages between all
  860. senders, and those between all receivers, be transmitted at a much higher
  861. speed than those between senders and receivers. In practice, messages sent
  862. among senders, and those sent among receivers, have negligible
  863. transmission delays compared to those used by covert channels between
  864. senders and receivers. (Also, note that all messages among senders and
  865. those among receivers are authorized messages.) 
  866.  
  867. 2.3 COVERT CHANNELS AND FLAWED TCB
  868. SPECIFICATIONS
  869.  
  870. An unresolved issue of covert channel definition is whether one can make a
  871. distinction between a covert channel and a flaw introduced by the
  872. implementation of the security models. In other words, one would like to
  873. differentiate between implementation flaws and covert channels, if
  874. possible, for practical reasons. For example, both implementors and
  875. evaluators of systems supporting mandatory access controls in class B1
  876. could then differentiate between flaws and covert channels. They could
  877. determine whether instances of leakage of classified information must be
  878. eliminated or otherwise handled or ignored until the B2 level and above. 
  879.  
  880. The covert communication Definition 5 does not differentiate between
  881. covert channels and interpretation or TCB specification flaws. This
  882. definition implies that, in a fundamental sense, covert channels are in
  883. fact flaws of nondiscretionary access control policy implementations,
  884. which are sometimes unavoidable in practice regardless of the
  885. implementors' design (e.g., Example 3). However, the focus of that
  886. definition on the notion of model implementation may help provide a
  887. criterion for distinguishing between different types of covert channels or
  888. implementation flaws. 
  889.  
  890. To define a distinguishing criterion, let us review Examples 1-4. Examples
  891. 1 and 2 show that a change of the TCB specification can, in principle,
  892. eliminate the existent covert channels in the specific systems under
  893. consideration. In contrast, Examples 3 and 4 show that as long as any
  894. system allows the sharing of the CPUs, busses, memory, input/output (I/O)
  895. and other hardware resources, covert channels will appear for any TCB
  896. specification. Furthermore, Example 2 illustrates that, in many systems, a
  897. change of TCB specification that would eliminate a covert channel may
  898. sometimes be impractical. That is, evidence may exist showing that
  899. contemplated changes of the TCB specification would cause a significant
  900. loss of compatibility with existing interfaces of a given system. Similar
  901. examples can be found to illustrate that changes of TCB specifications may
  902. help eliminate other covert channels (or flaws) at the expense of loss of
  903. functionality or performance in a given system (e.g., Example 1). 
  904.  
  905. The following criterion may help distinguish between different types of
  906. covert channels (or flaws) in practice, thereby providing the necessary
  907. input for covert channel, or flaw, handling at levels B1 versus levels
  908. B2-A1: 
  909.  
  910.      Fundamental Channels - A flaw of a TCB specification that causes
  911.      covert communication represents a fundamental channel if and only if
  912.      that flaw appears under any interpretation of the nondiscretionary
  913.      security model in any operating system. 
  914.      Specific TCB Channels - A flaw of a TCB specification that causes
  915.      covert communication represents a specific TCB channel if and only if
  916.      that flaw appears only under a specific interpretation of the
  917.      nondiscretionary security model in a given operating system. 
  918.      Unjustifiable Channels - A flaw of a TCB specification that causes
  919.      covert communication represents an unjustifiable channel if and only
  920.      if that flaw appears only under a specific but unjustifiable
  921.      interpretation of a nondiscretionary security model in a given
  922.      operating system. (The primary difference between specific TCB and
  923.      unjustifiable channels is in whether any evidence exists to justify
  924.      the existence of the respective channels.) 
  925.  
  926. Using this criterion, the covert channels of Examples 3 and 4 are
  927. fundamental channels, whereas those of Examples 1 and 2 are specific TCB
  928. channels. 
  929.  
  930. The above criterion for distinguishing different types of covert channels
  931. (or flaws) suggests the following differentiation policy for B1 and B2-A1
  932. systems. For B1 systems, there should be no handling obligation of
  933. fundamental covert channels; specific TCB channels should be handled under
  934. the policies in force for classes B2-A1 (as recommended in Chapter 5 of
  935. this guide); unjustifiable channels should be eliminated by a change of
  936. TCB specification or model implementation for any B-rated systems. 
  937.  
  938.  
  939.  
  940. 3.0 COVERT CHANNEL IDENTIFICATION
  941.  
  942. We discuss in this chapter the representation of a covert channel within a
  943. system, the sources of information for covert channel identification, and
  944. various identification methods that have been used to date and their
  945. practical advantages and disadvantages. We also discuss the TCSEC
  946. requirements for covert channel identification and make additional
  947. recommendations. 
  948.  
  949. A covert channel can be represented by a TCB internal variable and two
  950. sets of TCB primitives, one for altering (PAh) and the other for viewing
  951. (PVi) the values of the variable in a way that circumvents the system's
  952. mandatory policy. Multiple primitives may be necessary for viewing or
  953. altering a variable because, after viewing/altering a variable, the sender
  954. and/or the receiver may have to set up the environment for sending/reading
  955. the next bit. Therefore, the primary goal of covert channel identification
  956. is to discover all TCB internal variables and TCB primitives that can be
  957. used to alter or view these variables (i.e., all triples < variable; PAh,
  958. PVi>). A secondary, related goal is to determine the TCB locations within
  959. the primitives of a channel where time delays, noise (e.g., randomized
  960. table indices and object identifiers, spurious load), and audit code may
  961. be placed for decreasing the channel bandwidth and monitoring its use. In
  962. addition to TCB primitives and variables implemented by kernel and trusted
  963. processes, covert channels may use hardware-processor instructions and
  964. user-visible registers. Thus, complete covert channel analysis should take
  965. into account a system's underlying hardware architecture, not just kernels
  966. and trusted processes. 
  967.  
  968. 3.1 SOURCES OF INFORMATION FOR COVERT CHANNEL
  969. IDENTIFICATION
  970.  
  971. The primary sources of information for covert channel identification are: 
  972.  
  973.      System reference manuals containing descriptions of TCB primitives,
  974.      CPU and I/O processor instructions, their effects on system objects
  975.      and registers, TCB parameters or instruction fields, and so on; 
  976.      The detailed top-level specification (DTLS) for B2-A1 systems, and
  977.      the Formal top- level specification (FTLS) for A1 systems; and 
  978.      TCB source code and processor-instruction (micro) code. 
  979.  
  980. The advantage of using system reference manuals for both TCB-primitive and
  981. processor- instruction descriptions is the widespread availability of this
  982. information. Every implemented system includes this information for normal
  983. everyday use and, thus, no added effort is needed to generate it. However,
  984. there are disadvantages to relying on these manuals for covert channel
  985. identification. First, whenever system reference manuals are used, one can
  986. view the TCB and the processors only as essentially "black boxes." System
  987. implementation details are conspicuous by their absence. Thus, using
  988. system reference manuals, one may not attain the goal of discovering all,
  989. or nearly all, channels. Whenever these manuals are the only sources of
  990. information, the channel identification may only rely on guesses and
  991. possibly on analogy with specifications of other systems known to contain
  992. covert channels. Second, and equally important, is the drawback that
  993. analysis based on system reference information takes place too late to be
  994. of much help in covert channel handling. Once a system is implemented and
  995. the manuals written, the option of eliminating a discovered covert channel
  996. by removing a TCB interface convention may no longer be available. Third,
  997. few identification methods exist that exhibit any degree of precision and
  998. that can rely exclusively on information from system reference manuals.
  999. The inadequacy of using only system reference manuals for CCA is
  1000. illustrated in Example 6 of Section 3.2.3. 
  1001.  
  1002. Most identification methods developed to date have used formal top-level
  1003. TCB specifications as the primary source of covert channel identification.
  1004. The use of top-level specifications has significant advantages. First,
  1005. these specifications usually contain more detailed, pertinent information
  1006. than system reference manuals. Second, use of top-level specifications
  1007. helps detect design flaws that may lead to covert channels in the final
  1008. implementation. Early detection of design flaws is a useful prerequisite
  1009. for correct design because one can minimize efforts expended to correct
  1010. design flaws. Third, tools aiding the identification process exist for the
  1011. FTLS and thus one gains additional assurance that all channels appearing
  1012. within the top-level specifications are found (see Appendix B). 
  1013.  
  1014. However, total reliance on analysis of top-level specifications for the
  1015. identificaton of covert channels has two significant disadvantages. First,
  1016. it cannot lead to the identification of all covert channels that may
  1017. appear in implementation code. Formal methods for demonstrating the
  1018. correspondence between information flows of top-level specifications and
  1019. those of implementation code do not exist to date. Without such methods,
  1020. guarantees that all covert storage channels in implementation code have
  1021. been found are questionable at best. The only significant work on
  1022. specification-to-code correspondence on an implemented system (i.e., the
  1023. Honeywell SCOMP [Benzel84]) reported in the literature to date has been
  1024. thorough but informal. This work shows that, in practice, a significant
  1025. amount of implementation code has no correspondent formal specifications.
  1026. Such code includes performance monitoring, audit, debugging, and other
  1027. code, which is considered security-policy irrelevant but which,
  1028. nevertheless, may contain variables providing potential storage channels. 
  1029.  
  1030. Second, formal/descriptive top-level specifications of a TCB may not
  1031. include sufficient specification detail of data structures and code to
  1032. detect indirect information flows within TCB code that are caused by the
  1033. semantics of the implementation language (e.g., control statements, such
  1034. as alternation statements, loops, and so on; pointer assignments, variable
  1035. aliasing in structures [Schaefer89, Tsai90]). Insufficient detail of
  1036. specifications used for information flow and storage channel analysis may
  1037. also cause inadequate implementation of nondiscretionary access controls
  1038. and channel-handling mechanisms. This is the case because, using the
  1039. results of top- level specification analysis, one cannot determine with
  1040. certainty the placement of code for access checks, channel use audits, and
  1041. time delays to decrease channel bandwidth within TCB code. 
  1042.  
  1043. In contrast with the significant efforts for the analysis of design
  1044. specifications, little practical work has been done in applying CCA to
  1045. implementation code or to hardware. Identifying covert storage channels in
  1046. source code has the advantages that (1) potentially all covert storage
  1047. channels can be found (except those caused by hardware), (2) locations
  1048. within TCB primitives for placement of audit code, de-lays, and noise can
  1049. be found, and (3) adequacy of access-check placement within TCB primitives
  1050. could be assessed [Tsai90]. However, analysis of TCB source code is very
  1051. labor- intensive, and few tools exist to date to help alleviate the dearth
  1052. of highly skilled personnel to perform such labor-intensive activity. 
  1053.  
  1054. 3.2 IDENTIFICATION METHODS
  1055.  
  1056. All of the widely used methods for covert channel identification are based
  1057. on the identification of illegal information flows in top-level design
  1058. specifications and source code, as first defined by [Denning76, 77, 83]
  1059. and [Millen76]. Subsequent work by [Andrews and Reitman80] on
  1060. information-flow analysis of programming language statements extended
  1061. Denning's work to concurrent-program specifications. 
  1062.  
  1063. 3.2.1 Syntactic Information-Flow Analysis
  1064.  
  1065. In all flow-analysis methods, one attaches information-flow semantics to
  1066. each statement of a specification (or implementation) language. For
  1067. example, a statement such as "a := b" causes information to flow from b to
  1068. a (denoted by b -> a) whenever b is not a constant. Similarly, a statement
  1069. such as "if v = k then w := b else w := c" causes information to flow from
  1070. v to w. (Other examples of flows in programming-language statements are
  1071. found in [Denning83, Andrews and Reitman80, Gasser88]). Furthermore, one
  1072. defines a flow policy, such as "if information flows from variable x to
  1073. variable y, the security level of y must dominate that of x." When applied
  1074. to specification statements or code, the flow policy helps generate flow
  1075. formulas. For exampIe, the flow formula of "a: = b" is security level(a) >
  1076. security_level(b). Flow formulas are generated for complete program and
  1077. TCB-primitive specifications or code based on conjunctions of all flow
  1078. formulas of individual language statements on a flow path. (Formula
  1079. simplifications are also possible and useful but not required.) These flow
  1080. formulas must be proven correct, usually with the help of a theorem
  1081. prover. If a pro-gram flow formula cannot be proven, the particular flow
  1082. can lead to a covert channel flow and further analysis is necessary. That
  1083. is, one must perform semantic analysis to determine (1) whether the
  1084. unproven flow is real or is a false illegal flow, and (2) whether the
  1085. unproven flow has a scenario of use (i.e., leads to a real-not just a
  1086. potential- channel). Example 5 of this section and Examples 7 and 8 of
  1087. Section 3.3 illustrate the notion of false illegal flow and the
  1088. distinction between real and potential channels. 
  1089.  
  1090. Various tools have been built to apply syntactic flow analysis to formal
  1091. specifications. For example, the SRI Hierarchical Development Methodology
  1092. (HDM) and Enhanced HDM (EHDM) tools [Feiertag80, Rushby84] apply syntactic
  1093. analysis to the SPECIAL language. Similarly, the Ina Flo tool of the
  1094. Formal Development Methodology (FDM) [Eckmann87] and the Gypsy tools
  1095. [McHugh and Good85, McHugh and Ackers87] have been used for syntactic
  1096. information-flow analyses. Appendix B reviews these tools. Experience with
  1097. information-flow analysis in practice is also reported in references
  1098. [Millen78, MiIlen81]. 
  1099.  
  1100. Syntactic information-flow analysis has the following advantages when used
  1101. for covert channel identification: 
  1102.  
  1103.      It can be automated in a fairly straightforward way; 
  1104.      It can be applied both to formal top-level specifications and source
  1105.      code; 
  1106.      It can be applied incrementally to individual functions and TCB
  1107.      primitives; and 
  1108.      It does not miss any flow that leads to covert channels in the
  1109.      particular specification (or code). 
  1110.  
  1111. All syntactic information-flow analysis methods share the following three
  1112. drawbacks: 
  1113.  
  1114.      Vulnerability to discovery of false illegal flows (and corresponding
  1115.      additional effort to eliminate such flows by manual semantic
  1116.      analysis); 
  1117.      Inadequacy of use with informal specifications; and 
  1118.      Inadequacy in providing help with identifying TCB locations for
  1119.      placing covert channel handling code. 
  1120.  
  1121. All syntactic flow-analysis methods assume each variable or object is
  1122. either explicitly or implicitly labeled with a specific security level or
  1123. access class. However, as pointed out in [Kemmerer83], covert channels use
  1124. variables not normally viewed as data objects. Consequently, these
  1125. variables cannot necessarily be labeled with a specific security level
  1126. and, therefore, cannot be part of the interpretation of a given
  1127. nondiscretionary security model in an operating system. Instead, these
  1128. variables are internal to kernels or trusted processes and their security
  1129. levels may vary dynamically depending upon flows between labeled objects.
  1130. Therefore, the labeling of these variables with specific security levels
  1131. to discover all illegal flows also renders these code-analysis methods
  1132. vulnerable to discovery of false flow violations. These false flow
  1133. violations are called "formal flow violations" in references [MilIen78,
  1134. Schaefer89, Tsai90]. 
  1135.  
  1136. Example 5 - A False Illegal Flow
  1137.  
  1138. An example of a false flow violation in the fragment of code shown in
  1139. Figure 3-1(a) is illustrated in Figures 3-1(b, c). Here, both the alterer
  1140. and the viewer of the "msgque ÷ mode" variable is the TCB primitive
  1141. "msgget" of Secure Xenix. The flow formula sl(u.u_rval1) sl(qp) sl(msgque
  1142. ÷ mode) sl(flag) sl(uap÷msgflg), where sl stands for the security level,
  1143. cannot be proven because the security levels of the variables vary
  1144. dynamically, depending on the security levels of the processes invoking
  1145. the "msgget" primitive. Thus, syntactic flow analysis would identify this
  1146. flow as il legal. However, an examination of the program conditions under
  1147. which this flow can actually occur (shown in Figure 3-1 (b)) quickly
  1148. reveals this flow is legal. This flow can occur because the conditions
  1149. enabling the flow at run time include security checks of the
  1150. nondiscretionary model interpretations for both viewing and altering
  1151. InterProcess Communication (IPC) objects. These checks prevent all illegal
  1152. flows through the "msgque ÷ mode" variable. 
  1153.  
  1154. Practical examples of false illegal flows appear in all covert channel
  1155. analyses relying exclusively on syntactic flow analysis. For example,
  1156. sixty-eight formulas that could not be proven have been found in the SCOMP
  1157. analysis using the Feiertag Flow tool [Benzel84, Millen89b]. Only fourteen
  1158. of these flows caused covert channels; the balance were all false illegal
  1159. flows. Similar examples can be given based on experience with other flow
  1160. tools. For instance, even in a small (twenty-line) program written in Ina
  1161. Jo, the lna Flow tool discovered one hundred-seventeen illegal flows of
  1162. which all but one were false [Cipher90]. 
  1163.  
  1164. Information-flow analysis does not lend itself to use on informal (e.g.,
  1165. English language) specifications. This means that, if one uses
  1166. information-flow analysis for B2-B3 class systems, one should apply it to
  1167. source code. Furthermore, discovery of illegal flows in formal top-level
  1168. specifications (for class A1 systems) offers little help for identifying
  1169. TCB locations where covert channel handling code may be necessary. The
  1170. identification of such locations requires semantic analysis of
  1171. specifications and code. 
  1172.  
  1173. Figure Missing 
  1174.  
  1175.   Figure 3-1. An Example of a False Illegal Flow Caused by Syntactic Flow
  1176.                                   Analysis
  1177.  
  1178. 3.2.2 Addition of Semantic Components to Information-Flow
  1179. Analysis
  1180.  
  1181. Reference [Tsai90] presents a method for identification of potential
  1182. storage channels based on (1) the analysis of programming language
  1183. semantics, code, and data structures used within the kernel, to discover
  1184. variable alterability/visibility; (2) resolution of aliasing of kernel
  1185. variables to determine their indirect alterability; and (3)
  1186. information-flow analysis to determine indirect visibility of kernel
  1187. variables (e.g., the "msgque ÷ mode" variable in Figure 3-1). These steps
  1188. precede the application of the nondiscretionary (secrecy or integrity
  1189. semantic) rules specified in the interpretation of the security model, and
  1190. implemented in code, to the shared variables and kernel primitives. This
  1191. last step helps distinguish the real storage channels from the legal or
  1192. inconsequential ones. The delay in the application of these rules until
  1193. the security levels of shared variables can be determined with certainty
  1194. (i.e., from the levels of the objects included in the flows between
  1195. variables) helps avoid additional (manual) analysis of false illegal
  1196. flows. Furthermore, discovery of all locations in kernel code where shared
  1197. variables are altered/viewed allows the correct placement of audit code
  1198. and time-delay variables for channel-handling mechanisms, and of access
  1199. checks for nondiscretionary policy implementation. 
  1200.  
  1201. A disadvantage of this method is that its manual application to real TCBs
  1202. requires extensive use of highly skilled personnel. For example, its
  1203. application to the Secure Xenix system required two programmer-years of
  1204. effort. Thus, using this method in real systems requires extensive use of
  1205. automated tools. Although the method is applicable to any implementation
  1206. language and any TCB, its automation requires that different parser and
  1207. flow generators be built for different languages. 
  1208.  
  1209. The addition of an automated tool for semantic information-flow analysis
  1210. to syntactic analysis is reported in [He and Gligor90]. The semantic
  1211. component of this tool examines all flows visible through a TCB interface
  1212. and separates the legal from the illegal ones. Since this analysis uses
  1213. the interpretation of a system's mandatory security model in source code,
  1214. false illegal flows are not detected. Although one can apply this method
  1215. to any system, the tool component for semantic analysis may differ from
  1216. system to system because the interpretation of the mandatory security
  1217. model in a system's code may differ from system to system. The separation
  1218. of real covert channels from the potential ones, which requires real
  1219. scenarios of covert channel use, must still be done manually. Compared to
  1220. the separation of all potential channels from flows allowing a variable to
  1221. be viewed/altered through a TCB interface, the separation of real channels
  1222. from potential channels is not a labor-intensive activity since the number
  1223. of potential channels is typically several orders of magnitude smaller
  1224. than the number of flows through a TCB interface. 
  1225.  
  1226. 3.2.3 Shared Resource Matrix (SRM) Method
  1227.  
  1228. The SRM method for identifying covert channels was proposed by
  1229. [Kemmerer83], and used in several projects [Haigh87]. When applied to TCB
  1230. specifications or code, this method requires the following four steps: 
  1231.  
  1232.      (1) Analyze all TCB primitive operations specified formally or
  1233.      informally, or in source code; 
  1234.  
  1235.      (2) Build a shared resource matrix consisting of user-visible TCB
  1236.      primitives as rows and visible/alterable TCB variables representing
  1237.      attributes of a shared resource as columns; mark each entry by R or M
  1238.      depending on whether the attribute is read or modified. (This step
  1239.      assumes one has already determined variable visibility/alterability
  1240.      through the TCB interface.) Variables that can neither be viewed nor
  1241.      altered independently are lumped together and analyzed as a single
  1242.      variable. We show a typical shared-resource matrix in Figure 3-2 and
  1243.      discuss it in Example 6. 
  1244.  
  1245.      (3) Perform a transitive closure on the entries of the shared
  1246.      resource matrix. This step identifies all indirect reading of a
  1247.      variable and adds the corresponding entries to the matrix. A TCB
  1248.      primitive indirectly reads a variable y whenever a variable x, which
  1249.      the TCB primitive can read, can be modified by TCB functions based on
  1250.      a reading of the value of variable y. (Note that whenever the SRM
  1251.      method is applied to informal specifications of a TCB interface as
  1252.      defined in system reference manuals-and not to internal TCB
  1253.      specifications of each primitive, which may be unavailable-performing
  1254.      this step can only identify how processes outside the TCB can use
  1255.      information covertly obtained through the TCB interface. Therefore,
  1256.      whenever people using the SRM method treat the TCB as a black box,
  1257.      they can eliminate the transitive closure step since it provides no
  1258.      additional information about flows within the TCB specifications or
  1259.      code.) 
  1260.  
  1261.      (4) Analyze each matrix column containing row entries with either an
  1262.      `R' or an `M'; the variable of these columns may support covert
  1263.      communication whenever a process may read a variable which another
  1264.      process can write and the security level of the former process does
  1265.      not dominate that of the latter. Analysis of the matrix entry leads
  1266.      to four possible conclusions [Kemmerer83]: 
  1267.  
  1268.           (4.1) If a legal channel exists between the two communicating
  1269.           processes (i.e., an authorized channel), this channel is of no
  1270.           consequence; label it "L". 
  1271.  
  1272.           (4.2) If one cannot gain useful information from a channel,
  1273.           label it "N". 
  1274.  
  1275.           (4.3) If the sending and receiving processes are the same, label
  1276.           the channel "S". 
  1277.  
  1278.           (4.4) If a potential channel exists, label it "P". 
  1279.  
  1280. The labeling of each channel is a useful means of summarizing the results
  1281. of the analysis. 
  1282.  
  1283.      (5) Discover scenarios of use for potential covert channels by
  1284.      analyzing all entries of the matrix. Examples 7 and 8 of Section
  1285.      3.2.5 illustrate potential covert channels that cannot be exploited
  1286.      because real scenarios of use cannot be found. 
  1287.  
  1288. The SRM method has been used successfully on several design specifications
  1289. [Kemmerer83, Haigh87]. This method has the following advantages: 
  1290.  
  1291.      It can be applied to both formal and informal specifications of both
  1292.      TCB software and hardware; it can also be applied to TCB source code.
  1293.      It does not differentiate between storage and timing channels and, in
  1294.      principle, applies to both types of channels. (However, it offers no
  1295.      specific help for timing channel identification.) 
  1296.      It does not require that security levels be assigned to internal TCB
  1297.      variables represented in the matrix and, therefore, it eliminates a
  1298.      major source of false illegal flows. 
  1299.  
  1300. However, lack of security-level assignment to variables has the following
  1301. negative consequences: 
  1302.  
  1303.      Individual TCB primitives (or primitive pairs) cannot be proven
  1304.      secure (i.e., free of illegal flows) in isolation. This shortfall
  1305.      adds to the complexity of incremental analysis of new TCB functions. 
  1306.      The SRM analysis may identify potential channels that could otherwise
  1307.      be eliminated automatically by information-flow analysis. 
  1308.  
  1309. Although the SRM method is applicable to source code, tools to automate
  1310. the construction of the shared resource matrix for TCB source code, which
  1311. is by far the most time-consuming, labor- intensive step, do not exist to
  1312. date. The manual use of this method on source code-as with other methods
  1313. applied manually-is susceptible to error. 
  1314.  
  1315. Example 6 - Inadequacy of Exclusive Reliance on Informal TCB
  1316. Specifications
  1317.  
  1318. The major advantage of the SRM method over syntactic information flow
  1319. analysis, namely its applicability to informal TCB top-level
  1320. specifications, is diminished to some extent by the fact that informal
  1321. top-level specifications lack sufficient detail. We illustrate this
  1322. observation (1) by showing the results of applying the SRM method to a
  1323. UNIX TCB specification as found in the Xenix reference manuals [IBM87]
  1324. using three internal variables of the file subsystem (i.e., "mode,"
  1325. "lock," and "file_table") as the target of CCA, and (2) by comparing this
  1326. analysis with the automated analysis performed for the same three
  1327. variables and the Secure Xenix TCB source code with the tool presented in
  1328. [He and Gligor90]. 
  1329.  
  1330. Figure 3-2 illustrates the results of this comparison. In this figure, the
  1331. bold-faced matrix entries denote the information added to the original SRM
  1332. matrix as a result of the automated analysis. This figure shows that about
  1333. half of the relevant primitives were missed for one of the variables
  1334. (i.e., "mode") and a third were missed for another variable (i.e.,
  1335. "file_table"). 
  1336.  
  1337. Furthermore, more than half of the R/M entries constructed for the
  1338. primitives found to reference the three variables in system manuals were
  1339. added R/M designators by the automated analysis of source code. Although
  1340. different results can be obtained by applying the SRM method to different
  1341. informal specifications, this example illustrates that the application of
  1342. SRM (and of any other method) to informal specification can be only as
  1343. good as the specifications. 
  1344.  
  1345. Figure Missing 
  1346.  
  1347.           Figure 3-2. Shared Resource Matrix for Three Variables 
  1348.  
  1349. 3.2.4 Noninterference Analysis
  1350.  
  1351. Noninterference analysis of a TCB requires one to view the TCB as an
  1352. abstract machine. From the point of view of a user process, a TCB provides
  1353. certain services when requested. A process' requests represent the
  1354. abstract machine's inputs, the TCB responses (e.g., data values, error
  1355. messages, or positive acknowledgements) are its outputs, and the contents
  1356. of the TCB internal variables constitute its current state. Each input
  1357. results in a (TCB) state change (if necessary) and an output. Each input
  1358. comes from some particular process running at a particular security level,
  1359. and each output is delivered only to the process that entered the input
  1360. that prompted it. 
  1361.  
  1362. [Goguen and Meseguer82] formulated the first general definition of
  1363. information transmission in the state-machine view of a TCB, generalizing
  1364. on an earlier but more restricted definition by [Feiertag80]. They defined
  1365. the concept of noninterference between two user processes. The definition
  1366. was phrased in terms of an assumed initial or start-up state for the
  1367. machine. It stated, in effect, that one user process was noninterfering
  1368. with another when the output observed by the second user process would be
  1369. unchanged if all inputs from the first user process, ever since the
  1370. initial state, were eliminated as though they had never been entered.
  1371. Goguen and Meseguer reasoned that if inputs from one user process could
  1372. not affect the outputs of another, then no information could be
  1373. transmitted from the first to the second. (One can verify this property
  1374. using Shannon's definition of information transmission [Millen 89b].) 
  1375.  
  1376. To define noninterference precisely, let X and Y be two user processes of
  1377. a certain abstract- machine TCB. If w is a sequence of inputs to the
  1378. machine, ending with an input from Y, let Y(w) be the output Y receives
  1379. from that last input (assuming the machine was in its initial state when w
  1380. was entered). To express noninterference, w/X is the subsequence that
  1381. remains of w when all X- inputs are deleted, or "purged," from it. Then X
  1382. is noninterfering with Y if, for all possible input sequences w ending
  1383. with a Y-input, Y(w) = Y(w/X). 
  1384.  
  1385. It is somewhat unintuitive that noninterference relates a whole sequence
  1386. of inputs, including, perhaps, many X-inputs, to a single Y-output. In
  1387. CCA, the traditional view is that whenever a covert channel exists between
  1388. X and Y, each individual X-input has an effect on the next Y-output.
  1389. Noninterference analysis suggests another view may be appropriate,
  1390. however. Note that user process Y might enter an input to request an
  1391. output at any time. Suppose, in fact, that Y enters an input every time X
  1392. did. Ignoring other inputs, the overall input sequences looks like:
  1393. x1y1x2y2 . . . xnyn. The definition of noninterference applies not only to
  1394. the whole sequence, but to all the initial segments of it ending in a
  1395. Y-input, namely: (x1y1), (x1y1x2y2), . . . ` (x1y1 xnyn). Noninterference
  1396. requires that every Y output is unaffected by all previous X inputs. Thus,
  1397. it seems necessary to analyze all past X inputs because of the following:
  1398. Suppose each X input is reported as a Y output after some delay; a covert
  1399. channel arises just as it would if the X input came out immediately in the
  1400. next Y output. 
  1401.  
  1402. In practice, it is cumbersome to analyze the entire history of inputs to
  1403. the machine since its initial state. However, this analysis is unnecessary
  1404. because the current state has all the information needed to determine the
  1405. next Y-output. Thus, noninterference of X with Y can be expressed in terms
  1406. of the current state instead of the whole prior input history. 
  1407.  
  1408. Clearly, if X is noninterfering with Y, an X input should have no effect
  1409. on the next Y output. Noninterference is actually stronger than this,
  1410. however, since it requires that an X input has no effect on any subsequent
  1411. Y output. To avoid analyzing unbounded input sequences, it is useful to
  1412. partition TCB states into equivalence classes that are not distinguishable
  1413. using present or subsequent Y outputs. That is, two states are
  1414. Y-equivalent if (1) they have the same Y output in response to the same Y
  1415. input, and (2) the corresponding next states after any input are also Y-
  1416. equivalent. (This definition is recursive rather than circular; this is
  1417. computer science!) [Goguen and Meseguer84] proved a theorem, called the
  1418. "Unwinding Theorem," which states that X is noninterfering with Y if and
  1419. only if each X input takes each state to a Y-equivalent state; a simpler
  1420. version of this theorem was given by [Rushby85]. 
  1421.  
  1422. Unwinding is important because it leads to practical ways of checking
  1423. noninterference, especially when given a formal specification of a TCB
  1424. that shows its states and state transitions. The multilevel security
  1425. policy requires that each process X at a given security level should
  1426. interfere only with a process Y of an equal or higher security level. To
  1427. apply this requirement in practice, the TCB states must be defined, and
  1428. the Y-equivalent states must be determined. A straightforward way of
  1429. identifying Y-equivalent states in a multilevel secure TCB is to label
  1430. state variables with security levels. If Y is cleared for a Security level
  1431. s, then the two states are Y-equivalent if they have the same values in
  1432. those state variables having a security level dominated by s. A less
  1433. formal way of expressing this statement is that Y has (or should have) a
  1434. blind spot when it tries to observe the current state. Y can observe state
  1435. variables at or below its own level, but state variables at a higher level
  1436. are in the blind spot and are invisible. So two states are Y-equivalent if
  1437. they look the same under Y's "blind spot" handicap. 
  1438.  
  1439. The state-variable level assignment must have the property that the effect
  1440. of any input turns equivalent states into equivalent states. This means
  1441. that invisible variables cannot affect the visible part of the state. This
  1442. property is one of three that must be proved in a noninterference
  1443. analysis. The other two properties are that (1) any return values reported
  1444. back to Y depend only on variables visible to Y, and (2) an input from a
  1445. higher level user process X cannot affect the variables visible to user
  1446. process Y. 
  1447.  
  1448. Noninterference analysis has the following important advantages: 
  1449.  
  1450.      It can be applied both to formal TCB specifications and to source
  1451.      code; 
  1452.      It avoids discovery of false illegal flows; and 
  1453.      It can be applied incrementally to individual TCB functions and
  1454.      primitives. 
  1455.  
  1456. However, it has three practical disadvantages. First, one can only apply
  1457. it to formal TCB top- level specifications and, possibly, to source code.
  1458. Therefore, its application to systems in classes where analyses of formal
  1459. specifications or source code is not required (i.e., class B2-B3 systems)
  1460. can only be recommended but not mandated. Only the Al system design, which
  1461. requires specification-to-code correspondence, can be construed to require
  1462. covert channel identification on source code (during the
  1463. specification-to-code correspondence). Second, manual application of
  1464. noninterference to significant-size TCBs may be impractical, and automated
  1465. tools are currently unavailable for use in significant-size systems.
  1466. Third, noninterference analysis is "optimistic." That is, it tries to
  1467. prove that interference does not appear in TCB specifications or code.
  1468. Thus, its best application is TCB specifications of trusted-process
  1469. isolation rather than to TCB components containing large numbers of shared
  1470. variables (i.e., kernels). Noninterference analysis was used to discover
  1471. covert channels of the Logical Co-processing Kernel (LOCK)-a successor of
  1472. the Secure Ada Target (SAT) [Boebert85]. The process of using the Gypsy
  1473. system to verify noninterference objectives, and the consequences of
  1474. discovering that a real operating system does not quite attain them, was
  1475. discussed in reference [Haigh87]. 
  1476.  
  1477. 3.3 POTENTIAL VERSUS REAL COVERT CHANNELS
  1478.  
  1479. Covert channel identification methods applied statically to top-level
  1480. specifications or to code produce a list of potential covert channels.
  1481. Some of the potential covert channels do not have scenarios of real use.
  1482. These potential channels are artifacts of the identification methods.
  1483. However, false illegal flows do not necessarily cause these potential
  1484. channels. As illustrated in Figure 3-1(b), all flows have a condition that
  1485. enables the flow to take place as the system runs (e.g., dynamically). A
  1486. general reason why a potential covert channel may not necessarily be a
  1487. real covert channel is that, at run time, some flow conditions may never
  1488. become true and, thus, may never enable the illegal flow that could create
  1489. a covert channel. Another reason is that the alteration (viewing) of a
  1490. covert channel variable may not be consistent with the required alteration
  1491. (viewing) scenario. For example, a field of the variable may be altered
  1492. but it could not be used in the scenario of the covert channel. Similarly,
  1493. not all TCB primitives of a channel can be used in real covert channel
  1494. scenarios. The ability to use some TCB primitives of a channel to transfer
  1495. information may depend on the choice of the primitive's parameters and the
  1496. TCB state. Examples 7, 8, and 9 illustrate these cases. To determine
  1497. whether a potential covert channel is a real covert channel, one must find
  1498. a real-time scenario enabling an illegal flow. 
  1499.  
  1500. Example 7 - An Example of a Potential Covert Channel
  1501.  
  1502. Figure 3-3(a) illustrates the difference between potential and real covert
  1503. channels. Two UNIX TCB primitives "read" and "write" share the same
  1504. internal function "rdwr" but pass different values to the parameter of
  1505. this function. CCA on the internal function "rdwr" reveals all possible
  1506. information flows within "rdwr" (i.e., both flows that lead to real
  1507. channels and flows that only lead to potential channels). Among the latter
  1508. are flows with the condition "mode = FWRlTE." These flows cannot be
  1509. exploited by TCB primitive "read" because it can never enable this
  1510. condition. Similarly, TCB primitive "write" cannot exploit those flows
  1511. with the condition "mode = FREAD." 
  1512.  
  1513. Figure Missing 
  1514.  
  1515.  Figure 3-3. Potential and Real Covert Channels Corresponding to Different
  1516.                               Flow Partitions
  1517.  
  1518. Thus, among the potential covert channels arising from the invocation of
  1519. the internal function "rdwr," those with condition "mode = FWRlTE" cannot
  1520. be real covert channels for the "read" primitive, and those with the
  1521. condition "mode = FREAD" cannot be real covert channels for the "write"
  1522. primitive. Real-time scenarios do not exist for those potential covert
  1523. channels. Figure 3-3 (b) shows the partitioning of flows in internal
  1524. function "rdwr" based on whether a flow can be exploited by the "read" and
  1525. "write" primitives. 
  1526.  
  1527. Figure Missing 
  1528.  
  1529.             Figure 3-4. Examples of Potential and Real Channels 
  1530.  
  1531. Example 8 - Real and Potential Covert Channels in Secure Xenix
  1532.  
  1533. Figure 3-4 illustrates examples of real and potential covert channels of
  1534. Secure Xenix. The two tables shown in Figure 3-4 contain two basic types
  1535. of covert storage channels: resource-exhaustion and event-count channels.
  1536. Resource-exhaustion channels arise wherever system resources are shared
  1537. among users at more than one security level. To use a resource-exhaustion
  1538. channel, the sending process chooses whether or not to exhaust a system
  1539. resource to encode a signal of a 0 or 1. The receiving process detects the
  1540. signal by trying to allocate the same system resource. Depending on
  1541. whether the resource can be allocated, the receiving process can determine
  1542. the value of the signal from the sending process. 
  1543.  
  1544. In event-count channels, the sending process encodes a signal by modifying
  1545. the status of a shared system resource (but not exhausting the resource).
  1546. By querying the status of the resource, either through TCB primitives
  1547. returning the resource status explicitly or by observing the return result
  1548. of some TCB primitives that allocate the resource, the receiving process
  1549. can detect the signal from the sending process. 
  1550.  
  1551. In the tables of Figure 3-4, each row is marked with a TCB primitive and
  1552. each column with a shared global variable. Entries in the tables indicate
  1553. whether a TCB primitive can alter (A or a) and/or view (V or v) the
  1554. corresponding global variable. An upper-case A in an entry indicates that
  1555. the TCB primitive can alter the global variable as the means of encoding
  1556. and transferring information through the variable. Similarly, an
  1557. upper-case V in an entry indicates that the TCB primitive can view the
  1558. value of the global variable and detect the signal transmitted by sending
  1559. user processes. Thus, for any shared global variable, the set of TCB
  1560. primitives that have a capital A and those that have a capital V
  1561. constitute a real covert channel. For example, TCB primitives "creat" and
  1562. "open" can be used by the sending and the receiving processes to transfer
  1563. information through the shared global variable representing the
  1564. "file_table" in the system. On the other hand, a lower- case a in an entry
  1565. means that, although the TCB primitive can alter the global variable, the
  1566. alteration cannot be used for encoding information in the global variable.
  1567. For example, the execution of the TCB primitive "fork" alters the
  1568. "file_table" because it increments the file reference count for the child
  1569. process it creates. This alteration, however, is different from that of
  1570. allocating a file-table entry and, thus, it does not provide a real
  1571. scenario for sending a signal. Similar reasoning explains why the entries
  1572. marked with a lower-case v in Figure 3-4 cannot be used in real scenarios
  1573. of covert channels. 
  1574.  
  1575. The distinction between an alteration of a global variable that can be
  1576. used to encode information (i.e., entry denoted by A) and one that cannot
  1577. (i.e., entry denoted by a) can be eliminated if a finer partitioning of
  1578. the "file table" structure is performed. That is, if the file reference
  1579. count of the "file_table" is viewed as a separate variable within the
  1580. "file_table" structure, then the TCB primitive "fork" would not appear to
  1581. alter the "file_table" structure. Instead, "fork" would alter only the new
  1582. variable, namely, the file reference count. In either case, however, the
  1583. covert channel analysis should yield the same results. 
  1584.  
  1585. Example 9 - Dependencies on TCB State and Primitive Parameters
  1586.  
  1587. The covert channel examples of Figure 3-5 illustrate both system-state and
  1588. parameter dependencies found in UNIX systems. For example, the primitive
  1589. "creat" can alter (i.e., decrement) the total number of free inodes (nfi)
  1590. only if the object to be created does not exist. If the object exists,
  1591. "creat" has no effect on nfi. In addition, the primitive "creat" can be
  1592. used to alter (i.e., increment) the total number of free blocks (nfb) in
  1593. the system if the file being created currently exists. That is, if the
  1594. file exists, "creat" truncates the file, and as a result increments nfb.
  1595. Otherwise, "creat" has no effect on nfb. (The disk-block-space channel is
  1596. also affected by this condition.) Furthermore, the alteration of the
  1597. disk-block-space channel, and of the nfi and nfb channels by the primitive
  1598. "creat," is determined by the file system specified in the parameter of
  1599. the "creat" invocation. 
  1600.  
  1601. Figure Missing 
  1602.  
  1603.  Figure 3-5. An Example of the Use of Multiple Channels by Three Processes
  1604.  
  1605. The example of Figure 3-5 also illustrates the combined state and
  1606. parameter dependencies. Consider again the channel that modulates the nfb
  1607. and the disk-block-space channel. Primitive "chsize" can be used to alter
  1608. these channel variables (i.e., deallocate memory and increase the total
  1609. number of free blocks) only if the file on which it is applied exists, and
  1610. only if its parameter indicates file shrinkage. When used to expand the
  1611. size of an existing file, primitive "chsize" does not alter the channel
  1612. variables but merely changes the ip-i_size field of the inode. 
  1613.  
  1614. Other examples of parameter dependency and combined state and parameter
  1615. dependencies, unrelated to those of Figure 3-5, can be found. For example,
  1616. the primitive "semget(key, nsems, semflg)" can affect the
  1617. semaphore-identifier channel and the semaphore-map exhaustion channel.
  1618. Within this primitive, if parameter "key" is equal to IPC_CREAT, thereby
  1619. denoting the creation of a semaphore, a semaphore identifier, its
  1620. associated semaphore data structure, and a set containing "nsems"
  1621. semaphores are created for key. In contrast, if parameter key is not equal
  1622. to IPC_CREAT, nothing is created. 
  1623.  
  1624. Furthermore, if parameter key does not already have a semaphore identifier
  1625. associated with it, and if the Boolean expression (semflg and IPC_CREAT)
  1626. is true, a "semget" call creates for parameter key a semaphore identifier,
  1627. its associated data structure, and the set containing "nsems" semaphores.
  1628. If parameter key already has a semaphore identifier associated with it, a
  1629. new semaphore structure is not created. 
  1630.  
  1631. 3.4 TCSEC REQUIREMENTS AND RECOMMENDATIONS
  1632.  
  1633. Covert channel identification requirements appear for the classes B2-A1 of
  1634. the [NCSC TCSEC]. The B2 requirements of CCA state that the "system
  1635. developer shall conduct a thorough search for storage channels...." 
  1636.  
  1637. For class B2, the search for covert storage channels should be conducted
  1638. on system reference manuals and on the DTLS of the TCB. Although the TCSEC
  1639. does not require storage channel identification in the TCB source code and
  1640. in hardware (microcode) specifications, such a search would ensure the
  1641. completeness of the identification results. Although no specific
  1642. identification method is required, arbitrary, ad hoc, undocumented
  1643. methods, which system evaluators cannot repeat on independently selected
  1644. test cases, are unacceptable. This nonacceptance is justified by the
  1645. notion that system developers must conduct a thorough search for covert
  1646. channels and an evaluation team must evaluate the search. 
  1647.  
  1648. Use of any identification method on informal top-level specifications may
  1649. yield incomplete results, as illustrated in Example 6 of this section in
  1650. the context of the SRM method. For this reason, it seems important to
  1651. apply the storage channel identification method to the TCB source code.
  1652. Otherwise, the thoroughness of the covert channel identification search
  1653. may be in doubt. Furthermore, source-code analysis may be useful in the
  1654. definition of covert channel scenarios that help distinguish real and
  1655. potential channels. Therefore, we recommend analyzing both the DTLS and
  1656. the source code for covert channel identification at class B2. 
  1657.  
  1658. The B3-class requirement of the TCSEC extends the above B2-class
  1659. requirement to all covert channels (i.e., to timing channels). Although
  1660. this extension imposes no added requirement in terms of the identification
  1661. method used, timing channel scenarios should be developed. These scenarios
  1662. should include all system sources of independent timing such as the CPU
  1663. and the I/O processors. Inclusion of all these sources will provide
  1664. additional assurance that classes of timing channels are not overlooked.
  1665. [Huskamp78] provides an example of complete timing channel analysis for
  1666. the CPU scheduling channels. 
  1667.  
  1668. The A1-class requirement of CCA includes all the B2-B3-class requirements
  1669. and extends them by stating, "Formal methods shall be used in analysis." 
  1670.  
  1671. One may apply CCA methods to both formal specifications and source code of
  1672. the TCB. Examples of such methods include syntactic information-flow
  1673. analysis (with or without the use of semantic analysis), SRM, and
  1674. noninterference analysis. Other formal methods for covert channel
  1675. identification may exist and may be equally suitable at level A1. The
  1676. identification method chosen by the developer should be applied to the
  1677. FTLS. Unless the identification of covert channels is made a part of the
  1678. specification-to-code correspondence, in which case source-code analysis
  1679. is included, we recommend complementing FTLS analysis with formal or
  1680. informal source-code analysis. Otherwise, covert channels may remain
  1681. undetected. 
  1682.  
  1683.  
  1684.  
  1685. 4.0 COVERT CHANNEL BANDWIDTH ESTIMATION
  1686.  
  1687. In this chapter we discuss various factors that affect the covert channel
  1688. bandwidth computation, including TCB primitive selection, parameter and
  1689. state dependencies, and channel aggregation. We also present both
  1690. information-theory-based and informal methods for maximum bandwidth
  1691. estimation, and discuss various factors that degrade the covert channel
  1692. bandwidth. The TCSEC requirements and recommendations are also discussed. 
  1693.  
  1694. 4.1 FACTORS AFFECTING THE BANDWIDTH
  1695. COMPUTATION
  1696.  
  1697. The computation of covert channel bandwidths is one of the key aspects of
  1698. covert channel analysis. This is the case because most decisions about how
  1699. to handle identified channels rely on the determination of channel
  1700. bandwidth. Therefore, it is important to examine briefly the factors that
  1701. primarily affect the computation of covert channel bandwidth. 
  1702.  
  1703. 4.1.1 Noise and Delay
  1704.  
  1705. Two of the most important factors affecting the bandwidth of a covert
  1706. channel in any operating system or hardware platform are the presence of
  1707. noise and the delays experienced by senders and receivers using the
  1708. channel. The primary sources of noise and delay are the processes Up, . .
  1709. . ,Uq shown in Figure 2-5, which can interpose themselves due to
  1710. scheduling of various hardware resources between senders and receivers.
  1711. Although these processes can degrade the maximum attainable bandwidth of a
  1712. channel significantly (e.g., up to about 75% [Tsai and Gligor88]), the
  1713. degradation is not certain in all architectures and at all times since it
  1714. depends on the nature of the multiprogrammed system (e.g., single user,
  1715. multiprocess workstation, multiuser time sharing system) and on the system
  1716. load. Thus, while the noise and delay factors are significant, the
  1717. computation of the maximum attainable bandwidth of any channel must
  1718. discount both noise and delays, and must assume that only the senders and
  1719. receivers are present in the system [Millen89a]. 
  1720.  
  1721. 4.1.2 Coding and Symbol Distribution
  1722.  
  1723. In general, the attainable maximum bandwidth (i.e., capacity) depends on
  1724. the choice of symbol encoding scheme agreed upon by a sender and a
  1725. receiver. Coding schemes exist that allow the exploitation of the maximum
  1726. attainable bandwidth of a channel on the distribution of symbols in the
  1727. space of transmitted messages [Millen89a]. However, informal covert
  1728. channel analysis usually assumes a 0 or a 1 represents each symbol
  1729. transmitted. Thus, the distribution of 0s and 1s becomes an important
  1730. factor of bandwidth computation whenever using informal methods. Where the
  1731. time required to transmit a 0 is close (on the average) to the time
  1732. required to transmit a 1, one can assume that 0s and 1s are used with
  1733. approximately equal frequency. This assumption is based on the fact that
  1734. the bandwidth (i.e., capacity) of discrete memoryless channels is
  1735. maximized under such distributions. (Section 4.2 below illustrates both an
  1736. informal bandwidth-computation method, where such distributions are
  1737. assumed, and an information-theory-based method, where such distributions
  1738. are not assumed.) 
  1739.  
  1740. Informal bandwidth computation methods do not achieve, in general, the
  1741. maximum bandwidth of a channel because they do not use appropriate coding
  1742. techniques. Formal bandwidth- computation methods not only allow the
  1743. precise determination of attainable maximum bandwidth but also help define
  1744. coding schemes that can be used to attain those bandwidths [Millen89a]. 
  1745.  
  1746. 4.1.3 TCB Primitive Selection
  1747.  
  1748. In most systems, covert channel identification associates multiple TCB
  1749. primitives with a covert channel variable. For example, most UNIX covert
  1750. channel variables can be altered or viewed by a number of primitives that
  1751. varies between about ten and forty. Among the primitives of each variable,
  1752. one must select those having the highest speed for the bandwidth
  1753. computation. Although one should measure each primitive's speed with only
  1754. senders and receivers using the system, one should not conduct these
  1755. measurements independently of the covert channel scenario of use (i.e.,
  1756. without using parameters and TCB state conditions that would be present
  1757. when a channel is in use). Otherwise, the bandwidth computation could lead
  1758. to unrealistically high or low values. Low values may cause security
  1759. exposures whereas high values may cause performance degradation whenever
  1760. delays are used based on bandwidth values. We can illustrate the latter
  1761. case by the "chsize primitive of UNIX. The speed of this primitive depends
  1762. on whether a file is shrunk (low speed) or expanded (higher speed).
  1763. However, the use of "chsize" with the expand option cannot be made in
  1764. covert channels requiring disk free block alteration because this
  1765. primitive does not alter the disk free block variable. We discuss this in
  1766. more detail in the next section. 
  1767.  
  1768. 4.1.4 Measurements and Scenarios of Use
  1769.  
  1770. The performance measurements of the TCB primitives of covert channels
  1771. require one to include not only the altering and viewing primitives but
  1772. also the performance of the primitives that initialize the environment for
  1773. the altering and viewing of a variable. The environment initialization
  1774. primitives may differ for the altering and viewing primitives. For
  1775. example, the environment initialization primitive for altering a variable
  1776. to transmit a 1 may differ from that necessary to transmit a 0. Similarly,
  1777. the environment initialization primitives for viewing a 1 may differ from
  1778. those necessary for viewing a 0. Furthermore, the same primitive may use
  1779. different amounts of time depending upon whether it is used to set (read)
  1780. a zero or a one (e.g., whether it returns an error). Scenarios of covert
  1781. channel use are needed to determine which environment initialization
  1782. primitives must be taken into account. Section 4.2 provides examples of
  1783. different environment initialization primitives and their use for two real
  1784. covert channels of UNIX. 
  1785.  
  1786. Also included in the measurements is the process- or context-switching
  1787. time. The measurement of this time is needed because, during the
  1788. transmission of every bit of information through a covert channel, control
  1789. is transferred between the sender and receiver at least twice. In most
  1790. operating systems, the measurement of the minimum process switching time
  1791. is a fairly complex task. The reason for this complexity is that with
  1792. every process switch the measurement environment changes and, therefore,
  1793. the measurement of each switch may yield different values. Sometimes it is
  1794. also difficult to measure individual process-switching times because
  1795. process switching may be possible only as a side-effect of some
  1796. primitives. Other processes may be scheduled to run during a
  1797.  
  1798.