I am working on a fitness app, and it is going to have the following user data: email, first name, last name, birth date, height, weight over time, Body Mass Index over time and heart rate over time. This data is very personal and private to some people.
I was thinking of using AES to encrypt their email address, first name and last name so that if this data ever got compromised they cannot be identified. I would keep the key on the app server, and the database on a separate server.
This is however painful to do, as I use their email address for identification, so I need to store a hashed email, a crypted email, a crypted first name and a crypted last name. Furthermore this interferes with logging solutions as you need to ensure sensitive values are not logged. Finally, I would like to use the MySQL AES functions, but then I would have to pass the key over the wire into a stored procedure, and this just seems like an incredibly bad idea, so it would have to be done in app I imagine.
What is the recommended strategy here given this particular context? Is this over kill?