Hi Josh,
Thank you for given us this very exhaustive course about the topic. Usually i store password in an array in logic, but right now, i will use lookup file(external dictionary) and download only the one regarding specific user, the first time they are using applications and store it in the devices (tablet or other computer).
(A parenthesis, when you introduced CSDB format, one of your goal was to reduce the number of files, it's why i'm asking myself why we can't have a CSDB supporting also main data and external dictionaries data...I'm more at ease with managing less data file).
Right now, without strong password protection (encryption) with best available methods, whatever non skilled person can connect to CSWeb and steal a whole survey/census database in minutes and disseminate it...
The best way to protect both the password file and the data file is use set up a password, pin code or fingerprint in the Android settings. When you do this Android encrypts all the files on the tablet using hardware encryption which is must stronger than anything that you can do in CSPro.
Right now, this can't protect any data file or password file since an enumerators having the pin code/password etc can copy or transfer over internet whatever file and open them on another computer. So, i never seeing the importance of this way.
The settings() are stored are in a secure area of the tablet so it would be pretty hard for anyone to get to them (if someone is able to root the Android device and they know where to look they could probably read them but that is no easy task).
It was very easy for me to see theses settings and modify them in the past. I don't know if you changed the way you stored them in recent versions.
We are planning to create a password protected version of the csdb file in a future release which will eventually simplify all of this.
This is a solution who will facilitate password management and data security. So I would like that you encrypt the settings() database, cslog database not only the CSDB.
And also, it would be always very urgent to protect the CSDBE password with hashing, salt and other proved way.
So passwords used to:
a) Sync data to server;
b) User access of applications and right to add, modify, verify data;
will be stored in the encrypted CSDB file protected with password who must be secured by best proved way.
Best Regards,