Quote:
|
Originally Posted by Teddy
So I'm wondering, has anyone here experimented with their own encryption schemes in a database context? In general terms, how did you go about it?
|
Dude, are you really sure you want to create your own security hole?
Remember: Always use that whats tested and has proven itself in practise, so don't reinvent the wheel, because you are not capable and you cannot be sure it meets the demands. With proven tools you at least have a stable base to start from.
Don't make a design more complex when it doesn't need to be. I believe there are many alternatives, which are much more flexible, to obscuring the information and attempt to hide the relationsships between data. This will create other problems (integrity to name one) that are very hard to overcome. The security problem can probably be solved another way.
If you are trully interested in cryptography, these is a good (free) book on the subject "Handbook of Applied Cryptography"
http://www.cacr.math.uwaterloo.ca/hac/ where you should read chapter 1 to get a good inpression of what security is about. Its quite mathematical and most parts are not very interresting. Probably these are also better books...
Secondly compare these to what a decent RDBMS provides and you might notice that there is a much better way to archieve the security you demand. You don't have to obscure data in the database in many cases. It really depends on who has the rights of all involved people might be. The problems in the RDBMS aren't really different to the problems with e.g. file systems. You can take a system administrator for example.
The solution (or security features) might only be implemented slightly different on a RDBMS compared to a file system.
The RDBMS basically provides security based on tables and columns. The file system provides it on a hierachical base. The latter can be implemented on a RDBMS with some additional tables, views and stored procedures and a performance hit. So you can provide row-level security, but you need to implement it differently.
A good example is a webstore. The interfacing application handles the security so a customer cannot view another customers shopping basket or password. The RDBMS can help to prevent you making some mistakes, but the combination of the application (perform authorization) and the RDBMS (perform 'authentication') make the application secure.
- Joris