Я строю планы для нового проекта и ищу способ разрешить пользователям загружать свои файлы и хранить их в зашифрованном виде, чтобы они были доступны только им, но в то же время мне нужно, чтобы их контакты также имели доступ к файлам.
Поясню немного подробнее:
- Пользователь загружает файл(ы) на мой сервер через веб-приложение.
- Я (сервер) не должен иметь доступа к содержимому файлов.
- Контакты пользователя должны иметь доступ к файлам, ЕСЛИ пользователь решит поделиться с ними файлами.
Возможно ли что-то подобное?
решение1
Короткий ответ: Криптография с открытым ключом означает: Да, вы можете это сделать. Это сложно, потому что управление ключами сложно, а не потому, что проблема математически сложна.
Развернутый ответ: ... здесь не поместится.
Средне-краткий ответ:
Если у каждого контакта есть закрытый ключ, который вам не известен, а он знает, и открытый ключ, который вам известен, и вы можете заставить программное обеспечение (включая JavaScript) работать на компьютере пользователя, то вы можете заставить данные быть зашифрованными на компьютере пользователя таким образом, что похожая программа, работающая на компьютерах других пользователей с их соответствующими закрытыми ключами, сможет получить к ним доступ, но вы, не изменяя программное обеспечение, работающее на компьютере пользователя, не сможете этого сделать.
Вот о чем стоит подумать:
- Криптографически это решенная проблема. Не решайте ее сами.
- Большинству пользователей важно удобство использования.
- Вам по-прежнему необходимо принимать правильные решения относительно метаданных.