grumpy_grizzly
Anmeldungsdatum: 26. Dezember 2011
Beiträge: 263
|
Ich würde gern ein kleines Skript zum verschlüsseln von Dateien aus dem Dateimanager heraus ins Wiki stellen. Jetzt bin ich mir nur nicht sicher ob ich gpg generell richtig verstehe. Beim verschlüsseln kann man einen Schlüssel auswählen. Wählt man also den öffentlichen Schlüssel der Person für den die Datei bestimmt ist oder wie läuft das? In dem Fall dachte ich nämlich man könnte einfach mit 'gpg --list-keys' die verfügbaren Schlüssel anzeigen, die Ausgabe entsprechend bearbeiten und an zenity übergeben. Dort kann man dann auswählen welcher Schlüssel verwendet werden soll. Im Skript sieht dieser Schritt dann so aus:
| RECIPIENT=$(gpg --list-keys | sed -n -e '/^uid/s/^uid *//p;' | zenity --list --text='' --column='verfügbare Schlüssel')
|
Also ist es sinnvoll das so zu machen oder verstehe ich da etwas falsch?
|
fpunktk
Anmeldungsdatum: 24. Oktober 2007
Beiträge: 142
|
grumpy grizzly schrieb: Also ist es sinnvoll das so zu machen oder verstehe ich da etwas falsch?
Ich denke das ist sinnvoll und richtig. Ich würde aber noch Anführungszeichen drum machen, also so:
| RECIPIENT="$(gpg --list-keys | sed -n -e '/^uid/s/^uid *//p;' | zenity --list --text='' --column='verfügbare Schlüssel')"
|
|
grumpy_grizzly
Anmeldungsdatum: 26. Dezember 2011
Beiträge: 263
|
fpunktk schrieb: Ich denke das ist sinnvoll und richtig. Ich würde aber noch Anführungszeichen drum machen, also so:
| RECIPIENT="$(gpg --list-keys | sed -n -e '/^uid/s/^uid *//p;' | zenity --list --text='' --column='verfügbare Schlüssel')"
|
Gut soweit. Die Anführungszeichen habe ich allerdings absichtlich nicht gesetzt, da man sie bei Zuweisungen der Art Variable=$(...) oder Variable2=$Variable1 nicht benötigt. Bisher entscheidet mein Skript anhand der Erweiterung der Datei ob ver- oder entschlüsselt wird. Welche Erweiterungen außer ".gpg" können denn noch vorkommen? Ist es sinnvoll beim Verschlüsseln im Dateinamen der Ausgabedatei die verwendete Schlüssel-ID einzubauen? Ich benutze gpg bisher noch nicht sonderlich, daher die eventuell naiv wirkenden Fragen. 😉
|
fpunktk
Anmeldungsdatum: 24. Oktober 2007
Beiträge: 142
|
grumpy grizzly schrieb: Gut soweit. Die Anführungszeichen habe ich allerdings absichtlich nicht gesetzt, da man sie bei Zuweisungen der Art Variable=$(...) oder Variable2=$Variable1 nicht benötigt.
Ich mache die Anführungszeichen immer drum um sicher zu gehen und für die Optik.
Bisher entscheidet mein Skript anhand der Erweiterung der Datei ob ver- oder entschlüsselt wird. Welche Erweiterungen außer ".gpg" können denn noch vorkommen? Ist es sinnvoll beim Verschlüsseln im Dateinamen der Ausgabedatei die verwendete Schlüssel-ID einzubauen? Ich benutze gpg bisher noch nicht sonderlich, daher die eventuell naiv wirkenden Fragen. 😉
Laut Wiki-Eintrag können auch .asc Dateien rauskommen. Eventuell kann man auch mit file nachsehen, welchen Dateityp man hat, aber das gibt mir bei .gpg Dateien nichts wirklich eindeutiges zurück. Man könnte auch versuchen zu entschlüsseln und wenn das nicht geht, dann verschlüsselt man. Wenn man die Schlüssel-ID einbaut, dann kann ein Angreifer sehen, für wen die Datei bestimmt ist. Daher würde ich das weglassen, denn einen richtigen Vorteil sehe ich nicht.
|
Alice_wtfiA
Anmeldungsdatum: 6. Januar 2011
Beiträge: 1292
|
Würde mich freuen, wenn noch jemand den 862609 Fehlerbericht: "Seahorse-plugins missing in Oneiric", unterstützen würde. Bis heute haben 37 Personen durch Anklicken von "I'm affectes too" dem Wunsch nach einer erneuten Bereitstellung von Seahorse-Plugins in GNOME > 2.3 Ausdruck verliehen. Dann könnte man Dateien nämlich einfach von Nautilus aus verschlüsseln, so wie früher...
|
grumpy_grizzly
Anmeldungsdatum: 26. Dezember 2011
Beiträge: 263
|
fpunktk schrieb: Laut Wiki-Eintrag können auch .asc Dateien rauskommen. Eventuell kann man auch mit file nachsehen, welchen Dateityp man hat, aber das gibt mir bei .gpg Dateien nichts wirklich eindeutiges zurück. Man könnte auch versuchen zu entschlüsseln und wenn das nicht geht, dann verschlüsselt man. Wenn man die Schlüssel-ID einbaut, dann kann ein Angreifer sehen, für wen die Datei bestimmt ist. Daher würde ich das weglassen, denn einen richtigen Vorteil sehe ich nicht.
Okay, asc habe ich jetzt erstmal ausgelassen, gucke ich mir noch an was das genau ist. Hab jetzt alles halbwegs sauber in Funktionen aufgeteilt und Fehlermeldungen mit eingebaut. Dadurch ist das Skript nur leider etwas länger geworden. Wer Lust hat probiere es mal bitte aus. Verbesserungsvorschläge sind jederzeit willkommen. ☺ Ich benutze Xfce, daher habe ich es bisher nur mit Thunar getestet.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 | #!/bin/bash
errormsg(){
zenity --error --text="$1"
}
decrypt(){
[[ -e "$2" ]] && { errormsg "Datei existiert bereits: '$2'"; exit 20; }
[[ -z "$GPG_AGENT_INFO" ]] && { errormsg "GPG_AGENT_INFO nicht gesetzt.\nBitte gpg-agent einrichten."; exit 20; }
gpg -d -o "$2" --batch --no-tty "$1" || exit 40
}
encrypt(){
[[ -e "$1.gpg" ]] && { errormsg "Datei existiert bereits: '$1.gpg'"; exit 30; }
RECIPIENT=$(gpg --list-keys | sed -n -e '/^uid/s/^uid *//p;' | zenity --list --text='' --column='verfügbare Schlüssel' --title='Bitte Schlüssel auswählen')
[[ $? -eq 0 ]] || exit $?
if [[ -z "$RECIPIENT" ]]; then
gpg -e --default-recipient-self --batch --no-tty "$1" || exit 40
else
gpg -e --recipient "$RECIPIENT" --batch --no-tty "$1" || exit 40
fi
}
which zenity >/dev/null || { echo "Zenity nicht gefunden, bitte installieren."; exit 10; }
[[ -n "$1" ]] || { errormsg "Keine Datei angegeben.\n\nAufruf: ${0##*/} DATEI"; exit 10; }
[[ -e "$1" ]] || { errormsg "Datei nicht gefunden: '$1'"; exit 10; }
if [[ "${1##*.}" == 'gpg' ]]; then
decrypt "$1" "${1%.*}"
else
encrypt "$1"
fi
|
|
fpunktk
Anmeldungsdatum: 24. Oktober 2007
Beiträge: 142
|
grumpy grizzly schrieb: Okay, asc habe ich jetzt erstmal ausgelassen, gucke ich mir noch an was das genau ist. Hab jetzt alles halbwegs sauber in Funktionen aufgeteilt und Fehlermeldungen mit eingebaut. Dadurch ist das Skript nur leider etwas länger geworden. Wer Lust hat probiere es mal bitte aus. Verbesserungsvorschläge sind jederzeit willkommen. ☺ Ich benutze Xfce, daher habe ich es bisher nur mit Thunar getestet.
asc ist das ascii Ausgabeformat von gpg. Das Script ist so schon recht gut, ich habe es aber noch ein wenig "verbessert": Anstatt Bash wird nur sh benutzt, das spart Ressourcen und ist kompatibler mit anderen Systemen. Ob ver- oder entschlüsselt werden soll wird darüber bestimmt, ob entschlüsselt werden kann (dazu habe ich in decrypt teilweise exit durch return ersetzt).
Vorteil: Man muss sich auf keine Dateiendung verlassen.
Nachteil: Wenn beim Entschlüsseln etwas anderes schief geht, dann wird versucht zu verschlüsseln, was man aber bei der Schlüsselauswahl abbrechen kann. Außerdem kann es Probleme geben, wenn die Datei keine Dateiendung hatte, denn dann existiert sie immer schon und kann so nicht entschlüsselt werden. (Lösen ließe sich das, indem man entweder sagt, dass das ein seltener und exotischer Fall ist (das wird jetzt getan), oder indem man dann so lange etwas an den Dateinamen anhängt, bis man einen hat, der noch nicht existiert.) Wenn man es ganz cool haben will, dann kann man noch die Exitcodes auf ein Binärsystem umstellen. Das halte ich aber für überflüssig, denn man hat mit der errormsg schon genügend Informationen. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 | #!/bin/sh
errormsg(){
zenity --error --text="$1"
}
decrypt(){
[ -e "$2" ] && { errormsg "Datei existiert bereits: '$2'"; return 20; }
[ -z "$GPG_AGENT_INFO" ] && { errormsg "GPG_AGENT_INFO nicht gesetzt.\nBitte gpg-agent einrichten."; exit 20; }
gpg -d -o "$2" --batch --no-tty "$1" || return 40
}
encrypt(){
[ -e "$1.gpg" ] && { errormsg "Datei existiert bereits: '$1.gpg'"; exit 30; }
RECIPIENT=$(gpg --list-keys | sed -n -e '/^uid/s/^uid *//p;' | zenity --list --text='' --column='verfügbare Schlüssel' --title='Bitte Schlüssel auswählen') || exit $?
if [ -z "$RECIPIENT" ]; then
gpg -e --default-recipient-self --batch --no-tty "$1" || exit 40
else
gpg -e --recipient "$RECIPIENT" --batch --no-tty "$1" || exit 40
fi
}
which zenity >/dev/null || { echo "Zenity nicht gefunden, bitte installieren."; exit 10; }
[ -n "$1" ] || { errormsg "Keine Datei angegeben.\n\nAufruf: ${0##*/} DATEI"; exit 10; }
[ -e "$1" ] || { errormsg "Datei nicht gefunden: '$1'"; exit 10; }
decrypt "$1" "${1%.*}" || encrypt "$1"
|
|
Das_Wort
Anmeldungsdatum: 23. Dezember 2009
Beiträge: 5263
|
Gibt es Adele noch?
"Freundlicher E-Mail-Roboter Adele". Jeder kann einfach eine unverschlüsselte E-Mail mit dem eigenen öffentlichen Schlüssel - entweder als Anhang oder per Copy'n'Paste - an adele@gnupp.de senden. Der Betreff sollte "mein öffentlicher Schlüssel" lauten. Adele wird mit einer verschlüsselten E-Mail antworten. In dieser Antwort ist zusätzlich der öffentliche Schlüssel von Adele enthalten.
Edit: Mir war nicht klar das es sich um einen Cronjob handelt. Hat lange gedauert ist nun aber da.
|
frustschieber
Ehemalige
Anmeldungsdatum: 4. Januar 2007
Beiträge: 4259
|
Ja, Adele gibt es noch ☺ Mailverschlüsselung ist aktuell geworden. Frage: wo ist beschrieben, wie man den von Adele mitgeschickten Schlüssel importiert? Gruss
|
aasche
Anmeldungsdatum: 30. Januar 2006
Beiträge: 14259
|
frustschieber schrieb: Frage: wo ist beschrieben, wie man den von Adele mitgeschickten Schlüssel importiert?
In den Abschnitten "Der Schlüsselbund" (grafische Programme) und "Schlüssel importieren" (Kommandozeile).
|
frustschieber
Ehemalige
Anmeldungsdatum: 4. Januar 2007
Beiträge: 4259
|
setzt das nicht voraus, dass der Schlüssel als Datei vorliegt? Adele schickt den ihrigen aber als Fliesstext in der mail ☹ Danke
|
aasche
Anmeldungsdatum: 30. Januar 2006
Beiträge: 14259
|
frustschieber schrieb: setzt das nicht voraus, dass der Schlüssel als Datei vorliegt? Adele schickt den ihrigen aber als Fliesstext in der mail ☹ Danke
Den Text zwischen und einschliesslich der Zeilen
-----BEGIN PGP PUBLIC KEY BLOCK-----
-----END PGP PUBLIC KEY BLOCK-----
kopieren und in eine leere Textdatei mit der Endung .asc speichern.
|
Tronde
Anmeldungsdatum: 23. November 2006
Beiträge: 1640
|
Hallo. aasche hat meinen letzten Beitrag abgetrennt, um die Scripts im Thread http://forum.ubuntuusers.de/topic/gnupg-skripten/ testen zu lassen. Nach 92 Aufrufen kam bisher kein Einwand. Daher melde ich mich mich wie gewünscht wieder hier in der Diskussion. Wie geht es denn nun weiter? Darf ich die überarbeiteten Scripts in den Artikel einbauen? Oder hat jemand noch einen Änderungswunsch oder möchte mir noch etwas mitgeben was zu beachten ist? MfG Tronde
|
aasche
Anmeldungsdatum: 30. Januar 2006
Beiträge: 14259
|
Tronde schrieb: Darf ich die überarbeiteten Scripts in den Artikel einbauen?
Ja bitte ☺
|
Tronde
Anmeldungsdatum: 23. November 2006
Beiträge: 1640
|
|