Iâve been watching Android mature over the past few years, and with KitKatâs release last year, I was actually quite intrigued and finally got a fully featured Android device: the Nexus 7. This is possibly the best affordable Android tablet to date. With Lollipop released, I wanted to see if I could get used to a stock Android experience and perhaps pick up a phone running Android. It was mostly smooth sailing, but there was an issue if I wanted to actually get an Android phone as my main device: I found permissions pretty problematic, to a point where I couldnât see myself using this operating system for my day-to-day use.
Last year, right after KitKatâs public release, I was looking into Android as I was building Cordova applications, which had to run on both iOS and Android. For me to be able to support Android, I needed to check it out again. After a serious look at the system, I was pretty impressed at the progress Android had made in the previous two years. The last time I had used Android at the time, was when I was still running around with a cheap Android handset (the Galaxy Gio) which ran Android 2.2. I replaced that phone a while later with the now two-years-old iPhone 5.
So far, there is one issue that has kept me from trying out an Android phone as my primary driver, and thatâs how permissions are handled on Android. I want to talk about that.
The evolution of privacy controls on iOS
Iâve been using iOS since iPhoneOS 2.0 on my first iPod touch seven years ago, and each iteration of iOS has improved privacy controls.
Starting in iOS 4, apps that required access to location data or wanted to push notifications, needed to ask the userâs permission to be able to do this. iOS itself puts up the dialog box, so itâs not optional. Hereâs a great video where Steve Jobs explained how they think about privacy at Apple. When Walt Mossberg asked him about the privacy scandals1 that had happened that year (in 2010), Steve explained Appleâs vision on privacy. This is what he said:
âSilicon Valley is not monolithic. Weâve always had a very different view of privacy than some of our colleagues in the Valley. We take privacy extremely seriously. As an example: we worry a lot about location in phones. We worry that some 14 year old is going to get stalked and something terrible is going to happen because of our phone. And so, as an example: before any app can get location data, we donât make it a rule that they have to put up a panel and ask, because they might not follow that rule. They call our location services and we put up the panel. Itâs saying: âThis app wants to use your location data. Is that okay with you?â Every time they want to use it. We do a lot of things like that, to ensure that people understand what these apps are doing. Thatâs one of the reasons we have the curated App Store. We have rejected a lot of apps that wanna take a lot of your personal data and suck it up into the cloud. A lot. So, a lot of people in the Valley think weâre really old fashioned about this. Maybe we are, but we worry about stuff like this.â
When Walt Mossberg brings up moving to the cloud, Steve adds to his previous statement:
âPrivacy means people know what theyâre signing up for. In plain English, and repeatedly. Thatâs what it means. Iâm an optimist: I believe people are smart, some people want to share more data than other people do. Ask âem. Ask âem every time. Make them tell you to stop asking them if they get tired of you asking them. Let them know precisely what youâre going to do with their data. Thatâs what we think.â
This vision was expanded in later versions of iOS: today, on iOS 8, your app can will prompt you for anything that might expose personal information, including: contact information, access to your photo library, access to your location, access to your camera and microphone. Thereâs also permissions to limit background activity and push notifications for apps, so you donât get annoyed at an app using too much energy in the background or an app sending you too many notifications.
In addition to those settings, you can also set these on a global level, as well as some extra permissions, like toggling mobile data use on a per-app basis. This means you can disable apps from using your mobile data connection.
iOS Security whitepaper
Thereâs quite the impressive whitepaper on iOS security out there. I wonât go through all the details, but you should definitely read the whitepaper if you are a developer who is interested in security and encryption.
The link I provided here is recent as of iOS 8.1. From their whitepaper:
Apple designed the iOS platform with security at its core. When we set out to create the best possible mobile platform, we drew from decades of experience to build an entirely new architecture. We thought about the security hazards of the desktop environment, and established a new approach to security in the design of iOS. We developed and incorporated innovative features that tighten mobile security and protect the entire system by default. As a result, iOS is a major leap forward in security for mobile devices.
Itâs clear that Apple never intended to expose the filesystem to the end-user, not even to developers. On Android, thatâs a different story entirely. Iâm not saying Google is wrong for doing that, but from a security point of view, it could be considered a vulnerability. It could also be seen as a layer of complexity: itâs not easy to use a filesystem on a mobile device. But it certainly is useful, as I have noticed during my time with the Nexus 7, although only on a superficial level.2
Another key point that is interesting in the whitepaper is the role of encryption on iOS. Fortunately, Android 5.0 now also supports system-wide encryption (and itâs automatically enabled on the newest Nexus devices), which iOS has had system-wide since iOS 7. If you had a passcode or TouchID set up, you have encryption set up on your iOS devices. Now that Android supports this, it strengthens their case for being good with privacy, but it doesnât solve their permissions problem, unfortunately.
Android: Demands, not permissions
On Android, the story about permissions is a bit different than what it is like on iOS. Apps have always required permissions when you install them. Itâs just a list, and you have to accept these permissions.
I repeat, you have to accept them for the app to install. You cannot use the app without accepting all the permissions. Before Android 4.4, Google actually had a (fully functional) configuration utility for Android that allowed you to modify permissions. But this functionality disappeared in the final build of Android 4.3, and there is still no option to change or modify app permissions in Lollipop, one major Android version later.
Internet access permission
The internet access permission is also unique to Android. This is useful in scenarios where you used offline ad-supported apps that offered no paid ad-free upgrade. This way, you could just disallow internet access and boom: the app is, in many cases, ad-free. This is where Android had a leg up, and itâs deprecated since Android 4.0.3
But waitâŠ
Right now, thereâs a bunch of Android experts yelling at me right now. But hold on, I can hear you say, it is possible to completely manage permissions on Android, after rooting your phone!
So yes, there are solutions available on the Play Store. One of them is AppOps. Unfortunately, AppOps cannot allow or disallow access to permissions for system apps. (They might be able to fix this, and I would imagine this will only work if you are rooted.) The problem is that these applications break when large system updates are released. Were Google to build that into the OS, system upgrades wouldnât pose a problem for the people who want to tweak app permissions.
Letâs talk about rooting and jailbreaking
So yes, itâs absolutely true. If you have rooted your phone, you can use third party apps that completely modify permission access. (If youâre wondering what rooting is, keep reading. If you already know, keep reading regardless.) I wanted to write a different post about jailbreaking and rooting, but I included it here since itâs relevant to the article. Rooting your phone leaves its system files open (and possibly, in some scenarios, vulnerable), since you have now been given total control to everything on your phone. You can even write to (and modify) system files, which are restricted by default, so your system cannot be compromised. By rooting, youâre removing this layer of protection.
Rooting is the process of allowing users of smartphones, tablets and other devices running the Android mobile operating system to attain privileged control (known as âroot accessâ) within Androidâs sub-system.
The thing is, geeks like me will want to root their phones if they really want to manage permissions. As long as you know what youâre doing and youâre really careful, rooting isnât much of a security risk. (Security is a nice fallback, but in the end, itâs just a crutch to avoid problems.) In the end, though, it leaves your phone open to vulnerabilities that might be exposed, and those arenât always under your control.
But you can jailbreak iPhones too
But hey, isnât jailbreaking your device kind of similar to rooting? Youâre exposing your entire system if you donât pay any attention. The only thing different is that Google doesnât mind rooting (they even have apps on their store that require root access), whereas Apple doesnât support jailbreaks.
You can debate about the names (âjailbreakingâ sounds worse than ârootingâ), whether one is better than the other, and functionality-wise: from a security point of view, from an ease-of-use point of view, and from a power-user point of view. Feel free to draw your own conclusions.
Jailbreaking is a form of privilege escalation, and the term has been used to describe privilege escalation on devices by other manufacturers as well. Android rooting is the process of allowing users of smartphones, tablets, and other devices running the Android mobile operating system to attain privileged control (known as âroot accessâ) within Androidâs subsystem.
The fact remains that rooting and jailbreaking are actually the same thing, with just different names slapped on the process. Youâre exploiting a weakness in the operating system to gain total control of the device.
I want to use my phone, not tinker with it
Well, why donât you root your tablet, then? You are a developer and a geek. You know your way around Android already, you know how to use a CLI. Thatâs what you might be thinking. I considered this as well. But as long as this is a third party fix, thereâs no way to guarantee that this wonât change.4
I donât want to mess with my phone either, I want a great experience out of the box. And having to root my phone in order for me set my privacy settings, just doesnât cut it for me. I understand that this is enough for a bunch of people, but that doesnât mean nothing should happen to permissions management on Android. This is why I will probably be sticking with iOS devices at this time.
Sometimes things break when you tinker
Iâve used many Linux distros for a long time. If there is anything I learned during that time, it is that sometimes things break when you start tinkering. I need my phone, I need it to be reliable. It canât break all of a sudden.
Possible issues
Androidâs permissions system could (and should, in my humble opinion) be vastly improved. Of course, there are possible issues that might arise with the implementation or insertion of such a system.
If youâre not gracefully handling permissions, that might mean apps stop working, and that is an issue. Making permissions accessible and understandable to users is another thing. Do regular people actually want this? Perhaps Iâm in the minority. Iâd even wager that I actually am. But privacy is an important subject that people need to be educated on.
Educating people about privacy
But what about regular people who want to get things done? They donât want to look into this. They just accept the dialog that says the app can access all their data, and they donât think about it much. Some people donât even know what they are agreeing to.5
And thatâs just not okay. It should be much easier! For a company such as Google, where open is an important word, I find it hard to believe that permissions canât be managed from the core. Weâve even got encryption on Android now, but I canât toggle whether Facebook can access my location? Itâs disappointing, because if it werenât for this, I would have gladly given Android a try.
What this post isnât: Android vs. iOS
Now, before I end this longer piece, I want to point out a few important things.
First, this isnât about one system being the best. I enjoy using both operating systems. I enjoy using my iPhone 5, and I enjoy using my Nexus 7. Theyâre both excellent devices. They both have their strong points. (I just donât install many third-party apps on my Nexus 7 because of privacy concerns.)
You can get apps via the Play Store that you wonât ever find on the App Store for iOS. For instance, Android has the best video player, hands down, with MX Player Pro, and an amazing emulator option with DraStic.
So, whatâs the most important takeaway from this post? Sure, Android has a permissions problem. But whatâs more important is the following: we need to educate everyone on security risks of granting blanket permissions. People on both iOS and Android are granting permissions they might not want if they knew what data these apps could access.
Regardless, after everything that happened over the past year with privacy mishaps, I believe we have every concern to be a little bit more careful with our data and what apps do with it.
Theyâre not disappearing this year, either. iCloud was under fire for a period of time after celebrity images were leaked from what seemed to be an iPhone backup from iCloud. It was later revealed that third parties had gotten access to iCloud accounts via social engineering. (Meaning that Apple wasnât responsible for the breach. However, they did fix a few possible leaks in their system, including a login form that had no limit to the amount of times you could try to login to iCloud. This issue was fixed not too long after it came to Appleâs attention.) â©
I find myself using the Android filesystem in kind of the same way I use iTunes to transfer individual files to my iOS devices. Certainly, a filesystem is a bit more convenient since you can create folders, but in the end, itâs not that big of a difference. â©
I wish this was a setting on iOS. Unfortunately, you can only set mobile data access in iOS, not limit WiFi access. To be honest, it would overkill, because most apps need internet access nowadays. â©
Or, like I said, break the third-party app when the OS receives an update. â©
Some people, and Iâve seen this many times, just press âI agreeâ to any text that pops up on their screen. They do the same for notifications and useful error messages that say something about what went wrong, but they just click them away without reading them. â©