Я пытаюсь найти хороший способ для передачи файлов между, скажем, пациентом и доктором в хирургии доктора.У пациента есть несколько заметок, которые они хотят перевести, но он не хочет, чтобы все и вся знали об этом.Они хотят передать файлы, чтобы никто не знал деталей (по очевидным причинам конфиденциальности).
Итак, у меня есть концепция, о которой я думал, и я уверен, что что-то пропустил, но некоторыепроверка моей концепции была бы хорошей.
- Отправитель сообщает получателю их [имя отправителя] - это назначается отправителем при первоначальном запуске приложения или в любое время, когда он хочет изменить его.
- Получатель сообщает отправителю случайно сгенерированный [идентификатор сеанса] - 8 (или более) цифр.(используя сильный генератор случайных чисел)
- Затем отправитель выбирает пароль для шифрования документа (не менее 12 символов)
- Затем получатель отправляет хэш SHA256 [идентификатор сеанса]и [имя отправителя] (нажав «подключиться») к серверу по протоколу https, который сохраняется до 30 секунд.Все хранилища сервера - это хэши.
- Приложение отправителя (после нажатия кнопки «connect») затем отправляет хэш SHA256 [идентификатор сеанса] и [имя отправителя] на сервер через https, чтобы проверить, существует ли оно..
- Если сервер имеет соответствующий хеш, он отправляет ответ отправителю с IP-адресом получателя и портом через https.
- Затем отправитель передает запрос (нажав кнопку «отправить»).) получателю (используя шифрование AES256, включая [имя отправителя], [вектор инициализации], [дата запроса], [размер документа], используя введенный пароль), используя HMAC_SHA256 для проверки содержимого.
- Получатель получает приглашение принять файл.Получатель вводит пароль, введенный отправителем.Они могут просмотреть [имя отправителя], [размер документа] и [дату запроса].
- В случае принятия (при использовании исходного хэша SHA256 [идентификатор сеанса] и [имя отправителя] в качестве подтверждения) начинается перенос документа с использованием AES256 с HMAC_SHA256 непосредственно между получателем и отправителем.
С точки зрения отправителя: 1. Выберите файл 2. Сообщите получателю свое имя отправителя (возможность изменить) 3. Введите идентификатор сеанса, который вам сообщает получатель.4. Введите пароль для шифрования.5. Нажмите «подключить». 6. Когда «подключено», нажмите «отправить». 7. Дождитесь передачи.
С точки зрения получателей: 1. Сообщите идентификатор сеанса получателя.2. Нажмите «подключиться». 3. Просмотрите файл, который необходимо получить - имя отправителя, размер и дату.4. Нажмите «Принять». 5. Дождитесь передачи.
Метаданные, предоставляемые серверу, минимальны (ip-адрес + b + отпечаток https-запросов) и не указывают на передачу файла.
Это слишком сложно или недостаточно сложно?