Editing Security usability

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
'''This is a WIP page, come back later.'''
This is a quick page on my feelings towards security and how most security software fails to be usable.
This is a quick page on my feelings towards security and how most security software fails to be usable.
I want to note that while the background and final sections talk about Android you don't need to follow them to get the main point of the article, it's just used as a concrete example.


== Background ==
== Background ==
Recently I read the article [https://wonderfall.dev/fdroid-issues/ F-Droid: how is it weakening the Android security model?] which provides a critique of F-Droid's security model and recommends people use Google Play Store.
Recently I read the article [https://wonderfall.dev/fdroid-issues/ F-Droid: how is it weakening the Android security model?] which provides a critique of F-Droid's security model and recommends people use Google Play Store.


The GrapheneOS developers provided similar critique but it contains numerous uncorrected errors. Instead of correcting this information they have chosen to [https://twitter.com/SylvieLorxu/status/1497624955705565188 threaten SylvieLorxu with legal action] for pointing out these mistakes. I strongly recommend reconsidering any trust towards GrapheneOS and its developers given this behaviour.  
The GrapheneOS developers provided similar critique but it contains numerous uncorrected errors. Instead of correcting this information they have chosen to [https://twitter.com/SylvieLorxu/status/1497624955705565188 threaten SylvieLorxu with legal action] for pointing out these mistakes. I strongly recommend reconsidering any trust towards GrapheneOS and its developers given their priorities shown here.  


== Usability ==
== Usability ==
Line 26: Line 26:


==Key management==
==Key management==
It's hard to discuss any security solution without discussing key management, so allow me to sidetrack for a minute.  
It's hard to discuss any security solution without discussing keys, so allow me to sidetrack for a minute.  


Keys are private tokens used in almost all modern security software to gain some useful security property such as confidentiality or authenticity. Unfortunately almost all modern security software requires manual key management. This dumps a few tasks on people.  
Keys are private tokens used in almost all modern security software to gain some useful security property such as confidentiality or authenticity. Unfortunately almost all modern security software requires manual key management. This dumps a few tasks on people.  
Line 42: Line 42:
The second task is backing up keys. People have to:
The second task is backing up keys. People have to:


# Create a secure storage location
* Create a secure storage location
# Copy the keys to the location
* Copy the keys to the location
# Backup the secure storage location as well
* Backup the secure storage location as well


Unless keys are used for something very important like signing packages or cryptocurrencies, people don't put much effort in to this task. Skipping this task can result in wasted time or loss of data, or even loss of finances.
Unless keys are used for something very important like signing packages or cryptocurrencies, people don't put much effort in to this step. Skipping this step can result in wasted time or loss of data, or even loss of finances.


People who take steps to back things must have enough knowledge to do it securely and create redundant backups. Doing this wrong (such as by backing up a key to cloud storage) can result in compromised keys.
In the case where they do take steps to back things up they have to have enough knowledge to do it securely and create redundant backups. Doing this step wrong (such as by backing up a key to cloud storage) can result in compromised keys.


The third step is to manage revoking and rotating keys. People have to:
The third step is to manage revoking and rotating keys. People have to:
Line 60: Line 60:
Requiring people to manage keys themselves is asking for a lot of trouble and mistakes. So why do it?
Requiring people to manage keys themselves is asking for a lot of trouble and mistakes. So why do it?


The answer is simple: Trust. Ask yourself:
The answer is simple: Trust. Who do you trust to verify keys for you? Who do you trust to backup your keys? Who do you trust to revoke and rotate your keys? Whoever or whatever you trust to accomplish these tasks becomes another link in the chain of security, and if this link is compromised then so are you. Security software that uses manual key management tries to avoid adding links to this chain of trust and instead act as a tool. A tool that's as secure as the person using the software. If you're diligent then the software won't betray you, but if you're sloppy then the software won't protect you.
 
* Who do you trust to verify keys for you?
* Who do you trust to backup your keys?
* Who do you trust to revoke and rotate your keys?  
 
Whoever or whatever you trust to accomplish these tasks becomes another link in the chain of security, and if this link is compromised then so are you. Security software that uses manual key management tries to avoid adding links to this chain of trust and instead act as a tool. A tool that's as secure as the person using the software. If you're diligent then the software won't betray you, but if you're sloppy then the software won't protect you.


My problem with this answer is that it brings up another question: Why doesn't the software mimic the trust I already have as a person?
My problem with this answer is that it brings up another question: Why doesn't the software mimic the trust I already have as a person?
Line 78: Line 72:
A lot of this really makes sense once you look in to the people that actually develop security software: They're almost always knee deep in to crypto-anarchism and other libertarian ideologies that hold the individual as the sole authority over one's life, with a rejection of things like mutual aid and social structures. These developers have an explicit distrust of authorities, big or small.
A lot of this really makes sense once you look in to the people that actually develop security software: They're almost always knee deep in to crypto-anarchism and other libertarian ideologies that hold the individual as the sole authority over one's life, with a rejection of things like mutual aid and social structures. These developers have an explicit distrust of authorities, big or small.


==Should you use F-Droid?==
==Case study: F-Droid vs Google Play==
Now that I've explained how I feel about security and usability, I'm going to circle back to the article I mentioned at the start of this page. As a summary, the article spends its time explaining how F-Droid as a project is technically inferior to Google Play and its process of curating and building applications has no advantages over Google Play.  
Now that I've explained how I feel about security and usability, I'm going to circle back to the blog post I mentioned at the start of this page. It focused on how F-Droid doesn't abide by the Android way of doing things. It's a  
 
=== F-Droid is a trusted party ===
Unlike Google Play, F-Droid builds and signs applications with its own keys. This means you have to trust both the developer and F-Droid to not tamper with the binary.
 
My immediate question here is: How do people verify these signatures? The answer is that the process is tedious and error prone and outside the ability of almost everyone using the application store.
 
=== F-Droid is not free of malicious applications ===
F-Droid and Google Play can both contain malicious applications.
 
F-Droid has a hard requirement on source code being available for an application which in theory weeds out a lot of obvious malware. But in practice nobody is really doing much more than a cursory look.
 
It's quite easy to find a malicious app on Google Play: Download anything that's free and watch it place ads all over your screen that clearly don't have your best interest in mind.
 
But where are the malicious applications in F-Droid? In practice there doesn't seem to be any at all.
 
=== F-Droid updates are slow and irregular ===
I agree with this criticism to the point I'd like to extend it to Linux distributions.
 
Software development usually only targets the newest version of software unless dedicated stable branches are handled by the the same developers. Shipping old versions of software effectively means you're shipping unmaintained and unaudited versions of software.
 
There are many distributions that ship old versions and backport fixes, but for security this doesn't work very well as most security bugs aren't publicly reported or even privately noticed. This applies especially to complex high risk software like your operating system kernel where any bug could theoretically be turned in to an exploit.
 
=== F-Droid supports older Android versions ===
F-Droid supports older Android versions and builds applications with support for older API levels. This causes newer systems to use weaker application sandboxes than they would otherwise need.
 
Naturally this isn't ideal, but the solution suggested in the article is to ditch support for old systems and complain to vendors to provide longer support cycles for devices.
 
In practice this doesn't work and ends up with users getting old insecure software. That seems like a bigger problem to me than sandbox improvements.
 
=== F-Droid doesn't pin TLS certificates ===
F-Droid communicates to its servers using TLS like most modern software does. It trusts the pre-installed certificate authorities on a device which might intercept the communications.
 
My response to this is that if you have TLS interception using compromised certificate authorities then you likely have much bigger problems than F-Droid updates as this would affect basically every application that connects to arbitrary servers using TLS, such as your chat and email applications.
 
=== F-Droid used old signature schemes ===
F-Droid held out on using the APK v1 signature schemes which were ineffective and compromised, allowing attackers to trick Android in to installing APKs made with false signatures.
 
Given this issue is fixed and never exploitable as F-Droid used its own signature scheme that worked on any version of Android, this issue is mainly brought up to demonstrate a pattern of F-Droid not keeping up with Android security practices.


It proposes that people: 
While this is true, the article doesn't explain that this pattern is mainly because nobody's working on these issues. They don't provide much or any benefit and take time away from working on other parts of the project. To make it clear I'm not defending being slow to adopt security practices. But the article paints a picture of carelessness that I don't think is actually the case.


*Assume applications might be malicious or exploitable
=== F-Droid misleads people about permissions ===
*Pay close attention to permissions you grant applications
F-Droid lists classic static permissions for very old Android versions on its website with wrong descriptions and doesn't curate packages based on permissions they require.
*Download applications from GitHub or Play Store
*Verify signatures using apksigner upon install
*Sandbox Play services using GrapheneOS
This conclusion kind of demonstrates a strange detachment from reality that security developers tend to have: This is all based in theory where an individual manages their own security process and vets everything manually.


Reality is a different story. In reality:
I'm not too sure how big of a deal this is given Android's permission system is a mess. People are taught to grant permissions to applications unconditionally lest they suffer consequences such as the app not working or bother them.


* People install whatever applications that solve their issues
=== F-Droid uses the same application ID as developers ===
* People grant whatever permissions they ask for
F-Droid uses the same application ID as developers
* Google Play is filled with malware, F-Droid is not


Given an actual person it seems like suggesting they use Google Play is a disaster waiting to happen.
* Installing third party APKs might give errors
* Users are misled about permissions at install time
* Unattended updates aren't supported


F-Droid may have worse security technologically but it has much better security socially.
=== Conclusion ===
[[Category:Research]]
Please note that all contributions to JookWiki are considered to be released under the Creative Commons Zero (Public Domain) (see JookWiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)