Dateien im Netzwerk verteilen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
JohnDoe

Hallo, ich hätte da mal eine Frage :)

Ich will eine bzw. mehrere Dateien übers Netzwerk an andere Rechner verschicken. Insgesamt sollte es so aussehen:

- Rechner1 besitzt eine Datei die Rechner2 benötigt
- Rechner1 verschlüsselt die Datei mit einem zufällig generiertem Schlüssel (symmetrische Verschlüsselung)
- Rechner1 verschlüsselt den Schlüssel für die symmetrische Verschlüsselung mit dem PublicKey von Rechner2
- Rechner1 sendet eine in JSON formatierte Nachricht an Rechner2 über TCP-sockets (Darin enthalten: Der asymmetrisch verschlüsselte Key, Dateiname, Hashsumme)

Bis hierhin funktioniert soweit alles. Ursprünglich wollte ich die Übertragung des Schlüssels über SSH realisieren, allerdings hab ich für Python3 nichts passendes gefunden. Zudem müsste man dann auch noch einen SSH-Server integrieren...

Dann fängt aber mein Problem an: Wie versende ich die Datei an Rechner2?

Rechner2 sollte in der Lage sein, von mehreren Geräten gleichzeitige Dateien zu empfangen. Wie handhabe ich das? Die Dateien können eine Größe von etwa 1GB haben, Verbindungsabbrüche könnten also auch auftreten.

Kann mir im letzen Punkt jemand helfen?

mfg
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

Hallo JohnDoe,
soll das nur ein proof-of-concept sein, oder tatsächlich produktiv eingesetzt werden. Für zweiteres reicht ein SSLSocket vollkommen aus, dann kannst Du Dir alle Gedanken zu Verschlüsselung und Schlüsselaustausch sparen, da haben sich dann schon viele Experten Gedanken über Sicherheit gemacht.

Normalerweise wird nicht die Datei sondern nur die Kommunikation verschlüsselt.
Für Key-Exchange gibt es tausende Protokolle, mein Favorit ist eindeutig SRP, weil man aus einem einfachen Passwort einen sicheren Schlüssel generieren kann und das Passwort nirgends in Reinform gespeichert ist.
Die restliche Kommunikation wird dann mit diesem Schlüssel symmetrisch verschlüsselt in der Form: gib mir Datei xyz von Byte 17-35375.
Bricht die Verbindung zusammen, wird einfach eine neue mit einem neuen Schlüssel aufgebaut.
JohnDoe

Sirius3 hat geschrieben:Hallo JohnDoe,
soll das nur ein proof-of-concept sein, oder tatsächlich produktiv eingesetzt werden. Für zweiteres reicht ein SSLSocket vollkommen aus, dann kannst Du Dir alle Gedanken zu Verschlüsselung und Schlüsselaustausch sparen, da haben sich dann schon viele Experten Gedanken über Sicherheit gemacht.
Es soll tatsächlich produktiv eingesetzt werden. Für den Anfang nur im lokalen Netzwerk zwischen 6 Geräten, später dann auch auf meinem Server im Internet.
Sirius3 hat geschrieben:Normalerweise wird nicht die Datei sondern nur die Kommunikation verschlüsselt.
Genau da liegt das Problem. Die Dateien müssen verschlüsselt werden, da Rechner2 in meinem Beispiel nicht unbedingt der Zielrechner ist. Sagen wir, es wird eine Datei von Rechner1 nach Rechner2 geschickt, wobei Rechner2 nur als Cache dient und das endgültige Ziel dann Rechner3 ist. Rechner2 darf unter keinen Umständen in der Lage sein, die Datei zu entschlüsseln. Das hätte ich eventuell hervorheben sollen.
Sirius3 hat geschrieben: Für Key-Exchange gibt es tausende Protokolle, mein Favorit ist eindeutig SRP, weil man aus einem einfachen Passwort einen sicheren Schlüssel generieren kann und das Passwort nirgends in Reinform gespeichert ist.
Die restliche Kommunikation wird dann mit diesem Schlüssel symmetrisch verschlüsselt in der Form: gib mir Datei xyz von Byte 17-35375.
Bricht die Verbindung zusammen, wird einfach eine neue mit einem neuen Schlüssel aufgebaut.
Oh, das ist gut, sogar mit Python-Implementierung. Nach Zusammenbruch der Verbindung sollte tatsächlich ein neuer Schlüssel generiert werden, ich bin mir nur noch nicht sicher wie ich das genau umsetze.

mfg

EDIT: Nur um das klarzustellen: Ich will keine neuen Wege erfinden, sondern auf sicheren Technologien aufbauen. In meinem Fall habe ich mich für AES/RSA entschieden. Beides ausgereift und als sicher anzusehen. Das Kopfzerbrechen überlasse ich also Sicherheitsexperten :)
Antworten