Encryption Standards within software

Within the development of software, the developer should always bear in the forefront of their mind that everything should be encrypted where possible and moreover were practical.

Databases;

Where possible always ensure that the data held within the database is automatically encrypted either by using your own secure algorithm or by using an industry standard encryption protocol.

Do not assume that your data is secure just because the MySql or SQL server is stated as being secure, if possible, I would even recommend splitting databases into multiple parts – so maybe have three separate servers all containing a third of the data – only when the data is pulled from all three separate servers and assembled does the completed record set exist.

Using rolling encryptions is a fantastic way to ensure that your data is secure, if you implement this approach from the word go when designing your software life becomes easier, every time the data set it written or updated use a completely new encryption key – so rather than simply securing that entire dataset with a given key have each record within the dataset using a random key.

Combine that approach with splitting your dataset over say three separate servers will not only enhance your data protection but also means that if anyone does breach a server, they only have a third and even that has different encryption keys for each record within the data set.

Its not always possible to implement such an elaborate scheme of data protection, some will say having three servers is expensive – and it is, but if you construct the data procedure from the word go, you could always have three databases hosted on your single server to begin with, then moving to actual physical servers later wouldn’t require any massive updates or changing of codes.

A developer must create their software secure from the ground up.

Any additional encryption such as that provided by the hosting domain server for example will simply provided an additional layer of security which isn’t a bad thing.

Memory Dumps;

Hackers are getting much smarter, software for grabbing your data is also evolving at terrifying rate, we are never going to be able to ensure that our data is never stolen – but what we have to do is make it as hard as possible for that to occur.

Memory dumps are where data loaded into your computers memory can now be stolen and uploaded in the background without your knowledge (having a good network security protocol can not only alert you to this happening but also stop it in its tracks).

So, don’t simply extract the data from your databases and have it sitting around in your computers / devices memory, if you must hold data in memory ensure that this data is still encrypted, the only time this data should be unencrypted is when you visual show it to the end user or when it is printed out on paper.

Keeping your data encrypted until it is required whilst in memory will not only scupper attempts to steal the data via a memory dump but will simply give the attacker a block of useless data should they actually manage to steal the memory dump data.

Screen Grabs;

You should where possible try and disable the user’s ability to screen grab in order to protect the data shown on the screen. With various computers / devices this simply isn’t possible.

But one thing that you can do, is within your software – setup a timer and say every 2/3 seconds, simply clear the clipboard memory. This in affect will allow someone to screen grab but by the time they have gone into the other application – such as paint, word, etc – the data they captured has vanished from the clipboard, so it gives the effect that the ALT & PRTSC has been disabled when it hasn’t.

Warning: Of course if the user needs the copy & paste function whilst your application is running that will present massive issues and therefore you may not be able to do this, I personally disable the timer when the application is minimised or hidden and reactivate it when the user is using or viewing the sensitive data.

Data Theft;

Assume your data is going to be stolen, it’s the developers job to protect the data as best as possible, so if someone does have it – its just rubbish and they cant do anything with it.

David Smith MIAP