Son bases que promueven un diseño que tenga como resultado un sistema robusto y seguro, basados en dos ideas: Cuanto más simple sea un sistema, menos cosas pueden salir mal, tendrá menos inconsistencias y zonas no definidas, y sera más fácil de entender y verificar, y el uso de restricción para minimizar el acceso y la comunicación.
Menor Privilegio
Un sujeto debe recibir solo los privilegios necesarios para completar su tarea, y estos privilegios deben ser asignados por función, no por identidad (por ejemplo, el CEO de una compañía no tiene porque tener acceso a todos los archivos confidenciales). Si una tarea requiere derechos adicionales, asignarlos y desecharlos luego de su uso (Como sudo en linux). El problema es que muchas veces el OS o sistema no posee el nivel de granularidad deseado.
Valores Iniciales Seguros
El acceso a cualquier objeto debe ser denegado por defecto, y si una acción falla por seguridad, el sistema debe volver al estado de seguridad inicial. Un ejemplo de esto es cuando instalaciones antiguas definen usuarios administrativos iniciales con claves predefinidas, cuando en realidad deberían solicitar la clave inicial.
Economía de Mecanismos
Los mecanismos de seguridad deben ser simples, de forma que menos cosas puedan salir mal. Así, se simplifica la verificación (formal e informal), si algo sale mal es más fácil de corregir, y las relaciones de confianza son más visibles.
Mediación Completa
Todos los accesos a objetos deben ser verificados, incluso si el objeto es accedido varias veces. El problema con esto es que puede ir en contra de la eficiencia, pues no permite utilizar caches, y es complejo de implementar (que pasa cuando se quita un permiso cuando se esta accediendo a un objeto?).
Diseño Abierto
La seguridad no debe depender del secreto del diseño o la implementación, aunque esto no significa que deba publicarse el código fuente, pues un atacante puede conseguir el algoritmo mediante disassembly, sobornos, o buscando en desechos. La violación del principio se denomina “seguridad por oscuridad” (security through obscurity).
Separación de Privilegios
Un sistema no debe otorgar permisos basado en una sola condición. Esto refiere a la asignación de permisos, y busca evitar que un sujeto pueda obtener privilegios y usarlos, mediante la separación de tareas y defensa en profundidad.
Mecanismos Exclusivos
Los mecanismos de seguridad no deben compartirse: puede fluir información entre variables compartidas o mediante canales ocultos. Este principio promueve aislación, como la provista por maquinas virtuales o sandboxing.
Aceptación Psicológica
Los mecanismos de seguridad no deben dificultar el acceso al recurso. Esto requiere ocultar el mecanismo, y en general es muy difícil o imposible: se puede intentar simplificar la instalación y configuración, o evitar la necesidad de conocimientos técnicos.