В моем случае я хочу сделать данные защищенными даже от людей, которые имеют доступ к серверной части (хранилище ключей), чтобы они не могли читать их без пользователя (представленного клиентским приложением в моем приложении). чехол браузер) помощь.
Один из вариантов - хранить ключи дешифрования на клиенте и передавать их с каждым запросом, что звучит довольно грязно для меня, и я не уверен, что хочу, чтобы мои ключи бродили по сети, как это. Однако я предполагаю, что клиент будет хранить некоторый токен (это может быть пароль, который знает пользователь), и расшифровка не может произойти без него.
Я подумал об использовании строки назначения для этого, у меня такое чувство, что это не очень хорошая идея, так как его основное назначение - изоляция. С другой стороны, это часть дополнительных аутентифицированных данных, используемых для получения подразделов. (по материалам этой статьи https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/implementation/subkeyderivation?view=aspnetcore-2.1#additional-authenticated-data-and-subkey-derivation).
Я сталкивался с некоторыми примерами, которые создают свое собственное симметричное шифрование с классами более низкого уровня. (как этот пост Шифрование и дешифрование строки в C #? ). Поскольку я не эксперт в этой области, я хотел бы использовать как можно больше сборок в классах.
Каков рекомендуемый способ достижения того, что мне нужно, с помощью классов из API защиты данных? (Я использую .net core 1.1 в Ubuntu)