Hi

What sort of information are you looking to encrypt ?  If it is for user
passwords I'd recommend SHA256 which is one way encryption.  Or are you
looking to encrypt more sensitive information like card holder data ?

Regards
Neil

On Fri, Mar 19, 2010 at 4:22 PM, Jim <j...@lowcarbfriends.com> wrote:

> Thanks for the reply, John.
>
> What you are describing seems to be the approach I've seen on the few
> places I've seen this topic discussed.
>
> I've been considering something along those lines, essentially a two part
> key.
>
> Part one of the key is made from some data that is in the record I want to
> protect and it is different for each record, very much like you suggest.
>
> Part two of the key is some constant key value I store somewhere.
>
> The full key is created based on some defined manipulation of the two
> parts, much like you suggest I believe.
>
> But, then the issue comes of where to store part two of the key.
>
> In your case, you are storing it in a stored procedure and I assume that
> stored procedure resides on the same mysql server that holds the data you
> want to protect.
>
> That's where I start questioning the security of that approach. The
> assumption being if someone got full control of that mysql box then
> essentially all your eggs are in one basket.
>
> I was thinking in terms of a most secure solution, you could have a
> separate server (perhaps a mysql server) that for the purpose of this
> example only serves part two of the key. That server is well protected and
> non-public as is the mysql server that stores the data.
>
> This way, two servers have to be compromised in order to gain all the parts
> of the key and data. But, of course, that's kind of a waste of a server and
> can you afford that and the extra resources that go along with maintaining
> another server.
>
> So, I was thinking, is it really so bad to store only one part of the key
> in source code. That source code resides on a separate server from the mysql
> server. Yes, the server that stores the source code is a public server, but
> at least it's two servers that have to be compromised to give up all the
> components needed to gain access to the encrypted data.
>
> I suppose maybe if I ask you to expand on what you mean by the following
> that would be helpful to further understand your approach:
>
> "I then store the logic in a database stored procedure and use database
> security to prevent unauthorised access".
>
> Thanks,
> Jim
>
>
>
> On 3/19/2010 6:39 AM, John Daisley wrote:
>
>> Jim,
>>
>> I tend to derive a key based on a separate character string and the
>> contents of the data in the same or a related table. This means each row
>> has a unique encryption key and you never have to have the whole key
>> stored somewhere (you don't even know it :p ). Biggest advantage to this
>> is should someone get hold of your data they have to work out your
>> character string and the logic for deriving the key or attempt to hack
>> each and every individual row of the table because no two rows will ever
>> have the same key.
>>
>> For example, in a table with the columns `username`, `email_address`,
>> `password`, `jointime` (where password is encrypted with AES_ENCRYPT) I
>> may Use a charcter string of "awfully_complex_char_string-" and derive
>> the key like so
>>
>>
>> CONCAT("awfully_complex_char_string-",SUBSTRING(`email_address`,1,LOCATE("@",`email_address`)-1),CAST(`jointime`
>> AS CHAR))
>>
>> I then store the logic in a database stored procedure and use database
>> security to prevent unauthorised access. At no point do I have this
>> logic outside the database in any external application or script! That
>> would be silly :)
>>
>> Regards
>>
>> John Daisley
>>
>> On Thu, Mar 18, 2010 at 7:26 PM, Jim <j...@lowcarbfriends.com
>> <mailto:j...@lowcarbfriends.com>> wrote:
>>
>>    In terms of encryption functions AES_DECRYPT and AES_ENCRYPT, can
>>    anyone point to any good links or offer any suggestions in terms of
>>    best practices on storage of the associated symmetric key? I've
>>    found very little information on this when searching.
>>
>>    Does MySQL offer any asymmetric encryption capabilities?
>>
>>    What are people using in terms of a good solution for encrypting
>>    specific columns of table data while providing protection of the key?
>>
>>    Thanks,
>>    Jim
>>
>>    --
>>    MySQL General Mailing List
>>    For list archives: http://lists.mysql.com/mysql
>>    To unsubscribe:
>>    http://lists.mysql.com/mysql?unsub=john.dais...@butterflysystems.co.uk
>>
>>
>>
>
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:
> http://lists.mysql.com/mysql?unsub=neil.tompk...@googlemail.com
>
>

Reply via email to