Attacks/Breaches
8/7/2013
11:20 AM
Connect Directly
RSS
E-Mail
50%
50%

Twitter Overhauls Two Factor Authentication System

Take two: Twitter drops SMS for private keys stored on Android or iPhone smartphones, adds previously missing recovery capability.

10 Twitter Power Tips
(click image for larger view)
10 Twitter Power Tips
Twitter unveiled version 2.0 of its home-built two-factor authentication system Tuesday, which the company promised was "more secure" than its previous offering.

Dubbed "login verification," Twitter's new approach eschews sending one-time codes via SMS to a phone. Instead, the second factor is provided via a unique, private key that resides only on a user's Android or iPhone, and which is generated by the Twitter app.

"When you enroll, your phone generates an asymmetric 2048-bit RSA keypair, which stores the private key locally on the device and sends the public key, which Twitter stores as part of your user object in our backend store, to the server," said Twitter security engineer Alex Smolen in a blog post.

If a user enables the feature, whenever someone attempts to log into his Twitter account -- using a valid username and password -- the site then sends a push notification, requesting verification, to the user's smartphone.

[ Who's worth following? Read 10 IT Leaders To Follow On Twitter. ]

"Within your Twitter app, you can then view the outstanding request, which includes several key pieces of information: time, geographical location, browser and the login request's challenge nonce [one-time request ID]," said Smolen. "At that point, you can choose to approve or deny the request. If you approve the request, the client will use its private key to respond by signing the challenge. If the signature is correct, the login request will be marked as verified."

What happens if the smartphone that's been used to generate the private key for a user's Twitter account goes missing? Helpfully, Twitter now offers a one-time-use backup code. "We encourage you to store it somewhere safe," said Smolen, who noted that this code is randomly generated, using an algorithm inspired by S/KEY. In addition, that code is hashed 10,000 times "to make the backup code work without sharing secrets," he said, meaning an attacker shouldn't be able to reverse-engineer the code and recover a password.

Previous
1 of 2
Next
Comment  | 
Print  | 
More Insights
Comments
Newest First  |  Oldest First  |  Threaded View
Thomas Claburn
50%
50%
Thomas Claburn,
User Rank: Moderator
8/8/2013 | 2:19:03 AM
re: Twitter Overhauls Two Factor Authentication System
Seems like a promising approach.
Register for Dark Reading Newsletters
White Papers
Cartoon
Current Issue
Dark Reading Must Reads - September 25, 2014
Dark Reading's new Must Reads is a compendium of our best recent coverage of identity and access management. Learn about access control in the age of HTML5, how to improve authentication, why Active Directory is dead, and more.
Flash Poll
Video
Slideshows
Twitter Feed
Dark Reading - Bug Report
Bug Report
Enterprise Vulnerabilities
From DHS/US-CERT's National Vulnerability Database
CVE-2012-5485
Published: 2014-09-30
registerConfiglet.py in Plone before 4.2.3 and 4.3 before beta 1 allows remote attackers to execute Python code via unspecified vectors, related to the admin interface.

CVE-2012-5486
Published: 2014-09-30
ZPublisher.HTTPRequest._scrubHeader in Zope 2 before 2.13.19, as used in Plone before 4.3 beta 1, allows remote attackers to inject arbitrary HTTP headers via a linefeed (LF) character.

CVE-2012-5487
Published: 2014-09-30
The sandbox whitelisting function (allowmodule.py) in Plone before 4.2.3 and 4.3 before beta 1 allows remote authenticated users with certain privileges to bypass the Python sandbox restriction and execute arbitrary Python code via vectors related to importing.

CVE-2012-5488
Published: 2014-09-30
python_scripts.py in Plone before 4.2.3 and 4.3 before beta 1 allows remote attackers to execute Python code via a crafted URL, related to createObject.

CVE-2012-5489
Published: 2014-09-30
The App.Undo.UndoSupport.get_request_var_or_attr function in Zope before 2.12.21 and 3.13.x before 2.13.11, as used in Plone before 4.2.3 and 4.3 before beta 1, allows remote authenticated users to gain access to restricted attributes via unspecified vectors.

Best of the Web
Dark Reading Radio
Archived Dark Reading Radio
In our next Dark Reading Radio broadcast, we’ll take a close look at some of the latest research and practices in application security.