Skip to content

Encrypting sensitive (payment) data #180

@The-Ludwig

Description

@The-Ludwig

For the SEPA lastschriftmandat milestone we somehow need to save the payment information of some of our members.
Since this is the first time we ever really have to store highly sensitive data (compared to membership status this is orders of magnitude more important), we should really sit down for a moment and think about security.

We definitely need to access the payment information, so we are of course not able to hash the information. But we could additionally asymmetrically encrypt the payment information in the database.
The decryption key could then be stored outside the server, e.g. handed privately to the managing board of PeP (3 times in total)
Pros:

  • Even server-admins can't access the data
  • In case of a security breach into our server, the attackers can't get any payment information
  • We only use the Lastschriftmandat once a year, so using a little script where we then decrypt the information for a once-a-year use is totally feasible

Cons:

  • members of the database can't look at or change (but they can update) their saved information. We would need to e.g. save the last three digits of the IBAN unencrypted to let them remember which details they used.
  • More complex application
  • Semi-false sense of security for us and the users: We need to access the information somehow after all. If e.g. also the private key is compromised, or gets lost, it's no use after all.
  • Heavy briefing of the board members: where to store the key, where not to store the key, what to do etc...
  • Loss of key means loss of all payment information
  • we will save the transactions of the bank account of pep unencrypted somewhere anyway, so in this sense it's also available unencrypted anyways, just not neatly provided in a database

Considering these points I think encryption is not really needed here after all. It's better to double and triple check our system to make it hard to compromise it...
Although now I am kind of eager to implement the encryption into the database!

Let me know what you think! (related PR: #179)

Metadata

Metadata

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions