Security - Computer Science Department
Download
Report
Transcript Security - Computer Science Department
CMSC 414
Computer and Network Security
Jonathan Katz
Course Organization
Administrative
Me
TA
Contact information, office hours, listed on course
webpage
Course webpage
http://www.cs.umd.edu/~jkatz/security/f09
Syllabus
– Subject to change…
– Assigned readings and videos
• Will try to post by Friday for the following week
• Read in advance and come prepared to discuss
– Additional (optional) readings
Homeworks distributed from the course webpage
Check frequently for announcements
Class readings
Material posted on the course webpage is fair
game for the exams, even if not covered in class
Material covered in class is fair game for the
exams, even if not listed on the webpage
Textbook
No required text
Several good texts out there
– Will list on the course webpage
Will supplement lectures with other readings
(distributed on class webpage)
Course requirements
Homeworks
– 3-5 programming assignments
– Possibly 1-2 written assignments
I expect students have access to a computer/laptop
capable of running a hypervisor
– VM player for Windows/linux (free download)
– VMware Fusion for MACs ($49.99 for academic
license), other free options may be available
– Occasional in-class exercises
Labs (tentative)
Crypto
Building a secure protocol
Buffer overflow
Web security
Piazza
http://piazza.com
For your benefit
Questions about lecture/readings
Homework questions
News items
– I encourage you to post links to news of interest!
Class participation
Please!
Syllabus (tentative)
Syllabus I
Introduction…
– A broad perspective on security
Cryptography
– The basics (take CMSC 456 or read my book for more)
• If you took 456 with me, you can skip
– Cryptography is not the whole solution…
– …but it is an important part of the solution
– Along the way, we will see why cryptography can’t
solve all security problems
Syllabus II
Network security I
– Identity, PKI
– Authentication and key exchange protocols
– Password and biometric authentication
– Anonymity and pseudonymity
– Privacy
Syllabus II
System security
– General principles
– Security policies
– Access control
– OS security
– “Trusted computing”
Programming language security
– Buffer overflows, input validation errors
– Viruses/worms
– Web security
Syllabus IV
Privacy/anonymity
– Database security
– Anonymous communication
– Privacy in social networks
Network security in the real world
– Some real-world protocols (IPSec/SSL)
– Security of network infrastructure (routing, DNS,
TCP/IP, DDos attacks, …)
Overview
Introduction and overview
What is computer/network security? Why is it
important?
Course philosophy and goals
A broad perspective on “computer security”
Computer security is important…
Several high-profile hacks in past years
– Number of vulnerabilities/attacks increasing
Cyberwarfare
Increasing gov’t and academic interest
Just read the news…
Cybercrime
e.g., botnets
Washington Post, “Invasion of the Computer
Snatchers” (2006):
–
–
–
–
High-school dropout
Breaks into 2000 computers in 6 hours (while sleeping)
$6,800 per month; 2 minutes of work per day
$2B industry (annual)
Thoughts
Why is the problem so difficult?
What can be done about it?
“Security”
Most of computer science is concerned with
achieving desired behavior
Security is concerned with preventing undesired
behavior
– Different way of thinking!
– An enemy/opponent/hacker/adversary who is actively
and maliciously trying to circumvent any protective
measures you put in place
One illustration of the difference
Software testing determines whether a given
program implements a desired functionality
– Test I/O characteristics
– Q/A
How do you test whether a program does not
allow for undesired functionality?
– Penetration testing helps, but only up to a point
Why is computer security so hard?
Computer networks are “systems of systems”
– Your system may be secure, then the environment changes
Too many things dependent on a small number of systems
Society is unwilling to trade off features for security
Ease of attacks
–
–
–
–
Cheap
Distributed, automated
Anonymous
Insider threats
Security not built in from the beginning
Humans in the loop…
Computers ubiquitous…
Computers are everywhere…
…and can always be attacked
Electronic banking, social networks, e-voting
iPods, iPhones, PDAs, RFID transponders
Automobiles
Appliances, TVs
(Implantable) medical devices
Cameras, picture frames(!)
– See http://www.securityfocus.com/news/11499
A naïve view
password
In reality…
Where does security end?
password
forgot password?
One good attack
Use public records to figure out someone’s
password, or to get it from tech support
– E.g., hacked email account of Sarah Palin
The password-recovery mechanism is part of the
system!
– The password-recovery mechanism may be the most
vulnerable point to attack
Computer security is not just about
computers
What is “the system”?
Physical security
Social engineering
– Bribes for passwords
– Phishing
“External” means of getting information
– Legal records, trash cans
User education…
Security is a process, not a product…(!)
Security is interdisciplinary
Draws on all areas of CS
– Theory (especially cryptography)
– Networking
– Programming languages/compilers
– Operating systems
– Databases
– AI/learning theory
– Computer architecture / hardware
– HCI, psychology
Security mindset
Learn to think with a “security mindset” in general
– What is “the system”?
– How could this system be attacked?
• What is the weakest point of attack?
– How could this system be defended?
• What threats am I trying to address?
• How effective will a given countermeasure be?
• What is the trade-off between security, cost, and usability?
An example: airline security
Ask: what is the cost (economic and otherwise) of
current airline security?
Ask: do existing rules (e.g., banning liquids) make
sense?
Ask: are the tradeoffs worth it?
– (Why do we not apply the same rules to train travel?)
– (Would spending money elsewhere be more effective?)
Ask: how would you get on a plane if you were on
the no-fly list?
– (I will not give you the answer – you can find it online)
– This is a thought experiment only!
Computer security is not just about
“security”
Prevention…
Detection, response, audit
– How do you know when you are being attacked?
– How quickly can you stop the attack?
– Attribution: can you identify the attacker(s)?
– Can you prevent the attack from recurring?
Recovery
– Can be much more important than prevention
Economics, insurance, risk management…
Security is a process, not a product…
A naïve view
Achieve “absolute” security
In reality…
Absolute security is easy to achieve!
– How…?
Absolute security is impossible to achieve!
– Why…?
Good security is about risk management
Security as a trade-off
The goal is not (usually) “to make the system as
secure as possible”…
…but instead, “to make the system as secure as
possible within certain constraints” (cost,
usability, convenience)
– Military vs. personal networks
Must understand the existing constraints
– E.g., passwords…
Cost-benefit analysis
Important to evaluate what level of security is
necessary/appropriate
– Cost of mounting a particular attack vs. value of attack
to an adversary
– Cost of damages from an attack vs. cost of defending
against the attack
– Likelihood of a particular attack
Sometimes the best security is to make sure you
are not the easiest target for an attacker…
“More” security not always better
“No point in putting a higher post in the ground
when the enemy can go around it”
Need to identify the weakest link
– Security of a system is only as good as the security at
its weakest point…
Security is not a “magic bullet”
Security is a process, not a product
Summary
“The system” is not just a computer or a network
Prevention is not the only goal
– Cost-benefit analysis
– Detection, response, recovery
Nevertheless…in this course, we will focus on
computer security, and primarily on prevention
– If you want to be a security expert, you need to keep the
rest in mind
Philosophy of this course
We are not going to be able to cover everything
– We are not going to be able to even mention everything
Main goals
– A sampling of many different aspects of security
– The security “mindset”
– Become familiar with basic acronyms (RSA, SSL, PGP,
etc.), and “buzzwords” (phishing, …)
– Become an educated security consumer
– Try to keep it interesting with real-world examples and
“hacking” projects
Course goals
You will not be a security expert after this class
(after this class, you should realize why it would
be dangerous to think you are)
But you should have a better appreciation of the
threats, and how to address some of them
“Trusting trust”
“Trusting trust”
Consider a compiler that embeds a trapdoor into
anything it compiles
How to catch?
– Read source code? (What if replaced?)
– Re-compile compiler?
What if the compiler embeds the trojan code
whenever it compiles a compiler?
– (That’s nasty…)
Change compiler source S
compiler(S) {
if (match(S, "login-pattern")) {
compile (login-backdoor)
return
}
if (match(S, "compiler-pattern")) {
compile (compiler-backdoor)
return
}
.... /* compile as usual */
}
“Trusting trust”
Whom do you trust?
Does one really need to be this paranoid??
– Probably not
– Sometimes, yes
Shows that security is complex…and essentially
impossible
Comes back to risk/benefit trade-off
Assigned readings
Thompson’s article
“Inside the Twisted Mind of the Security
Professional”
“We are All Security Customers”
“Information Security and Externalities”
Chapter 1 of “Security Engineering”