one-time password (OTP) authentication

From: Date: Fri, 06 May 2005 02:05:27 +0000
Subject: one-time password (OTP) authentication
Groups: php.general 
Request: Send a blank email to php-general+get-214577@lists.php.net to get a copy of this message
Two-factor authentication (authenticating user with something they know AND something they possess) is becoming more and more popular due to increasing security requirements and the prevalence of spyware software. However, in open source projects, solutions such as RSA securID, smartcards, etc. are not always feasible because of funding, licensing, or other constraints. Here is a complete, standards-based, open source, no-hardware solution. Here is a PHP implementation for generating, challenging, and authenticating one-time passwords according to RFC 2289. I have attached a uuencoded file (or go to http://www.dcphp.com/Developers/files/otp_pub.zip to download) Below are two scenarious for OTP use. Scenario A: Users across an organization need access to corporate resources at home, on the road, in airplanes, etc. Users are many (>1000) and geographically distributed. A user applies for access and is approved. The administrator prints off a list of one-time passwords and delivers a hard-copy via physical medium (fax, phone, snail-mail, person-to-person handoff). Scenario B: Users self-register for a commercial (or other) website. Once successfully registered, the user is given the option to generate a list of one-time passwords and use them for authentication in addition to their username/password (of course, user can ignore OTP from certain trusted computers, such as the one they registered from, if they trust it). The user can generate new OTP's at any time once authenticated. When the user logs in, they use their username,password, and a one-time-password (which one depends on which one they are prompted for by the server). The OTP expires immediately upon authentication. Now, if a hacker intercepts all three tokens, they are still unable to perform a replay attack because the third token is already invalidated. Their is a race condition if they are watching real-time, but this can be accounted for via transaction locking in the session handling code. -- the brown cow --

« previous php.general (#214577) next »