Хороший вопрос, но на этот вопрос нелегко ответить.
Исходя из моего опыта с безопасностью данных, вы должны думать о следующем:
1) Что вы защищаете, от кого и каково влияние, если эти данные небезопасны - безопасность гораздо больше относится к оценке рисков, чем к системным техническим решениям
2) Я предполагаю, что ваша платформа является настольной (например, Windows / OSX) в этом случае у вас есть другое проблемное пространство, чем проприетарное оборудование, такое как PS3 / Xenon, которые имеют свои собственные попытки защиты на уровне ядра (является ли это действительным решением, открытым для обсуждения)
3) Шифрование! = безопасность. Шифрование только гарантирует, что ваши данные не могут быть прочитаны , но и не гарантирует, что ваши данные не могут быть записаны или воспроизведены / проксированы.
Если ваши требования состоят в том, чтобы защитить ваши данные от подделки, вам нужно подумать о хешировании ваших данных (желательно с SHA-256 или SHA-512). Чтобы повторить итерацию, подумайте, почему это важно и что вы получаете от повышения безопасности своего система.
Также стоит знать, что добавление технологии шифрования к вашему продукту может иметь юридические последствия из-за экспортных ограничений (технология шифрования классифицируется как технология ограничения вооружений, верите или нет), поэтому рекомендуется использовать библиотеки, которые преодолели эти юридические проблемы.
Наконец - никогда, никогда не используйте свою собственную технологию шифрования - используйте хорошо известные, документированные, исследованные алгоритмы, такие как AES, Blowfish, RSA и т. Д.
ps Открытый / закрытый ключ не подходит или не подходит для шифрования больших объемов данных, поэтому DRM / PGP и т. д. используют гибридную симметричную систему RSA +, т. е. защищают симметричный ключ с помощью RSA, а затем выполняют стандартное симметричное шифрование с использованием этого ключа.
Это очень большой сложный предмет, и я определенно не сделал это справедливо
надеюсь, это поможет