Hello,
There are currently two official F-Droid clients:
-
F-Droid, the classic full-featured client, and
-
F-Droid Basic, a modern client with a reduced feature set.
I would like to propose creating another official client with an even more reduced feature set, which would be marketed as a “hardened” / security-focused client.
Rationale
Some people consider using the existing F-Droid clients as a security threat. To understand why, one should have the Android OS security model in mind. With regards to installing apps, the Android OS security model assumes two things:
-
Trust in the app author, materialized as a cryptographic signature in the APK. The Android OS will block an app update if the new APK is not signed with the same signature as the old one, which is assumed to be the signature of the app author.
-
Trust in the app store, materialized as a specific permission that needs to be granted to each app store. The OS will block an app install if it the app store that installs it does not have this permission.
The current F-Droid clients can be considered to break this model:
-
The trust in app authors is broken, as 91% of the apps distributed by F-Droid are built and signed with a signature managed by F-Droid instead of their author. This means that F-Droid could change what these app contain without the knowledge or consent of their author. This does not concern the 9% of apps that are reproducible by F-Droid, and therefore signed by their author. (Note that the Google Play Store also breaks trust in app authors: apps are now required to let Google manage their signature in order to be published on Google Play.)
-
It breaks the trust in app stores. The F-Droid clients allows users to install apps from additional repositories. This means that users could add repositories that distribute apps that are not curated by F-Droid and therefore potentially unsafe using the same client, without the Android OS asking to grant an additional permission for it.
Proposal
I would like to propose creating a new official client that would:
-
Only list and install apps from the official F-Droid repository that have reproducible builds,
-
Not allow adding other repositories (the client would have the Tethered Network antifeature),
-
(Optional) Have an option to share an APK before installing it, like Obtainium does. This would let users verify an the APK signature using an app such as AppVerifier.
I believe that this new F-Droid client would be beneficial to many users that are currently unable to use F-Droid due to their threat model. Combined with the guarantee of FOSS reproducible builds that only F-Droid offers, this could become the most secure way to find and install apps on Android.
Apart from an optional new feature, creating this client would only require removing functionalities from the F-Droid Basic client. This could therefore be implemented as a fork from the F-Droid Basic client and would need a low development time and a be minimal maintenance burden.
Please let me know what you think.