The information system isolates security functions from nonsecurity functions.
The information system isolates security functions from nonsecurity functions by means of an isolation boundary (implemented via partitions and domains). Such isolation controls access to and protects the integrity of the hardware, software, and firmware that perform those security functions. Information systems implement code separation (i.e., separation of security functions from nonsecurity functions) in a number of ways, including, for example, through the provision of security kernels via processor rings or processor modes. For non-kernel code, security function isolation is often achieved through file system protections that serve to protect the code on disk, and address space protections that protect executing code. Information systems restrict access to security functions through the use of access control mechanisms and by implementing least privilege capabilities. While the ideal is for all of the code within the security function isolation boundary to only contain security-relevant code, it is sometimes necessary to include nonsecurity functions within the isolation boundary as an exception.
The information system utilizes underlying hardware separation mechanisms to implement security function isolation.
The information system isolates security functions enforcing access and information flow control from nonsecurity functions and from other security functions.
The organization minimizes the number of nonsecurity functions included within the isolation boundary containing security functions.
The organization implements security functions as largely independent modules that maximize internal cohesiveness within modules and minimize coupling between modules.
The organization implements security functions as a layered structure minimizing interactions between layers of the design and avoiding any dependence by lower layers on the functionality or correctness of higher layers.