Google’s new NFC system that purports to turn your phone into a credit card can be compromised using a brute-force attack — and that raises questions about its security.
Security firm Zvelo has discovered that the Google Wallet PIN, which is required of users to confirm purchases made with their phones, can be cracked via an exhaustive numerical search. Being able to access the PIN would allow criminals to use a Google Wallet-enabled phone to make purchases.
Because they’re in the security business, Zvelo disclosed the issue to Google, which has confirmed that the vulnerability exists, and has “agreed to work quickly to resolve it.”
Google Wallet is the first publicly available Near Field Communication (NFC) payment service in the U.S., and it’s only available on one phone, on one network — the Samsung Galaxy Nexus S 4G on Sprint.
NFC payment systems let users pay for items in brick-and-mortar retail stores by tapping their NFC-enabled device on a PayPass reader, or a small electronic box. NFC isn’t limited to smartphones — Google Wallet is partnered with MasterCard, which has been using NFC chips in some of its credit cards for several years, and which originally developed the PayPass reader.
There have been some questions about NFC security, and other wireless providers, such as AT&T, Verizon, and T-Mobile, currently do not allow the Google Wallet app on their smartphones. (Though this is probably because they’re working on developing their own NFC payment system.)
As for the security issue, it turns out that Google Wallet PIN information is stored on the phone itself, rather than on the NFC chip, and is therefore not terribly secure.
“Knowing that the PIN can only be a 4-digit numeric value, it dawned on us that a brute-force attack would only require calculating, at most, 10,000 SHA256 hashes,” Zvelo Senior Engineer Joshua Rubin wrote in a blog post. SHA refers to Secure Hash Algorithm, which is one of a number of cryptographic hash functions. “This is trivial even on a platform as limited as a smartphone.”
Rubin says that while Google Wallet only allows five invalid PIN entry attempts before shutting you out of the phone, this attack can reveal the PIN without a single invalid attempt.
According to Zvelo, the only way to fix the problem is to move the PIN verification to Secure Device (SE), or the NFC chip. The reason this is sort of a big deal is that it may require banks — instead of Google — to be responsible for PIN security (and perhaps they should be). Banks might have to follow their own policies for ATM PIN security, which, as Zvelo points out, receive a great deal of scrutiny.
Now for the good news: you don’t need to worry about this unless you rooted your phone. If you did root your phone, you should be okay if you take some extra security steps — set your phone’s lock screen, and don’t lose your phone.
UPDATE: Google has issued a statement about the security of Google Wallet:
The Zvelo study was conducted on their own phone on which they disabled the security mechanisms that protect Google Wallet by rooting the device. To date, there is no known vulnerability that enables someone to take a consumer phone and gain root access while preserving any Wallet information such as the PIN.”
This confirms that there should be no issue unless your phone has already been rooted (by you). If you have rooted your phone, Google strongly encourages you not to install Google Wallet on your device and to always set up a screen lock as an additional layer of security for your phone. A Google representative also told PCWorld that even if the PIN is compromised, the credit card information will remain secure (though, of course, someone with your PIN and smartphone is able to make purchases using your phone’s NFC technology).