Advance Program (Panel)
Software Engineering and Security Engineering: An
Argument for Merger
Rayford B. Vaughn, Jr. (Chair), Mississippi State University
This panel discussion will address the need for mo difying current
software engineering courses to include additional security
instruction and modifying software engineering curricula to include
comput er security courses. Other options will be expressed by panel
members which range from separate degree programs in information
security to no change n eeded in current computer science curricula.
The panel members include the following:
Rayford B. Vaughn, Jr., Ph.D., Mississippi State University, Chair
Barry Frew, Ph.D., Naval Postgraduate School
Terry Mayfield, Institute for Defense Analysis (IDA)
Julian E. Boggess III, Ph.D., Mississippi State University
Computer security text books have been in print since the early
1980's and of late have become more plentiful. Information and system
security has, during this same time, become a more pressing problem
both nationally and internationally. University level instruction in
the area of information security has been, for the most part,
lacking. Given the continued explosion of the world wide web, the
emergence and success of electronic commerce, the international
interest in electronic warfare, and the continued increase in
computing system penetrations and other forms of attack it would seem
that the computer science community has an obligation to train its
graduates in known protection requirements, causes, vulnerabilities,
current research, needed research, and to some extent, computing
ethics. To a large extent, a majority of traditional computer
security subjects (excluding encryption) fall into the domain of
software engineering. This leads one to argue that with the growing
interest in software engineering degree programs perhaps security
engineering is an important part of that program and belongs within it.
Undergraduate software engineering courses offer opportunity to
introduce the notion of a trusted development environment and the
cost of producing software under such restriction. Identification
and discovery of the system security policy and how one models that
policy for implementation within a working system is another software
engineering topic with security relevance. It serves to reinforce the
need to think about security features and requirements early in the
development process so that security protection mechanisms are
designed and built into the system rather than added on at a later
time (a much less reliable approach). Most software engineering
courses include significant discussion on requirement analysis,
specification, and verification. Using the need to provide software
to the customer that is known to implement a specified security model
effectively makes an excellent case study for teaching the need for
(and technique s of) verification. It is important in secure system
design to demonstrate formally that a system specification maps to
the model of security that it is implementing. It is desirable to be
able to formally verify that portions of the resulting code map to
the specification. Using secure system design as the teaching
vehicle, the instructor's examples have instant credibility in the
student's eyes with respect to the need for formalisms. The
vulnerabilities associated with Trojan horses, trap doors, viruses,
and worms can also be identified and discussed here. Other topics
that are closely related to common software engineering topics
include penetration testing procedures and structuring such test
cases, abstraction of security models, evaluation issues associated
with trusted systems, and engineering with security in mind.
Several universities are beginning to offer degree programs (or
concentrations) in information or computer security. Examples include
the Naval Postgraduate School, the University of California =96
Davis, James Madison, and Western Connecticut to name but a few.
There are enough such programs to give credibility to the idea that
perhaps there is sufficient material and interest for such a degree
program. It is interesting to note that not all these programs are
related to the computer science department some are management of
information systems programs.
Existing computer science programs, some might argue, are totally
adequate to accommodate security issues with essentially no change to
current curricula. Merely updating material taught in in software
engineering, operating systems, networking, and database is an
adequate approach to insuring that today's computer science graduate
is well grounded in this topic. After all, any modern text in
operating systems, database, or networking is very likely to have a
section or chapter addressing this topic.
This panel will be composed of software engineering/computer science
educators, computer security practitioners, and computer
security researchers who will discuss the options presented above.
In addition, panel members will provide their perspectives and
experiences with this topic in various settings. The panel chair is
both a software engineering educator and computer security
researcher with extensive experience in industry and the Department
of Defense. Other members of the panel offer extensive experience in
working with senior Department of Defense executives who have a
strong interest in this topic; teaching security and ethics in the
classroom; and serving in a consultant role.
Position Statement by
Terry Mayfield
Institute For Defense Analyses
(mayfield@ida.org)
Blending Information Assurance Education into University Curricula
One of the most persistent problems that universities struggle with
is the battle of managing curricula breadth vs. depth in meeting both
traditional and emerging demands of individuals and employers. The
goal of providing a broad, well-rounded education conflicts with the
goal of providing increasing depth of specialization in a particular
field of study. Dynamically optimizing these two goals to meet the
needs of the education consumers requires a process of curriculum
management with sufficient responsiveness to address rapidly
emerging, cross-disciplinary needs while maintaining sufficient
stability to support continued accreditation.
Maintaining currency within curricula as specialization continues to
spawn new fields of study is a challenge. Information assurance,
though it has evolved over the last nearly forty years, is such an
emerging field of study. It addresses a pervasive problem of managing
risks to information-based systems that have become increasingly
ubiquitous in this Information Age.
Thus, it requires specialized education to support its further
development, and it requires extensive cross-disciplinary education
to support its application. University curricula managers must come
to realize that it is perhaps one of the most important areas of
study if we are to enable new ways of doing business via networked
information systems, and that aspects of it apply to almost every
area of study within a university. Today's curricula management
process remains relatively static and generally non-responsive to
emergent and cross-disciplinary needs. The most common response from
curricula committees is there is no more space in the core curricula
to add another topic. Something must come out if we are to put
something else in. Another response is that there are so many core
requirements in the curricula that the student has little opportunity
for optional courses. Still another response is that a particular
area of interest is not sufficiently mature to warrant its own field
of study. Such responses have been particularly true in trying to
incorporate information assurance into university curricula. There
are no panaceas in this battle, but there may be innovative
approaches to achieving an appropriate blend of information assurance
breadth vs. depth in individual universities. Structural changes in
course content to change the focus or emphasis of a course (e.g.,
safe or defensive programming, system engineering experimentation)
can provide an initial starting point. Other innovative approaches
that may help universities be more responsive to educational
consumers include: Self-paced instruction, distance learning,
modular curricula, professionals as adjunct professors, visiting
lecturer chairs, special topics courses, university outreach,
corresponding university agreements, engineering research extension
programs, industrial partnerships, adult continuing education, and
the willingness of a university to further tailor curricula to meet
individual student needs. These approaches should each be examined
as part of revalidating and reinventing the university for the 21st
Century. A simple example of such innovation is the development and
application of modular curricula. In 1987, I was part of a group ,
sponsored by National Computer Security Center (NCSC), chartered to
introduce computer security into the computer science curricula via
the Joint ACM-IEEE Computer Science Curricula Committee. The approach
we took was to write six optional undergraduate curricula modules
that could be used as desired by computer science professors as
adjuncts to their core curricula courses. For example, we had an
operating systems security module to accompany the core operating
systems course and a similar one for network security. Professors
could use these modules to tailor their courses so that information
security could be included to a level appropriate to other
requirements of the course. While we were unsuccessful getting them
into the Joint Curricula due to administrative release problems,
they have been used rather extensively through the early 1990 s. The
NCSC has distributed several thousand copies of these modules, though
the modules now need to be updated to be truly useful. The general
feedback was that the modules provided a good start to incorporating
computer security into core, undergraduate computer science courses.
Today s question before this panel is whether to establish in-depth
curricula in security engineering or to integrate security
engineering into software engineering curricula. I assert that the
question should not be either-or, but rather a larger one of how to
establish an appropriate multi-disciplinary blend of information
assurance education in the future curricula of universities. The
educational objective I have in mind is to not just to develop the
largely missing engineering science related to information assurance,
but also to broadly apply appropriate aspects of information
assurance knowledge to all disciplines taught in a university
setting. We must generate the awareness for the need to apply
information assurance and an understanding of when, where, and how it
may be applied. Such applications include electronic commerce,
protection of intellectual property, engineering, communications,
government, law, and basic sciences. Any discipline that uses
computers will need to be taught some aspects of information
assurance. Similarly, those disciplines must inform the information
assurance discipline of their needs, failures, and successes. Most
importantly, we must teach systems engineers in a manner that they
are thoroughly grounded in information assurance principles and
techniques. We do not approach the engineering of computer-based
systems in the same manner that we approach the engineering of
physical entities. We do not have the equivalent data for our
engineering tasks that the civil or mechanical engineers have. We
need extensive computer science and engineering experimentation to
build the data necessary for software and systems engineers to do
their jobs. The commercial industry is desperate for such
systems-level engineering information so that they can clearly
understand how best to incorporate their products into larger-scale
systems. This demand argues strongly in two directions: One for the
full incorporation of information assurance topics throughout the
computer science and computer engineering curricula with
cross-disciplinary interfaces with business, medicine, manufacturing,
electronic commerce, and other enterprise domains. Another, for more
in-depth intra-disciplinary education. Information assurance is
fundamental to system interoperability and large-scale distributed
enterprise operations. It ties in applications, process engineering,
communications and distributed computing, policy enforcement, and
many other issues. New initiatives within the federal government are
being taken to focus on protecting our critical national
infrastructures and on high confidence systems. The infrastructure
vulnerability problems underlying these initiatives convey that there
is need for both breadth and depth in high assurance software and
systems engineering educational activity. I believe it is the blend
of this breadth and depth that is needed. Information assurance
should no longer be thought of as something relegated to the Security
Gurus.
It must be thought of from a disciplined systems-engineering point
of view for every information system that is designed, built,
fielded, and maintained. Computer systems are becoming increasingly
ubiquitous in our lives. Many of these systems support
safety-critical, security-critical, and life-critical needs and
require high assurance that these needs will be met. Information
assurance is required in the design and construction of software
that provides control of physical systems such as integrated
avionics. It is critical in software that provides significant
process control such as banking, electronic commerce, telemedicine,
nuclear power plant control, and manufacturing. All of these systems
require the designers, builders, users, and regulators of these
systems to have high confidence that they will operate correctly,
safely, securely, and reliably. High confidence is derived a priori
to operational fielding through assurance argumentation. Assurance
argumentation for any system is generally accepted to be composed
from four different components with which future software and system
engineers must be thoroughly familiar: Assurance Mechanisms the
behavioral control components that are embedded within a system.
Assurance Processes the means by which the system was developed.
Assurance Evaluations the means by which the system is examined for
expected behavioral properties. Environmental Expectations the
assumptions made regarding how the system will interact with its
environment. Assurance Mechanisms. First, software and systems
engineers should be taught about integrity, availability, and
confidentiality mechanisms and techniques that will be required in
various types of systems that they will design and build. They should
be taught about the locations, strengths, and interdependencies of
the various forms of these mechanisms. Beyond the mechanisms is the
idea of techniques. Here, software engineers should be taught how to
perform and apply defensive programming.
The issue extends to cultural enforcement. In today s culture, many
programmers may have been taught aspects of defensive programming,
but we continue to experience buffer overflows
and exceptions that are not handled in some of our most critical
software. We must do better in inculcating software development best
practices.
Finally, engineers should be taught about the available
architectural and engineering tradeoffs to be considered in
achieving the assurance and performance properties required of the
system. It should be noted here that one of the missing essential
ingredients is the engineering experimentation data to support this
tradeoff analysis. If we are to do systems engineering, we need to
have engineering measurement data. University research could help
tremendously in this area. Assurance Processes. The second
component that software and systems engineers should be educated in
is assurance processes. Today, most systems are developed using ad
hoc trial-and-error methods, or what may be termed discover and
patch.
The system development process we should be striving for is one of
correct by construction.
This requires a much more disciplined and rigorous approach to
software and system development. It requires extensive failure
analysis. Engineers should be taught how to express system design in
formal terms using mathematics and formal logic. Engineers should be
taught component and behavioral composition. Engineers should be
supported with tools and techniques that integrate well into the
system s development process. Such tools and techniques should
enforce software engineering best practices.
Like other engineering disciplines, the failure modes and mitigation
approaches should be captured and codified. Assurance Evaluation.
The third system and software engineering educational component is
assurance evaluation. Evaluation is a process to examine evidence
that the system has been designed and built correctly, and that it
can be expected to operate correctly in its intended environment.
Such evidence comes from unambiguous system requirements and design
documentation. It comes from software construction and testing
documentation that well articulates the structure and behavior of
the assurance mechanisms incorporated into a system. It also comes
from operational testing and analysis of the system in its expected
environment either in a live mode or in a simulated mode. Finally,
it comes from the examination of process variance documentation over
the course of the development. Each individual and each team of
individuals should keep logs that document the process and product
variance of their efforts over time. They should discover where the
most frequent failures occur as well as the pace in which these
failures are mitigated over time. Environmental Expectations. The
fourth educational component is perhaps the most difficult.
Assumptions of the operational environment often do not take into
account more than a nominal environment. Future systems engineers
must take into account adverse environments and abnormal conditions
as a matter of course. They must expect failure within the
environment and develop both system reliability and system
survivability capabilities. Rigorous failure analysis should be part
of assessing the environmental assumptions. Rather than expectations
of fault containment, one should approach the problem from expanded
fault propagation until one has examined each component of the system
for failure of assumptions to hold. Having done this analysis,
appropriate and affordable margins to accommodate failure and manage
risks must be engineered into the system. What does this blending of
information assurance into university curricula do to change our
software engineering and systems engineering education? First, it
more thoroughly embeds systems, safety, reliability, and security
engineering into software engineering. Second, it embeds more
mathematics, logic, and behavioral analyses into software engineering
to achieve greater rigor in the process. Third, it adds process
control mechanisms to the engineering process. Fourth, it provides a
greater breadth of information assurance awareness, enabling more
informed application users and designers. Finally, it adds more
environmental analysis to the systems engineering process. This
change is the integration aspect of blending in information assurance
into our systems and software university education curricula. The
depth aspect of this blend is dedicated pursuit of education in
systems, safety, reliability, and security engineering. This is a
critical element of future university engineering education,
especially if they are to meet current and future demands of industry
and government. These disciplines have specialty requirements unto
themselves. We have too few courses in existence and a demand for
expertise much greater than universities can support today. More
exploration is needed to develop new mechanisms and techniques in
these disciplines. More research is needed to address security,
safety, and reliability issues in emerging technologies. And, based
on the demand, more federal research funds can be expected to address
these needs. Thus, I argue that universities need to blend the
dedicated pursuit of these disciplines with their more general
application to software and system engineering. To achieve this
blend, universities should focus on education and research in system
engineering fundamentals to include safety, security, and
reliability, and appropriately apply these fundamentals to software
engineering. Universities should focus on assurance mechanisms and
techniques in system engineering practices, to include experimental
measurement of the behavioral and performance properties, and apply
these to software engineering. Universities should ensure that all
disciplines have some level of information assurance awareness
education. Universities should also pursue systems engineering
process improvements to include software engineering. Finally,
universities should focus on tools and techniques development that
can be applied to enhance the effectiveness and efficiency of
software and system engineering processes. What s in it for the
universities to change? Why do the universities need to change if the
industry is not yet using assurance techniques in its processes and
cannot yet see the value of their use? There is both a growing need
and expanding opportunities to achieve information assurance in
software and systems engineering. With computers becoming more
ubiquitous in every aspect of our lives, universities must stand up
to the need to develop software and systems engineering expertise
that is capable of developing high assurance systems. Industry, in my
visits to them, has continued to point out their need for more
qualified systems-level engineers with high assurance experience. We
do not have that engineering capability today. The older generations
of systems developers can be convinced to change when both the
expertise and university-developed tools and techniques reach
industry and demonstrate significant improvements in the assurance of
software and systems, especially if such improvements can also be
linked to improvements in the affordability of high assurance
systems. We are beginning to see a greater awareness of the need for
high assurance in many different user domains. We are also beginning
to see some uses of high assurance expertise and technologies in
hardware design. Partnering with industry may help improve both the
development of new expertise and the development and deployment of
new software and systems engineering technology. Gaining government
support to make this change could also enhance the manner in which
universities achieve requisite capabilities to produce future
expertise, tools, and techniques for high assurance. The key is not
to focus on just integrating security into software engineering or on
establishing a new security engineering curricula, rather it must be
on blending the two in a wider multi-disciplinary manner to advance
the goals of better overall software and system engineering.
Members included: Dr. Dorothy E. Denning (Chair), currently at
Georgetown University; Ms. Janet M. Cook, Illinois State University;
Mr. J. David Fox, University of Maryland at Baltimore; Dr. Virgil
D. Gligor, University of Maryland; Dr. David K. Hsaio, Naval
Postgraduate School, Monterey; Dr. Lance J. Hoffman, George
Washington University; Dr. Richard Kemmerer, University of
California, Santa Barbara; Dr. Michael Mulder, University of
Portland; Dr. Charles P. Pfleeger, University of Tennessee; Dr. A.
Joe Turner, Clemson University; Ms. Carolyn Deverin, National
Computer Security Center; Dr. R. Alan Whitehurst, National Computer
Security Center; and Terry Mayfield, Institute For Defense
Analyses. Modules included: Introduction to Information Protection,
Operating Systems Security, Network Security, Database Security,
Formal Specification and Verification, and Risk Analysis.