Я ищу удобный способ безопасного переноса одного файла с настольного компьютера A на мобильный компьютер B. A работает под управлением Linux, B — под управлением Android. Под «надежно» я имею в виду, что:
а) файл не должен передаваться третьим лицам и
б) А и В не доверяют друг другу. Я специально спрашиваю, как передать один файл.
c) Это должно быть так же просто, как выбрать этот файл в файловом менеджере
Я ожидаю нерегулярные передачи, другими словами, передача обычно является первой передачей между A и B, и они не были настроены для этой передачи ранее. A и B подключены к Интернету. (Ну что сейчас не подключено к интернету?) Но:
г) хотя бы один компьютер не имеет глобального IP-адреса или
д) оба не имеют глобального IP-адреса.
Рассмотрим случаи (d) и (e) отдельно.
Какие схемы могу придумать.
Вы можете использовать для небольших текстовых файлов преобразование в QR-код, например, с помощью библиотеки QR-кода Python и командной строки , на экране ноутбука и отсканировать его с помощью одного из многих клиентов Android на телефоне, таких как QR Droid .
Обратите внимание, что QR-коды также можно использовать для ввода сведений о подключении к WiFi, поэтому вы можете использовать сценарий для создания временного подключения к WiFi со случайным кодом доступа и генерировать QR-код для этого подключения — это сократит время настройки. Тот же самый сценарий мог бы настроить FTP (например: twistd -n ftp
) , чтобы разрешить загрузку и загрузку или веб-сервер (например: python -m SimpleHTTPServer
) , загрузку только с доступом только к указанному каталогу. Это также может вывести QR-код, который нужно отсканировать, чтобы добраться до нужного места.
Весь код, упомянутый в этом ответе , за исключением QR Driod :
pip
Возможность включает в себя:
Аутентификация Bluetooth обычно заключается в том, что одно устройство запрашивает PIN-код, который случайным образом генерируется и отображается на другом устройстве. Вы можете выполнить сопряжение устройств, чтобы позволить восстановить соединение, когда 2 устройства находятся в пределах досягаемости друг друга, не выполняя этот шаг, а некоторые устройства, например наушники, пропускают этот шаг или имеют фиксированный PIN-код. После того, как связь настроена, вы можете, как правило, иногда по желанию , указать общие папки, чтобы позволить другому устройству загружать/загружать контент с помощью интерфейса типа проводника.
Это нетривиальная проблема, не совсем подходящая для Softwarerecs.SE IMO.
Тем не менее, здесь идет. (Если повезет, если вопрос будет перенесен в Security.SE, этот ответ будет перенесен вместе с ним.)
Существуют различные потенциальные решения, стоимость реализации которых сильно различается.
Прежде всего, конечные точки должны быть защищены от любых атак, которые могут раскрыть то, что передается. Например, атаки TEMPEST.
Если вы используете дистанционную (например, беспроводную или оптическую) связь, то существует риск прослушивания, если только два компьютера не находятся в контейнере (например, клетке Фарадея или светонепроницаемом ящике или комнате, соответственно), непроницаемом для задействованных сигналов.
Если вы используете проводную связь, вы должны быть уверены, что средство связи невосприимчиво к атакам в стиле TEMPEST. Доступны специальные кабели USB и Ethernet и т. д. по высокой цене, которые предположительно отвечают этому требованию. (Или, опять же, возможно, вы могли бы построить или купить подходящую комнату или коробку.) Но вы также должны учитывать риск того, что A или B скомпрометируют другого через соединение, например, путем попытки использовать сетевой стек. Таким образом, чем проще протокол, тем лучше для минимизации TCB. Что-то вроде последовательного (может быть, через порт JTAG на B?) может быть вашим лучшим выбором на этом фронте.
Наконец, если вы используете съемные носители, то вам следует подумать о том, как избежать передачи вредоносного ПО из точки А в точку Б. Это может произойти с помощью микросхем контроллера (например, BadUSB), если они есть, или с помощью других эксплойтов, расположенных выше по стеку.
Одним из разумно безопасных вариантов может быть:
Зондо
beroal
пользователь416
beroal
пользователь416
Отображаемое имя
Отображаемое имя
beroal
beroal
пользователь416
Отображаемое имя