Archiv der Kategorie: Computer

Mein erstes neurales Netzwerk in Python

Das Themengebiet „Künstliche Intelligenz“ (KI) war für mich ein total unbekanntes Gebiet, aber die Neugier lässt einen nicht ruhen. Und dann kam noch das Stichwort „Neuronales Netz“ hinzu…

Das Suchen im Internet erbrachte viel (für mich recht unverständliche) Theorie, aber auch einen Hinweis auf das Buch „Neuronale Netze selbst programmieren“ von Tariq Rashid. Das Buch baut sich um ein schönes und verständliches Beispiel auf. Handgeschriebene Ziffern sollen „trainiert“ und anschließend richtig erkannt werden. Die Ziffern liegen als S/W-Bilder im Format 28*28 Pixel mit Grauwerten vor. Und es gibt eine öffentlich zugängliche Datenbank mit 60.000 dieser Bilder zum Trainieren und 10.000 Bilder zum Testen.

Der Hinweis auf Python und auf den Raspberry gaben dann den Ausschlag: Das probiere ich aus!

Die Theorie war einfach: Neuronen sind kleine programmierbare Rechner, die ihre analogen Eingangssignale mit einfachen Regeln wie Eingangsgewichtung, Summierung, Ausgabe-Begrenzung (z.Bsp. mit der Sigmoid-Funktion) in ein analoges Ausgangssignal übertragen. Die Gewichtungsregeln werden in Matrizen gespeichert. Dann kann man die Neuronen recht bequem mit den Mitteln der Matrizenmultiplikation zum Arbeiten bringen.

Die Anzahl der analogen Eingangssignale ist meist vorgegeben, die Anzahl der Ausgangssignale ergibt sich meist aus der erhofften Antwort. Die optimale Anzahl der Neuronen in der verdeckten (hidden) Mittelschicht probiert man aus. Jedes Neuron der mittleren Schicht ist mit jedem Eingangssignal verbunden, die Gewichtung der Signale ist der Schlüssel zu einem guten Gesamtergebnis. Es gibt sicherlich ausgefeiltere Algorithmen zur Signalbearbeitung, aber der im Buch vorgestellte Algorithmus ist leicht umsetzbar und zeigt auch Wirkung.

Die Gewichtungs-Matrizen der „Mittelschicht“ und der Ausgabeschicht füllt man zu Beginn mit Zufallswerten, am besten Werte zwischen Null und Eins. Die Testdaten erzeugen dann über die Zwischenschicht Signale auf den Ausgängen, diese vergleicht man mit den bekannten Werten der Lerndaten und verändert je nach Fehler rückwirkend (Backpropagation) die Gewichtungsmatrix der Ausgabeschicht und die Gewichtungsmatrix der (unbekannten) Mittelschicht.

Das Python-Programm fand sich in GITHUB und konnte recht einfach in meinen Raspberry und dessen Python 3 übertragen werden. Der im Buch vorgeschlagene Algorithmus arbeitet. Das Programm liegt bei mir im Sourcecode (weniger als 200 Zeilen) auf dem Raspberry und auch auf dem Windows-PC und ich kann an einigen Stellschrauben drehen. Mehr wollte ich eigentlich nicht.

Interessant: Die eingesetzten Parameter sagen eigentlich nichts über das Problem aus und dennoch gibt es eine Erkennungsrate von über 97% bei Ausnutzung des vollen Datensatzes. Allerdings ist dann mein Raspberry fast 2 Stunden beschäftigt.

Dann habe ich das Beispiel umgeändert auf 3*3 kleine unterschiedlich graue Quadrate, in denen das Programm Muster erkennen soll. Der Algorithmus für das neuronale Netz aus dem Beispiel “Ziffernerkennung” wurde nicht abgeändert, nur an den vorhandenen Parametern wurde gedreht.

Jetzt kann ich auch den Input gezielt verändern. Natürlich verrate ich dem Lernalgorithmus nicht das von mir „berechnete“ Muster. Meine Kontrolle ist einfach: Steigt die Erkennungsrate deutlich über die zufällige Erkennungsrate (die ohne Lernen), so hat sich ein Lerneffekt eingestellt und das neuronale Lernen hat funktioniert. Eine ypische Frage: Wo ist das hellste Plättchen? Aber diese genaue Frage kennt ja das Programm nicht. Es hatte nur viele, viele Beispiele zum Trainieren.

 

Eine gute Darstellung dieser Techniken findet man unter „Künstliches neuronales Netz“ in Wikipedia. YouTube bietet Lernvideos zu den Stichworten „neural networks“ an.

Buch „Neuronale Netze selbst programmieren“ von Tariq Rashid, O’Reilly, 2017

Python-Code (mit Daten): https://github.com/makeyourownneuralnetwork/

Testdaten: https://www.kaggle.com

Powerpoint: Erster Einstieg

Meine Aufgabe: Eine kurze (1,5 Stunden) Einführung für Anfänger in Powerpoint. Die Teilnehmer haben sehr unterschiedliche bzw. nur geringe Word-Vorkenntnissse.

Die Themen:

  • Für was brauche ich Powerpoint
  • Foliensatz / Folie
  • Aufzählung / Gliederung /Text
  • Die Vielfalt der Objekte
  • Erste Animationen

Und hier meine >>> Powerpoint_Übung <<<, die recht einfach aufgebaut ist.

Erst sehen wir uns die Powerpoint-Übung an, dann arbeiten wir mit dieser Präsentation als Grundlage weiter.

Word: Flyer

Aus verschiedenen Kursen kenne ich die Frage, wie man mit Word (oder einem anderen Textprogramm) einen “einfachen” aber ordentlichen Flyer erstellen kann, ohne sich extra ein Publishing-Programm anschaffen zu müssen.

Das Ziel ist ein Flyer auf DIN-A4-Grundlage, zweifach gefaltet, also 2*3. Die Benennung der einzelnen “Seiten” ist etwas problematisch, aber die Frontseite und die Rückseite geben einen gewissen Rahmen vor. Also macht man einen Probeausdruck mit dem Blindtext, faltet das Blatt korrekt und legt sich dieses Muster für die Planung neben dran.

Folgende Funktionen in der Textverarbeitung benutze ich:

  • A4-Quer
  • Spaltensatz
  • Spaltenumbruch
  • Duplex-Druck (Spiegelung an der kurzen Kante)
  • Bilder
  • Textfeld (mit senkrechtem Schriftzug)
  • Wordart
  • Hintergrundgrafik für Farbgebung

Und natürlich wie immer Fließtext, automatischer Umbruch und Randeinstellungen ……

Hier meine Word-Datei zum Ausprobieren und Weitermachen: >>> Flyer

 

Was sollte ich zu meinen EDV-Geräten wissen

Es gibt einige Dinge, die man zu seinen verschiedenen EDV-Geräten wissen sollte.

Man kann mit diesem Wissen anderen die Arbeit leichter machen, wenn man auf deren Unterstützung zurückgreifen will oder muss. Oder man kann sich damit besser an Details erinnern, wenn das Gerät mal seinen Geist aufgibt.

Folgende Fragen werden angesprochen:

  • Welche relevanten Geräte habe ich eigentlich?
  • Welche relevanten Verträge habe ich?
  • PC / Laptop / Tablet
  • Smartphone / Handy
  • Telefonvertrag im Festnetz
  • Router
  • Telefonvertrag im Mobilnetz
  • Software
  • Fragen zum Umfeld

Hier meine vollständige 4-seitige Liste als PDF zum downloaden.

Man kann diese Liste ausfüllen oder sie auch nur durcharbeiten. Vielleicht sogar zusammen mit jemandem, der von der Materie etwas mehr versteht als man selbst.

Vollständig wird diese Liste nie sein. Dazu ist die Entwicklung in diesem Bereich immer noch zu stürmisch. Und immer noch erfinden einzelne Firmen neue Namen für alte Produkte. Manchmal sogar neue Produkte ….

PS: Die Listen orientieren sich an den Begriffen von Windows und Android, bei Apple-Produkten und den Diensten der Telekom muss man an einigen Punkten etwas umdenken.

Primzahlen berechnen

Vor wenigen Tagen bekam ich eine (größere) Primzahl mit 91 Stellen vorgelegt.

Das weckte meinen Ehrgeiz: Bis zu welcher Größe kann man denn auf einem RaspberryPi und mit Python Primzahlen im Sekundenbereich berechnen/finden oder bestätigen?

In meinen Tests konnte ich für Zahlen bis 1.000.000.000.000 relativ locker ausprobieren, ob es sich um eine Primzahl handelt oder nicht, bei 3 Nullen mehr sollte ich mir dann einen Kaffee gönnen ……

Das “Sieb des Eratosthenes” gelingt auf dem Raspberry bis 9.999.999 recht gut, die erzeugte Liste hat dann 664579 Primzahlen und benötigt ungefähr 40 MByte Speicher. Damit kann man bequem 7-stellige Zahlen in ihre Primfaktoren zerlegen oder 14-stellige Primzahlen testen. Und auch ein Laie wie ich kann den Ansatz nachvollziehen.

Falls man mal eine Primzahl braucht, kann man mit diesen einfachen Verfahren einen Bereich von Zahlen testen und findet dann auch relativ schnell eine Primzahl im gewünschten Größenbereich.

Allerdings fehlen mir immer noch gut 70 Stellen zur vorgegebenen Primzahl ….

Vielleicht sollte ich mich mal mit speziellen Verfahren für größere Primzahlen beschäftigen. Zum Beispiel mit Mersenne-Primzahlen und dem dazu passenden Lucas-Lehmer-Test.

Ein Konto (Account) im Internet

Im Internet ist häufig von einem Konto (oder Account) die Rede, das man für irgendetwas braucht und deswegen anlegen sollte. Was ist das aber? Und wozu braucht man das?

Ein Konto ist meist der Einstiegspunkt zu Leistungen und Dienstleistungen, die mir eine Firma oder ein Verein im Internet anbietet. Ich werde also Kunde im weitesten Sinne und darf dann meine Geschäfte mit diesem Anbieter “online” abwickeln. Die Mitgliedschaft in einer bestimmten Gruppe kann man auch als eine spezielle Form eines Kontos ansehen.

Als Kontoinhaber bekommt man entweder eine Kundennummer zugeteilt und/oder man darf sich einen (noch nicht vergebenen) Benutzernamen aussuchen. Häufig wird einem vorgeschlagen, die eigene Email-Adresse (die ist ja weltweit einmalig) als Kundennamen zu verwenden. Bei der Erstanmeldung (Registrierung) muss man manchmal zusätzliche Daten zu seiner Person angeben, manchmal werden diese auch überprüft und manchmal muss auch eine Firma die Identifikation gründlich vornehmen. Häufig wird dabei das Verfahren “Postident” angewandt. Dann bringt der Briefträger mir einen Brief mit den Zugangsdaten und kontrolliert dabei meine Identität durch das Vorzeigen eines amtlichen Ausweises. So ein Verfahren ist bei Themen rund um den Jugendschutz und bei Telefonverträgen meist vorgeschrieben.

Es kann sein, dass man bei späteren Telefonaten mit dem Kontoanbieter nach den hinterlegten Daten gefragt wird, um die Identität des Anrufenden zu überprüfen. Typische Kontrollfragen sind das Geburtsdatum, der Geburtsort, der Name des Haustiers, der Vorname der Mutter usw.  .

Wenn also ein seriöser Anbieter den Namen ihres ersten Haustiers wissen will, dann will er Sie sicherlich nicht mit personalisierter Katzenwerbung belästigen. Sondern es sind Vorbereitungen für spätere Sicherheitsfragen. Bei einem Tierfutterhersteller könnte das allerdings auch andere Gründe haben …..

Man sollte auch daran denken, diese Daten zu aktualisieren. Gründe gibt es viele: Umzug, neue Handynummer, neue Email-Adresse ….

Zu jedem Konto gehört auch ein Passwort, das man sich in der Regel selbst aussuchen darf. Manchmal macht der Anbieter auch Vorschriften und erlaubt nur bestimmte (sichere) Passworte. Ein Konto hat also in der Regel ein Passwort. Und es gibt den guten Rat, für jedes Konto ein anderes Passwort zu vereinbaren.

T-Online z.Bsp. kennt zwei Ebenen von Passworten. Die Ebene mit dem (Haupt)-Passwort darf alles, auch Passworte verändern, die andere mit dem Email-Passwort nur Emails abholen und senden.

Häufig muss man sich noch einmal zusätzlich mit seinem Passwort ausweisen, wenn man im sicherheitsrelevanten Teil Änderungen vornehmen will. Und/Oder man wird über solche Änderungen auf dem hinterlegten Nachrichtenweg informiert.

In manchen Fällen wird auch eine “Zwei-Faktor-Authentifizierung” verlangt, das ist dann meist ein Passwort und ein Identifizierung mit einer anderen Logik, z.Bsp. Besitz (EC-Karte), ein Schlüsselgenerator, ein Handy oder es sind meine biometrischen Daten.

Manche Plattformen erlauben auch Einmaltransaktionen ohne eine richtige Registrierung. Diese Möglichkeiten benutze ich meist dann, wenn es sich wirklich um einen Einmalvorgang handelt.

Besonders störend ist der Begriffswirrwarr im Umfeld dieser Techniken. Die Sparkasse spricht von “Anmeldename” und “PIN”, die HUK24 von “Benutzerkennung” und “PIN”. Und Amazon von “Email-Adresse oder Mobiltelefonnummer” und “Passwort”, die Bahn von “Benutzername” und “Passwort”. Auch die Symbole zum Anmelden und (zum noch wichtigeren) Abmelden sind unterschiedlich und an unterschiedlichen Stellen platziert.

Der Begriff “Anmelden” steht meist für das Benutzen eines schon vorhandenen Kontos, “Registrieren” führt einem den Weg zum Erstellen eines Kontos.

Typische Konten:

Mein (Email-) Konto bei GMX. Hierüber wickle ich meine Emails ab und kann auch eine bestimmte Menge SMS kostenfrei versenden. Auch Faxen ist möglich. Innerhalb dieses Kontos haben wir dann mehrere Mail-Adressen.

Mein Konto bei der Sparkasse. Das hat eine eigene Benutzerkennung, die nicht mit meinem Girokonto identisch ist. Unter diesem Konto kann ich dann mehrere traditionelle Konten bei der Sparkasse verwalten, z. Bsp. Giro, Festgeld, Wertpapiere, Eurocard. Bei Überweisungen greift noch eine extra Sicherung mit PIN-Nummern.

Mein Konto bei der Rheinpfalz. Hier kann ich als registrierter und zahlender Kunde die aktuellen Ausgaben der Rheinpfalz im PDF-Format lesen.

Mein Konto bei der Pfälzischen Landesbibliothek. Hier kann ich Bücher bestellen und Verlängerungen buchen, abholen muss ich die Bücher aber selbst.

Mein Konto bei der ONLEIHE Rheinlandpfalz. Hier kann ich Bücher und Zeitschriften direkt auf meinen PC oder mein Bookreader herunterladen.

Mein Konto bei Adobe. Hierüber habe ich das Recht, die mit dem DRM-System von Adobe verschlüsselten Bücher in meiner Gruppe zu lesen.

Mein Konto bei der Bahn. Hier kann ich bequem Fahrkarten kaufen und mir die Punkte auf im Bonusprogramm gutschreiben lassen.

Mein Konto bei Google. Hierüber nutze ich den Datenaustausch zwischen Smartphone und meinem PC und darüber kaufe ich kostenfreie oder kostenpflichtige Apps für mein Smartphone.

Mein Konto bei Vodafone. Hier kann ich meine Rechnungen einsehen oder Optionen zum Tarif hinzu- oder abbuchen.

Mein Konto bei WhatsApp. Hierdrüber wickle ich Kurznachrichten und Bilder mit Freunden ab, die auch ein Konto bei Whatsapp haben.

Mein Konto bei KOMOOT. Hierüber zeichne ich meine Wanderungen und Radtouren via App auf dem Handy auf und kann sie mir anschließend auf dem PC ansehen.

Mein Konto bei Microsoft. Hierüber ist mein PC bei MS registriert und ich kann auch den Store für neue Programme benutzen (ähnlich wie bei Google).

Mein Konto bei der HUK24. Hierdrüber kann/muss ich meine Versicherungsverträge im Selbstbedienungsverfahren verwalten und bekomme ich auch die dazugehörige Post.

Mein Konto bei der DropBox. Austausch von Bildern in Sammlungen. Bilder von den Handys zum PC.

Mein Konto bei Amazon. Einkaufen bei Amazon und den damit verbundenen Einzelhändlern.

Mein Konto bei der Uni Mannheim. Zugang zu allen Verwaltungsfunktionen rund um das Studium. Zugang zum Email-System der Uni. Zugang zu den WLAN-Systemen der Uni.

Mein Konto zum Python-Forum. Zugang zum Forum rund um die Programmiersprache Python. Ich darf dann auch aktiv mit diskutieren.

Mein Konto an meinem PC. Auch dort ist ein Konto Pflicht. Nur das kann man, wenn man will, ohne Passwort benutzen. Wenn man sonst kein Konto (keinen anderen Benutzer) auf dem PC angelegt hat sieht man diese Logik nicht. Aber sie existiert.

Die oben genannten Konten benutze ich regelmäßig.

Ich habe ungefähr noch 20 weitere Konten, die ich aber nur ganz selten brauche. Ab und zu löse ich auch Konten formgerecht auf.

Passwort vergessen, was tun?

Die Meldung “Ungültiges Passwort” ist unangenehm, kommt aber vor. Meist ist man selbst die Ursache, nur ganz selten ist es ein Fehler bei dem Kontenanbieter.

Als Erstes sollte man über die beiden Teile der Anmeldung “Benutzername und Passwort” klar werden. Habe ich den richtigen Benutzernamen, habe ich das richtige Passwort und ist meine Tastatur auch “normal”, also nicht aus Versehen auf Großbuchstaben oder Sonderzeichen umgestellt? Ich empfehle aus eigener Erfahrung relativ früh schriftlich zu notieren, welche Kombinationen von Passworten man schon ausprobiert hat. Den Zettel sollte man natürlich anschließend vernichten.

Manchmal bekommt man nur eine bestimmte Anzahl von Versuchen zugebilligt, dann folgt eine Zeitstrafe oder das endgültige Aus. Ihr Konto ist jetzt nicht weg, sondern Sie kommen nur nicht mehr hinein.

Ihr Passwort ist allerdings weg, denn kein seriöser Anbieter wird Ihnen in irgendeiner Weise Ihr Passwort sagen. Er wird Sie auch nie nach ihrem vermeintlichen/verlorenen Passwort fragen, so darf er Ihnen einfach nicht weiterhelfen. Sie müssen ab jetzt dem Weg folgen, den der Betreiber für diesen Fall vorgesehen hat und sich ein neues Passwort anlegen..

Der Betreiber will natürlich Fremde nicht dabei unterstützen, Ihr Konto so einfach zu kapern. Deswegen wird er sich zunächst vergewissern wollen, ob Sie wirklich Sie sind. Dafür greift er meist auf Fragen (und deren Antworten) zurück, die Sie irgendwie auf dem Konto hinterlassen haben. Wenn dieses Wechselspiel funktioniert und Sie über einen bequemen und sicheren Weg, den Sie nach Möglichkeit schon vorab vereinbart haben, erreichbar sind, kann er Ihnen dann per Anruf, SMS oder Email entsprechende Hilfen geben.

Manchmal verzichtet er auch auf diese Fragen und schickt ihnen gleich eine SMS oder Email mit einem Lösungsvorschlag.

In den meisten Fällen bekommen Sie ein sogenanntes Einmalpasswort oder einen Einmallink, mit dem Sie sich innerhalb einer beschränkten Zeit bei ihrem Konto anmelden und sich dabei ein neues Passwort einrichten können. Die Begriffe hierbei sind unterschiedlich, aber häufig spricht man von einem Einmalpasswort oder von einer Kontenzurücksetzung. Sehr sensible Konten haben meist komplexere Verfahren.

Jetzt haben Sie wieder ein gültiges Passwort und Ihr Konto ist wieder zugänglich. Aber das dumme Gefühl bleibt: Wie konnte ich nur mein Passwort vergessen?

Es gibt auch Programme als “Passwortsafe”, in denen kann man mehr oder weniger automatisch alle seine Benutzernamen und die dazugehörigen Passworte speichern und von dort aus benutzen. Man hat dann nur noch ein zentrales Passwort für diesen Safe.

Ergänzung im Herbst 2023 nach einer Excel-Einheit:

Oder man macht sich (z.Bsp. mit Excel) eine Liste aller seiner Konten und der dazugehörigen Passworte. Das ist eine gute Alternative zu einer einfachen Kladde.

Hier mal mein Beispiel zum Download: MeinePassworte

In Excel wurde mit einigen “Tricks” gearbeitet. Die gesamte Tabelle ist auf “Text” gestellt, damit wird das Umgestalten von numerischen Werten vermieden. Die Spalten sind in einer sinnvollen Größe voreingestellt und der “automatische Umbruch” ist aktiviert. Dadurch fallen keine Zeichen am Zellenende weg. Eine zweite Zeile kann über ALT-Eingabe erreicht werden. Die Spalten haben Überschriften und die Tabelle ist dadurch leicht und sicher sortierbar. Die Druckfunktion ist mit sinnvollen Werten vorbelegt. Die Spalte Gruppe dient zur Einstufung der Konten in sinnvolle Klassen.

Diese Excel-Tabelle sollte man allerdings wie seinen Augapfel hüten ….

Word: Mein “einfacher privater Geschäftsbrief”

Aus verschiedenen Kursen kenne ich die Frage, wie man mit Word (oder anderen Textprogrammen) einen “einfachen” aber ordentlichen privaten Geschäftsbrief schreiben kann, ohne tief in das Innere von Word einsteigen zu müssen.

Ich habe mir dafür eine Vorlage (*.dotx) geschaffen, die mit wenigen Handgriffen ein akzeptables Ergebnis für einen Fensterbriefumschlag erzielt. Man kann den Brief natürlich auch in einem üblichen Umschlag versenden …

Die Seitenränder sind alle sinnvoll eingestellt und bei mehrseitigen Schreiben erscheint auch eine Blattnummerierung (Kopf- und Fußzeile mit der Option “Erste Seite anders”). Makros werden nicht benutzt.

MeinFensterbriefDer Link: MeinFensterbrief

Die erste Seite hat 3 fixe Textfenster, eines rechts oben für die Absenderdaten bis hin zum Datum, eines links oben für die Empfängerdaten passend zum Umschlagfenster und darüber noch ein weiteres Fenster mit meinem klein gedruckten Absender, der auch noch im Umschlagfenster erscheint. Die Daten innerhalb der Fenster können unproblematisch geändert werden.

Unter dem Anschriftenfenster kann/muss dann frei weitergeschrieben werden. Ein Geschäftsbrief sollte mit einem Betreff beginnen und  mit einem Gruß, einer Unterschrift und eventuell einem Hinweis auf Anlagen enden.

Als besonderen Luxus in meinem Muster gibt es dann noch zwei ausgedruckte Faltmarken, die das genaue Falten der A4-Seite erlauben.

Ich benutze diese Vorlage als in Word eingebundenen “Dokumentvorlage”, man kann aber auch das Dokument mit Öffnen, Umbenennen und Speichern bearbeiten,  ohne viel kaputtmachen zu können.

Briefe verschickt man am besten ausgedruckt und unterschrieben, damit kann jeder leben. Wenn es per Email geschehen soll, dann am besten über eine PDF-Datei. Word-Dateien selbst gibt man nur dann weiter, wenn die aktive Mitarbeit an dem Dokument erwünscht ist.

Für Wissbegierige: Ich habe mich von der DIN 5008 leiten lassen und die Blattaufteilung nach DIN 676 Formblatt A vorgenommen.

Der Raspberry im Internet

Auf meinem RaspberryPi läuft seit einiger Zeit der WEB-Server lighttpd, ist aber nicht von außen erreichbar. Ich wollte ja nur einmal mit HTML, PHP und CGI/Python spielen …

Aber zumindest testweise wollte ich jetzt aus dem freien Internet heraus einmal erreichbar sein. Also ran an die Netzwerk-Umgebung.

Mein Ansatz: Ich bin mit meiner Fritzbox über Vodafone/KD mit dem Internet verbunden, aber hatte dort als normaler Kunde nur ein IPv6-Anschluss mit einer DS-Lite-Komponente für die IPv4-Verbindungen. Das reicht wohl in vielen Fällen aus, nicht aber, wenn man frei von außen in das Heimnetz hineinkommen will. (Zumindest bei mir ging es nicht, andere Experten bestätigten das Problem. Die Dokumentation war dort sehr schwammig.)

Ich bekam aber auf einen Anruf hin von Vodafone/KD ein “Upgrade” auf echtes Dual-Stack mit einer zugewiesenen IPv4 und einer zugewiesenen IPv6-Adresse. Dann brachten die Einstellungen in der Fritzbox den gewünschten Effekt: Anfragen am Port 80 wurden durch Portfreigabe an den RaspberryPi weitergeleitet und von dort beantwortet. Die Auflösung der immer nur temporär vergebenen Adressen habe ich über die Registrierung bei myfritz.net gelöst. Eigentlich alles ganz einfach, wenn nicht das Problem mit dem DS-Lite gewesen wäre.

Testen kann man das Ganze vom Handy aus, wenn man diesem den WLAN-Zugang zum eigenen Router sperrt. Vorsicht: Handy-Netze sind meist nur IPv4-fähig!

Wichtigste Erfahrung: In der URL-Schreibweise setzt man die IPv6-Adresse in eckige Klammern. Ich muss mich aber mit der Logik und dem Aufbau der IPv6-Adressen noch etwas beschäftigen.

Jetzt sind wieder aus Sicherheitsgründen die Zugangsmöglichkeiten aus dem Internet über die Fritzbox abgeschaltet. Man nimmt einfach einige Häkchen im Menü weg …

Datenverschlüsselung

Das Kursangebot “PGP & Co. – Die besten Verschlüsselungsprogramme” der VHS Heidelberg weckte mein Interesse an diesem Thema, obwohl ich kein großer Anhänger von “alles verschlüsseln” bin. Das Thema PGP interessierte mich schon einmal vor 15 Jahren.

Am ersten Abend bekamen wir drei Programme vorgestellt:

  • Eraser (Sicheres Löschen durch mehrfaches Überrschreiben)
  • Veracrypt (Dateiverschlüsselung und mountbare verschlüsselte Container)
  • 7Zip (Komprimieren, Zusammenfassen von Dateien, Verschlüsseln)

Unser Referent legte bei der Programmauswahl Wert auf einen offengelegten Sourcecode und misstraute kommerziellen Anbietern. Man sollte sich diese Programme einfach einmal merken.

Der zweite Abend war dann PGP gewidmet.

Folgende Stichworte sollte man dazu kennen oder kennen lernen:

  • PGP (wird aber aus Rechtsgründen nicht mehr so genannt)
  • asymmetrische Verschlüsselung (RSA …)
  • Schlüsselpaar aus einem privatem und öffentlichen Schlüssel
  • Passwort für die Schlüsselverwaltung (passphrase, keyring)
  • OpenPGP and X.509 (S/MIME) (Die Normen und das Procedere für den Schlüsselaustausch)

Wir bekamen die Installationsdatei für Gpg4win (GNU Privacy Guard for Windows) (Version 2.3.3).  Hier findet man nicht mehr den Namen “PGP”, aber das Verfahren entspicht dem PGP-Prinzip der privaten und öffentlichen Schlüssel. Die Installation lief schnell und einfach ab. Dabei wurden zwei Hauptkomponenten erzeugt:

  • GnuPG The backend; this is the actual encryption tool.
  • Kleopatra A certificate manager for OpenPGP and X.509 (S/MIME) and common crypto dialogs.

Diese klare Trennung fand ich persönlich sehr hilfreich, denn sie zeigt die typische Arbeitsverteilung eines PGP-Systems. Zum einen den Verschlüsseler und zum anderen den Schlüssel-Manager. Man arbeitet eigentlich nur mit Kleopatra, und diese lässt dann mit den jeweiligen Schlüsseln GnuPG arbeiten. Man kann mit diesen Programmen kurze ASCII-Daten über die Zwischenablage verschlüsseln. Oder man verschlüsselt ganze Dateien.

Das Grundprinzip von PGP ist immer noch die asymmetrische hybride Verschlüsselung. Man erzeugt mit Kleopatra ein Schlüsselpaar, welches aus einem privaten und einem öffentlichen Schlüssel besteht. Grundsatz: Der “private” Schlüssel wird NIE weitergegeben, der öffentliche Schlüssel kann/muss weitergegeben oder sogar veröffentlicht werden. Bei dem Vorgang “Verschlüsselung” arbeitet man mit dem öffentlichen Schlüssel des geplanten Empfängers (den braucht man) und verschlüsselt die Daten damit so, dass sie nur mit dem (passenden) privaten Schlüssel des Schlüsselpaars (also dem privaten Schlüssel des Empfängers) wieder entschlüsselt werden können. Diese Art der Verschlüsselung nennt man eine “asymmetrische” Verschlüsselungstechnik. Der eigentlich wichtige Schlüssel zum Entschlüsseln verlässt dabei den Hoheitsbereich des Empfängers nie, kann also auch unterwegs nicht abgefangen werden.

Ein Benutzer kann mehrere Schlüsselpaare erzeugen, besitzen und benutzen, und braucht natürlich auch die öffentlichen Schlüssel der Kontakte. Diese Schlüsselverwaltung ist mit Kleopatra bedienerfreundlich gelöst, kann einen aber auch verwirren.

Vorsicht: Man kann die verschlüsselten Daten auch selbst nicht mehr lesen, wenn man sich nicht selbst in den Kreis der potentiellen Empfänger eingearbeitet hat.

Es wäre aber noch schöner, wenn die PGP-Programme auch untereinander gut harmonieren würden. Denn man will ja mit Partnern verschlüsselt kommunizieren, sie dabei aber nicht zu einem vorgegebenen Programm zwingen.

In der dort eingesetzten RSA-Verschlüsselung spielen große Primzahlen eine wichtige Rolle. Und die Produkte aus großen Primzahlen. Denn es gibt anscheinend kein effizientes Verfahren, um wirklich große Zahlen in ihre Faktoren (Primzahlen) zu zerlegen. Man kann also die in einem Produkt enthaltenen Primzahlen nur sehr schwer finden.

Für mich war es letztendlich interessanter, die eigentliche RSA-Verschlüsselung stark vereinfacht in Python nachzubauen. Dort konnte man ein einfach anzuwendendes asymmetrisches Schlüsselpaar erzeugen und dann mit dem RSA-Verfahren experimentieren.

def encrypt(text_offen, pubkey, factor):
    return text_offen ** pubkey % factor

def decrypt(text_chiffr, privkey, factor):
    return text_chiffr ** privkey % factor

Das ist schon der ganze zentrale Python-Code für die Ver- und Entschlüsselung!