Я не уверен, что вы получите массу пользы от этого.Передача данных через SSL, безусловно, хорошая идея.Если вы храните пользовательские данные в незашифрованном виде, кто-то все равно должен получить доступ к вашему хранилищу данных, прежде чем он сможет что-то захватить.Если вы шифруете данные на основе свойств пользовательского объекта, вы должны раскрыть эту связь в коде шифрования / дешифрования на стороне клиента, так что это по сути общедоступно.Кто-то, кто получает доступ к вашему хранилищу данных и вашему источнику App Engine, может все еще расшифровать, это просто сложнее.
Одной из альтернатив может быть сохранение вашего ключа шифрования на стороне сервера, но предпринять некоторые дополнительные шаги для его защиты. Постоянно запрещать загрузку кода .Храните ключ шифрования в источнике, а не в хранилище данных, но не в контроле источника.Вставьте его на USB-ключ и напишите пользовательскую оболочку развертывания, которая в последнюю минуту вставит ключ в ваш код, развернет и затем очистит код.Таким образом, тот, кто получит права администратора на ваше приложение и доступ к управлению исходным кодом, все еще не сможет расшифровать данные пользователя.Ваша машина развертывания все еще уязвима, но вы сократили пространство для атаки.
Если вы хотите пойти дальше, попросите пользователей сгенерировать свои собственные ключи шифрования и сохранить их на стороне клиента.Никогда не передавайте их на сервер.Злоумышленник все еще может быть нацелен на одного пользователя, но никто, включая вас, не сможет расшифровать данные пользователя в массовом порядке.Если пользователи теряют свой собственный ключ, их данные теряются навсегда.