21.03.2013 Views

Problem - Kevin Tafuro

Problem - Kevin Tafuro

Problem - Kevin Tafuro

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Clearly, choosing the right technology requires a thorough analysis of requirements<br />

for an authentication system. In this chapter, we’ll look at several common requirements,<br />

then examine common technologies in light of those requirements.<br />

However, let us first point out that it is good to build software in such a way that<br />

authentication is implemented as a framework, where the exact requirements can be<br />

determined by an operational administrator instead of a programmer. PAM (Pluggable<br />

Authentication Modules) lets you do just that, at least on the server side, in a client-server<br />

system. SASL(Simple Authentication and Security Layer) is another such<br />

technology that tries to push the abstraction that provides plugability off the server<br />

and into the network. We find SASLa large mess and therefore do not cover it here.<br />

PAM is covered in Recipe 8.12.<br />

There are several common and important requirements for authentication mechanisms.<br />

Some of these may be more or less important to you in your particular environment:<br />

Practicality of deployment<br />

This is the reason that password systems are so common even though there are<br />

so many problems with them. Biometrics and physical tokens both require physical<br />

hardware and cost money. When deploying Internet-enabled software, it is<br />

generally highly inconvenient to force users to adopt one of these solutions.<br />

Usability<br />

Usability is a very important consideration. Unfortunately, usability often trades<br />

off against good security. Passwords are a good example: more secure mechanism<br />

would require public keys to establish identity. Often, the user’s private<br />

key will be password-protected for defense in depth, but that only protects<br />

against local attacks where an attacker might get access to steal the key—a welldesigned<br />

public key–based protocol should not be vulnerable to passwordguessing<br />

attacks.<br />

Another common usability-related requirement is that the user should not have<br />

to bring any special bits with him to a computer to be able to log in. That is,<br />

many people want a user to be able to sit down at an arbitrary computer and be<br />

able to authenticate with data in his head (e.g., a password), even if it means<br />

weaker security. For others, it is not unreasonable to ask users to carry a public<br />

key around.<br />

When passwords are used, there are many different mechanisms to improve<br />

security, but most of them decrease usability. You can, for example, expire passwords,<br />

but users hate that. Alternatively, you can enforce passwords that seem<br />

to have sufficient entropy in them (e.g., by checking against a dictionary of<br />

words), but again, users will often get upset with the system. In many cases, adding<br />

something like a public key mechanism adds more security and is less burdensome<br />

than such hacks turn out to be.<br />

364 | Chapter 8: Authentication and Key Exchange<br />

This is the Title of the Book, eMatter Edition<br />

Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!