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.

so why bother building a secure channel? Similarly, you might already be able to<br />

establish an authenticated remote connection to a server through something like SSL,<br />

in which case you get a secure channel over which you can do a simpler authentication<br />

protocol. (Mutual authentication versus one-sided authentication is therefore<br />

another potentially interesting requirement.) Of course, that works only if the server<br />

really is authenticated, which people often fail to do properly.<br />

Whether or not you have a secure channel, you will probably want to make sure that<br />

you avoid capture replay attacks. In addition, you should consider which possible<br />

masquerading scenarios worry you. Obviously, it is bad if an arbitrary person can<br />

masquerade as either the client or the server just from watching network traffic.<br />

What if an attacker manages to break into a server, however? Should the attacker<br />

then be able to masquerade as the user to that server? To other servers where the<br />

user has the same credentials (e.g., the same password)?<br />

In addition, when a user shares authentication credentials across multiple servers,<br />

should he be able to distinguish those servers? Such a requirement can demand significant<br />

trade-offs, because to meet it, you will need either a public key infrastructure<br />

or some other secure secret that users need to carry around that authenticates<br />

each server. If you are willing to assume that the server is not compromised at<br />

account creation time but may be compromised at some later point, you can meet<br />

the requirement more easily.<br />

We have already mentioned no susceptibility to password guessing attacks as a possible<br />

requirement. When that is too strict, there are other requirements we can<br />

impose that are actually reasonable:<br />

• When an attacker steals the authentication database on the server, an offline<br />

cracking job should be incredibly difficult—with luck, infeasible, even if the<br />

password being attacked is fairly predictable.<br />

• Guessing attacks should be possible only by attempting to authenticate directly<br />

with the server, and the login attempt should not reveal any information about<br />

the actual password beyond whether or not the guess was correct.<br />

• There should not be large windows of vulnerability where the server has the<br />

password. That is, the server should need to see the password only at account<br />

initialization time, or not at all. It should always be unacceptable for a server to<br />

store the actual password.<br />

No doubt there are other interesting requirements for password systems.<br />

For authentication systems that also do key exchange, there are other interesting<br />

requirements you should consider:<br />

Recoverability from randomness problems<br />

You might want to require that the system be able to recover if either the client<br />

or the server has a bad source of randomness. That is generally done by using a<br />

366 | 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!