I installed Bitwarden from F-Droid, but I happened to notice yesterday that Bitwarden was in my list of apps with updates available from Play Store, even though I installed it via F-Droid. Why would that be?
I know this is a better question for the Bitwarden forums, but I don’t have enough street cred there to make a post.
It has the same signature.
Ok thanks. Assuming I’m a colossal moron, an absolute clown-shoe wearing buffoon about technology … what is a signature? I’ve heard this term used in tech forums, but as a humanities guy I’ve never quite grasped it.
It’s a way to verify that an app, or any package of data really, actually comes from the source you’re expecting it to.
It’s based on some clever math, but basically, an app developer has two very large numbers that share a certain mathematical relationship, but if you only know one of them, it’s extremely hard to calculate the other one. One of those numbers (the private key) they keep securely to themselves, the other number (the public key) they publish permanently for everyone to see.
Now when the releases an app or an update to it, they put both the app and their private key into a special formula, which produces a new big number, called the “signature”. Then, they publish both the app and the signature to the play store.
Now, when your app store sees an update of the app, it won’t just blindly trust it, but first check that it’s actually legit, so that it doesn’t accidentally install a virus or something. To do that, it downloads the app and the signature, and puts them into another special function, together with the public key that was used to sign the version of the app that you currently have installed. Now the clever part is, because of the special mathematical relationship between the public key and the private key, this function can check whether the signature was in fact produced by combining the app with the private key of the developer, without actually having to know that private key. This way, it can now be sure that this app update is actually coming from the original developer - unless they have been compromised and their private key leaked.
So, technically, saying “it has the same signature” is not quite correct. The signature changes with every update. The thing that’s the same and allows to install the update is the key being used to generate the signature.
This I very close to how (asymmetrically) encrypted messaging works, btw. If you have a key pair like above, you can encrypt a message with one of the keys in a way that it’s only decryptable with the other one. This way you can have people send you encrypted messages without anyone else knowing the encryption key, not even the sender of the message.
This is fascinating and an excellent ELI5 of something that seems so seamless and simple from the user side. Thanks!
Apps (apks) must be signed before uploading to distribution sites like play store or f-droid. Some devs are signing their app releases with different keys, because for example the google play version of the app has to contain stuff they don’t include in f-droid versions. These are mostly privacy related things, google does not allow in their play store. In case of bitwarden the two versions are most probably the same and they’re signed with the same key. So if there’s an update in either of the two distribution sites it will show you, that there’s an update. Now I use Aurora Store instead of play store for apps that are not available in F-Droid and you can blacklist apps there, so I only get updates from F-Droid.
So are you saying that the Google Play version of an app is likely to have more privacy than the F-Droid version?
Also, I’ve noticed the F-Droid filter on Aurora Store is broken. All of my F-Droid apps still appear in my list of updates.
fDroid filter works for me 🤷
you can put the apps you want ignored in the black list of Aurora too
I think blacklisting only hides the apps from Google, not Aurora
then when you blacklist apps, aurora no longer searches for their updates either 🤷
try it for yourself. next time there is an update for an app; instead of updating, blacklist it. (you can always undo
Okay, so the only reason to blacklist an app would be if you didn’t want to update for some reason
or if you want to update from other repositories
No, the opposite