Security Design Principles
Secure designs are built upon a solid groundwork of secure design principles:
Good enough security
There is an appropriate level of required security for systems
Least privilege
Users and applications should have only the necessary rights and privileges to perform their current tasks.
Separation of duties
Software components should require multiple conditions to pass before a task can be considered as complete. This ensures no single individual can abuse the system
Defense in depth
Defense in depth is a security principle involving the use of multiple overlapping layers of protection to enhance security, with the understanding that no single defense mechanism is foolproof, and the goal is to make compromising a system more costly and time-consuming for adversaries.
Fail-safe
Fail-safe, in the context of system design, means that when a system encounters a failure, it should transition to a secure and stable state.
Economy of mechanism
Systems and security mechanisms should be kept as simple as possible because complexity increases the potential for vulnerabilities and makes troubleshooting more challenging.
Complete mediation
Complete mediation is the security principle that requires continuous verification of a subject's authorization for each access request to an object and action.
Open design
Open design is the principle that a system's security should not rely on the secrecy of its design or algorithms but instead on elements like keys, making the security independent of the design's obscurity.
Least common mechanism
Least common mechanism is a design approach aimed at preventing unintentional information sharing among processes by minimizing shared components, favoring separate processes for distinct functions to enhance security.
Psychological acceptability
A security system should not burden users as it will cause them to work around security aspects.
Weakest link
Common point of failure of a system. A system is only as strong as the weakest link.
Leverage existing components
New components increase the chances of new vulnerabilities being added. Therefore, reusing components should decrease the chances.
Single point of failure
Software systems should not have a single point of failure.
Last updated