Как лучше хранить "секретную" инфу в базе
Попробую сформулировать проблему.
Задача 0 (мотивация).
Проблема. Есть вражеский сервис. Как можно там хранить свои файлы, если мы ему не доверяем? Зачем? Потому что он дешевый и там можно хранить большие файлы, а на моем компе места мало. Кроме того, он всегда доступен из любой точки.
Решение. Шифровать файлы при аплоаде, и дешифровать при скачивании. Ключ шифрования хранить на компе, на стике, или в голове.
Задача 1.
Проблема. Как расширить решение Задачи 0 на случай многих пользователей, каждый со своими файлами, которые они могут расшарить с другими пользователям. Пользователь может дать право на отдельый файл, а потом отозвать это право.
Общее решение. Просто считаем, что ключи каждого пользователя это и есть ресурс, которыми надо управлять. А потому задача сводится
к стандартной задаче управления и расшаривания ресурсов. Бери любое решение. Важно, что при отзыве/изменении прав доступа (к ключам) надо менять ключ и перешифровывать файлы. (Можно делать также при любом изменении самого файла.)
Примеры несколько более конкретных решений:
Решение 1: Централизованная система, которой мы доверяем
Решение 2: Каждый юзер управляет своими ключами и раздает их по запросу другим. Напрмер, через Телеграм e2e или емейл или API.
Если я правильно понял задачу, то вот оно и решение. Но как я уже упомянул, в любом случае надо будет удостоверять самих пользователей, например, личная встреча (с паспортом или тестом ДНК), подтверждение от 20 друзей, разгадывание загадок ну или внешняя система.