Tar ohne zwischen zu speichern verschlüsseln

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
rabe0577
User
Beiträge: 6
Registriert: Dienstag 15. September 2015, 19:23

Hallo zusammen,
ich habe mir vor einiger Zeit mal ein kleines Python Script geschrieben, welches ausgewählte Daten in eine .tar Packt und anschließend, ohne auf dem Server zwischen zu speichern, direkt auf einen FTP hochlädt.

Code: Alles auswählen

tp=os.popen("nice -1 tar cf - "+sdir)

ftp.storbinary('STOR %s' % targetname+"/Data.tar", tp)

ftp.close()
Ist es mit einfachen Änderungen möglich, diese .tar vor dem Hochladen noch, ohne zwischen zu speichern, zu verschlüsseln?

Wie genau verschlüsselt wird, ist eigentlich egal, das was am besten geht. Ich nutze immer OpenSSL und GPG, wäre es damit sogar auch möglich?

Gruß Janik
Zuletzt geändert von Anonymous am Montag 7. Dezember 2015, 16:18, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Wieso möchtest du die Daten den verschlüsseln? Vor was für einem Angreifer möchtest du die Daten beschützen? Vor welchen Angriffszenarien möchtest du sicher sein?
rabe0577
User
Beiträge: 6
Registriert: Dienstag 15. September 2015, 19:23

Ich wollte die Daten in einer Cloud speichern und da ich ja nicht weiß, wer noch alles so auf die Cloud guckt und sich mal anschauen will, das ich dort so treibe, wollte ich die Daten von meinem Server inkl. Passwörter usw. gerne verschlüsseln. ;)

Soweit ich weiß, stehen die Server des Cloud Anbieters sogar in den USA und dort hat ja leider die Regierung unbeschränkten Zugriff auf die Daten. Mir wurde geraten, da dann auch nochmal selbst die Daten zu verschlüsseln und dann erst hochzuladen. :)

Gruß Janik
BlackJack

@rabe0577: Man könnte das Archiv noch durch durch GnuPG pipen, entweder mit Deinem/einem privaten Schlüssel oder einem Passwort und symmetrischer Verschlüsselung. Alternativ zu GnuPG könnte man auch OpenSSL verwenden.
rabe0577
User
Beiträge: 6
Registriert: Dienstag 15. September 2015, 19:23

Habe aktuell einfach hinter dem "nice -1 tar cf - "+sdir den Befehl von OpenSSL zum verschlüsseln von Dateien geschrieben.

Funktioniert so wie ich es mir wünsche. Ergebnis ist dabei dieser Code:

Code: Alles auswählen

tp=os.popen("nice -1 tar cf - "+sdir+" | openssl enc -e -aes256 -k "+encpw)
encpw ist dabei die Variable für das Passwort, welches oben in dem Script angegeben wird.

Ist das so wie du meinst?
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

rabe0577: für AES gibt es auch Python-Pakete (pycrypto). Und statt popen könnte man etwas aus dem subprocess-Modul nehmen.
BlackJack

@Sirius3: Für's verschlüsseln würde ich persönlich mir nichts selber basteln, sondern lieber fertige Werkzeuge verwenden von Leuten die hoffentlich besser wissen was sie tun als ich wenn's um Verschlüsselung geht. :-)
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Eine Library benutzen ist ja nicht unbedingt selber basteln. Das Cryptography Projekt hat z.B. eine Implementation von Fernet mit einer API die so gestaltet ist, dass man damit nichts falsch machen kann.
BlackJack

@DasIch: Ja klar wenn's so etwas fertig gibt, aber ich hatte kurz in PyCrypto geschaut und gesehen das man da eine AES-Klasse hat der man einen Blockmodus übergibt und die dann Daten verschlüsseln kann deren Länge durch eine Mindestlänge teilbar sein muss. *Das* wäre mir dann zu umständlich/unsicher. openssl oder GnuPG haben IMHO noch den Vorteil dass die ”Standard” sind und das man solche Daten später auch ohne das eigene Programm oder noch mal etwas zu programmieren wieder entschlüsselt bekommt.
Antworten