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.

key agreement protocol, where both sides contribute to the key, instead of a key<br />

transport protocol, where one side selects the key and sends it to the other.<br />

Forward secrecy<br />

You might want to require that an attacker who manages to break one key<br />

exchange should not be able to decrypt old connections, if he happens to capture<br />

the data. Achieving this property often involves some tradeoffs.<br />

Let’s look at common technologies in light of these requirements.<br />

Traditional UNIX crypt( )<br />

This solution is a single-factor, password-based system. Using it requires a preexisting<br />

secure channel (and one that thwarts capture replay attacks). There are big windows<br />

of vulnerability because the user’s password must be sent to the server every<br />

time the user wishes to authenticate. It does not meet any of the desirable security<br />

requirements for a password-based system we outlined above (it is susceptible to<br />

offline guessing attacks, for example), and the traditional mechanism is not even very<br />

strong cryptographically. Using this mechanism on an unencrypted channel would<br />

expose the password. Authentication using crypt( ) is covered in Recipe 8.9.<br />

MD5 Modular Crypt Format (a.k.a. md5crypt or MD5-MCF)<br />

This function replaces crypt( ) on many operating systems (the API is the same, but<br />

it is not backward-compatible). It makes offline cracking attacks a little harder, and it<br />

uses stronger cryptography. There are extensions to the basic modular format that<br />

use other algorithms and provide better protection against offline guessing; the<br />

OpenBSD project’s Blowfish-based authentication mechanism is one. Using this<br />

mechanism on an unencrypted channel would expose the password. Authentication<br />

using MD5-MCF is covered in Recipe 8.10.<br />

PBKDF2<br />

You can use PBKDF2 (Password-Based Key Derivation Function 2; see Recipe 4.10)<br />

as a password storage mechanism. It meets all the same requirements as the Blowfish<br />

variant of MD5-MCF discussed in the previous subsection. Authentication using<br />

PBKDF2 is covered in Recipe 8.11.<br />

S/KEY and OPIE<br />

S/KEY and OPIE are one-time password systems, meaning that the end user sends a<br />

different password over the wire each time. This requires the user and the server to<br />

preestablish a secret. As a result, if an attacker somehow gets the secret database (e.g.,<br />

if he manages to dumpster-dive for an old backup disk), he can masquerade as the client.<br />

Choosing an Authentication Method | 367<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!