
Just code a secure "app" for banking, right?
If you are inundated by the seemingly constant barrage of news surrounding people clamoring to get their hands on the lightest, thinest, most powerful mobile phone or tablet, you might be wondering: With all of that consumer demand, how come, if my bank even has a mobile application, why can’t I do all the things I already do on-line? Well, I’ve been digging deep into mobile device security capabilities lately and have a good appreciation of why the gap in functionality exists … and for good reason.
I’ve written before about the challenges of delivering banking functionality like moving money around on-line before here and here with the focus being your, now, classic web browser based Internet banking. Fundamentally, the interaction between a web browser and your bank via the Internet is essentially the exchange of text. There isn’t much programmatic logic running on your pc, laptop or even mobile phone/tablet with web browser based banking. Thus, there isn’t much one can do as an attacker except manipulate that text going back/forth. Assuming basic security measures are in place, short of stealing someones full credentials, there isn’t much opportunity for a big score for attackers. Of course, there are always exceptions.
So, what makes mobile device security such a big deal; isn’t it just Internet banking from your phone?
In short, a program or “app” that is given to the end user to install and run on their device is a huge difference from a security perspective.
Your initial reaction might be: big deal, just build a secure “app” and off you go!
Well, it seems that “building a secure app” isn’t quite as easy as it should be.
Short of the RIM Blackberry mobile platform, mobile devices are currently being built as 100% consumer focused, enable all functionality easily, devices. RIM has been the market leader in corporate managed mobile devices through their “Blackberry Enterprise Server” or BES software you install in your company. It acts as the great security gate keeper between all managed RIM devices, their configuration and what data they can and can’t access. Lose your Blackberry? The BES software can remotely wipe the phone of anything user or company specific the next time the phone is turned on. Want to specify what “apps” can be installed on a Blackberry? Just have the BES software forcibly un-install “apps” that aren’t on the approved list. To top it off, all communications between the various Blackberries and the BES software is encrypted without the end user being able to disable it.
This approach involving communication with a central security provider coupled with stronger on device data access protections has made the Blackberry the obvious corporate solution for security minded companies. It is too bad that RIM hasn’t found a way to enhance their device’s user experience as all other device platforms appear to be eclipsing RIM in that regard. The flexibility your iPhone, Android, WebOS and Windows device has in allowing end users to have nearly 100% control over device level functions means the expectation that a user hasn’t somehow disabled or manipulated or even installed malicious software (knowingly or unknowingly) is completely non-existent. Add in “jailbreaking” where even basic end user constraints are removed from a device and it is next to impossible to be assured a device is in any configuration baseline let alone “secure”. Sure, web browsers can have vulnerabilities as well as malicious plug-ins installed, malware, etc., but there exists some ways to detect that a users “device” has materially changed enough to engage in additional levels of authentication. More on this additional authentication later in this article.
So, what plausible options exist?
First, from a security perspective, if there is no way to completely know a device is “secure” (whatever that means), then one has to assume the device is “un-secure”.
This means one has to expect that any “app” deployed on a phone is completely vulnerable to attack.
Thus, any thought of storing any information, such as a password or even a user name to help save typing for logging in to a bank system is out of the question. Anything that the “app” creates for some security purpose also can’t be trusted. Thus, generating any unique device identifiers or user identifiers needs to be assumed compromise-able. Even trying to re-use the current on-line “device profiling” security technique where unique, seemingly, non-changing device attributes (like OS levels, browser versions, video and audio hardware configurations, etc.) are used to link a human to their device accessing their bank data isn’t available today on mobile devices.
The security concept in “device profiling” is that if you are logging in from a “known” or “registered” device, then there is a stronger likelihood it is the same user compared to a user that was logging in from a “known” or “registered” device for the last umpteenth logins but now is logging in from a new device. In this new “device” scenario, the ability to ask the user knowledge or challenge questions or send an email or SMS message with a one-time password helps to further determine who the user really is. Mobile devices currently don’t allow “apps” to gather such “device profiling” data from the device. The positive for privacy fans becomes a negative for legitimate uses of such device identifiable information such as banks.
The data, like a device or SIM card serial number, which is not programmatically accessible to marketers or other folks looking to track your device and your where abouts is also now not available to banks which could use this to aid in the customer authentication process. Example explicit technical discussions confirming this challenge on the Andriod platform here.
Lastly, the growing/mainstream typical “out of band” mechanisms for authenticating on-line users is leveraging the user’s mobile device. Need an extra factor to authenticate a user on-line? Send a random 8 digit number as an SMS message to their phone. Then, if the user attempting access on-line can type in that 8 digit number in a reasonable amount of time, it is more likely the user and not someone else. A banking “app” is already running on the user’s phone, so any phone call, email or SMS text message to that user would arrive on their … phone. Thus, so much for that additional useful authentication factor.
Thus, with in-secure devices running end user manipulatable applications without a strong mechanism to tie a user to their device programmatically, it is going to take some significant improvements of any kind in order for the functionality one enjoys interacting with their bank on-line to be matched feature to feature on mobile devices in the near future.