CS 111 Scribe Notes: Security – Matthew Millar

Finishing from last time...

NFS Performance

Example of a modern NFS system:

In this outline:

Modern performance statistics for Sun ZFS Storage 7420:

2storage controllers
410 Gb ethernet adapters (short wave)
8512 GB SSDs
873 GB SSDs (faster than the larger SSDs)
280Small 15000 RPM HSDs (totaling 37 TB storage)
47200 RPM HDDs (for storing application data and business logic)

Its performance characteristics are as follows:

Where...

Notice that after ~250 kOPS/sec, the performance explodes badly because the serving capacity of the system becomes saturated.

Security

NFS Security

Examples of Security Issues

So, how does one defend against attacks on security?

Consider how we think about security in the real world.

The main goals of virtual attackers fall under three major types of virtual attacks:

The main goals of those defending against virtual attacks are twofold:

(After all, the most secure computer in the world is a concrete brick.)

Note: it's harder to test negative goals (i.e. disallowing) than positive goals (i.e. allowing). This is because users will "cooperate" with you for positive goals by e.g. complaining when they don't have access to something they are supposed to be able to access, but will usually not cooperate when the converse is true...

Threat Modeling & Classifications

It's usually a mistake to say "I'll just add some passwords".

A threat model can be thought of as a "use case for bad guys" in that it models what type of attacks a malicious user might launch on a system.

Here are some prominent threat models, in rough order of general importance:

Note: you won't be able to defend against all types of attacks, so prioritize.

Big Six General Features Needed for Any Security Mechanism

How to Authenticate

The principle is the human being that is the primary motivation for whatever operation is being attempted. Here are three basic techniques for authenticating a principle's request:

All of these approaches are imperfect:

Also, all of these have bootstrapping problems: at some point, an underlying system must be trusted—that underlying system is usually more simple/primitive/direct (hopefully more secure) than the overlying system—such as e.g. physically meeting the principle to give them their initial password.

Authentication in an OS

There are two main types of authentication that must be done within an OS.

Network Authentication Building Blocks

Cryptographic hash functions (e.g. SHA-1)

Idea: knowing the hash doesn't help you compute the message.

Symmetric encryption (e.g. triple-DES)

Asymmetric encryption (e.g. RSA)

Example: Alice sends a message to Bob:

Say A is 192.168.2.3:97.

Bob now knows that 192.168.2.3:97 is Alice and can do business accordingly for now. But, say, later...

Bob can't know whether or not the message is faked!

Nonce—a random integer generated by (say) Bob.

Bob can then arrange for the nonce to time out so that if an attacker records and replays the message, Bob can request the requester reply to a new nonce.

HMAC: Hashed Message Authentication Code

SHA1((k^pad1) . SHA1((k^pas2) . M))
Where ^ is bitwise XOR and . is bit-string concatenation.