-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
7078235
commit 4881596
Showing
5 changed files
with
466 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
--- | ||
layout: default | ||
title: MIT 6.858 - Computer Systems Security | ||
nav_order: 8 | ||
has_children: true | ||
--- | ||
|
||
# MIT 6.858 - Computer Systems Security | ||
|
||
Taught by Prof. Nikolai Zeldovich at MIT in Spring, 2020. | ||
|
||
6.858 Computer Systems Security is a class about the design and implementation of secure computer systems. Lectures cover threat models, attacks that compromise security, and techniques for achieving security, based on recent research papers. Topics include operating system (OS) security, capabilities, information flow control, language security, network protocols, hardware security, and security in web applications. | ||
|
||
[6.858 on OCW](https://ocw.mit.edu/courses/6-858-computer-systems-security-fall-2014/) | ||
[2020 course website](https://css.csail.mit.edu/6.858/2020/) | ||
|
||
## Lectures | ||
1. [Lecture 1: Introduction]({% link 6.858/lec1.md %}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
--- | ||
layout: default | ||
title: "Lecture 1 - Introduction" | ||
parent: MIT 6.858 - Computer Systems Security | ||
nav_order: 1 | ||
--- | ||
|
||
# Lecture 1 - Introduction | ||
|
||
This course is about building secure computer systems. Security is a property or behaviour of a system that is achieved despite attacks from adversaries. This property could be data confidentiality, data integrity, access control, etc. | ||
|
||
There are three main aspects to building secure systems - | ||
|
||
1. Policy - The plans and/or rules you will implement to make sure that your system is secure. For example, require users to enable 2FA. | ||
2. Threat model - Assumptions about what the attacker can and cannot do. For example, the attacker can try to guess passwords, but cannot try to physically break into the server room (this assumption is fine in most cases). | ||
3. Mechanism - The specific software and hardware techniques you will use to achieve security. | ||
|
||
Building secure systems is hard, because security is a _negative goal_. For example, if our goal is to make sure that only the author of a file can access that file, implementing access control is a positive goal - only one code path is needed to check if the accessing user is the owner, and if yes, access is granted. However, to make sure that _no one else_ accesses the file, we may need many checks, techniques, etc. to make sure that no one else is granted access to that file. We must make sure that there is no way in our system for a user that is not the owner to pretend to be the owner. | ||
|
||
This is a very hard task, and there is no guarantee that we will get it right the very first time. There is also no guarantee that we have thought of and considered all the possible attack vectors for a system. Therefore, we must constantly be vigilant and iterate. We must be vigilant not just of our system, but open source databases of documented security vulnerabilities, such as [cve.mitre.org](https://cve.mitre.org). | ||
|
||
Perfect security is not possible. However, perfect security is not required, either. We just have to make sure that the cost to an attacker is higher than the potential reward they may gain from breaking into our system. Also, implementing some security techniques can ensure that some types of attacks are completely nullified. | ||
|
||
The rest of the lecture presents examples on security failures to highlight the ways in which a security engineer must think. They are very interesting and fun reads, you can find them [here](./media/l01-intro.txt). | ||
|
Oops, something went wrong.