2

We have multiple desktop applications that are being used by clients on unconnected desktop computers. The application instances are being used by multiple users secured by username and password. The problem is that these users share the same windows account and thus have the same security level in the operating system. In addition to this these applications store privacy sensitive data in a local database (LocalDB).

In an ideal world the applications would be connected to a secured server that stores the data, but this is not possible. What would be the best approach to improve the security of handling privacy sensitive data in a local windows application? These applications should in theory conform to the privacy regulations in Europe and Hipaa in the US.

Quoted from the Health Insurance Portability and Accountability Act of 1996 (HIPAA):

A covered entity must, in accordance with §164.306… Implement a mechanism to encrypt and decrypt electronic protected health information.” (45 CFR § 164.312(a)(2)(iv))

Encrypting data in a local database is not easy, because our current solution (LocalDB) does not support it. The harder question is where should we store encryption keys on a desktop machine?

closed as too broad by Xander, Steve, CaffeineAddiction, Matthew, Rory Alsop Apr 28 '17 at 17:00

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • Not quite sure what you mean by the database doesn't support it. You can use standard libraries to encrypt your data and then store it in youur database (eg the Rijndael provider in.Net.) For key storage, read this: msdn.microsoft.com/en-us/library/windows/desktop/… – iainpb Apr 11 '17 at 11:09
  • Sure we can encrypt the data, but that would mean we need to encrypt everything reducing the database to a key-value store. The problem with the key vault is that it is only as secure as the windows account. Our users share a windows account which probably means they'll write the password on a note next to the computer. – Wouter Apr 11 '17 at 11:13
  • 1
    If they are sharing the same OS account, you already have privacy and HIPAA issues before you even get to your app ... – schroeder Apr 11 '17 at 11:31
  • Are the users local admins, too? – schroeder Apr 11 '17 at 11:33
  • The reason they share the same account is because users need to be able to quickly change the current user. The system is also used in anonymous mode where nothing is stored. – Wouter Apr 11 '17 at 12:48
0

We've been getting an increase in questions like this on this site: standalone workstations processing sensitive data.

You want to be able to gain the benefits of a networked solution but you can't because everything needs to be local. There is a way around this: Docker.

Using Docker, you can create a network and host the elements that you need to secure on different containers. These containers can only be accessed from the docker command or by the exposed ports on the container. This becomes an attractive solution to separate an authentication database.

Securing the ports should be simple enough, but securing the docker command might be a trick, depending on how your workstations are set up and what permissions they have (local Admin?). If they are not local admins, you can use the Access Authorization Plugin.

This way, you can gain all the benefits from a MVC architecture, but on a self-contained, disconnected workstation.

This is not a perfect solution, and Docker is still trying to "find itself", but it is a potential solution depending on your requirements.

  • This kind of solves the problem, but would cause major problems with operations. The installation and update procedure would become a nightmare, docker and containers need to be installed and windows accounts need to be managed/accounted. Also repairs and system replacement would be significantly more difficult, because they need to backup data inside the docker containers when replacing systems for instance. – Wouter Apr 11 '17 at 12:51
  • 1
    Yes to all of the above. But, shouldn't most of what you list be done anyway in a moderately secure environment? You have a de-centralized environment with wild-west account management. If you want to impose security, you will have to put in some fences. And yep, you will tick off the cattle ranchers when you do. – schroeder Apr 11 '17 at 12:59

Not the answer you're looking for? Browse other questions tagged or ask your own question.