Authentication and Security

Central to the idea of protection systems is the idea of an authentication system. An authentication system proves the identities of elements with which a computer system interacts. This can include users and other systems.

In distributed systems, authentication should be 2-way: The user should authenticate to the machine, and the machine to the user.

Generally authentication is accomplished by means of the exchange of a shared secret. The most common shared secret is a password.

Passwords

A password is a string of characters that the user and computer system agree will establish the user's identity to the system. The analogy is to physical passwords, where people who wanted access to a military facility had to recite such an unusual phrase to establish their identity to those inside the fort.

Computer passwords are often the weakest part of a computer security system, especially if the passwords can be guessed off-line - that is without alerting the system under attack that it is under attack. Passwords can be stolen (physically or electronically) or guessed.

There are several good rules for choosing a computer password:

Password Storage

It's possible to store passwords in the open, without immediately giving away the contents of the password. The system uses a 1-way function. A 1-way function is an interesting function that is relatively easy to compute, but difficult to invert (essentially the only way to invert it is to compute all the forward transforms looking for one that matches the reverse).

Systems like UNIX(R) don't store the password, but the result of a 1-way function on the password. To check a user's password, the system takes the password as input, computes the 1-way function on it, and compares it with the result in the password file. If they match, the password was (with high probability) correct. Note that even knowing the algorithm and the encrypted password, it's still impossible to easily invert the function.

Although it's theoretically reasonable to leave a hashed password file in the open, it is rarely done anymore. There are a couple reasons:

Other Shared Secrets

Some other forms of shared secrets include:

Physical ID

Another shared secret can be physical attributes of the human who wants to access the system. Several body measurements identify a user with significant precision: finger lengths, retina, fingerprints, etc. Controlling access based on physical features has problems if the features are damaged (cutting one's fingertip should confuse a fingerprint scanner). It also raises the grisly possibility of theft of those features. One way to beat a thumbprint scanner is to physically acquire someone's thumb.

A Sampling of Attacks

Some common attacks on computer systems:

Viruses and Worms

Viruses are programs contained in other programs, often for malicious purposes. (They needn't be, though - one can imagine benign programs propagated the same way - virus checkers for example). Worms are self replicating independent programs. The distinction is in the method of transmission: a virus needs a host program to be run to propagate it; a worm has no such host, it propagates itself. Both have made national news for in their malevolent forms, but both could be used for benign purposes.

Covert Channels

A covert channel is an unintentional communication channel in the system. For example, if 2 processes banned from communicating directly can use the following scheme: one process repeatedly performs a computation known to take a fixed time. The other process alternately loads and unloads them machine with computationally intensive child processes depending on the bit it wants to send. Loading the machine corresponds to a 1 and unloading the machine a 0. The listening process knows that if it's computation takes longer than usual, it should record a 1 and if it's shorter, record a 0. The two can work out the timing and loading (statistically, if necessary) to communicate.

Covert channels are necessarily low bandwidth, and stopping them is difficult. (In the example above, the system would have to guarantee system load to be fixed, which would mean slowing the system when it was unloaded.) Most systems don't stop covert channels. Systems that hold serious enough data, do.

Conclusions

Security is a design concern for most, if not all systems. It requires an attention to detail, and a somewhat devious mind to design an effective system.


Converted from groff by Ted Faber
Please mail me any problems or comments.