google / taqo-paco

Desktop and new mobile client apps for the Paco user behavior research platform (https://www.pacoapp.com/).
Apache License 2.0
12 stars 10 forks source link

Secure user data on macOS #9

Open taqo-issues-bot opened 3 years ago

taqo-issues-bot commented 3 years ago

Issue by rundong08 Fri Dec 13 22:20:42 2019


On iOS and Android, all the user data are written into a private container that other apps cannot access. On macOS although the user data are still written into a sandboxed container, that sandbox can be accessed from outside, namely at ~/Library/Containers/your.app.bundleId. This may cause privacy issues when the surveys are sensitive (e.g. health related). We need to secure user data on macOS (e.g. by encryption).

Note that not only the SQLite database, but also the files storing joined experiments, need to be protected. For example, one may infer a user's health condition based on which health related experiments the user has joined.

taqo-issues-bot commented 3 years ago

Comment by BobEvans Fri Dec 13 22:29:33 2019


Related: Mike is converting local storage to use flutter_secure_storage which will cover the experiments case. It is unclear if this is a good idea for the events data (sqlite) since it can grow to be very large.

taqo-issues-bot commented 3 years ago

Comment by rundong08 Fri Dec 13 23:04:18 2019


Maybe one can use flutter_secure_storage to store an encryption key and store the real database in the file system but encrypted using that key.

BTW, the API of flutter_secure_storage seems to be designed for iOS and Android exclusively. For example, they have iOptions and aOptions explicitly in the API argument write({@required String key, @required String value, IOSOptions iOptions, AndroidOptions aOptions}). Extending it to other OSes may break the API compatibility with upstream.

taqo-issues-bot commented 3 years ago

Comment by BobEvans Wed Dec 18 21:57:41 2019


Good idea.

On macOS we can do the same thing with KeyChain, we may just have to do a platform specific branch either to using the flutter_secure_storage plugin or to using KeyChain.

On Linux?