Twitter-DMs verschlüsseln
13. August 2015 um 14:11 Uhr von Atari-Frosch
Twitter hat gerade bekanntgegeben, daß seit gestern bei den Accounts sukzessive die 140-Zeichen-Grenze bei DMs (Direktnachrichten) fallen soll. Mein erster Gedanke war ja: Oh, schön, dann erfahren sie noch mehr über ihre Nutzer. Aber dann wurde mir auch klar: Das Wegfallen der Grenze bringt gerade dahingehend einen Vorteil.
@AlexSchestag und ich probierten deshalb gestern Abend ein wenig herum, und voilà: Heraus kamen GnuPG-verschlüsselte DMs. Zugegeben, es ist ein wenig umständlich, aber es geht.
Möchte man eine verschlüsselte DM an jemanden schicken, braucht man natürlich dessen öffentlichen Schlüssel. Den kann man sich, falls er noch nicht im lokalen Schlüsselbund vorhanden ist, von Keyservern holen, und zwar mit
:~$ gpg --fetch-keys $URIs KeyID/Mailadresse
wobei $URIs durch die Adresse mindestens eines Keyservers (zum Beispiel pool.sks-keyservers.net, pgp.cs.uu.nl, pgp.mit.edu) ersetzt werden muß. Und natürlich muß man angeben, für welche Mailadresse oder zu welcher Key-ID man den Schlüssel haben will.
Im Editor schreibt man dann erstmal seine Nachricht und speichert sie – zum Beispiel als dm.txt – ab. Der nächste Schritt ist die Verschlüsselung:
:~$ gpg -e -a -r user@mailadress.se dm.txt
Die Parameter stehen für
- -e – encrypt
- -a – ASCII armored, sonst kommt Binärzeug raus
- -r – mit dem öffentlichen Schlüssel dieser Mailadresse soll verschlüsselt werden.
Ohne den Parameter -r wird die User-ID abgefragt. „user@mailadres.se“ ist hier natürlich nur ein Platzhalter, da gehört die richtige Mailadresse des Empfängers hin.
Das Ergebnis ist eine neue Datei namens dm.txt.asc. Diese kann man jetzt im Editor öffnen und dann per Copy & Paste in das Nachrichtenfeld der DM einwerfen.
Der Empfänger macht das ganze jetzt umgekehrt: Inhalt der DM in einen Editor pasten, Datei abspeichern, und dann entschlüsseln mit
:~$ gpg -d dm.txt
Und dann kann die DM gelesen werden.
Der nächste Schritt wäre jetzt, daß die Twitter-Apps diese Funktion integrieren. Browser-Plugins, die das automatisieren, wären auch nett. 🙂
Auf anderen Plattformen geht das natürlich genauso, solange zumindest private Nachrichten keine zu knappe Zeichengrenze haben. Und man kann solcherlei verschlüsselte Nachrichten natürlich nur jeweils mit genau einer Person teilen, nicht mit mehreren; in diesem Fall müßte man für jeden Empfänger separat verschlüsseln und die Nachrichten einzeln versenden.
Achja, natürlich kann man, wenn man schon Mailadresse und öffentlichen Schlüssel einer Person hat, auch eine „richtige“ E-Mail schreiben. Situationsbedingt ist es aber vielleicht gelegentlich praktischer, diesen anderen Weg zu gehen.
Und noch ein achja: Das funktioniert natürlich auch bei E-Mails an sich, wenn das heißgeliebte Mailprogramm keine PGP-basierte Verschlüsselung kennt oder wenn man Mails nur über ein Webinterface verschickt und empfängt.
Und noch ein letztes: Die Konsolenaufrufe sollten – ohne daß ich das jetzt getestet habe – genauso unter Mac OS X und Windows funktionieren.
13. August 2015 at 15:40
Guck’ Dir mal bti an: https://gregkh.github.io/bti/
Damit sollte man das in beide Richtungen durch GPG pipen können, eigentlich. Hab allerdings kein Twitter und bei StatusNet gehen keine DMs, musst also selbst testen.
13. August 2015 at 21:25
Auf Android kann man das auch ohne den Zwischenschritt über eine Datei realisieren. Die Apps APG und OpenKeyChain haben beide die Möglichkeit eine Nachricht direkt in der App einzugeben und zu verschlüsseln. Über die Funktion „Teilen“ oder über die Zwischenablage kann man die verschlüsselte Nachricht dann als DM in Twitter oder über andere App verschicken. Bei Twitter geht das natürlich nur, wenn mehr als 140 Zeichen möglich sind (bei mir geht’s derzeit nicht). Sowohl APG, als auch OpenKeyChain können beide direkt in die Zwischenablage verschlüsseln und auch von dort entschlüsseln, so dass die Sache gar nicht so sehr umständlich ist.
Viele Grüße
RaGDoku
RaGDoku
13. August 2015 at 23:06
Mich hat heute der Schaffensdrang gepackt, und ich habe ein kleines Script in R geschrieben, das DMs automatisiert verschlüsselt versendet. Das ist sicher noch ausbaufähig, tut aber einwandfrei. Um das zu nutzen, braucht ihr einen Developer-Account bei Twitter, in dem ihr eine App anlegt und die entsprechenden Keys generiert, und natürlich R. Das Script sollte unter Linux, Windows und Mac laufen.
#!/usr/bin/Rscript
library('devtools');
library('twitteR');
library('readr');
api_key <- "YOUR_KEY"
api_secret <- "YOUR_SECRET"
access_token <- "YOUR_TOKEN"
access_token_secret <- "YOUR_TOKEN_SECRET"
setup_twitter_oauth(api_key,api_secret,access_token,access_token_secret)
cat("Empfänger: ")
empfaenger <- readLines(file("stdin"),1)
cat("Nachricht: ")
nachricht <- readLines(file("stdin"),1)
cat("Mailadresse zum Verschlüsseln: ")
mail <- readLines(file("stdin"),1)
fileConn<-file("enc.txt")
writeLines(c(nachricht), fileConn)
close(fileConn)
system(paste("gpg -e -a -r", mail, "enc.txt"))
fileConn<-file("enc.txt.asc",open="r")
nachrichtencrypted <- readLines(fileConn)
nachrichtencrypted <- paste(nachrichtencrypted,collapse="\r\n\t")
close(fileConn)
dmSend(nachrichtencrypted,empfaenger)
system("rm enc.txt")
system("rm enc.txt.asc")