The U.S. Department of Defense (DoD) launched a Software Assurance
Initiative in 2003.
This initial process was led by Joe Jarzombek and was endorsed and
supported by the Department of Homeland Security (DHS), which joined
the program in 2004.
This program initiative resulted in the publication of the Secure Software
Assurance (SwA) Common Body of Knowledge (CBK). A working group
drawn from industry, government, and academia was formed to examine two key questions:
Economy of mechanism - Keep the design as simple and small as
possible.
Fail-safe defaults - Base access decisions on permission rather than
exclusion.
Complete mediation - Every access to every object must be checked
for authority.
Open design - The design should not be secret, but rather depend on
the possession of keys or passwords.
Separation of privilege - Where feasible, a protection mechanism
should require two keys to unlock, rather than one.
Least privilege -Every program and every user of the system should
operate using the least set of privileges necessary to complete the
job.
Least common mechanism -Minimize mechanisms (or shared
variables) common to more than one user and depended on by all
users.
Psychological acceptability - It is essential that the human interface
be designed for ease of use, so that users routinely and automatically
apply the protection mechanisms correctly.
Some software development problems that result in software that is difficult or impossible to deploy in a secure fashion have been identified as “deadly sins in software security.”
These twenty problem areas in software development (which is also called software engineering) were originally categorized by John Viega,
upon request of Amit Youran, who at the time was the Director of the Department of Homeland Security’s National Cyber Security Division.