Battle.net Mobile Authenticator


 * Were you looking for Blizzard Authenticator (key fob device)?

The Battle.net Mobile Authenticator is a small mobile phone application that functions similarly to the Blizzard Authenticator key fob device. However, it cannot be used in conjunction with the other device, one or the other can be used, but not both.

The application is free for iOS devices and Android phones, but costs US$0.99 for other mobile phones. As with many iOS apps, it requires the Wi-Fi connection during setup (or re-setup or re-sync to restore the app) on the iPod touch and the iPad with Wi-Fi.

Unsupported Mobile Devices
It is possible to install and use the mobile authenticator on many mobiles which are not officially listed as supported by Blizzard. Most mobile phones are capable of runing the basic java authenticator application, information on installing the authenticator on unsupported devices can be found here.

Specification
The initialization of a Mobile Authenticator is done via an RSA encrypted request to Blizzards initialization servers including an one time pad key for encryption of the response. The server generates an 160-bit key which is later used for code generation and a serial number is connected to that key. Both things are stored on the server and are also sent back to the client (encrypted with the one time pad key from the request).

The code generation is done via encrypting the current time (milliseconds since 1970/01/01 0:00 UTC divided by 30,000) with HMAC-SHA1 using the key from the initialization. From the result are some bytes selected and displayed as current authenticator code.

Security Vulnerability
Because of a weak one time pad key generation algorithm on the client side, an attacker who is able to capture the encrypted initialization response between server and client device can fully compromise the security of the Battle.net Mobile Authenticator. The reason is, that the one time pad key used for encryption of the server response only depends deterministic from the current time on the client device. Normally that time shouldn't differ too much from the common time. So an attacker only needs to guess some time values, calculate the corresponding one time pad keys, use them for decryption of the captured server response and check, whether one of the results make sense (because of the known format of the included serial number, it is easy to say, whether a result makes sense or not). If he finds such a result, it is very likely that he guessed the correct one time pad key and now knows the authenticator ID and the secret code calculation key from the decrypted response.

To prevent this attack even if there is no real randomness (e. g. hardware random generator) is available on the client device, there should be used aside from the current time also some kind of user generated randomness (pressing random buttons on the device, ...) for creating the one time pad key used for encryption of the initialization data.

Desktop ports
It is possible to reimplement the specification to run the Battle.net Mobile Authenticator also directly on the PC. It is difficult to say, whether this is less secure or not in comparison to running it on a real mobile device. Of cause an attacker could read out the necessarily stored secret code calculation key from the PC via a trojan and so breaks the security of such a PC authenticator. But with a trojan on the PC of the victim, the attacker could also read the typed authenticator code when the victim is logging into the game, interrupting the connection of the victim and using the current authenticator code by itself for immediate game login (maybe with a bot) while preventing further game logins of the victim via the trojan.

List of desktop ports with public source code availability:
 * WinAuth
 * Yet another Blizzard Authenticator emulator

It is also possible to run Blizzards implementation within a mobile phone emulator on the desktop.