Lieber Zuschauer, dieser Untertitel wurde automatisch generiert von YouTube und dementsprechend (sehr) fehlerhaft. Wenn du kannst, hilf uns bitte gute Untertitel zu erstellen: https://c3subtitles.de/talk/1526 Danke!
moin ja der Harold hat leider gerade
technische Probleme dem ist sein Rechner
abgeschmiert deshalb muss ich mich ein
wenig selbst heralden mein Name ist
volkorn und ich bin seit einiger Zeit
beim Car Computerclub dabei und mache
unter anderem die Mitgliederverwaltung
und in dieser Funktion habe ich viel mit
verschlüssel E-Mail zu tun weil ne der
Kongress chuldung der Chaos Computerclub
möchte natürlich die personbezogenen
Daten seiner Mitglieder möglichst
verschlüsselt übers Netz senden dafür
wird open PGP benutzt und die
Mitgliederverwaltung ist in Python darum
tada gebe ich heute euch einen Vortrag
darüber was ich gelernt habe darüber wie
man OpenPGP verschlüsselt E-Mails mit
Python vernünftig machen kann oder auch
nicht
so
den Kontext habe ich an dieser Stelle
jetzt schon ein wenig vorausgenommen
wenn ihr mehr Interesse habt darüber zu
erfahren wie die Mitglieder Verwaltung
des Chos computercubs läuft was für
Software wir da benutzen was die
Probleme sind und so weiter und so fort
dann schaut einfach mal auf
mediaaccc.de rein und sucht dort nach
volcorn da gibt's irgendwie vier talks
und drei davon sind darüber wie die
Mitgliederverwaltung
funktioniert
so
fangen wir mal ganz vorne an wir haben
eine Mitgliederverwaltung die ist in
Python
geschrieben und jetzt möchte ich ganz
naiv ich bin
lalala einfach schön PGP bindings oder
irgendwas benutzen um E-Mails zu
verschlüsseln also fange ich an ganz
naiv ich suche mal was gibt es denn für
Pakete in
ppi die GPG sprechen können und dann
gibt's ein paar Ergebnisse und dann
guckt man sich die an schau ich mein
gibt natürlich immer gute und weniger
gute welche die outdated sind und so
aber irgendwas ist ja üblicherweise wo
die Leute gerade alle dabei sind und es
benutzen
und da fing dann schon meine Stimmung an
so ein bisschen zu schlechter zu werden
also ich nehme euch jetzt mal mit auf
eine kleine Tour der Dinge die es da
alle gibt
ähm
angefangen mit Python gnoopyg
von ven sjip wenn ich das richtig
ausspreche geschrieben soweit
ichorausfinden konnte die erste Python
bindings die es gab sehr populär weit
verbreitet viel benutzt und alles aber
das ist nur ein simpler Rapper über die
GPG executable was dort intern passiert
ist tatsächlich dass einfach nur GPG
aufgerufen wird ne mit subprocess P open
GPG Excel auf dem Windows oder sowas ne
Commandline Parameter dahinter und
aufrufen und hier habe ich jetzt extra
noch das Shell gleich true
hingeschrieben denn das ist eines der
großen Probleme dieser dieser Technik
dieses Paket hatte super viele
Sicherheitsprobleme mit Shell injection
also ich weiß nicht e die exakten
Angriffe aber so grob man schreibt ein
bisschen shellbefehle mit in den Code
den man gerne nicht in den Code in die
Daten die man gerne entschlüsselt hätte
und zack wird es ausgeführt mit den
Rechten des GPG Users
hier na ja aber wie sieht überhaupt
dieses Interface aus GPG executable
aufrufen das ist doch furchtbar instabil
oder ja ist es auch es gibt da einige
Sachen die es besser machen z.B
GPG
gibt mit dem Befehl Dash Dash with Dash
Colins der hier oben in der ersten Zeile
in der Mitte angegeben ist ein
maschinenlesbares Format aus wie ihr
seht das sieht alles sehr konfus aus und
diese ganzen Doppelpunkte sind eben die
trendzeichen für die
m verschiedenen Felder die man dann
maschinenlesbar aus auslesen kann das
große Problem daran ist es natürlich
wieder ein eigenes Format man muss das
Lernen man hat eine Beschreibung muss
halt ein Paser dafür schreiben ist er so
mäßig
geil kleiner funf natürlich haben Sie
daran gedacht dass wenn man jetzt ein
Doppelpunkt in seinen Usernamen oder
seinen Kommentar oder sowas reinschreibt
dass der dann ordentlich escaped wird ja
wird das Z ein Back x3a wenn man ein
Back x3a reinschreibt haben sie auch
dran gedacht ne wird alles sauber
encodet und decodet wieder aber muss man
drauf aufpassen dass man das bei der
Umsetzung natürlich auch wieder
ordentlich richtig macht na
ja was aber wenn sich das Format
ändert z.B hat sich in der GOP g Version
20110 der
das Format so insofern geändert dass die
timestamps umgestellt wurden ne was
passiert dann der wpper fliegt auf die
Nase wenn er das nicht explizit
irgendwie vorher abprüft auf welcher
Version er da gerade unterwegs ist und
wenn du dann halt irgendwie ein älteren
Rapper hast und eine neue GPG variable
dann tut er das wohl nicht und
bum komische Sachen passieren ja dieses
Modul python- GG war das erste dass die
Mitgliederverwaltung benutzt
hat das hat zu interessanten Sachen
geführt z.B wenn ein Key abgelaufen ist
dann gab es einen leeren Rückgabewert
aber keine Exception oder Fehlermeldung
oder sonst was auf programmierseite und
das hat einfach dazu geführt dass eine
leere E-Mail versendet wurde diejenigen
unter euch die Mitglieder im Club sind
und vor 2017 schon dabei waren haben das
vielleicht mal erlebt wenn Sie ein Key
bei uns hatten der dann abgelaufen ist
ja dann ist das mich genau passiert
genben eine leere Mail an die Mitglieder
und die Mitglieder schrieben dann so
zurück was wollt ihr denn habt ihr da
vielleicht den Inhalt vergessen und ich
habe meinen Standard anwortsatz da
schonfür schon gehabt mein
textbauchstein echt nerviges Problem
wäre halt viel geiler wenn man irgendwie
eine Exception bekommt hey der Key ist
abgelaufen den du hier gerade benutzen
möchtest kann man die behandeln kann
damit arbeiten wie auch immer na ja ganz
perfed das Detail an dieser Stelle der
String ist übrigens nicht exakt leer der
hat irgendwelches Whitespace drin also
es hat nicht gereicht einfach zu prüfen
String Layer nein na ja hätte man
irgendwie String Layer und und Strip den
wipace oder sowas machen müssen hätte
man irgendwie alles fixen können man
hätte auch irgendwie den Fehler
antipizeren können antizipieren können
und sagen können okay ist der Schlüssel
noch gültig dann verschick sonst nicht
oder wie auch immer ich find es trotzdem
sehr unschön und wackerig weil ich
möchte dass wenn in der verschüssung
etwas schief fällt läuft ja dass ich
eine vernünf Exception habe dass ich das
behandeln
kann also gucken wir weiter kN
das ist eine Aktualisierung von ne
Aktualisierung ist falsch ein
Neuschreibung eine ein
neugeschriebenes Modul von Isis
Lovecraft und einer der Auslöser war
dass eben diese ganzen subprocess
Aufrufe so furchtbar Sicherheitslücken
behaftet waren und deshalb hat sie das
neu gemacht besser hat jetzt weniger
Probleme mit solchen Sicherheitslücken
ist nicht kompatibel zu pythong was
übrigens auch zu viel Problem geführt
hat weil die Leute dachten oh es gibt
neue Version ich nehme die mal und dann
Boom fliegt mir alles um die Ohren weil
die AP ist anders na aber es hat immer
noch das Problem es ist halt nur ein
Rapper der die GPG executable aufruft
mit dem instabilen Interface und alles
finde ich nicht so cool gucken wir mal
weiter was gibt's den noch für
möglichkeiten schauen wir mal
rein und zwar jetzt außerhalb von ppi
was gibt's D noch
so se se ist eine eigenständige open PGP
Standard Implementierung ja das heißt
das ist nicht irgendwie Rapper oder
sonst was sondern es ist ein Ersatz für
gupg eine Alternative und sequoya wird
in Rust geschrieben das ist eigentlich
ganz cool weil Rust ist eine
Programmiersprache die einem viele
klassische
Programmier Probleme also
Fehlerklassen von vorne verhindert wie
z.B Buffer Overflows oder ähnliches und
gerade für eine sicherheitsrelevante
Anwendung finde ich das eine ziemlich
coole Sache also mal reingeschaut das
Ding ist auch recht performant es gibt
eine Attacke an auf Gopi gikies
sogenannte signature flooding das wurde
im Juni letzten Jahres mal groß
irgendwie ausgespielt da wurden die Keys
von zwei gopg Entwicklern mit insgesamt
ne mit jeweils ungefähr 150.000
Signaturen zugespammt die auf die
Keyserver hochgeladen wurde das führte
dazu dass erst die Keyserver in die Knie
gegangen sind Leute die diese Keys
runtergeladen haben die ganzen
Signaturen konnten mit ihrem GG nicht
mehr arbeiten weil das dann versucht hat
all die Signaturen beim Importieren zu
verifizieren und so weiter und so fort
und dann ist gopg einfach zu einem crawl
zu einem ganz langsam dahin krieen
verkommen ein so langen prozessieren
dieser ganzen Keys dass man einfach nur
noch verzweifelt abgebrochen hat weil
das wird einfach nicht
fertig ja Sequoia hat für diese Beispiel
Keys 5 Sekunden gebraucht die jeweils
importieren und war gar nicht mal darauf
optimiert diese angriffsklasse irgendwie
abzufangen oder so das klingt eigentlich
ganz cool weil ganz ehrlich ratet mal
welche Keys die sind die bei uns in der
Mitgliederverwaltung an auftauchen ja da
haben wir alles mögliche an skorilen
Keys na
ja also wäre cool zu nutzen wie schaut's
denn aus gehen wir auf die Webseite so
pison Sequoia die Python bindings Status
early
prototype ja habe ich mir angeschaut
sieht alles ganz hübsch aus aber echt da
fehlt noch einiges in der API um das
alles nutzen zu können was wir für die
Mitgliederverwaltung
brauchen also müssen wir ein bisschen
weiter gucken müssen wir aber gar nicht
so weit gucken können wir ja mal
bei den Geldgebern für sequoya
nachschauen sequya ist zwar Open Source
Projekt und so weiter aber die
Entwickler bekommen i Geld von der
pretty easy privacy Foundation und die
haben ja auch ein Produkt draußen pretty
easy privacy oder auch Pep Pep benutzt
gpgm darauf gehe ich später noch ein und
hat selber Python bindings beindings die
es
anbietet allerdings auch wenn es ob
Source ist ist die Installation
echt nicht einfach also um um es mal so
zu sagen ich
musste man muss mehrere Abhängigkeiten
vorkompilieren es gibt keine ich habe
keine fertigen Pakete gefunden nach dem
Auto hier ist irgendwie pository wo das
jemand mal für Debian oder sowas fertig
gemacht hat nee ich musste erstmal
überhaupt die die Anleitung finden wie
das geht und da geht man auf die
Webseite und stellt fest ja der Link für
integrate Pep ne in dein Python oder
sowas 404 der ist kaputt na
ja ich habe die Repositories von denen
gefunden da gibt's dann irgendwie auch
ein Readme das Readme vergisst übrigens
zu erwähnen welcher branch denn jetzt
der aktuelle ist warum habe ich erstmal
den alten gebaut bis ich d mit einem
Entwickler gesprochen hat mir gesagt hat
da muss du den neuen nehmen
dieser neue branch hat zyklische
Abhängigkeiten wo man dann noch
irgendwie die magische Befehlszeile
wissen muss und hey es ist echt nicht
einfach das Ding aufzusetzen
glücklicherweise kenne ich einen der
Entwickler dort und habe mit dem einfach
mal kurz per Java das gefixt
durchgesprochen der hat mir geholfen so
dann hatte ich also mein fertige Python
bindings für PR easy privacy und das
sieht ehrlich gesagt hübsch aus also die
API gefällt mir muss ich sagen man hat
irgendwie identities die man irgendwie
anlegen kann die dann key haben dann
kann man an die identity eine Nachricht
verschlüsseln und wenn man irgendwie
einen Fehler macht an irgendeiner Stelle
dann fliegt eine C assertion und das
ganze
Python
crasht und das will ich nicht ganz
ehrlich ich möchte bitte dass da eine
Exception kommt wenn irgendwo was falsch
ist ja
und wenn mir mein Python abschmiert kann
ich nicht da vernünftig drauf reagieren
und sagen hier an muss ich mal dem
Mitglied Bescheid geben dass der Key
abgelaufen ist oder hier muss ich dem
sagen ne der jetzt gerade an der
Mitgliederverwaltung sitzt du musst was
anderses machen oder sowas nee da muss
ich das neu starten und irgendwie den
die Bagger anwerfen oder was weiß ich
das das ist einfach keine Option für ich
möchte 2000 Mails heute abend
rausschicken es ist 22 Uhr ich möchte
nach Hause ja na ja aber gut kann ja mal
das Projekt irgendwie noch mal anschauen
verbessern supporten mit
beitragen aber das meim das rausfällt
sieht übrigens so aus wenn man es in
thunderbd öffnet es ist eine leere
E-Mail frag mich bitte nicht warum
dieses PGP mim das ja eigentlich ganz
hübsch aussieht so beim thund ankommt
wahrscheinlich ist da irgendwas schief
aber das war dann so der Punkt wo ich
gesagt habe okay Pep sieht zw irgendwie
ganz cool aus hat aber einfach zu viele
Probleme um es derzeit so zu
benutzen also weitergeschaut GPG me das
hatte ich gerade eben erwähnt Pep beruht
basiert auf
gpgm und gpgm sind die offiziellen
Python
von
kN also lass uns do mal damit arbeiten
wie mache ich das üblicherweise ich lege
ein Projekt an ich habe requirements.txt
da stehen meine Pakete
drin und damit fängt dann schon an
welches GPG nimmt man denn man kann sich
das von ppi installieren oder fast J das
Betriebssystem das also Linux das ein
das GPG mitli
liefert auch die Python bindings mit als
eigenes python- GPG oder sowas
Paket warum machen sie das es liegt mich
daran dass diese Python bindings von der
Version her passen müssen zu der GPG
Installation die man hat sonst gibt es
merkwürdige
Fehler ja das Problem
ist man will also nicht das Python GPT
aus dem pipine Nutzen sondern das aus
dem
Betriebssystem man hat aber ein virtual
environment also muss man dann auch
irgendwie darauf aufpassen hey bitte
nimm hier minus minus ne System minus
Site minus
packages die Pakete die auf meinem
Betriebssystem installiert sind hinzu in
das virtual environment und benutzt die
dort auch kann man machen bei mir hat
das jetzt allerdings Z eine kleinen
ja unschön Problem geführt ich habe
nämlich pipen benutzt so ich mache jetzt
den kleinen gegebenenfalls pipm Exkurs
pipampf ist ein echt nettes Tool das man
benutzen kann um sein Projekt zu managen
also es ist es macht das virtual
environment automatisch vin auf legt das
irgendwie in ein Directory ab und ruft
es automatisch wieder auf wenn man da
irgendwie mit pipm dran arbeitet also in
dem Directory wo man das angelegt hat
man kann mit PIP and run Befehle
aufrufen und so weiter aber man kann
auch z.B DEP pendencies sehr gut managen
z.B kann man prüfen ob irgendwelche der
dependencies die man hat bekannte
Sicherheitslücken haben und geupdatet
werden sollen das ist natürlich sehr
bequem finde ich für eine
Mitgliederverwaltung die
sicherheitsrelevante Daten hat sehr
angemessen total cool und alles
allerdings pipm hat irgendwie ein Bug
weshalb etliche Versionen davon nicht
den Command die Commandline Parameter
übernehmen für System side packages und
des deshalb kann pipm in allen Versionen
die ich so installiert gekriegt habe
ohne dass mir alles um die Ohren flogt
nicht Pakete außerhalb des Virtu ens mit
benutzen also um das dann zu benutzen
muss ich erstmal pipm
rauswerfen na gut der Bug ist gefixt
irgendwann wird sicherlich auch wieder
Version gehen wo es gibt geben wo es
geht aber gut kleiner Exkurs es ist
dauernd irgendwie sowas na ja schauen
wir mal weiter
weil Sachen zu verschlüsseln ist ja das
eine
ich möchte ja auch Keys runterladen wir
haben das bisher in der
Mitgliederverwaltung so geregelt dass es
nur eine key ID gibt die man dem
Datensatz hinzufügen kann das halt
irgendwie Trust on first Side und der
Mitgliedsantrag hat halt ein Feld dafür
wo drin steht hier kannst ein GPG key
eintragen wir speichern das dann und
gucken dann auf die klassischen
Keyserver wo denn dieser Key liegt Laden
den
herunter und benutzen
den das war alles wunderbar hat ganz gut
funktioniert bis dann eines Tages Hagrid
kam Hagrid ist ein Keyserver auf Basis
von sequoya sequya hatte ich ja eben
schon vorgestellt ein Rust
geschrieben der hat übrigens dieses
signature flooding Problem was ich
erzählt habe nicht der kommt damit klar
und kann sich halt irgendwie gegen
signature spamming
behaupten und der macht auch ein paar
andere Sachen sehr hübsch z.B wenn man
die klassischen Keyserver sich anschaut
die
sind so gebaut dass man nur Daten
hinzufügen kann das heißt wenn ich jetzt
den Key von jemanden anderes nehme den
diese Person mir anvertraut hat und den
auf diesen Keyserver hochlade dann ist
er dort hinzugefügt und kann nicht mehr
entfernt werden under kann die Person
der dir dieser Key gehört so viel machen
wie sie möchte die kann den Key noch
voken aber die Information diese
E-Mailadresse zu dem Namen existiert und
ist dort auf den Keys hochgeladen das
natürlich privacymäßig nicht so geil
darum kann z.B hagrd eine Bestätigung
der Keys per E-Mail machen schickt dann
halt an alle IDs die in dem Key
hinterlegt sind eine E-Mail und sagt
bist du sicher dass hochladen möchtest
sag mal hier okay nur dann wird key
freigeschaltet coole Sache ja außerdem
muss man an dieser Stelle auch anmerken
die klassischen Keyserver sind in einem
obskuren
Amel Dialekt geschrieben und
das die Software dahinter ist ein
cleverer Algorithmus zum geschickten
verteilen und so weiter der und und
synchronisieren der Server
untereinander ist halt eine Doktorarbeit
eines PhD Studenten wie auch immer
gewesen und ist super Smart aber halt
auch echt schwierig zu maintain es gibt
wenig Leute die den Code lesen können es
passieren wenige seltene Verbesserungen
da dran und das ist bei herg jetzt ein
bisschen anders das ist natürlich ganz
schön diese Vorteile haben auch viele
Leute erkannt und deshalb wenn man sich
mal auf die Webseite auf der Webseite
von Hagrid anschaut hat dieser Keyserver
leichten Siegeszug zurückgelegt enicmail
benutzt seit einiger Zeit
keys.openpgp.net.org als neuen default
Server GP g die GPG Suite für MacOS
benutzt den die Open keychain für
Android pnus für iOS ja also im
Wesentlichen ist es der Default Server
auf allen neuen
Geräten und das ist auch schön jetzt
haben wir allerdings folgende Situation
wir haben natürlich in der
Mitgliederverwaltung lauter Leute die
die alten Keyserver noch benutzen und
neu hinzukommende Leute die diese neuen
Keyserver nutzen die teilweise gar nicht
wissen dass es da zwei verschiedene
Universen gibt die nicht miteinander
reden und sagen aber mein Keyserver mein
Key ist doch auf den keyservern ja der
ist auf openpg der ist auf
keys.oppgp.org aber nicht auf den
klassischen Keyserver muss man den mal
erklären und dann wollen sie aber nicht
auf die alten Keyserver hochladen weil
da ist ja nicht die Bestätigung sind
nicht so sicher den vertrauen Sie nicht
so wie den neuen die sie nur
unterstützen gibt viele Grunde für hin
und her und aus der
mitgliederverwaltungssicht ganz klar
checken wir den Key einfach auf beiden
ja prüfen wir ein der alten Keyserver
prüfen wir den
neuen geht nicht mit gopyg also
zumindest nicht auf schöne Weise gopyg
hat da eine Config Datei wo der
Keyserver drin steht und den kann man
auch den Keys mehrere Keyserver tragen
aber GPG GG nimmt einfach nur ich weiß
gar nicht mehr den ersten oder den
letzten Eintrag aus dem config file und
das war's das heißt wenn ich mehrere
Keyserver abfragen möchte ja dann läuft
es im Endeffekt darauf Hina aus dass ich
eine Config Datei editiere den GPG Agent
und direr Manager glaube ich beide muss
ich da an der Stelle neu starten dass
die Config datatei nur eingelesen wird
ich glaube je nach Version muss ich nur
ein der beiden egal und dann muss ich
das für jede es mal wenn ich einen neuen
Key Suche auf zwei verschiedenen Servern
wiederholen und das eignet sich
natürlich irgendwie gar nicht für ich
möchte das für 2000 Mails okay 2000
Mails sind nicht verschlüsselt sagen wir
mal 200 verschlüsselte Mails parallel
machen das wird doch garantiert in Hose
gehen also
undchön aber wir sind nicht die Einzigen
mit dem Problem es gibt Leute die haben
das zu
lösen z.B gibt es HKP HKP
HKP ist der Name des Protokolls mit dem
die Schlüssel von den keyservern
angefragt werden und hochgeladen werden
und diese kleine Python Modul dieses
kleine Python Modul kann direkt mit den
qervern Reden und die Keys runterholen
das ist ziemlich simpel HTTP was da im
Endeffekt gesprochen wird und das auch
ganz schön dann hat man also die
Möglichkeit zu sagen hier ich habe diese
und jeden folgende Keyserver und bitte
lad mir doch mal den Key von dort runter
und kann man sich die Keys alle runter
unterladen und dann kann man sie in gupg
einfach die ganz normalen gpgm pindings
die ich schon vorgestellt hatte
importieren mit der Funktion key Import
und alles ist
schön nur ich bin hier an dieser Stelle
erstmal voll auf die Nase geflogen weil
meine gpgm pinings haben gar kein Key
Import ja weil ich benutze Ubuntu LTS
1804 ich bin halt so ich mag gerne
Stabilität und ich muss nicht irgendwie
jedes Jahr mir ein neues ununto Update
und so ne
ja 1804 nur 2 Jahre alt ist aber schon
total veraltet aus gopg Sicht denn key
Import gibt es in der in Python bindings
erst seit irgendwie 8.10.2018 also noch
keine zwei Jahre das ist nieange neu
dass das da eingebaut wurde das heißt
das ist auch wieder so ein Ding sind wir
wieder am Anfang will ich jetzt mein GPG
upgraden es ist wirklich so ein Moment
wo ich denke es ist einfacher mein
Betriebssystem abzugraden und und
einfach noch mal weiß ich nicht im Juli
glaube ich ist offiziell der Moment wo
man sagt man sollte LTS Updates
freischalten solangee warte ich glaube
ich einfach
noch na gut also aber ansonsten wenn ihr
auf die Idee kommt so ein source install
zu machen mit GRG das sind einfache 30
Schritte ca ganz bestimmt gar kein
fuckup Potential und na ja eigentlich
will ich es ja simpel halten ich mag es
gerne wenn Sachen simpel sind und nicht
zu viel komett stritte haben und
möglichst viel wenig Fehlerquellen also
gucken wir mal
weiter also nein sagen wir so mit gpgm
wenn man es richtig macht ja kriegt man
seine Sachen verschlüsselt man muss halt
nur die ganzen stolerfallen wissen ich
habe sie jetzt alle einmal genannt gibt
vielleicht noch die eine oder andere die
ich schon nicht mehr wahrnehme aber gut
so kommt man hin man kann Sachen
verschlüsseln man kann Keys runterladen
man kann Sachen entschlüsseln Keys
erstellen vielleicht auch interessant
für den private key mit mit dem man die
Sachen die rausgehen signiert oder sowas
okay schauen wir mal weiter weil wir
möchten jetzt nicht nur einfach
verschlüsselte Inhalte haben wir wollen
ja auch dass die Inhalte als
Mime PGP Mime Nachricht rausgehen es
gibt auch den den alten Standard die PGP
Nachricht das war einfach nur die
verschlüsselte Nachricht als Anhang
ranhängen wird von den meisten Mailern
auch noch unterstützt ist aber sehr
unschön eigentlich und das PGP ist viel
eleganter besser Mailer besser mit klar
okay PGP Mime was gibt's da denn gibt's
auch wieder Haufen Python Module die man
sich mit PIP anschauen kann ähm eins das
erste das auffällt ist PGP Mime und das
macht ein paar Sachen sehr hübsch das
nutzt z.B das sron Protocoll das ist
wenn ich den alles richtig verstanden
habe von den Sachen die ich mir
angeschaut habe im source von diesem
Modul oder auch in in der Doku von GG
das
Protokoll ist das was auch die GPG mi
bindings quasi mit der GPG lip
sprechen und da wird über ein Socket
Kommandos ausgetauscht ist ziemlich
stabil funktioniert gut das Problem ist
auf diese Weise haben Sie zwar ganz viel
von diesen subprocess aufrufen die immer
problematisch sind Umgang aber für ein
paar Sachen ist es immer noch notwendig
und so weiter aber das ganze Ding ist
von 2012 da war das letzte mal irgendwie
komit dran hat ein prof für sein
Studenten geschrieben passiert nicht
mehr so VI und das ist ein bisschen
schwierig finde ich ich hätte lieber
etwas was besser noch maintaint
wird okay E-Mail
GPG das ist ein sehr dünner Layer der
eigentlich nur meim Nachrichten
zusammensetzt und gar nicht mal
irgendwie das GPG binding macht
das würde von den Leuten hinter ach mein
Gott jetzt fät mir der Name gerade nicht
ein liefere ich noch nach vielleicht
ähm riseup glaube ich war das hinter den
die Leute die hinter riseup stehen
glaube ich haben das Zeug hier
entwickelt jedenfalls
das wurde einmal 2018 erstellt erstellt
Doku ist quasi leer ich meine es gibt
eine Doku HTML kann man sich
durchklicken und es gibt nur
Überschriften aber wenn man dann den
Sourcecode durchschaut stellt man dann
fest ja in der Standardkonfiguration
macht es gar nichts mit Verschlüsselung
der Encoder ist der encode no OP aber
alles was man machen muss ist eigentlich
diesen encode no OP da den
Encoder selber bauen und die AP ist
ersichtlich aus den Sourcen und das
könnte eigentlich ganz gut Funktion
iieren ich habe es ehrlich gesagt noch
nicht probiert aber es ist auf jeden
Fall auf meiner Todoliste für eine der
nächsten Sachen die ich mir
anschaue so GPT Mail
encrypt das Ding ist eine eierlegende
wol saau das macht wieder genau das
gleiche wie vorher die anderen Module
mit mit den subprocess Aufrufen außerdem
bindet es wir Scanner ein macht Spam
Detektion ist ein eigenständiger SMTP
Server der dazu gedacht ist sich vor
seinen anderen vor sein eigenen E-Mail
davorzustellen
davor zustellen und quasi als Gateway zu
fungieren viel zu overblown für das was
ich hier vor habe ne E-Mails versenden
mit GPG okay GPG mim noch so ein Projekt
benutzt Python gopg das das Python Paket
das älteste ganz vom Anfang das mit den
ganz vielen subprocess aufrufen und den
Sicherheitslücken die vermutlich alle
gefixt sind aber ist eigentlich was ich
nicht nutzen
möchte cryptomim dasselbe grün benutzt
die P
bindings g Lipp hier wird interessant
benutzt Python GG oder GPG und GP ist
der Name auch in in P gewesen für die
offiziellen pyon Bing bindings bevor sie
die offiziellen wurden das war nämlich
eigentlich auch nur so ein Projekt das
jemand aufgesetzt hat und dann zu den
offiziellen übernommen wurde aber da gab
es noch mal eine umbenahmung und die ist
hier noch nicht mitgemacht worden und
der letzte komit ist aus
2017 und das leider nicht so aus als ob
das mit dem aktuellen gnupig
zusammenarbeiten wird also das ist auf
so ein Level wo ich dann sage ich glaube
da gucke ich jetzt erst nicht me rein
das lohnt sich vermutlich nicht
also ganz ehrlich am Ende bin ich an der
Stelle angekommen und habe gesagt okay
lass es uns selber bauen so meim ist
jetzt auch gar nicht so
schwierig irgendwie email.mim Pakete in
der Python standard library die ganzen
Funktionen sind da und eine my mail
aufzubauen jetzt kurzer Exkurs in PGP
meim wie das
funktioniert man hat
eine multipart mixed das ist sozusagen
der äußere Container der ist da dur mit
dem content type die erste Zeile fängt
er an ganz unten hört er auf das ist
wieder diese gleiche Zeile mit der
Zahlenfolge und dazwischen gibt es dann
ein alternative Abschnitt und im
alternative Abschnitt hat man
einmal Text Plan und Text HTML das
wunderschön dann kann man näich Weide
Varianten einer Mail rauss senden und
der Empfänger kann entscheiden ob das
HTML oder den Plex sich anschaut und
dann nach
dem alternative Teil gibt es dann noch
den Teil des Anhangs und da kann ich den
Anhang einfach wiederholen mehrere
Anhänge ranhängen und der Anhang ist
dann einfach immer angezeigt weil der
ist nicht im alternative Block drin funf
am Rande Apple Mail bekommt das nicht
hin wenn jemand in der
Standardeinstellung eine E-Mail mit
Apple Mail mit Anhang schickt und wir
uns die anschauen dann schauen wir uns
die üblicherweise als pltext an und dann
wird der Anhang nicht angezeigt weil der
Anhang nur als Anhang des HTML teils
gemacht wird na ja ärgerlich aber gut so
das ganze wird dann mit OpenPGP
verschlüsselt ja also ich muss irgendwie
sowas bauen mit diesem meinem Zeug
verschlüssel das mit unpgp und häng das
dann einfach noch mal in ein meinem Mail
ran und zwar was ich rausbekomme ist
verschüsung dieser Teil von Begin PGP
message bis end PGP Message und den
stecke ich dann einfach in ein multipart
encrypted Container
rein soweit eigentlich
wunderbar das heißt das sind die
Schritte die man so machen muss man muss
sich
sein GPG das man irgendwie benutzt
aussuchen
irgendwie die Python bindings
hinbekommen und dann das ganze noch in
mein
verpacken ja und am
Ende empfehle ich wenn man diese ganzen
Schritte alle zusammen hat und das alles
durchführt sich ein einfaches Test Setup
zu machen so ein Test Setup kann sein
dass man die Datei einfach in ein Punkt
EML schreibt und das Punkt EML kann man
dann in standardbird mit anicmail öffnen
und kann das ganz einfach
prüfen also mein Fazit ich empfehle euch
nimmt euch die Python bindings die
offiziellen von glopyg größer oder
gleich 20112 da gab's noch ein paar
Änderungen ab dieser Version ist es
vernünftig
nutzbar und nehmt dabei
die Python bindings die von EUR
Betriebssystem mitgeliefert werden nicht
die aus ppi dann benutzt HKP 4P für die
Kommunikation mit den
keyservern und dann baut euch ein wenig
selber mein drumhum das kann übrigens
gar nicht so einfach sein da lohnt es
sich auf jeden Fall noch mal in die
Definition der Standards reinzuschauen
wie den genau dieses PGP Mime also den
RFC dazu ähm funktioniert ist auch echt
einfach im Internet zu finden so ich
würde
sagen total tolles Ökosystem macht
richtig viel Spaß damit zu arbeiten und
ich bin bereit für eure
Fragen