18.2. Security To-Do list

18.2.1. Plain text passwords in setting up connection with RabbitMQ / generating passwords

Currently, each time the connection with RabbitMQ is made (at least once per session), the users password for her RabbitMQ account is sent in plaintext to the server. The connection is safe (SSL). Nevertheless, it would add to security of the user if it were possible to have RabbitMQ safe not the plaintext password but a hash of it. The client then hashes the password before requesting a connnection.

On the one hand, if a man-in-the-middle intercepts the hashed password, he can use it to connect to RabbitMQ on behalf of the user. On the other hand, the user’s password is not compromised. As users tend to re-use passwords over accounts, hashing passwords adds a benefit.

All this should be weighed against the possibility to have the manager of the RabbitMQ server generate a long password. As the end user stores this password and never needs to enter it manually, this is a good alternative.

This also protects the end user from brute-forcing passwords.

Note
DESIGN DECISION is to generate long passwords and keep them hidden from end users.

18.2.2. Plain text password information in fields

Several user roles in model://perspectives.domains#CouchdbManagement have screens that show end-user’s passwords in plain text. This is not recommended. A solution would be to introduce a Range type password (PPassword) and have the smartFieldControl generate inputs whose contents are by default not readable.

18.2.3. Encrypting the contents of Deltas

A Delta is part of a Transaction as sent from one user to another. It describes a state-changing operation to be performed on the receivers system. Currently, this information is not encrypted but in plain text. Consider encrypting delta contents before sending it off.

18.2.4. System identifier / User identifier

Currently, the identifier of the sys:PerspectivesSystem instance and of its User role is derived from the username the end user chooses on setting up an account on a device. Instead, generate a CUID, at least for PerspectivesSystem or for both.

18.2.5. Store the local password in hashed form

When an end user sets up an installation that stores its data in a Couchdb installation, she must enter the password of that Couchdb installation. Currently, this password is stored in plain text in IndexedDB. It should be hashed instead.

18.2.6. Store passwords for Couchdb installations in encrypted form

Currently, passwords administered through model://perspectives.domains#CouchdbManagement are stored in plain text in role instances. Instead, encrypt them and decrypt before setting up a session with Couchdb.


1. If no authoring role is provided by the API caller, we take it to be the System User.