Before diving into algorithms and key management, one should ask
What to you want to protect against? Some challenges are
- Direct access to file and log file viewing/tampering.
- System user privilege abuse.
- Stolen or lost media.
At work I face some of these requirements and I find it hard to come up with a satisfying solution.
There are plenty of articles on database encryption, e.g. Encrypting Data Values in DB2 Universal Database (ibm.com/developerworks) which describes using Column level encryption in the DB2 database.
While an interesting read, the article does not touch on key management. The question of where do we store the keys remain unanswered.
I recommend reading the Payment Card Industry Data Security
Standard Specification (pcisecuritystandards.org). The PCI DSS Specification outlines a series of principles on how
financial institutions are to protect financial data (credit card
details etc). Again, there is no definitive implementation, but some
of the ideas behind it are interesting (from section 3):
- Keep cardholder data storage to a minimum.
- Do not store sensitive authentication data subsequent to
authorization (even if encrypted).
- Render [cardnumber], at minimum, unreadable anywhere it is stored (including data on portable digital
media, backup media, in logs, and data received from or stored by wireless networks).
I find the idea of
not storing sensitive data unless it's absolutely necessary particularly interesting.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.