sichere und bequeme Übertragung einer einzelnen Datei von einem Desktop auf einen mobilen Computer

Ich suche nach einer bequemen Möglichkeit, eine einzelne Datei sicher von einem Desktop-Computer A auf einen mobilen Computer B zu übertragen. A läuft mit Linux, B läuft mit Android. Mit "sicher" meine ich:

a) eine Datei darf nicht an Dritte weitergegeben werden und

b) A und B vertrauen einander nicht. Ich frage ausdrücklich, wie man eine einzelne Datei überträgt.

c) Es sollte so einfach sein wie das Auswählen dieser Datei in einem Dateimanager

Aktualisierung 2016-11-24

Ich erwarte unregelmäßige Überweisungen, d. h. eine Überweisung ist in der Regel die erste Überweisung zwischen A und B, und sie wurden vorher nicht für diese Überweisung konfiguriert. A und B sind mit dem Internet verbunden. (Nun, was ist heutzutage nicht mehr mit dem Internet verbunden?) Aber:

d) mindestens ein Computer hat keine globale IP-Adresse oder

e) beide haben keine globale IP-Adresse.

Betrachten Sie die Fälle (d) und (e) getrennt.

Einige Pläne, die ich mir vorstellen kann.

  1. B ist als MTP-Speicher angeschlossen. Dann ist sogar der interne Flash-Speicher von B zugänglich. Widersprüche (b).
  2. Verkabeltes oder drahtloses Ethernet erfordert die Konfiguration eines Netzwerks, dann eines Netzwerkservers (z. B. FTP, HTTP) und dann eines Authentifizierungsschemas. Dieses Schema ist schlecht auf (c).
  3. Eine Verbindung über ein Kabel oder eine optische Verbindung erfordert im Prinzip keine Authentifizierung, da ich sehe, mit welchem ​​Gerät A oder B verbunden ist. Also passt es (c) besser als eine WLAN-Verbindung. Aber ich weiß nicht, wie man ein Kabel ohne Ethernet ausnutzt oder welches Programm eine Datei über eine optische Verbindung übertragen kann.
  4. Das Verschieben eines Flash-Speichergeräts zwischen A und B. Das Löschen der gesamten Partition, die die Datei enthält, durch das Unix-Programm "shred" erfüllt (a). Niedrig auf (c).
Würden Sie mit einem Programm einverstanden sein, das die Datei über LAN bereitstellt?
@zondo: Das hängt von den Sicherheits- und Einrichtungskosten Ihrer Lösung ab. Ich erwarte unregelmäßige Überweisungen, d.h. eine Überweisung ist normalerweise die erste Überweisung zwischen A und B. (Ich habe es in der Frage nicht erwähnt, sorry. Festgelegt.) A und B sind mit dem Internet verbunden. (Nun, was ist heutzutage nicht mehr mit dem Internet verbunden?) Aber d) mindestens ein Computer oder e) beide haben keine globale IP-Adresse. Betrachten Sie die Fälle (d) und (e) getrennt.
Ich verstehe nicht, dass dies eine Softwareempfehlungsfrage ist ...
@Jan Doggen: Eigentlich stimme ich darin überein, dass die Frage zwischen Software und Sicherheit gestellt wird, aber ich darf nicht crossposten. 😉
Hier löschen und auf security.stackexchange.com ablegen ? Ich denke, da hast du viel bessere Chancen, Antworten zu bekommen. Achten Sie darauf, Ihre Frage neu zu formatieren / neu zu schreiben, diese c) d) e) erschweren das Lesen.
Schema 2 ist auf c nicht schlecht, wenn Sie eine vernünftige Client-Anwendung verwenden. Ich verwende zu diesem Zweck eine Firefox-Erweiterung (den genauen Namen erinnere ich gerade nicht)
auch das, was Sie Linux nennen, ist in Wirklichkeit GNU/Linux. oder wenn Sie lieber nur den Kernelnamen angeben möchten, dann ersetzen Sie auch Android durch Linux.
@Sarge Borsch: "Schema 2 ist auf c nicht schlecht, wenn Sie eine vernünftige Client-Anwendung verwenden." Sehen Sie, das ist die Frage. Welches Programm? ;-)
@Jan Doggen: Entschuldigung, ich benutze (a), (b) und so, um es kurz und präzise zu machen. Dies ist kein Literaturwettbewerb. Ich glaube, dass jemand, der Referenzen nicht folgen kann, keine durchdachten Ratschläge geben kann.
Meine Bemerkung betraf das Layout - es war ein Durcheinander. Steve hat deine Frage aufgeräumt.
@beroal play.google.com/store/apps/… zum Beispiel. Es hat eine grobe Benutzeroberfläche, aber es macht den Job.

Antworten (3)

Sie können kleine Textdateien in QR-Code konvertieren, z. B. mit der Python -QR-Code- Bibliothek und der Befehlszeile , auf dem Laptop-Bildschirm und mit einem der vielen Android-Clients auf dem Telefon wie QR Droid einscannen .

Beachten Sie, dass QR-Codes auch zur Eingabe von WLAN-Verbindungsdetails verwendet werden können, sodass Sie ein Skript verwenden könnten , um eine temporäre WLAN-Verbindung mit einem zufälligen Passcode zu erstellen und den QR-Code für diese Verbindung zu generieren – dies würde die Einrichtungszeit eliminieren. Dasselbe Skript könnte möglicherweise einen FTP-Server (z. B.: twistd -n ftp) so einstellen , dass Up- und Downloads oder Webserver- Downloads (z. B. : python -m SimpleHTTPServer) nur mit Zugriff auf ein bestimmtes Verzeichnis ausgeführt werden. Dies könnte auch einen QR-Code ausgeben, der gescannt werden muss, um an die richtige Stelle zu gelangen.

Der gesamte in dieser Antwort erwähnte Code mit Ausnahme von QR Driod lautet:

  • Kostenlos, Gratis & Open Source
  • Plattformübergreifend, einschließlich Windows, OS-X und Linux
  • Wahrscheinlich bereits auf Ihrem Linux-System installiert oder einfach zu installierenpip
Gibt es eine Möglichkeit, diese HTTP- und FTP-Server so auszuführen, dass sie verschlüsselte und authentifizierte Verbindungen anbieten? (Ich vermute, dass ein Verbindungspasswort per QR-Code übertragen werden kann.) Andernfalls ist es nicht akzeptabel.
Ich habe das Gefühl, dass Softwareempfehlungen allmählich in die Softwareerstellung übergehen. Das hatte ich befürchtet. ☹
@beroal - es ist möglich, einen Server mit Authentifizierung einzurichten - es dauert jedoch etwas mehr als eine einzige Zeile. Je spezifischer und ungewöhnlicher Ihre Anforderungen sind, desto mehr müssen Sie die Software anpassen, sonst müssen Sie so arbeiten, wie es jemand in einem großen Unternehmen für Sie entschieden hat.

Eine Möglichkeit beinhaltet:

  • Blu-Tooth-Dateiübertragung mit minimaler Benutzerauthentifizierung und -einrichtung und nur Eins-zu-Eins-Kommunikation.

Die Bluetooth-Authentifizierung besteht normalerweise darin, dass ein Gerät zur Eingabe einer PIN auffordert, die zufällig von dem anderen Gerät generiert und auf diesem angezeigt wird. Sie können Geräte koppeln, damit die Verbindungen wiederhergestellt werden können, wenn sich die 2 Geräte in Reichweite voneinander befinden, ohne diesen Schritt durchzuführen, und einige Geräte, z. B. Kopfhörer, überspringen diesen Schritt oder haben eine feste PIN. Sobald die Kommunikation eingerichtet ist, können Sie, normalerweise manchmal optional , freigegebene Ordner angeben, damit das andere Gerät Inhalte über eine Datei-Explorer-Schnittstelle herunter-/hochladen kann.

Was meinst du mit "minimaler Authentifizierung"? Dass Bluetooth eine schwache Authentifizierung bietet? Dann ist es definitiv nicht akzeptabel.
Eine QR-Code-Übertragung scheint machbar. Ich schlage Ihnen vor, Ihre Lösungen in 2 Antworten zu platzieren, da sie sehr unterschiedlich sind.

Dies ist ein nicht triviales Problem, nicht wirklich geeignet für Softwarerecs.SE IMO.

Trotzdem geht es hier weiter. (Wenn die Frage zu Security.SE migriert wird, wird mit etwas Glück diese Antwort mit migriert.)

Es stehen verschiedene Lösungsmöglichkeiten mit sehr unterschiedlichen Implementierungskosten zur Verfügung.

Zunächst einmal müssten die Endpunkte gegen Angriffe gesichert werden, die preisgeben könnten, was gerade übertragen wird. TEMPEST-Angriffe zum Beispiel.

Wenn Sie Fernkommunikation (z. B. drahtlos oder optisch) verwenden, besteht die Gefahr des Abhörens, es sei denn, die beiden Computer befinden sich in einem Behälter (z. B. einem Faraday-Käfig oder einer lichtdichten Box bzw. einem Raum), der für die beteiligten Signale undurchlässig ist.

Wenn Sie drahtgebundene Kommunikation verwenden, müssen Sie sicher sein, dass das Kommunikationsmedium immun gegen Angriffe im TEMPEST-Stil ist. Spezielle USB- und Ethernet-Kabel etc. sind für einen hohen Preis erhältlich, die diese Anforderung angeblich erfüllen. (Oder vielleicht könnten Sie auch einen geeigneten Raum oder eine Box bauen oder kaufen.) Aber Sie sollten auch das Risiko bedenken, dass A oder B den anderen über die Verbindung kompromittieren, zB durch den Versuch, den Netzwerkstapel auszunutzen. Je einfacher also das Protokoll, desto besser, um den TCB zu minimieren. So etwas wie seriell (vielleicht über den JTAG-Port auf B?) könnte an dieser Front die beste Wahl sein.

Wenn Sie schließlich Wechselmedien verwenden, sollten Sie überlegen, wie Sie verhindern können, dass Malware von A nach B übertragen wird. Dies kann über Controller-Chips (z. B. BadUSB) geschehen, falls vorhanden, oder über andere Exploits weiter oben im Stack.

Eine einigermaßen sichere Option wäre:

  • Verwenden Sie einen Wechseldatenträger ohne Controller-Firmware, z. B. eine Diskette oder eine ZIP-Diskette (ich denke, diese sind firmwarefrei) oder eine CD-R oder DVD+/-R oder BD-R; und
  • zwei Laufwerke für dieses Medium haben, eines an A und eines an B, um zu vermeiden, dass zB BadUSB von A nach B übertragen wird; und
  • signieren Sie die Datei auf A, bevor Sie sie auf das Wechselmedium schreiben, und verifizieren Sie die Signatur auf B, nachdem Sie sie vom Wechselmedium gelesen haben (z. B. mit GnuPG oder einem seiner Front-Ends, um Signaturen zu erzeugen und zu verifizieren); und
  • Führen Sie dies in einer so sturmfesten Umgebung durch, wie Sie es arrangieren können.
„Wenn Sie Fernkommunikation (z. B. drahtlos oder optisch) verwenden, besteht die Gefahr des Abhörens, es sei denn, die beiden Computer befinden sich in einem Container.“ Es gibt eine billigere Lösung. Integrität gibt Vertraulichkeit durch den Diffie-Hellman-Algorithmus, daher reicht es aus, Integrität zu haben, um uns vor Abhören zu schützen. TEMPEST ist kein Angriff auf den Transfer, daher ist es nicht angebracht, ihn in dieser Frage zu berühren.
@beroal, aber den Hosts wird nicht vertraut. Das Ausstatten eines von ihnen mit einem Mechanismus für die Fernkommunikation (z. B. einen IrDA- oder WiFi-Transceiver) würde es ihnen also ermöglichen, einen Fernbereichs-Seitenkanal zu öffnen. Der einzig offensichtliche Weg, dies zu blockieren, wäre, das Seitenkanalsignal irgendwie zu dämpfen, daher mein Vorschlag.