Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How is the app better than droidfs? #8

Closed
Wjxfi opened this issue Aug 18, 2023 · 9 comments
Closed

How is the app better than droidfs? #8

Wjxfi opened this issue Aug 18, 2023 · 9 comments

Comments

@Wjxfi
Copy link

Wjxfi commented Aug 18, 2023

it's important to know. I think that app is safer and more proven.

@aashishksahu
Copy link
Owner

Although DroidFs is a good option and is mature, the two apps in question use different approach to store files. Droidfs uses gocryptfs as a file system which has encryption capabilities. But I believe that on an android 11+ phone it is a bit redundant to encrypt files if you are storing them in the app's internal storage. As per my observation, when you create a vault in DroidFs, it encrypts all the files before storing them in an already encrypted location (the app-specific storage).

Now, two things are happening, first, the app is performing encryption operations which do use processing power, therefore, consuming battery and second, every operation performed on a file has the possibility to fail due to plenty of reasons such as an OS deadlock, I/O problems, external operations conflicting with the app's operations etc.

In terms of security, droidfs has solid and proven encryption scheme but also opens certain vulnerabilities that may be existing in gocryptfs or the android implementation of it, since android doesn't use mountable file systems like desktops os does.

I believe mobile apps should be simple, fast and power efficient, therefore, DroidFs, although it's a remarkable implementation of gocryptfs for android, comes with potential pitfalls such as redundant operations and can carry forward the problems already existing in gocryptfs.

Safe space on the other hand reduces redundancy and prefers simplicity, which results in faster performance and power efficiency. Surely, the app is in it's early stages so there's more optimisation to do but I believe both apps have a good potential to develop and can cater to the needs of the privacy conscious :)

@Wjxfi
Copy link
Author

Wjxfi commented Aug 19, 2023

I am using cryfs via droidfs. I don't see any vulnerabilities in it. and, did you just admit that your app is less secure because you're not encrypting everything like in droidfs? @aashishksahu

@aashishksahu
Copy link
Owner

Security isn't a linear scale where something is "more" or "less" secure. Security vulnerabilities can arise from all directions, whether it is a network based attack, a hardware based attack, freezing the ram and stealing it, physical attacks on the user, all kinds of things are possible. Security isn't just about the patches or updates you install.

As for whether my app being less secure, if your choice of app encrypts a file twice and that translates to being the app "more" secure, then, yes my app is "less" secure, just like locking a door with a padlock and locking the padlock again with another padlock is "more" secure than locking the door with just a single padlock.

Surely, there are some things that definitely need to be encrypted such as contents of a password manager and device keys, but my app is meant for people who just want a file manager where the files are not globally accessible by other apps, because your phone is mostly the apps you use and apps do have a possibility to collect metadata of the files stored in common, globally available directories (not accusing anyone here, just quoting a possibility).

But if we look on the other side, a lot of people would give up security because it's not convenient and easy to use, a lot of people don't use a password manager (which they should btw). Giving them one more password to remember will drive them away from making a choice that favours the privacy of their data.

Coming to cryfs, on their website, they literally have a page where they are pointing out the problems with other even more tested and proven applications like Veracrypt Link to the article, according to this article, every other product is good but their product is better (that's marketing 101).

At last, I would suggest that, please don't think of security as just a code and software thing, and apps aren't just made for tech-savvy people. In fact, it is the duty of the tech savvy to make tech easier for other people.

@CodeCracker-oss
Copy link

Security is only as strong as its weakest link.

Full disk encryption on phones has serious issues, and through no fault of those who implemented it.

Phone's for most everyone are on 24/7 to be able to receive calls, and text for example. Which in the case of encryption would have to be in AFU (After First Unlock) state where the encryption key is in RAM.

While Android I know takes serious measures to protect said key the best it can, all known successful attacks occurred in AFU from the likes of companies like cellabrite.

To my knowledge there hasn't been any known successful attacks in BFU state.

DroidFS data would likely be locked (no key in ram) at the time device is lost/stolen. There is also no downside from locking it completely like there is with BFU state in android. As it will only prevent access to data within it and not interfere with other apps on device.

Root access also would be a concern if a user has no idea what they are doing, or granting bad/malicious app root access, then it could access it's internal data.

Due to these concerns (and the fact that I haven't seen much documentation or knowledge of the security of android's encryption like I have with VeraCrypt or luks) i choose to not store much personal data on my phone, and any I do have to move it to my pc asap.

@aashishksahu
Copy link
Owner

I understand the need for encryption and I agree with you, but there are a few reasons why I haven’t encrypted everything:

  1. Security audits are expensive, and these must be done every year to stay compliant, without an audit or a pen test the encryption is only good on paper
  2. I’d prefer relying on device encryption rather than something I cook up. Let’s say I implement encryption, now where would I store the key after decryption and what about when the user says that they find it inconvenient to unlock the app every time with a master password, moreover, if I use the keychain and biometric to generate and store the keys them we are basically relying on device encryption.
  3. I am not saying encryption is impossible, it’s just that it will require a lot of expertise and testing, in other words, time and money.

I love encryption but, building something that isn’t thoroughly tested is no better than not using encryption at all. That’s why we use veracrypt and gpg and not jojo’s bizzare encryption tool. But thanks for sharing your ideas, I appreciate it.

@CodeCracker-oss
Copy link

I understand your points, I am in no way criticizing your app.

I however distrust the security of device encryption on my phone because of the points I made.

Security audits are important, unfortuneatly there isn't any open-source software out there that regulary receives audits.

I do see that if using DroidFS and biometric to save the password hash, it is basically relying on device security then. Entering a long password each time would indeed be very inconvenient.

I am not saying you should implement encryption, there is already DroidFS that does that. Not a bad thing to have other options for other use cases.

It seems to me that your app would offer more privacy than security, the security of the data would be outside your control as it is relied upon by the device, manufactured by shady companies. All apps data, not just yours receives the same security. It is just that no app can access the private data (/data/data) of another app unlike internal storage.

Implementing a sort of root detection method, and warning users about it and it's downsides if user misuses root might be beneficial to nontechnical users. Just an idea

@aashishksahu
Copy link
Owner

Good news, I have already implemented this root check feature :)

@CodeCracker-oss
Copy link

Good news, I have already implemented this root check feature :)

Glad to hear. It didn't trip for me cause I stopped rooting last year when I bought my pixel 8 as I recognized I no longer was using using any root required features. Hopefully google doesn't do anything that makes me have to root again lol

@Wjxfi
Copy link
Author

Wjxfi commented Nov 4, 2024

Security is only as strong as its weakest link.

Full disk encryption on phones has serious issues, and through no fault of those who implemented it.

Phone's for most everyone are on 24/7 to be able to receive calls, and text for example. Which in the case of encryption would have to be in AFU (After First Unlock) state where the encryption key is in RAM.

While Android I know takes serious measures to protect said key the best it can, all known successful attacks occurred in AFU from the likes of companies like cellabrite.

To my knowledge there hasn't been any known successful attacks in BFU state.

DroidFS data would likely be locked (no key in ram) at the time device is lost/stolen. There is also no downside from locking it completely like there is with BFU state in android. As it will only prevent access to data within it and not interfere with other apps on device.

Root access also would be a concern if a user has no idea what they are doing, or granting bad/malicious app root access, then it could access it's internal data.

Due to these concerns (and the fact that I haven't seen much documentation or knowledge of the security of android's encryption like I have with VeraCrypt or luks) i choose to not store much personal data on my phone, and any I do have to move it to my pc asap.

that’s what i originally meant, thank you. the phone’s memory is unreliable, according to a security audit from trails of bits, one of the largest companies in the field. And almost any root check can be bypassed with enough resources. much better local encryption using, according to many, cryfs, which, however, is not exactly the best, there are others, but droidfs supports storage of files in hidden storage too, from where you can also not read without root.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants