NIST 800-53 REV 5 • SYSTEM AND SERVICES ACQUISITION
SA-17(5) — Conceptually Simple Design
Require the developer of the system, system component, or system service to: Design and structure the security-relevant hardware, software, and firmware to use a complete, conceptually simple protection mechanism with precisely defined semantics; and Internally structure the security-relevant hardware, software, and firmware with specific regard for this mechanism.
Supplemental Guidance
The principle of reduced complexity states that the system design is as simple and small as possible (see [SA-8(7)](#sa-8.7) ). A small and simple design is easier to understand and analyze and is also less prone to error (see [AC-25](#ac-25), [SA-8(13)](#sa-8.13) ). The principle of reduced complexity applies to any aspect of a system, but it has particular importance for security due to the various analyses performed to obtain evidence about the emergent security property of the system. For such analyses to be successful, a small and simple design is essential. Application of the principle of reduced complexity contributes to the ability of system developers to understand the correctness and completeness of system security functions and facilitates the identification of potential vulnerabilities. The corollary of reduced complexity states that the simplicity of the system is directly related to the number of vulnerabilities it will contain. That is, simpler systems contain fewer vulnerabilities. An important benefit of reduced complexity is that it is easier to understand whether the security policy has been captured in the system design and that fewer vulnerabilities are likely to be introduced during engineering development. An additional benefit is that any such conclusion about correctness, completeness, and existence of vulnerabilities can be reached with a higher degree of assurance in contrast to conclusions reached in situations where the system design is inherently more complex.
Practitioner Notes
Keep the security design as simple as possible. A simpler design is easier to analyze for correctness, easier to implement without errors, and easier to audit.
Example 1: During architecture reviews, push for the simplest security design that meets requirements. If the same security goal can be achieved with a single centralized access control layer or a complex distributed system, choose the centralized approach — it is easier to verify and harder to misconfigure.
Example 2: Limit the number of different authentication and authorization mechanisms in your environment. Rather than having each application implement its own authentication, centralize through Azure AD with SSO. One well-implemented mechanism is more secure than ten different implementations.