A researcher has devised a method that attackers with control over a victim's computer can use to clone the secret software token that RSA's SecurID uses to generate one-time passwords.

The technique, described on Thursday by a senior security analyst at a firm called SensePost, has important implications for the safekeeping of the tokens. An estimated 40 million people use various SecurID tokens to access confidential data belonging to government agencies, military contractors, and corporations. Scrutiny of the widely used two-factor authentication system has grown since last year, when RSA revealed that intruders on its networks stole sensitive SecurID information that could be used to reduce its security. Defense contractor Lockheed Martin later confirmed that a separate attack on its systems was aided by the theft of the RSA data.

Last week's blog post by SensePost's Behrang Fouladi demonstrated another way determined attackers could in certain cases circumvent protections built into SecurID. By reverse engineering software used to manage the cryptographic software tokens on computers running Microsoft's Windows operating system, he found that the secret "seed" was easy for people with control over the machines to locate and copy. He provided step-by-step instructions for others to follow in order to demonstrate how easy it is to create clones that mimic verbatim the output of a targeted SecurID token.

"When the above has been performed, you should have successfully cloned the victim's software token and if they run the SecurID software token program on your computer, it will generate the exact same random numbers that are displayed on the victim's token," Fouladi wrote.

He arrived at that conclusion by reverse engineering the Windows software that allows SecurID users to make one-time passwords appear on their PCs, rather than on match-case-sized hardware tokens RSA provides. The cryptographic seed values at the heart of the SecurID system make it mathematically infeasible for others to predict the output that changes every 90 seconds or so, but only if the values remain secret.

RSA spokesman Kevin Kempskie told Ars: "It's not uncommon for a large software company like ours to see security researchers demonstrate theoretical attacks on a product. We have a really experienced product security team and we take these things very seriously and we're going to have them take a closer look at it."

Fouladi discovered that the RSA seed value is easy to obtain and copy by anyone with access to a computer that's lost, stolen, or has been compromised with a backdoor trojan. By reading chunks of data returned by a proprietary Microsoft security interface known as the data protection application programming interface (DPAPI), an attacker can obtain and copy the encrypted value. Even when an optional copy protection known as a token binding is in place, it can be bypassed because the required serial number is determined by a combination of the host name and current user's Windows security identifier stored on the computer.

He told Ars that smartphones that are lost or stolen might be susceptible to similar attacks, although he stressed he has no reason to believe that the values can be remotely retrieved from smartphones infected with malware, as long as the devices haven't been jailbroken or rooted.

"Should people stop using the SecurID software tokens?" he wrote in an e-mail. "It depends. It is dependent on the probability of the device being stolen or malicious applications installed from a dubious source. Personally, for high-risk situations, for example government agency laptops for staff that travel and frequently have to connect back to secure networks, using the token, I wouldn't recommend it."

Fouladi noted that both RSA and its customers have been targeted by highly motivated hackers, so attack scenarios in which PCs are infected or stolen aren't unrealistic. He suggested the sensitive RSA data should be managed by a industry-wide specification known as the TPM, or trusted platform module.

Post updated to clarify SecurID's user base and to make clear the attack doesn't deduce seed values.