Unit 3 - Design & Evaluation and Hardware Security Flashcards
What are the The eight Saltzer-Schroeder principles?
- Economy of mechanism
- Fail-safe defaults
- Complete mediation
- Open design
- Leastprivilege
- Least common mechanism
- Separation ofprivilege
- Ease of use
What is the Saltzer-Schroeder Economoy of Mechanism principle?
The design of a protection mechanism should be as simple as possible.
Errors in design or implementation can cause vulnerabilities which may lead to incorrect granting of access to resources. These vulnerabilities may not be noticed during normal use:
- an attacker will not reportthem, because itis notin the attacker’s interest;
- an authorised user may not notice, and even if he/she does notice, he/she may not reportit to a security administrator.
In general, the simpler the mechanism, the more likely it is that errors will be detected during developmentand testing.
What is the Saltzer-Schroeder Fail-safe defaults principle?
Access should be denied unless it is explicitly authorised (default deny).
That is, if no protection is specified for a resource, access should be denied. As a result of following this principle, if the mechanism has implementation errors then they are more likely to be noticed:
- fail-safe defaults will lead to incorrectdenial ofaccess to resources;
- if authorised users have valid requests denied, they are likely to bring it to the attention of the systems administrator; the opposite policy leads to false positives (bad guys gain access when they shouldn’t); the bad guys don’ttend to reportthese types of problems. Black-listing vs white-listing.
What is the Saltzer-Schroeder Complete mediation principle?
Every attempt to access resources must be intercepted and evaluated by the protection mechanism.
That is, all accesses to resources must be evaluated against the access policy in force.
This is perhaps the most important principle, and forms an integral part of the definition of a reference validation mechanism (i.e. an access control mechanism) in the Orange Book.
What is the Saltzer-Schroeder Open design principle?
Do not rely on ‘security by obscurity’.
That is, the strength of a protection mechanism should be independent of who knows how the mechanism works. Instead of secrecy, the strength of the mechanism should depend on the secrecy and strength of the secret values used as input to the protection mechanism, such as cryptographic keys or passwords. Users are likely to feel more confident in the quality of a protection mechanism if it has been subjectto independent scrutiny and been found to be secure.
This does not, of course, mean that all security mechanisms must be made public, although it can be argued that the user may gain greater assurance if this is the case. The pointis that security should notrely on secrecy.
What is the Saltzer-Schroeder Least privilege principle?
Only give a program access toresources if it requires access.
This is a variant of the military ‘need-to-know’ principle. If an incorrect program malfunctions, or a malicious program exploits a vulnerability, then the fewer privileges ithas,the less damage it can do. This lesson is frequently forgotten by system administrators:
- unnecessary access rights are assigned to users (and are not removed when they are no longer needed);
- unnecessary programs and utilities are installed on machines (e.g., as part of a generic build) or not‘uninstalled’ from an ‘out-of-the-box’ configuration.
What is the Saltzer-Schroeder Least common mechanism principle?
The use of sharedresources should be minimised.
Taken to its extreme this principle requires that each program should run on its own dedicated machine (either physically or logically distinct). Clearly such an extreme interpretation is likely to conflict with functional requirements and lead to poor resource utilisation.
Ultimately must compromise betweenefficiency and security
What is the Saltzer-Schroeder Separation of privilege principle?
Wherever possible two or more independent checks should be used to confirm that a requestis authorised.
Thus wherever possible a system should use two or more security mechanisms to protecta resource. For example:
- deploy a security guard at the front door of a building and also put locks on the doors within the building;
- use two-factor authentication.
This relates closely to the notion of dual control: it should be impossible for a single user to perform a sequence of mission- or business-critical actions. For example:
- two differentgenerals must separately arm and launch a nuclear missile;
- two differentindividuals must separately authorise cheques over £5000
What is the Saltzer-Schroeder Ease of use principle?
Never underestimate the unwillingness of users to interact with security mechanisms!
The human element of computer systems is probably the most significant vulnerability. For example:
- users and likely to choose poor passwords and also to manage them poorly;
- users are likely to make system configuration errors;
- ‘good’ users can be persuaded to run malicious software or do other damage to their own system.
If a security mechanism is invisible, or if it is easy to use when visible, then users are more likely to use it rather than circumvent it. On the other hand, if a security mechanism is highly intrusive,then users are likely to find ways to bypass it.
What is the Microsoft SDL?
Microsoft’s Security Development Lifecycle (SDL)
This is a process that Microsoft has adopted for the development of software that needs to withstand malicious attack. It was developed as part of the Microsoft Trustworthy Computing initiative, launched in the early 2000s with the goal of addressing Microsoft’s then very poor reputation for providing reliable and trustworthy software. Some ten years on, this ongoing initiative has transformed the company’s internal software developmentpractices
What are the microsoft SDL design phases?
What is the Microsoft SDL Training phase?
All members of a software development team should receive appropriate training to stay informed about security basics and recenttrends in security and privacy.
Individuals who develop software (software developers or simply ‘devs’) should attend at least one security training class each year.
Security training can help ensure software is created with security and privacy in mind,and can also help developmentteams stay currenton security issues.
Project team members are strongly encouraged to seek additional security and privacy education that is appropriate to their needs or products.
SDL Practice #1: Core Security Training
This practice is a prerequisite for implementing the SDL. Foundational concepts for building better software include secure design, threat modeling, secure coding, security testing,and best practices surrounding privacy.
What is the Microsoft SDL Requirements phase?
The need to consider security ‘from the ground up’ is a fundamental principle of secure system development. While many development projects produce ‘next versions’ that build on previous releases, the requirements phase and initial planning of a new release or version offers the best opportunity to build secure software. The requirements phase of the SDL includes:
- project inception: in which security and privacy are considered at a fundamental level;
- cost analysis: in which the development and support costs for improving security and privacy are compared with the business needs.
SDL Practice #2: Establish Security and Privacy Requirements
Defining and integrating security and privacy requirements early helps make it easier to identify key milestones and deliverables and minimize disruptions to plans and schedules.
SDL Practice #3: Create Quality Gates/Bug Bars
Defining minimum acceptable levels of security and privacy quality at the start helps a team understand risks associated with security issues, identify and fix security bugs during development, and apply the standards throughout the entire project.
SDL Practice #4: Perform Security and Privacy Risk Assessments
Examining software design based on costs and regulatory requirements helps a team identify which portions of a project will require threat modeling and security design reviews before release and determine the Privacy Impact Rating of a feature, product, or service.
What is the Microsoft SDL Design phase?
The design phase identifies the overall requirements and structure for the software. The design phase involves building the plan for taking the project through the rest of the SDL process, including from implementation, to verification, to release.
During the design phase, the team members must:
- establish best practices that will be followed in the functional and design specifications;
- perform a risk analysis (or, in SDL terminology, ‘risk modelling’) to identify threats to, and vulnerabilities in, the software
SDL Practice #5: Establish Design Requirements
Considering security and privacy concerns early helps minimize the risk of schedule disruptions and reduce a project’s expense.
SDL Practice #6: Attack Surface Analysis/Reduction
Reducing the opportunities for attackers to exploit a potential weak spot or vulnerability requires thoroughly analyzing overall attack surface and includes disabling or restricting access to system services, applying the principle of least privilege, and employing layered defenses wherever possible.
SDL Practice #7: Use Threat Modeling
Applying a structured approach to threat scenarios during design helps a team more effectively and less expensively identify security vulnerabilities, determine risks from those threats, and establish appropriate mitigations.
What is the Microsoft SDL Implementation phase?
During the implementation phase, the product team codes, tests, and integrates the software. Steps taken to remove security flaws or prevent their initial insertion during this phase have a high impact — they significantly reduce the likelihood that security vulnerabilities will make their way into the final version of the software that is released to customers.
The Implementation phase involves establishing development best practices to detect and remove security and privacy issues early in the development cycle.
Code reviews should be conducted, which supplement automated tools and tests by applying the efforts of trained developers to examine source code and detect and remove potential security vulnerabilities. They are a crucial step in the process of removing security vulnerabilities from software during the development process.
In this phase, the development team must create the documentation and tools to be used by the customer to make informed decisions about secure deploymentof the software.
SDL Practice #8: Use Approved Tools
Publishing a list of approved tools and associated security checks (such as compiler/linker options and warnings) helps automate and enforce security practices easily at a low cost. Keeping the list regularly updated means the latest tool versions are used and allows inclusion of new security analysis functionality and protections.
SDL Practice #9: Deprecate Unsafe Functions
Analyzing all project functions and APIs and banning those determined to be unsafe helps reduce potential security bugs with very little engineering cost. Specific actions include using header files, newer compilers, or code scanning tools to check code for functions on the banned list, and then replacing them with safer alternatives.
SDL Practice #10: Perform Static Analysis
Analyzing the source code prior to compile provides a scalable method of security code review and helps ensure that secure coding policies are being followed.