NCSC-TG-014-89
Library No.  S-231,308
 FOREWORD
This publication, Guidelines for Formal Verification Systems, is issued by
the National Computer Security Center (NCSC) under the authority and in
accordance with Department of Defense (DoD) Directive 5215.1, "Computer
Security Evaluation Center."  The guidelines defined in this document are
intended for vendors building formal specification and verification
systems that trusted system developers may use in satisfying the
requirements of the Department of Defense Trusted Computer System
Evaluation Criteria (TCSEC), DoD 5200.28-STD, and the Trusted Network
Interpretation of the TCSEC.
As the Director, National Computer Security Center, I invite your
recommendations for revision to this technical guideline.  Address all
proposals for revision through appropriate channels to the National Computer
Security Center, 9800 Savage Road, Fort George G.  Meade, MD, 20755-6000,
Attention: Chief, Technical Guidelines Division.
Patrick R.  Gallagher, Jr.
				1 April 1989
Director
National Computer Security Center
			ACKNOWLEDGMENTS
The National Computer Security Center expresses appreciation to Barbara
Mayer and Monica McGill Lu as principal authors and project managers of
this document.  We recognize their contribution to the technical content
and presentation of this publication.
We thank the many individuals who contributed to the concept, development,
and review of this document.  In particular, we acknowledge:  Karen
Ambrosi, Tom Ambrosi, Terry Benzel, David Gibson, Sandra Goldston, Dale
Johnson, Richard Kemmerer, Carl Landwehr, Carol Lane, John McLean,
Jonathan Millen, Andrew Moore, Michele Pittelli, Marvin Schaefer, Michael
Sebring, Jeffrey Thomas, Tom Vander-Vlis, Alan Whitehurst, James Williams,
Kimberly Wilson, and Mark Woodcock.  Additionally, we thank the
verification system developers and the rest of the verification community
who helped develop this document.
TABLE OF CONTENTS
FOREWORD	i
ACKNOWLEDGMENTS	ii
PREFACE	iv
1. INTRODUCTION	1
	1.1 PURPOSE	1
	1.2 BACKGROUND	1
	1.3 SCOPE	2
2. EVALUATION APPROACH	3
	2.1 EVALUATION OF NEW SYSTEMS	3
	2.2 REEVALUATION FOR ENDORSEMENT	5
	2.3 REEVALUATION FOR REMOVAL	6
	2.4 BETA VERSIONS	7
3. METHODOLOGY AND SYSTEM SPECIFICATION	8
	3.1 METHODOLOGY	8
	3.2 FEATURES	9
	3.2.1 Specification Language	9
	3.2.2 Specification Processing	10
	3.2.3 Reasoning Mechanism	11
	3.3 ASSURANCE, SOUNDNESS, AND ROBUSTNESS 	12
	3.4 DOCUMENTATION	14
4. IMPLEMENTATION AND OTHER SUPPORT FACTORS	15
	4.1 FEATURES	15
	4.1.1 User Interface	15
	4.1.2 Hardware Support	16
	4.2 ASSURANCE	17
	4.2.1 Configuration Management	17
	4.2.2 Support and Maintenance	19
	4.2.3 Testing	19
	4.3 DOCUMENTATION	19
5. FUTURE DIRECTIONS	23
APPENDIX A: CONFIGURATION MANAGEMENT	25
GLOSSARY	28
BIBLIOGRAPHY	35
		 PREFACE
One of the goals of the NCSC is to encourage the development of
production-quality verification systems.  This guideline was developed as
part of the Technical Guideline Program specifically to support this goal.
Although there are manual methodologies for performing formal
specification and verification, this guideline addresses verification
systems that provide automated support.
Throughout the document, the term developer is used to describe the
developer of the verification system.  The term vendor is used to describe
the individual(s) who are providing support for the tool.  These
individuals may or may not be the same for a particular tool.
 1.		INTRODUCTION
The principal goal of the National Computer Security Center (NCSC) is to
encourage the widespread availability of trusted computer systems.  In
support of this goal the DoD Trusted Computer System Evaluation Criteria
(TCSEC) was created, against which computer systems could be evaluated.
The TCSEC was originally published on 15 August 1983 as CSC-STD-001-83.
In December 1985 the DoD modified and adopted the TCSEC as a DoD Standard,
DoD 5200.28-STD. [1]
	  1.1		PURPOSE
This document explains the requirements for formal verification systems
that are candidates for the NCSC's Endorsed Tools List (ETL). [5]  This
document is primarily intended for developers of verification systems to
use in the development of production-quality formal verification systems.
It explains the requirements and the process used to evaluate formal
verification systems submitted to the NCSC for endorsement.
	  1.2		BACKGROUND
The requirement for NCSC endorsement of verification systems is stated in
the TCSEC and the Trusted Network Interpretation of the TCSEC (TNI). [4]
The TCSEC and TNI are the standards used for evaluating security controls
built into automated information and network systems, respectively.  The
TCSEC and TNI classify levels of trust for computer and network systems by
defining divisions and classes within divisions.  Currently, the most
trusted class defined is A1, Verified Design, which requires formal design
specification and formal verification.  As stated in the TCSEC and TNI, ".
. . verification evidence shall be consistent with that provided within
the state of the art of the particular Computer Security Center-endorsed
formal specification and verification system used." [1]
Guidelines were not available when the NCSC first considered endorsing
verification systems.  The NCSC based its initial endorsement of
verification systems on support and maintenance of the system, acceptance
within the verification community, and stability of the system.
	  1.3		SCOPE
Any verification system that has the capability for formally specifying
and verifying the design of a trusted system to meet the TCSEC and TNI A1
Design Specification and Verification requirement can be considered for
placement on the ETL.  Although verification systems that have
capabilities beyond design verification are highly encouraged by the NCSC,
this guideline focuses mainly on those aspects of verification systems
that are sufficient for the design of candidate A1 systems.
The requirements described in this document are the primary consideration
in the endorsement process.  They are categorized as either methodology
and system specification or implementation and other support factors.
Within each category are requirements for features, assurances, and
documentation.
The requirements cover those characteristics that can and should exist in
current verification technology for production-quality systems.  A
production-quality verification system is one that is sound,
user-friendly, efficient, robust, well documented, maintainable, developed
with good software engineering techniques, and available on a variety of
hardware. [2]  The NCSC's goal is to elevate the current state of
verification technology to production quality, while still encouraging the
advancement of research in the verification field.
Since the NCSC is limited in resources for both evaluation and support of
verification systems, the ETL may reflect this limitation.  Verification
systems placed on the ETL will either be significant improvements to
systems already on the list or will provide a useful approach or
capability that the currently endorsed systems lack.
This guideline was written to help in identifying the current needs in
verification systems and to encourage future growth of verification
technology.  The evaluation process is described in the following section.
 Verification systems will be evaluated against the requirements listed in
sections 3 and 4.  Section 5 contains a short list of possibilities for
next-generation verification systems.  It is not an all-encompassing list
of features as this would be counterproductive to the goals of research.
2.		EVALUATION APPROACH
A formal request for evaluation of a verification system for placement on
the ETL shall be submitted in writing directly to:
				National Computer Security Center
				ATTN:		Deputy
C	(Verification Committee Chairperson)
				9800 Savage Road
				Fort George G. Meade, MD 20755-6000
Submitting a verification system does not guarantee NCSC evaluation or
placement on the ETL.
The developers shall submit a copy of the verification system to the NCSC
along with supporting documentation and tools, test suites, configuration
management evidence, and source code.  In addition, the system developers
shall support the NCSC evaluators.  For example, the developers shall be
available to answer questions, provide training, and meet with the
evaluation team.
There are three cases in which an evaluation can occur:  1) the evaluation
of a new verification system being considered for placement on the ETL, 2)
the reevaluation of a new version of a system already on the ETL for
placement on the ETL (reevaluation for endorsement), and 3) the
reevaluation of a system on the ETL being considered for removal from the
ETL (reevaluation for removal).
	  2.1		EVALUATION OF NEW SYSTEMS
To be considered for initial placement on the ETL, the candidate endorsed
tool must provide some significant feature or improvement that is not
available in any of the currently endorsed tools.  If the verification
system meets this requirement, the evaluators shall analyze the entire
verification system, concentrating on the requirements described in
Chapters 3 and 4 of this document.  If a requirement is not completely
satisfied, but the developer is working toward completion, the relative
significance of the requirement shall be measured by the evaluation team.
The team shall determine if the deficiency is substantial or detrimental.
For example, a poor user interface would not be as significant as the lack
of a justification of the methodology.  Requirements not completely
satisfied shall be identified and documented in the final evaluation
report.
Studies or prior evaluations (e.g., the Verification Assessment Study
Final Report) [2] performed on the verification system shall be reviewed.
Strengths and weaknesses identified in other reports shall be considered
when evaluating the verification system.
The following are the major steps leading to an endorsement and ETL
listing for a new verification system.
		1)	The developer submits a request for evaluation to
the NCSC Verification Committee Chairperson.
		2)	The Committee meets to determine whether the
verification system provides a significant improvement to systems already
on the ETL or provides a useful approach or capability that the existing
systems lack.
		3)	If the result is favorable, an evaluation team is
formed and the verification system evaluation begins.
		4)	Upon completion of the evaluation, a Technical
Assessment Report (TAR) is written by the evaluation team.
		5)	The Committee reviews the TAR and makes
recommendations on endorsement.
		6)	The Committee Chairperson approves or disapproves
endorsement.
		7)	If approved, an ETL entry is issued for the
verification system.
		8)	A TAR is issued for the verification system.
	  2.2		REEVALUATION FOR ENDORSEMENT
The term reevaluation for endorsement denotes the evaluation of a new
version of an endorsed system for placement on the ETL.  A significant
number of changes or enhancements, as determined by the developer, may
warrant a reevaluation for endorsement.  The intent of this type of
reevaluation is to permit improvements to endorsed versions and advocate
state-of-the-art technology on the ETL while maintaining the assurance of
the original endorsed version.
A verification system that is already on the ETL maintains assurance of
soundness and integrity through configuration management (see Appendix).
The documentation of this process is evidence for the reevaluation of the
verification system.  Reevaluations are based upon an assessment of all
evidence and a presentation of this material by the vendor to the NCSC.
The NCSC reserves the right to request additional evidence as necessary.
The vendor shall prepare the summary of evidence in the form of a Vendor
Report (VR).  The vendor may submit the VR to the NCSC at any time after
all changes have ended for the version in question.  The VR shall relate
the reevaluation evidence at a level of detail equivalent to the TAR.  The
VR shall assert that assurance has been upheld and shall include
sufficient commentary to allow an understanding of every change made to
the verification system since the endorsed version.
The Committee shall expect the vendor to present a thorough technical
overview of changes to the verification system and an analysis of the
changes, demonstrating continuity and retention of assurance.  The
Committee subsequently issues a rec*ommendation to the Committee
Chairperson stating that assurance has or has not been maintained by the
current verification system since it was endorsed.  If the verification
system does not sustain its endorsement, the vendor may be given the
option for another review by the Committee.  The reevaluation cycle ends
with an endorsement determination by the Committee Chairperson, and if the
determination is favorable, a listing of the new release is added to the
ETL, replacing the previously endorsed version; the old version is then
archived.
The following are the major steps leading to an endorsement and ETL
listing for a revised verification system.
		1)	The vendor submits the VR and other materials to
the NCSC Verification Committee Chairperson.
		2)	An evaluation team is formed to review the VR.
		3)	The team adds any additional comments and submits
them to the Verification Committee.
		4)	The vendor defends the VR before the Committee.
		5)	The Committee makes recommendations on endorsement.
		6)	The Committee Chairperson approves or disapproves
endorsement.
		7)	If approved, a new ETL entry is issued for the
revised verification system.
		8)	The VR is issued for the revised verification
system.
	  2.3		REEVALUATION FOR REMOVAL
Once a verification system is endorsed, it shall normally remain on the
ETL as long as it is supported and is not replaced by another system.  The
Committee makes the final decision on removal of a verification system
from the ETL.  For example, too many bugs, lack of users, elimination of
support and maintenance, and unsoundness are all reasons which may warrant
removal of a verification system from the ETL.  Upon removal, the
Committee makes a formal announcement and provides a written justification
of their decision.
Systems on the ETL that are removed or replaced shall be archived.
Systems developers that have a Memorandum of Agreement (MOA) with the NCSC
to use a verification system that is later archived may continue using the
system agreed upon in the MOA.  Verification evidence from a removed or
replaced verification system shall not be accepted in new system
evaluations for use in satisfying the A1 Design Specification and
Verification requirement.
The following are the major steps leading to the removal of a verification
system from the ETL.
		1)	The Verification Committee questions the
endorsement of a verification system on the ETL.
		2)	An evaluation team is formed and the verification
system evaluation begins, focusing on the area in question.
		3)	Upon completion of the evaluation, a TAR is
written by the evaluation team.
		4)	The Committee reviews the TAR and makes
recommendations on removal.
		5)	The Committee Chairperson approves or disapproves
removal.
		6)	If removed, a new ETL is issued eliminating the
verification system in question.
		7)	A TAR is issued for the verification system under
evaluation.
	  2.4		BETA VERSIONS
Currently, verification systems are not production quality tools and are
frequently being enhanced and corrected.  The version of a verification
system that has been endorsed may not be the newest and most capable
version.  Modified versions are known as beta tool versions.  Beta
versions are useful in helping system developers uncover bugs before
submitting the verification system for evaluation.
The goal of beta versions is to stabilize the verification system.  Users
should not assume that any particular beta version will be evaluated or
endorsed by the NCSC.  If the developer of a trusted system is using a
beta version of a formal verification system, specifications and proof
evidence shall be submitted to the NCSC which can be completely checked
without significant modification using an endorsed tool as stated in the
A1 requirement.  This can be accomplished by using either the currently
endorsed version of a verification system or a previously endorsed version
that was agreed upon by the trusted system developer and the developer's
evaluation team.  Submitted specifications and proof evidence that are not
compatible with the endorsed or agreed-upon version of the tool may
require substantial modification by the trusted system developer.
 3.		METHODOLOGY AND SYSTEM SPECIFICATION
The technical factors listed in this Chapter are useful measures of the
quality and completeness of a verification system.  The factors are
divided into four categories: 1) methodology, 2) features, 3) assurance,
and 4) documentation.  Methodology is the underlying principles and rules
of organization of the verification system.  Features include the
functionality of the verification system.  Assurance is the confidence and
level of trust that can be placed in the verification system.
Documentation consists of a set of manuals and technical papers that fully
describe the verification system, its components, application, operation,
and maintenance.
These categories extend across each of the components of the verification
system.  These components minimally consist of the following:
	a)	a mathematical specification language that allows the user
to express correctness conditions,
	b)	a specification processor that interprets the
specification and generates conjectures interpretable by the reasoning
mechanism, and
	c)	a reasoning mechanism that interprets the conjectures
generated by the processor and checks the proof or proves that the
correctness conditions are satisfied.
	  3.1		METHODOLOGY
The methodology of the verification system shall consist of a set of
propositions used as rules for performing formal verification in that
system.  This methodology shall have a sound, logical basis.  This
requirement is a necessary but not sufficient condition for the
endorsement of the system.
	  3.2		FEATURES
		   3.2.1	Specification Language
		a.	Language expressiveness.
		The specification language shall be sufficiently
expressive to support the methodology of the verification system.  This
ensures that the specification language is powerful and rich enough to
support the underlying methodology.  For example, if the methodology
requires that a specification language be used to model systems as state
machines, then the specification language must semantically and
syntactically support all of the necessary elements for modeling systems
as state machines.
		b.	Defined constructs.
		The specification language shall consist of a set of
constructs that are rigorously defined (e.g., in Backus-Naur Form with
appropriate semantic definitions).  This implies that the language is
formally described by a set of rules for correct use.
		c.	Mnemonics.
		The syntax of the specification language shall be clear
and concise without obscuring the interpretation of the language
constructs.  Traditional symbols from mathematics should be employed
wherever possible; reasonably mnemonic symbols should be used in other
cases.  This aids the users in interpreting constructs more readily.
		d.	Internal uniformity.
		The syntax of the specification language shall be
internally uniform.  This ensures that the rules of the specification
language are not contradictory.
		e.	Overloading.
		Each terminal symbol of the specification language's
grammar should support one and only one semantic definition insofar as it
increases comprehensibility.  When it is beneficial to incorporate more
than one definition for a symbol or construct, the semantics of the
construct shall be clearly defined from the context used.  This is
necessary to avoid confusion by having one construct with more than one
interpretation or more than one construct with the same interpretation.
For example, the symbol "+" may be used for both integer and real
addition, but it should not be used to denote both integer addition and
conjunction.
		f.	Correctness conditions.
		The specification language shall provide the capability to
express correctness conditions.
		g.	Incremental verification.
		The methodology shall allow incremental verification.
This would allow, for example, a verification of portions of a system
specification at a single time.  Incremental verification may also include
the capability for performing verification of different levels of
abstraction.  This allows essential elements to be presented in the most
abstract level and important details to be presented at successive levels
of refinement.
		   3.2.2	Specification Processing
		a.	Input.
		All of the constructs of the specification language shall
be processible by the specification processor(s).  This is necessary to
convert the specifications to a language or form that is interpretable by
the reasoning mechanism.
		b.	Output.
		The output from the processor(s) shall be interpretable by
the reasoning mechanism.  Conjectures derived from the correctness
conditions shall be generated.  The output shall also report errors in
specification processing to the user in an easily interpretable manner.
		   3.2.3	Reasoning Mechanism
		a.	Compatibility of components.
		The reasoning mechanism shall be compatible with the other
components of the verification system to ensure that the mechanism is
capable of determining the validity of conjectures produced by other
components of the verification system.  For example, if conjectures are
generated by the specification processor that must be proven, then the
reasoning mechanism must be able to interpret these conjectures correctly.
		b.	Compatibility of constructs.
		The well-formed formulas in the specification language
that may also be input either directly or indirectly into the reasoning
mechanism using the language(s) of the reasoning mechanism shall be
mappable to ensure compatibility of components.  For example, if a lemma
can be defined in the specification language as "LEMMA <well-formed
formula>" and can also be defined in the reasoning mechanism, then the
construct for the lemma in the reasoning mechanism shall be in the same
form.
		c.	Documentation.
		The reasoning mechanism shall document the steps it takes
to develop the proof.  Documentation provides users with a stable,
standard reasoning mechanism that facilitates debugging and demonstrates
completed proofs.  If the reasoning mechanism is defined to use more than
one method of reasoning, then it should clearly state which method is used
and remain consistent within each method of reasoning.
		d.	Reprocessing.
		The reasoning mechanism shall provide a means for
reprocessing completed proof sessions.  This is to ensure that users have
a means of reprocessing theorems without reconstructing the proof process.
 This mechanism shall also save the users from reentering voluminous input
to the reasoning mechanism.  For example, reprocessing may be accomplished
by the generation of command files that can be invoked to recreate the
proof session.
		e.	Validation.
		The methodology shall provide a means for validating proof
sessions independently of the reasoning mechanism.  Proof strategies
checked by an independent, trustworthy proof checker shall ensure that
only sound proof steps were employed in the proof process.  Trustworthy
implies that there is assurance that the proof checker accepts only valid
proofs.  The validation process shall not be circumventable and shall
always be invoked for each completed proof session.
		f.	Reusability.
		The reasoning mechanism shall facilitate the use of
system- and user-supplied databases of reusable definitions and theorems.
This provides a foundation for proof sessions that will save the user time
and resources in reproving similar theorems and lemmas.
		g.	Proof dependencies.
		The reasoning mechanism shall track the status of the use
and reuse of theorems throughout all phases of development.  Proof
dependencies shall be identified and maintained so that if modifications
are made to a specification (and indirectly to any related
conjectures/theorems), the minimal set of theorems and lemmas that are
dependent on the modified proofs will need to be reproved.
	  3.3		ASSURANCE, SOUNDNESS, AND ROBUSTNESS
	a.	Sound basis.
	Each of the verification system's tools and services shall support
the method*ology.  This ensures that users can understand the
functionality of the verification system with respect to the methodology
and that the methodology is supported by the components of the
verification system.
	b.	Correctness.
	The verification system shall be rigorously tested to provide
assurance that the majority of the system is free of error.
	c.	Predictability.
	The verification system shall behave predictably.  Consistent
results are  needed for the users to interpret the results homogeneously.
This will ensure faster and easier interpretation and fewer errors in
interpretation.
	d.	Previous use.
	The verification system shall have a history of use to establish
stability, usefulness, and credibility.  This history shall contain
documentation of applications (for example, applications from academia or
the developers).  These applications shall test the verification system,
so that strengths and weaknesses may be uncovered.
	e.	Error recovery.
	The verification system shall gracefully recover from internal
software errors.  This error handling is necessary to ensure that errors
in the verification system do not cause damage to a user session.
	f.	Software engineering.
	The verification system shall be implemented using documented
software engineering practices.  The software shall be internally
structured into well-defined, independent modules for ease of
maintainability and configuration management.
	g.	Logical theory.
	All logical theories used in the verification system shall be
sound.  If more than one logical theory is used in the verification
system, then there shall be evidence that the theories work together via a
metalogic.  This provides the users with a sound method of interaction
among the theories.
	h.	Machine independence.
	The functioning of the methodology and the language of the
verification system shall be machine independent.  This is to ensure that
the functioning of the theory, specification language, reasoning mechanism
and other essential features does not change from one machine to another.
Additionally, the responses that the user receives from each of the
components of the verification system should be consistent across the
different hardware environments that support the verification system.
	  3.4		DOCUMENTATION
	a.	Informal justification.
	An informal justification of the methodology behind the
verification system shall be provided.  All parts of the methodology must
be fully documented to serve as a medium for validating the accuracy of
the stated implementation of the verification system.  The logical theory
used in the verification system shall be documented.  If more than one
logical theory exists in the system, the metalogic employed in the system
shall be explained and fully documented.  This documentation is essential
for the evaluators and will aid the users in understanding the methodology.
	b.	Formal definition.
	A formal definition (e.g., denotational semantics) of the
specification language(s) shall be provided.  A formal definition shall
include a clear semantic definition of the expressions supported by the
specification language and a concise description of the syntax of all
specification language constructs.  This is essential for the evaluators
and will aid the users in understanding the specification language.
	c.	Explanation of methodology.
	A description of how to use the methodology, its tools, its
limitations, and the kinds of properties that it can verify shall be
provided.  This is essential for users to be able to understand the
methodology and to use the verification system effectively.
 4.		IMPLEMENTATION AND OTHER SUPPORT FACTORS
The NCSC considers the support factors listed in this section to be
measures of the usefulness, understandability, and maintainability of the
verification system.  The support factors are divided into the following
three categories:  1) features, 2) assurances, and 3) documentation.
Two features that provide support for the user are the interface and the
base hardware of the verification system.  Configuration management,
testing, and mainte*nance are three means of providing assurance.  (The
Appendix contains additional information on configuration management.)
Documentation consists of a set of manuals and technical papers that fully
describe the verification system, its components, application, operation,
and maintenance.
	  4.1		FEATURES
		   4.1.1	User Interface
		a.	Ease of use.
		The interface for the verification system shall be
user-friendly.  Input must be understandable, output must be informative,
and the entire interface must support the users' goals.
		b.	Understandable input.
		Input shall be distinct and concise for each language
construct and ade*quately represent what the system requires for the
construct.
		c.	Understandable output.
		Output from the components of the verification system
shall be easily interpretable, precise, and consistent.  This is to ensure
that users are provided with understandable and helpful information.
		d.	Compatibility.
		Output from the screen, the processor, and the reasoning
mechanism shall be compatible with their respective input, where
appropriate.  It is reasonable for a specification processor (reasoning
mechanism) to put assertions into a canonical form, but canonical forms
should be compatible in the specification language (reasoning mechanism).
		e.	Functionality.
		The interface shall support the tasks required by the user
to exercise the verification system effectively.  This is to ensure that
all commands necessary to utilize the components of the methodology are
available and functioning according to accompanying documentation.
		f.	Error reporting.
		The verification system shall detect, report, and recover
from errors in a specification.  Error reporting shall remain consistent
by having the same error message generated each time the error identified
in the message is encountered.  The output must be informative and
interpretable by the users.
		   4.1.2	Hardware Support
		a.	Availability.
		The verification system shall be available on commonly
used computer systems.  This will help ensure that users need not purchase
expensive or outdated machines, or software packages to run the
verification system.
		b.	Efficiency.
		Processing efficiency and memory usage shall be reasonable
for specifications of substantial size.  This ensures that users are able
to process simple (no complex constructs), short (no more than two or
three pages) specifications in a reasonable amount of time (a few
minutes).  The processing time of larger, more complex specifications
shall be proportional to the processing time of smaller, less complex
specifications.  Users should not need to wait an unacceptable amount of
time for feedback.
	  4.2		ASSURANCE
		   4.2.1	Configuration Management
		a.	Life-cycle maintenance.
		Configuration management tools and procedures shall be
used to track changes (both bug fixes and new features) to the
verification system from initial concept to final implementation.  This
provides both the system maintainers and the evaluators with a method of
tracking the numerous changes made to the verification system to ensure
that only sound changes are implemented.
		b.	Configuration items.
		Identification of Configuration Items (CIs) shall begin
early in the design stage.  CIs are readily established on a logical basis
at this time.  The configuration management process shall allow for the
possibility that system changes will convert non-CI components into CIs.
		c.	Configuration management tools.
		Tools shall exist for comparing a newly generated version
with the pre*vious version.  These tools shall confirm that a) only the
intended changes have been made in the code that will actually be used as
the new version of the verification system, and b) no additional changes
have been inserted into the verification system that were not intended by
the system developer.  The tools used to perform these functions shall
also be under strict configuration control.
		d.	Configuration control.
		Configuration control shall cover a broad range of items
including software, documentation, design data, source code, the running
version of the object code, and tests.  Configuration control shall begin
in the earliest stages of design and development and extend over the full
life of the CIs.  It involves not only the approval of changes and their
implementation but also the updat*ing of all related material to reflect
each change.  For example, often a change to one area of a verification
system may necessitate a change to an*other area.  It is not acceptable to
write or update documentation only for new code or newly modified code,
rather than for all parts of the verification sys*tem affected by the
addition or change.  Changes to all CIs shall be subject to review and
approval.
		The configuration control process begins with the
documentation of a change request.  This change request should include
justification for the proposed change, all of the affected items and
documents, and the proposed solution.  The change request shall be
recorded in order to provide a way of tracking all proposed system changes
and to ensure against duplicate change requests being processed.
		e.	Configuration accounting.
		Configuration accounting shall yield information that can
be used to answer the following questions:  What source code changes were
made on a given date?  Was a given change absolutely necessary?  Why or
why not?  What were all the changes in a given CI between releases N and
N+1?  By whom were they made, and why?  What other modifications were
required by the changes to this CI?  Were modifications required in the
test set or documentation to accommodate any of these changes?  What were
all the changes made to support a given change request?
		f.	Configuration auditing.
		A configuration auditor shall be able to trace a system
change from start to finish.  The auditor shall check that only approved
changes have been implemented, and that all tests and documentation have
been updated concurrently with each implementation to reflect the current
status of the system.
		g.	Configuration control board.
		The vendor's Configuration Control Board (CCB) shall be
responsible for approving and disapproving change requests, prioritizing
approved modifications, and verifying that changes are properly
incorporated.  The members of the CCB shall interact periodically to
discuss configuration man*agement topics such as proposed changes,
configuration status accounting reports, and other topics that may be of
interest to the different areas of the system development.
		   4.2.2	Support and Maintenance
The verification system shall have ongoing support and maintenance from
the developers or another qualified vendor.  Skilled maintainers are
necessary to make changes to the verification system.
		   4.2.3	Testing
		a.	Functional tests.
		Functional tests shall be conducted to demonstrate that
the verification system operates as advertised.  These tests shall be
maintained over the life cycle of the verification system.  This ensures
that a test suite is available for use on all versions of the verification
system.  The test suite shall be enhanced as software errors are
identified to demonstrate the elimination of the errors in subsequent
versions.  Tests shall be done at the module level to demonstrate
compliance with design documentation and at the system level to
demonstrate that software accurately generates assertions, correctly
implements the logic, and correctly responds to user commands.
		b.	Stress testing.
		The system shall undergo stress testing by the evaluation
team to test the limits of and to attempt to generate contradictions in
the specification language, the reasoning mechanism, and large
specifications.
	  4.3		DOCUMENTATION
	a.	Configuration management plan.
	A configuration management plan and supporting evidence assuring a
consistent mapping of documentation and tools shall be provided for the
evaluation.  This provides the evaluators with evidence that compatibility
exists between the components of the verification system and its
documentation.  The plan shall include the following:
		1.	The configuration management plan shall describe
what is to be done to implement configuration management in the
verification system.  It shall define the roles and responsibilities of
designers, developers, management, the Configuration Control Board, and
all of the personnel involved with any part of the life cycle of the
verification system.
		2.	Tools used for configuration management shall be
documented in the configuration management plan.  The forms used for
change control, conventions for labeling configuration items, etc., shall
be contained in the configuration management plan along with a description
of each.
		3.	The plan shall describe procedures for how the
design and implementation of changes are proposed, evaluated, coordinated,
and approved or disapproved.  The configuration management plan shall also
include the steps to ensure that only those approved changes are actually
included and that the changes are included in all of the necessary areas.
		4.	The configuration management plan shall describe
how changes are made to the plan itself and how emergency procedures are
handled.  It should describe the procedures for performing time-sensitive
changes without going through a full review process.  These procedures
shall define the steps for retroactively implementing configuration
management after the emergency change has been completed.
	b.	Configuration management evidence.
	Documentation of the configuration management activities shall be
provided to the evaluators.  This ensures that the policies of the
configuration management plan have been followed.
	c.	Source code.
	Well-documented source code for the verification system, as well
as documentation to aid in analysis of the code during the evaluation,
shall be provided.  This provides the evaluators with evidence that good
software engineering practices and configuration management procedures
were used in the implementation of the verification system.
	d.	Test documentation.
	Documentation of test suites and test procedures used to check
functionality of the system shall be provided.  This provides an
explanation to the evaluators of each test case, the testing methodology,
test results, and procedures for using the tests.
	e.	User's guide.
	An accurate and complete user's guide containing all available
commands and their usage shall be provided in a tutorial format.  The
user's guide shall contain worked examples.  This is necessary to guide
the users in the use of the verification system.
	f.	Reference manuals.
	A reference manual that contains instructions, error messages, and
examples of how to use the system shall be provided.  This provides the
users with a guide for problem-solving techniques as well as answers to
questions that may arise while using the verification system.
	g.	Facilities manual.
	A description of the major components of the software and their
interfacing shall be provided.  This will provide users with a limited
knowledge of the hardware base required to configure and use the
verification system.
	h.	Vendor report.
	A report written by the vendor during a reevaluation that provides
a complete description of the verification system and changes made since
the initial evaluation shall be provided.  This report, along with
configuration management documentation, provides the evaluators with
evidence that soundness of the system has not been jeopardized.
	i.	Significant worked examples.
	Significant worked examples shall be provided which demonstrate
the strengths, weaknesses, and limitations of the verification system.
These examples shall reflect portions of computing systems.  They may
reside in the user's guide, the reference manual, or a separate document.
 5.		FUTURE DIRECTIONS
The purpose of this section is to list possible features for future or
beyond-A1 verification systems.  Additionally, it contains possibilities
for future research -- areas that researchers may choose to investigate.
Research and development of new verification systems or investigating
areas not included in this list is also encouraged.  Note that the order
in which these items appear has no bearing on their relative importance.
	a.	The specification language should permit flexibility in
approaches to specification.
	b.	The specification language should allow the expression of
properties involving liveness, concurrency, and eventuality.
	c.	The reasoning mechanism should include a method for
reasoning about information flows.
	d.	The design and code of the verification system should be
formally verified.
	e.	The theory should support rapid prototyping.  Rapid
prototyping supports a way of developing a first, quick version of a
specification.  The prototype provides immediate feedback to the user.
	f.	The verification system should make use of standard (or
reusable) components where possible (for example, use of a standard
windowing system, use of a standard language-independent parser, editor,
or printer, use of a standard database support system, etc.).
	g.	The verification system should provide a language-specific
verifier for a commonly used systems programming language.
	h.	The verification system should provide a method for
mapping a top-level specification to verified source code.
	i.	The verification system should provide a tool for
automatic test data generation of the design specification.
	j.	The verification system should provide a means of
identifying which paths in the source code of the verification system are
tested by a test suite.
	k.	The verification system should provide a facility for
high-level debugging/tracing of unsuccessful proofs.
	l.	A formal justification of the methodology behind the
verification system should be provided.
 APPENDIX
CONFIGURATION MANAGEMENT
The purpose of configuration management is to ensure that changes made to
verification systems take place in an identifiable and controlled
environment.  Configuration managers take responsibility that additions,
deletions, or changes made to the verification system do not jeopardize
its ability to satisfy the requirements in Chapters 3 and 4.  Therefore,
configuration management is vital to maintaining the endorsement of a
verification system.
Additional information on configuration management can be found in A Guide
to Understanding Configuration Management in Trusted Systems. [3]
OVERVIEW OF CONFIGURATION MANAGEMENT
Configuration management is a discipline applying technical and
administrative direction to:  1) identify and document the functional and
physical characteristics of each configuration item for the system; 2)
manage all changes to these characteristics; and 3) record and report the
status of change processing and implementation.  Configuration management
involves process monitoring, version control, information capture, quality
control, bookkeeping, and an organizational framework to support these
activities.  The configuration being managed is the verification system
plus all tools and documentation related to the configuration process.
Four major aspects of configuration management are configuration
identification, configuration control, configuration status accounting,
and configuration auditing.
CONFIGURATION IDENTIFICATION
Configuration management entails decomposing the verification system into
identifi*able, understandable, manageable, trackable units known as
Configuration Items (CIs).  A CI is a uniquely identifiable subset of the
system that represents the small*est portion to be subject to independent
configuration control procedures.  The decomposition process of a
verification system into CIs is called configuration identification.
CIs can vary widely in size, type, and complexity.  Although there are no
hard-and-fast rules for decomposition, the granularity of CIs can have
great practical importance.  A favorable strategy is to designate
relatively large CIs for elements that are not expected to change over the
life of the system, and small CIs for elements likely to change more
frequently.
CONFIGURATION CONTROL
Configuration control is a means of assuring that system changes are
approved before being implemented, only the proposed and approved changes
are implemented, and the implementation is complete and accurate.  This
involves strict procedures for proposing, monitoring, and approving system
changes and their implementation.  Configuration control entails central
direction of the change process by personnel who coordinate analytical
tasks, approve system changes, review the implementation of changes, and
supervise other tasks such as documentation.
CONFIGURATION ACCOUNTING
Configuration accounting documents the status of configuration control
activities and in general provides the information needed to manage a
configuration effectively.  It allows managers to trace system changes and
establish the history of any developmental problems and associated fixes.
Configuration accounting also tracks the status of current changes as they
move through the configuration control process.  Configuration accounting
establishes the granularity of recorded information and thus shapes the
accuracy and usefulness of the audit function.
The accounting function must be able to locate all possible versions of a
CI and all of the incremental changes involved, thereby deriving the
status of that CI at any specific time.  The associated records must
include commentary about the reason for each change and its major
implications for the verification system.
CONFIGURATION AUDIT
Configuration audit is the quality assurance component of configuration
management.  It involves periodic checks to determine the consistency and
completeness of accounting information and to verify that all
configuration management policies are being followed.  A vendor's
configuration management program must be able to sustain a complete
configuration audit by an NCSC review team.
CONFIGURATION MANAGEMENT PLAN
Strict adherence to a comprehensive configuration management plan is one
of the most important requirements for successful configuration
management.  The configuration management plan is the vendor's document
tailored to the company's practices and personnel.  The plan accurately
describes what the vendor is doing to the system at each moment and what
evidence is being recorded.
CONFIGURATION CONTROL BOARD
All analytical and design tasks are conducted under the direction of the
vendor's corporate entity called the Configuration Control Board (CCB).
The CCB is headed by a chairperson who is responsible for assuring that
changes made do not jeopardize the soundness of the verification system.
The Chairperson assures that the changes made are approved, tested,
documented, and implemented correctly.
The members of the CCB should interact periodically, either through formal
meetings or other available means, to discuss configuration management
topics such as proposed changes, configuration status accounting reports,
and other topics that may be of interest to the different areas of the
system development.  These interactions should be held to keep the entire
system team updated on all advancements or alterations in the verification
system.
 GLOSSARY
Beta Version
		Beta versions are intermediate releases of a product to be
tested at one or more customer sites by the software end-user.  The
customer describes in detail any problems encountered during testing to
the developer, who makes the appropriate modifications.  Beta versions are
not endorsed by the NCSC, but are primarily used for debugging and testing
prior to submission for endorsement.
Complete
		A theory is complete if and only if every sentence of its
language is either provable or refutable.
Concurrency
		Simultaneous or parallel processing of events.
Configuration Accounting
		The recording and reporting of configuration item
descriptions and all departures from the baseline during design and
production.
Configuration Audit
		An independent review of computer software for the purpose
of assessing compliance with established requirements, standards, and
baselines. [3]
Configuration Control
		The process of controlling modifications to the system's
design, hardware, firmware, software, and documentation which provides
sufficient assurance that the system is protected against the introduction
of improper modification prior to, during, and after system
implementation. [3]
Configuration Control Board (CCB)
		An established vendor committee that is the final
authority on all proposed changes to the verification system.
Configuration Identification
		The identifying of the system configuration throughout the
design, development, test, and production tasks. [3]
Configuration Item (CI)
		The smallest component tracked by the configuration
management system. [3]
Configuration Management
		The process of controlling modifications to a verification
system, including documentation, that provides sufficient assurance that
the system is protected against the introduction of improper modification
before, during, and after system implementation.
Conjecture
		A general conclusion proposed to be proved upon the basis
of certain given premises or assumptions.
Consistency (Mathematical)
		A logical theory is consistent if it contains no formula
such that the formula and its negation are provable theorems.
Consistency (Methodological)
		Steadfast adherence to the same principles, course, form,
etc.
Correctness
		Free from errors; conforming to fact or truth.
Correctness Conditions
		Conjectures that formalize the rules, security policies,
models, or other critical requirements on a system.
Design Verification
		A demonstration that a formal specification of a software
system satisfies the correctness conditions (critical requirements
specification).
Documentation
		A set of manuals and technical papers that fully describe
the verification system, its components, application, and operation.
Endorsed Tools List (ETL)
		A list composed of those verification systems currently
recommended by the NCSC for use in developing highly trusted systems.
Eventuality
		The ability to prove that at some time in the future, a
particular event will occur.
Formal Justification
		Mathematically precise evidence that the methodology of
the verification system is sound.
Formal Verification
		The process of using formal proofs to demonstrate the
consistency (design verification) between a formal specification of a
system and a formal security policy model or (implementation verification)
between the formal specification and its program implementation. [1]
Implementation Verification
		A demonstration that a program implementation satisfies a
formal specification of a system.
Informal Justification
		An English description of the tools of a verification
system and how they interact.  This includes a justification of the
soundness of the theory.
Language
		A set of symbols and rules of syntax regulating the
relationship between the symbols, used to convey information.
Liveness
		Formalizations that ensure that a system does something
that it should do.
Metalogic
		A type of logic used to describe another type of logic or
a combination of different types of logic.
Methodology
		The underlying principles and rules of organization of a
verification system.
Production Quality Verification System
		A verification system that is sound, user-friendly,
efficient, robust, well-documented, maintainable, well-engineered
(developed with software engineering techniques), available on a variety
of hardware, and promoted (has education available for users). [2]
Proof
		A syntactic analysis performed to validate the truth of an
assertion relative to an (assumed) base of assertions.
Proof Checker
		A tool that 1) accepts as input an assertion (called a
conjecture), a set of assertions (called assumptions), and a proof; 2)
terminates and outputs either success or failure; and 3) if it succeeds,
then the conjecture is a valid consequence of the assumptions.
Reasoning Mechanism
		A tool (interactive or fully automated) capable of
checking or constructing proofs.
Safety Properties
		Formalizations that ensure that a system does not do
something that it should not do.
Semantics
		A set of rules for interpreting the symbols and
well-formed formulae of a language.
Sound
		An argument is sound if all of its propositions are true
and its argument form is valid.  A proof system is sound relative to a
given semantics if every conjecture that can be proved is a valid
consequence of the assumptions used in the proof.
Specification Language
		A logically precise language used to describe the
structure or behavior of a system to be verified.
Specification Processor
		A software tool capable of receiving input, parsing it,
generating conjectures (candidate theorems), and supplying results for
further analysis (e.g., reasoning mechanism).
Syntax
		A set of rules for constructing sequences of symbols from
the primitive symbols of a language.
Technical Assessment Report (TAR)
		A report that is written by an evaluation team during an
evaluation of a verification system and available upon completion.
Theorem
		In a given logical system, a well-formed formula that is
proven in that system.
Theory
		A formal theory is a coherent group of general
propositions used as principles of explanation for a particular class of
phenomena.
User-Friendly
		A system is user-friendly if it facilitates learning and
usage in an efficient manner.
Valid
		An argument is valid when the conclusion is a valid
consequence of the assumptions used in the argument.
Vendor Report (VR)
		A report that is written by a vendor during and available
upon completion of a reevaluation of a verification system.
Verification
		The process of comparing two levels of system
specification for proper correspondence (e.g., security policy model with
top-level specification, top-level specification with source code, or
source code with object code).  This process may or may not be automated.
[1]
Verification Committee
		A standing committee responsible for the management of the
verification efforts at the NCSC.  The committee is chaired by the NCSC
Deputy Director and includes the NCSC Chief Scientist, as well as
representatives from both the NCSC's Office of Research and Development
and Office of Computer Security Evaluations, Publications, and Support.
Verification System
		An integrated set of tools and techniques for performing
verification.
Well-Formed Formula
		A sequence of symbols from a language that is constructed
in accordance with the syntax for that language.

 BIBLIOGRAPHY
[1]		Department of Defense, Department of Defense Trusted
Computer System Evaluation Criteria, DOD 5200.28-STD, December 1985.
[2]		Kemmerer, Richard A., Verification Assessment Study Final
Report, University of California, March 1986.
[3]		National Computer Security Center, A Guide to
Understanding Configuration Management in Trusted Systems, NCSC-TG-006,
March 1988.
[4]		National Computer Security Center, Trusted Network
Interpretation of the Trusted Computer System Evaluation Criteria,
NCSC-TG-005, July 1987.
[5]		National Security Agency, Information Systems Security
Products and Services Catalogue, Issued Quarterly, January 1989 and
successors.