Alle kennen das Problem: Daten austauschen, die vielleicht personenbezogene oder gar besonders schützenswerte Daten enthalten oder einfach nicht für neugierige Augen gedacht sind.

Insbesondere wenn die Dateien groß sind, eignet sich E-Mail gar nicht dafür. Auf Cloudservern kann theoretisch immer der Betreiber die Inhalte sehen und bei den so beliebten Transferverzeichnissen als Windows-Shares kann die ganze Arbeitsgruppe draufschauen. Da kommt Cryptomator ins Spiel. Auch wenn die Download-Seite und Doku nur in Englisch verfügbar sind, ist das das GUI des Programms auch in Deutsch realisiert. Das Open Source (im Github kann man z.B. zur Doku beitragen) Tool Cryptomator verschlüsselt ähnlich wie kommerzielle Alternativen wie Boxcryptor (Boxcryptor ist nur für private Nutzung kostenlos) und Teamdrive (kommerziell und teuer) Daten in Verzeichnissen auf Cloudspeichern (Sciebo, Nextcloud {darüber sogar auf AWS S3 Buckets oder CEPH}, OneDrive) aber auch auf Windows-Shares oder lokalen Platten und USB-Wechseldatenträgern. Das Schöne daran: Das Tool ist für Windows, MacOS, Linux, Android und IOS verfügbar und kostet auch für kommerzielle Nutzung nichts. Unter Windows arbeitet es transparent im Dateimanager und hängt verschlüsselte Ordner nach Eingabe des Schlüssels als neuen Laufwerksbuchstaben ein. Der Betreiber des Cloud-Speichers oder ein Finder eines Wechseldatenträgers (USB-Stick) kommt nicht an die Daten. Microsoft ist aber leider bekannt dafür, dass verschlüsselte Container (um genau so etwas handelt es sich) in Azure in der Vergangenheit gerne mal gelöscht wurden. Für eine Datensicherung sollte man also (wie immer) trotzdem sorgen.
Scheinbar warnt auch neuerdings Ondrive vor Cryptomator-Dateien, weil es sie fälschlicherweise für das Werk eines Verschlüsselungstrojaners hält. Microsoft möchte die dort gespeicherten Daten möglicherweise auch für das Trainig von neuronalen Netzen (KI) verwenden. Diese Warnung kann man also getrost ignorieren.

Cryptomator funktioniert auch wunderbar mit Cloudspeichern, die schon als Verzeichnis in Windows bzw. Linux oder MacOS abgebildet sind, z.B. mit installiertem Sciebo- oder im Nextcloud-Client. Ebenso einfach ist es ein verschlüsseltes Verzeichnis auf dem Windows-Transfer-Share zu erzeugen.

Die oben erwähnten besonders schützenswerten Daten nach DSGVO dürfen übrigens möglicherweise auch verschlüsselt nicht in einer Cloud gespeichert werden. Im Zweifelsfall immer den zuständigen Datenschutzbeauftragten dazu befragen. Wenn das Passwort/der Schlüssel bekannt ist, kann man verteilt mit verschlüsselten Dateien in der Cloud arbeiten.

Aber Achtung: Verschlüsselt heißt hier: Die Daten sind sicher verschlüsselt und lassen sich ohne den Schlüssel nicht wiederherstellen!

Hier mal im Schnelldurchlauf einige Screenshots, aber die Bedienung ist eigentlich sehr intuitiv. So erstellt man ein verschlüsseltes Verzeichnis (in Cryptomator “Tresor” genannt):

2022-09-26 15_40_17-Cryptomator

2022-09-26 15_44_59-Tresor hinzufügen

Benennung ist egal, ich selber benutze aber keine Sonder- und Leerzeichen in Dateinamen (Zwinkern)

2022-09-26 15_48_44-Tresor hinzufügen

Dann wird nach einem Passwort gefragt, das man niemals vergessen sollte (alternativ kann man einen Widerherstellungsschlüssel speichern (default):

2022-09-26 16_03_48-Tresor hinzufügen

Jetzt ist Cryptomator einige Sekunden mit sich selbst beschäftigt.

Dann wird man gebeten das Passwort wieder einzugeben, damit der neu erzeugte Ordner entschlüsselt wird:

2022-09-26 16_04_41-CryptomatorDas Ganze funktioniert mit beliebigen Cloudspreicher, sofern sie transparent in das Dateisystem eingebunden werden.
Nach dem “Entsperren” habe ich ein neues Laufwerk D: wo ich geheime Dinge speichern kann. Wichtig die “Tresor”-Datei liegt weiterhin woanders und dort direkt darf nicht geschrieben werden:

Ordner1

Solange das Verzeichnis nicht wieder gesperrt wird komme ich (und alle Windows-Programme) da dran. Wenn ich wieder im Crytomator sperre (mit Klick auf “sperren”):

2022-09-26 16_13_47-Cryptomator

verschwindet das entschlüsselte Laufwerk D: und die Daten im Ursprungsverzeichnis in der Cloud oder auf dem Share sind so verschlüsselt, dass auch keine Dateinamen zu erkennen sind:

Ordner2Den Schlüssel bitte sicher aufbewahren (Zwinkern). Wenn weg, dann weg.

Aus aktuellem Anlass möchte ich hier ein wenig den freien PDF-Viewer Okular bewerben, der für viele Dinge im Büroalltag nutzbar ist, ohne das personenbezogene Daten bei Adobe für die Adobe-ID abgegeben werden müssen. Hintergrund ist, dass viele Hochschulen nun Verträge mit Adobe abgeschlossen haben, die zwingend eine Adobe-ID erfordern.  Ich selber benutze Okular bei der PDF-Forensik und als PDF-Viewer unter Ubuntu. Besonders gut ist die Unterstützung für digitale Unterschriften in Okular realisiert, was ist Zeiten von Homeoffice sehr praktisch ist. Die PDF-Signaturen sind kompatibel zu denen die wir einsetzen und die Bedienung bei der digitalen Unterschrift ist viel einfacher und weniger krude als beim Adobe-Acrobat.

Ich war ziemlich überrascht, als ich bei einer kurzen Recherche herausgefunden habe, dass dieses großartige Tool auch unter Windows verfügbar ist. Die ganz aktuelle Version von Okular unterstützt nun auch für Windows das Signieren, also das rechtssichere Unterschreiben von PDF-Dokumenten.

Einrichtung des Zertifikats für digitale Unterschriften:

Das persönliche Zertifikat muss einmal eingerichtet werden, was gut funktioniert, wenn bereits ein Firefox oder Thunderbird mit installiertem Zertifikat konfiguriert ist. Diese Erstkonfiguration wird unter „Einstellungen“-„Anzeigemodule einrichten“ –„PDF“ im Feld „Zertifikatsdatenbank“ vorgenommen.

Firefox oder Thunderbird muss zwingend auf dem Rechner installiert sein.Entweder für Firefox oder Thunderbird muss einmal ein persönliches Zertifikat eingerichtet werden.

Zertifikatseinrichtung mit Firefox: https://www.ssc-services.de/wp-content/uploads/2020/12/SSC-SWAN-Kurzanleitung-Zertifikat-Firefox-installieren_DE_20-10-01.pdf

Zertifikatseinrichtung mit Thunderbird: https://www.fh-aachen.de/hochschule/datenverarbeitungszentrale/sicherheit/nutzerzertifikate/nutzerzertifikat-importieren/firefox-thunderbird

Linux:

Okukar ist in den gängigen Linux-Distributionen einfach über den Paketmanager installierbar. Allerdings ist dann, je nach Distribution noch keine Version verfügbar, die auch PDF signieren kann. In diesem Fall schafft die Installation eines Flatpaks Abhilfe:

Beispiel Lubuntu/Ubuntu 20.4LTS:

sudo apt install flatpak

flatpak remote-add –if-not-exists flathub
https://flathub.org/repo/flathub.flatpakrepo

flatpak remote-add –if-not-exists kdeapps –from
https://distribute.kde.org/kdeapps.flatpakrepo

flatpak install kdeapps org.kde.okular

Windows:

Für Windows bekommt man die freie Software ganz einfach aus dem Windows-App-Store:

https://apps.microsoft.com/store/detail/okular/9N41MSQ1WNM8?hl=de-de&gl=de

Einrichtung des Zertifikats für digitale Unterschriften:

Das persönliche Zertifikat muss einmal eingerichtet werden, was gut funktioniert, wenn bereits ein Firefox oder Thunderbird mit installiertem Zertifikat konfiguriert ist. Diese Erstkonfiguration wird unter „Einstellungen“-„Anzeigemodule einrichten“ –„PDF“ im Feld „Zertifikatsdatenbank“ vorgenommen.

Für Firefox-Nutzer:

Das Zertifikat in einer Firefox Installation wird von Okular als Default automatisch gefunden, wenn nur ein Firefox-Profil vorliegt:

Okular_Okular einrichten_mit_firefox

 

Nur für Thunderbird-Nutzer:

Okular_Okular einrichten

(bei mir sind dort zwei Zertifikate zu sehen, da ich mehrere mit unterschiedlichen Zertifikatsketten besitze.)

Das Zertifikat in einer Firefox Installation wird automatisch gefunden, wenn nur ein Firefox-Profil vorliegt.

Falls nur ein Thunderbird benutzt wird, muss nur einmal in Okular unter „Einstellungen“- „ Anzeigemodule einrichten“ das Thunderbird-Profilverzeichnis manuell eingetragen werden:

Window: C:/Users/USERNAME/AppData/Roaming/Thunderbird/Profiles/*******.default-release

Bzw. Linux: ~/.thunderbird/*****.default-release

Nur die Windows-Version muss dann leider einmal neu gestartet werden, damit die Zertifikate sichtbar werden.

Unterschreiben geht dann sehr viel intuitiver als bei Adobe:

Um zu signieren wählt man einfach den Menuepunkt „Extras“-„Digital signieren“ aus, platziert dien Bereich für die Unterschrift aus und klickt ok. Dann öffnet sich ein Dialog zum Speichern des signierten Dokuments.

PDF-Dokumente erzeugen ohne Acrobat

Damit sind meines  Erachtens 90% aller PDF-Workflows an Hochschulen mit freier Software abzudecken. Wenn man PDFs ganz neu erzeugen muss, kann z.B. LibreOffice verwendet werden, oder man verwendet den in Windows mitgelieferten Microsoft Print to PDF-Treiber (Schnellinstallation „Windowstaste+R, optionalfeatures.exe eingeben und „Microsoft Print to PDF“ aktivieren) um PDFs aus Word und Co (dort “Drucken” und als Drucker “Microsoft Print to PDF” wählen) zu erzeugen. Oft ist das bereits konfiguriert, weshalb ich mich frage, wozu so viele Hochschulmitarbeiter einen immerhin kostenpfichtigen Acrobat benötigen.

Den nun überflüssigen Adobe Acrobat DC kann man dann getrost für alle Zeiten deinstallieren.

Im Februar 2022 hat Microsoft verkündet Makros für Dateien aus dem Internet standardmäßig zu blockieren. Leider ist das nun zurückgenommen worden. Mich erinnert das an eine Schlüsselszene im ersten Teil der Herr der Ringe (eine Rückschau), die Ihr sicher auch kennt:

Elrond führt Isildur zum Schicksalsberg um den Ring zu vernichten, Isildur zögert und will den Ring für sich selbst einsetzen. Genau das hat Microsoft nun getan. MS denkt da an viele kleine und mittelständische Unternehmen die Ihre Geschäftsprozesse mit Office-Makros abbilden und daher auf diese Funktionalität angewiesen sind. Allerdings sind Office-Makros nach wie vor das Haupteinfallstor für Ransom- und andere Malware, die von Makros aus dem Internet nachgeladen wird. Also erleben wir hier Geschichte: Die aktuell größte Bedrohung der IT-Sicherheit hätte hier mit einem Federstrich (einem Office-Update) ein für alle Mal beendet werden können! Das hätte vielen Unternehmen, Behörden und vielleicht auch vielen Hochschulen eine Menge Zeit, Arbeit und Geld sparen können.

So sind wir weiter auf die Vorsicht jeder einzelnen Mitarbeiterin und jeden einzelnen Mitarbeiters angewiesen. Und wir erleben weiter die spannende Geschichte des Kampfes der Bösen gegen die Guten in der IT-Sicherheit ;-). Ein kleiner Trost: Den Herrn der Ringe als spannende Geschichte hätte es ohne Isildurs Fehler gar nicht gegeben. Trotzdem ist das ein Fehler von Microsoft, auch wenn sich die Angreifer dann vielleicht nur auf aktive Inhalte in PDF-Dateien verlegt hätten, die ähnlich gefährlich werden können (Die Infos dort sind 5 Jahre alt, heute funktionieren aktive PDF-Inhalte auch im Browser, dort allerdings in der Sandbox).

So bleibt nur der Weg, Makros in Dateien aus dem Internet in der Registry per GPO zu deaktivieren, sofern man das in seiner Organisation durch bekommt. Admins von Microsoft-Systemen sehen die Abschaltung von (unsinnigen und gefährlichen) Features oder überhaupt Kritik an Microsoft häufig einen Angriff auf ihr Selbstverständnis ;-).

Es gibt allerdings gar keinen Usecase, der es rechtfertigt in Makros EXE-Binaries aus dem Internet nachzuladen und auszuführen, außer die NSA benötigt diese Funktionalität oder man möchte explizit das Geschäftsmodell der IT-Kriminalität fördern. Das Problem ließe sich übrigens mit wenigen Zeilen Code nachhaltig beheben. Wieder ein Argument für Open Source Software.

Da ich mich nun viel mit Forensik unter Verwendung von Open-Source-Tools beschäftige, bin ich auf Andrea Fortunas Seite mit vielen nützlichen Informationen gestoßen. In einem Fall liegt er jedoch (nun) leider falsch. Das hängt möglicherweise von der Windows 10 Version ab. Ich habe hier Win10 Edu 21H2 für meine Untersuchung verwendet. Da Andrea Fortunas Seite scheinbar der einzige Hinweis auf technische Infos zum Thema pagefile.sys Forensik mit yara  von Virustotal ist, möchte ich das hier für interessierte Leser korrigieren, um false positive zu verhindern. Hier sind Andreas Fortunas Infos dazu zu finden:
https://andreafortuna.org/2019/04/17/how-to-extract-forensic-artifacts-from-pagefile-sys/

Die dort beschrieben Anwendung von yara und eines Scans nach URL-Artefakten mit “strings” führen zu Fehlalarmen, die durch Microsoft Defender-Speicherartefakte durch Malware-Signaturen verursacht werden, selbst bei einem frisch installierten Windows:
Yara findet bei mir (frisch installiertes Windows 10, gerade mal 5 Minuten mit dem Internet verbunden):
APT1_LIGHTBOLT pagefile.sys
Tofu_Backdoor pagefile.sys
APT9002Code pagefile.sys
APT9002Strings pagefile.sys
APT9002 pagefile.sys
Cobalt_functions pagefile.sys
NK_SSL_PROXY pagefile.sys
Industroyer_Malware_1 pagefile.sys
Industroyer_Malware_2 pagefile.sys
malware_red_leaves_memory pagefile.sys
GEN_PowerShell pagefile.sys
SharedStrings pagefile.sys
Trojan_W32_Gh0stMiancha_1_0_0 pagefile.sys
spyeye pagefile.sys
with_sqlite pagefile.sys
MALW_trickbot_bankBot pagefile.sys
XMRIG_Miner pagefile.sys
Ursnif pagefile.sys
easterjackpos pagefile.sys
Bolonyokte pagefile.sys
Cerberus pagefile.sys
DarkComet_1 pagefile.sys
xtreme_rat pagefile.sys
xtremrat pagefile.sys

Was definitiv falsch positiv ist!
Ich habe die malware_index.yar von
wget https://github.com/Yara-Rules/rules/archive/refs/heads/master.zip

verwendet.

Selbst wenn das frisch installierte Windows 10 vorher vollständig vom Netzwerk isoliert war, findet yara schon einige Artefakte:
APT1_LIGHTBOLT pagefile.sys
GEN_PowerShell pagefile.sys
with_sqlite pagefile.sys
Bolonyokte pagefile.sys

Die Liste der extrahierten URLs mit dem Unix-Befehl “strings”

$ strings pagefile.sys | egrep "^https?://" | sort | uniq > url_findings.txt

wird unter Windows selbst als Malware erkannt, weil dort Malware-URLs gefunden werden, wenn die Maschine jemals mit dem Netz verbunden war ;-). Ohne Netz finden sich keine Malware URLs. Meine Vermutung war, dass der Ursprung des Malware-Artefakts der Windows Defender war. Für die Malware URLs kann aber auch “safe browsing” im Edge die Ursache sein. Um dies zu klären, habe ich einige Experimente durchgeführt.
Da der Windows Defender ein integraler Bestandteil von Windows 10 und 11 ist, ist es nicht einfach, den Windows Defender bei einer Neuinstallation vollständig zu entfernen. Alle Anleitungen, die ich gefunden habe, funktionierten mit den aktuellen Windows 10 Versionen seit 21H2 nicht mehr. Schließlich habe ich ein PowerShell-Skript auf Jeremy Website bidouillesecurity.com gefunden:
https://bidouillesecurity.com/disable-windows-defender-in-powershell/
Danach habe ich die pagefile.sys einmal komplett geschreddert, damit sicher ist, dass keine Artefakte zurück bleiben. Allerdings versucht Windows Update auch dann nach Anwendung  dieses Skriptes, Malware-Signaturen herunterzuladen, die dann wieder als Artefaktes in der pagefile.sys landen. Nur wenn ich den Internetzugang der neu erstellten Installation komplett sperre, erscheinen keine Malware-Artefakte mehr in der pagefile.sys. Auch das Deaktivieren von Windows-Updates ist heutzutage keine leichte Aufgabe mehr. Einfach die Ethernet-Verbindung auf “metered connection” (im Deutschen “getaktete Verbindung”) zu stellen, funktioniert in den aktuellen Versionen nicht mehr. (Warum auch immer, Zitat aus 2001, Odyssee im Weltraum: Ich kann dich das nicht tun lassen Dave ;-)
Für meine Experimente habe ich virtuelle Maschinen im VMWare Player unter Linux erstellt, die VMDK-Images mit qemu in das Raw-Format konvertiert und die pagefile.sys aus dem Image für die Forensik entnommen.
qemu-img convert -p -O raw /pfad/meinWin10.vmdk vm.raw
Das loop device intitialisieren:
losetup /dev/loop100 -P vm.raw
Option P nach Paritionen scannen, loop device loop100 erzwingen (-f zeigt das nächste freie Gerät, aber loop100 sollte immer frei sein)
Mounten dss Images:
mount /dev/loop100p3 /mnt/image
Kopieren:
cp /mnt/image/pagefile.sys .
Yara scannen:
yara /home/bischoff/yara-rules/rules-master/malware_index.yar pagefile.sys > yara_neu.log
URL-Extraktion:
strings pagefile.sys | egrep "^https?://" | sort | uniq > alle_urls.txt
Um die ursprüngliche pagefile.sys vollständig zu löschen (zu schreddern ;-) und um zu verhindern, dass Plattenplatz einfach wieder alloziert und nicht wirklich gelöscht wird, habe ich folgenden Befehl verwendet:
shred -uvz /mnt/image/pagefile.sys
Unmounten des Images und Entkoppeln des Loop-Devices:
umount /mnt/image
losetup -d /dev/loop100

Konvertieren des Roh-Images zurück in ein VMWare-Image:
qemu-img convert -p -O vmdk vm.raw /pfad/meinWin10.vmdk

Auch mit obigem Powershell-Script, also deaktiviertem Defender, holt sich das Windows Update offensichtlich immer wieder neue Signaturen, sobald eine Verbindung zum Internet besteht.
Selbst wenn man an keinen Speicherauszug eines infizierten Rechners herankommt, liefert eine hyberfile.sys oder eine pagegefile.sys dem Forensiker indirekte Informationen über den Speicherinhalt. Vorsicht ist jedoch geboten bei Defender-Artefakten, die zu falsch positiven Erkennungen führen können.

Durch den Erfolg der Wikipedia ist die Mediawiki-Software sehr bekannt geworden und an vielen Orten im Einsatz. Da so ein Mediawiki gut funktioniert und die Tendenz hat zu wachsen, wenn fleißige Leute an den Inhalten mitarbeiten, stellt sich irgendwann die Frage nach einer Migration auf einen neuen Server.
Im Gegensatz zu vielen PHP-basierten Anwendungen ist es häufig nicht möglich, bei einer Neuinstallation einfach die alte Datenbank für die neue Installation zu übernehmen. Das hängt damit zusammen, dass das Mediawiki kontinuierlich weiterentwickelt worden ist, was an der Oberfläche (glücklicherweise) nicht zu erkennen ist.
Der Erfolg vom Mediawiki hängt gerade an dieser einfachen Oberfläche. Das ist aber auch ein Kritikpunk bzw. der Grund für noch einfacher (auch für Leute die schon von der Mediawiki-Syntax überfordert sind) bedienbare kommerzielle Alternativen wie z.B. Atlassian Confluence, das aber in Zukunft nur noch in der Cloud angeboten wird, was die Zahl von Mediawiki-Installationen im Geltungsbereich der DSGVO sicher in die Höhe treiben wird. Wer mal in die Bredouille kommt, so etwas realisieren zu müssen, dem können diese Infos hier helfen:
https://bluespice.com/de/migration-von-confluence-nach-bluespice-mediawiki/
Bluespice hat dankenswerterweise seine Migrationsscripte auf GitHub zur Verfügung gestellt:
https://github.com/hallowelt/migrate-confluence
Glücklicherweise bietet auch eine ältere Mediawiki-Installation vielfältige Möglichkeiten die Inhalte im XML-Format zu exportieren, dass ein ganz aktuelles Mediawiki wieder importieren kann. Ähnlich wird übrigens auch bei einer Confluence zu Mediawiki Migration vorgegangen (siehe oben im Github-Link).
Mediawiki Grundinstallation auf einem neuen Server (hier ein Ubuntu-Server 20.4LTS):


sudo apt-get install apache2 mariadb-server -y
sudo  apt-get install php libapache2-mod-php php-common \
php-mbstring php-xmlrpc php-soap php-gd php-xml php-intl \
php-mysql php-cli php-mcrypt php-zip php-curl -y
sudo apt-get install php libapache2-mod-php php-common \
php-mbstring php-xmlrpc php-soap php-gd php-xml php-intl \
php-mysql php-cli  php-zip php-curl -y
sudo  apt install php-apcu
sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl start mysql
sudo systemctl enable mysql
sudo mysql_secure_installation
mysql -u root -p
wget https://releases.wikimedia.org/mediawiki/1.36/mediawiki-1.36.1.tar.gz 
(immer eine aktuelle Version verwenden! Erst schauen unter https://releases.wikimedia.org/mediawiki/ )

cd /var/www/html/
tar -xvzf /home/itmc-admin/mediawiki-1.36.1.tar.gz
(use always newest version) 
mv mediawiki-1.36.1/ mediawiki
chown -R www-data:www-data /var/www/html/mediawiki
chmod -R 755 /var/www/html/mediawiki
chmod -R 755 /var/www/html/mediawiki
hostnamectl set-hostname [YOURHOSTNAME]
sudo apt-get install imagemagick

Dann die zentrale Konfigurationsdatei /var/www/html/mediawiki/LocalSettings.php anpassen und dem Apachen eine /etc/apache2/sites-available/mediawiki.conf bauen (ssl/Zertifikate usw.).
Beide Dateien sind stark abhängig von den lokalen Gegebenheiten.

Export der Inhalte auf dem alten Mediawiki:

Wegen des hohen Versionsunterschieds wurde der Weg über einen XML-Export gewählt.

In /mediawiki/maintenance


cd /srv/www/htdocs/mediawiki/
php dumpBackup.php  --full --quit > wikinamedump.xml

Dann wikinamedump.xml und das Verzeichnis “images” übertragen per scp auf die neue Maschine.

Importieren der alten Inhalte des Wikis auf der neuen Maschine:

User Anonymous anlegen (beliebiges PW) dann erst geht:


php importDump.php --conf ../LocalSettings.php  /home/itmc-admin/wikinamedump.xml --no-local-users

Images Verzeichnis übertragen und Rechte einstellen:


chmod -R 755 images

Dann in maintenance die Bilder in der Datenbank neu indizieren, die Wiki-Links updaten und einen Rebuild durchführen:

 

cd maintenance/
php importImages.php --dry --search-recursively /var/www/html/mediawiki/images/
php importImages.php  --search-recursively /var/www/html/mediawiki/images/
php refreshLinks.php
php update.php
php rebuildall.php

Manchmal kann eine lokale Sicherung eines Mediawikis Gold wert sein, insbesondere, wenn man dort seine IT-Umgebung dokumentiert. Klar, man kann das über einen lokalen Webserver und eine Datenbank laufen lassen, aber dass ist oft ein Overkill. Einen ganz sauberen PDF-Export eines größeren Mediawikis habe ich seit Jahren nicht mehr gesehen und da viel mir der wunderbare statische Website-Kopierer httrack ein. Ich war nicht der Erste mit der Idee und ich habe dazu diese
https://www-public.imtbs-tsp.eu/~berger_o/weblog/2008/05/30/offline-backup-mediawiki-with-httrack/
und diese Anleitung
https://github.com/oschrenk/scripts/blob/master/backup-mediawiki-de.sh
gefunden. Leider ist das „moderne“ Webdesign auch an den Mediawiki-Themes nicht spurlos vorbeigegangen. Developer moderner Frameworks finden es cool, das Laden von CSS-Dateien abhängig von Javascript-Code zu machen, der Parameter wie Seitenbreite des Fenster, Device usw. für responsive Design ermittelt. Ein statischer Website-Kopierer hat da natürlich verloren. Das Ergebnis sieht dann aus, als ob Stylesheets ganz abgeschaltet worden sind. „Erwachsene Browser“, oder Browser für Erwachsene, wie der Firefox ermöglichen es, so etwas unter „Ansicht“, „Webseiten-Stil“, „kein Stil“ zu erzwingen.
Da ich im Fall der statischen Kopie aber nicht auf die Formatierung verzichten möchte, habe ich die oben verlinkten Scripte so modifiziert, dass ich das Stylesheet des Mediawiki-Standardthemes per Loop in die generierten HTML-Seitern hinein mogele.
Installieren von httrack:
apt-get install httrack
Das Ganze mache ich automatisch regelmäßig per cron-job:

5 3 * * 7 /home/admin/backup-mediawiki-de.sh > /dev/null 2>&1

Als kleines Features wurden noch ein Zip-Archiv mit einem Passwort in das Script integriert.
Sonntags um 3:05 Uhr lasse ich das backup-Script /home/admin/backup-mediawiki-de.sh ausführen, welches folgenden Inhalt hat:


#! /bin/sh

# Inspired by blogpost from http://www-public.it-sudparis.eu/~berger_o/weblog/2008/05/30/offline-backup-mediawiki-with-httrack/
# And ttps://github.com/oschrenk/scripts/blob/master/backup-mediawiki-de.sh
# Modified for modern Mediawiki and zip-Backup, A.Bischoff

# -w            mirror web sites (--mirror)
# -O            backup directory
# -%P           extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0 don't use) (--extended-parsing[=N])
# -N0           Saves files like in site Site-structure (default)
# -s0           follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always) (--robots[=N])
# -p7           Expert options, priority mode: 7 > get html files before, then treat other files
# -S            Expert option, stay on the same directory
# -a            Expert option, stay on the same address
# -K0           keep original links (e.g. http://www.adr/link) (K0 *relative link, K absolute links, K3 absolute URI links) (--keep-links[=N]
# -A25000       maximum transfer rate in bytes/seconds (1000=1kb/s max) (--max-rate[=N])
# -F            user-agent field (-F "user-agent name") (--user-agent )
# -%s           update hacks: various hacks to limit re-transfers when updating (identical size, bogus response..) (--updatehack)
# -x            Build option, replace external html links by error pages
# -%x           Build option, do not include any password for external password protected websites (%x0 include) (--no-passwords)

site=YOURWIKIHOST
# YOURWIKIHOST z.B. www.wikipedia.de

sitepath=$site/mediawiki
topurl=https://$site/mediawiki/index.php
backupdir=/home/admin/wiki-backup/$site

echo "==== cleaning up ===="
echo
rm -r $backupdir

httrack -w $topurl/Spezial:Alle_Seiten \
-O "$backupdir" -%P -N0 -s0 -p7 -S -a -K0 -A999000 \
-F "Mozilla/4.5 (compatible; HTTrack 3.0x; Windows 98)" \
-%s -x -%x  \
"-$sitepath/Spezial:*" \
"+$sitepath/Spezial:Letzte_Änderungen" \
"-$sitepath/index.php?*" \
"-$sitepath/Diskussion:*" \
"-$sitepath/Benutzer_*" \
"-$sitepath/Kategorie_Diskussion_*" \
"+$sitepath/images/*" \
"+*.css"

echo "wget start"

for page in $(grep "link updated: $sitepath/index.php/" $backupdir/hts-log.txt | sed "s,^.*link updated: $sitepath/index.php/,," | sed "s/ ->.*//" | grep -v Spezial:)
do
wget -nv -O $backupdir/$sitepath/index.php/${page}_raw.txt "$topurl/index.php?index=$page&action=raw"
done

echo "wget done"

# Andreas repair css and js

wget -nv -O $backupdir/$sitepath/index.php/mediawiki.css "https://$site/mediawiki/load.php?lang=de&modules=skins.vector.styles.legacy&only=styles&skin=vect
wget -nv -O $backupdir/$sitepath/index.php/mediawiki.js "https:// $site/mediawiki/load.php?lang=de&modules=startup&only=scripts&raw=1&skin=vector"

FILES="$backupdir/$sitepath/index.php/*.html"
for html in $FILES
do
   echo "file: $html"
   sed -i -e  's|</head>|<link rel="stylesheet" href="mediawiki.css"/><script async="" src="mediawiki.js"></script></head>|' $html

done
#
# my html
cp /home/itmc-admin/index2.html  $backupdir/index.html
# Andreas Add Date
current_time=$(date "+%d.%m.%Y um %H:%M:%S Uhr")
sed -i -e  "s|<BODY>|<BODY><h1>Backup erzeugt durch cronjob am $current_time |"  $backupdir/index.html

# Andreas create ZIP File – cut here if you don’t need an zip Archive
# remove –passwort Option if the wiki content is public
rm  /home/admin/wiki-offline.zip
#cd $backupdir/mediawiki;
ln -s $backupdir /home/admin/wiki-offline
zip -r --password ******* /home/admin/wiki-offline.zip ./wiki-offline
rm /home/admin/wiki-offline
#cd /home/admin;
cp /home/admin/wiki-offline.zip /var/www/html/backup/

echo "geschafft"

 

Das Script ist an deutschsprachige Mediawiki-Installationen angepasst. Für andere Sprachen müssen die Links im Script für die sprachspezifischen Spezialseiten angepasst werden.
Wenn man das Script etwas modifiziert, kann das Script sicher auch für httrack-Abzüge von modernen WordPress-Sites verwendet werden. Relevant ist dann der Teil ab „# Andreas repair css and js“, der Links zu CSS- und Javascript-Dateien vor den abschließenden „head“-Tag ins HTML hineinoperiert. Wenn ich mal Lust habe, forke ich vielleicht httrack für eine Option auf der Kommandozeile, um direkt dort zusätzliche Javascript- und CSS-Links angeben zu können, die automatisch in jede Seite eingebaut werden.

Jitsi Videokonferenzen funktionieren bei geeigneten Einstellungen mit über 100 Teilnehmern. Voraussetzung dafür ist, dass der erste Teilnehmer (der Veranstalter) dafür sorgt, dass der erste Teilnehmer (Moderator des Raumes) in den Settings “Everyone start muted”, “Everyone start hidden” und “Everyone follows me” anwählt. Dieses Szenario ist mit über 90 Teilnehmern erfolgreich getestet worden. Dann senden die Zuschauer nicht, können ihre Kamera und Mikrofon aber selber einschalten. Wenn das der Reihe nach getan wird, kann sehr einfach ermittelt werden, wie viele gleichzeitige Teilnehmer funktionieren, da der Teilnehmer mit der geringsten Bandbreite das Nadelöhr darstellt. Für reine Vorlesungsszenarien reicht das aber häufig schon aus.

Jitsi bietet aber auch die Möglichkeit externe Streaming Dienste anzubinden wie z.B, youtube oder einen eigenen nginx-Streamingserver. Wie das technisch realisiert werden kann, wird hier kurz beschrieben. Mir fehlt leider die Zeit das detailliert zu tun, da ich nicht mehr lange für die Uni Duisburg-Essen (UDE) arbeiten werde.

Die Komponente in Jitsi, die Aufzeichnungen und Stream ermöglicht heißt Jibri. https://github.com/jitsi/jibri

Bitte beachten, wenn mehrere Streams oder Aufzeichnung zur gleichen Zeit erfolgen sollen, benötigt man eine ganze Farm von Jibri-Maschinen, die mit einem unterschiedlichen „Nickname“ (siehe unten) konfiguriert werden müssen. Best Practice: Einen jibri konfigurieren und dann klonen. („Nickname“ anpassen nicht vergessen). Das schreit eigentlich nach dynamischen Instanzen, die per Docker oder ähnlich on the fly erzeugt werden können (hier nicht realisiert, nur als Idee angerissen).

Die Installation von Jibri funktioniert, anders als in der Anleitung angegeben, auch unter Ubuntu 18.4LTS (und sehr wahrscheinlich auch 20.4LTS). Wichtig ist aber, dass unbedingt Java8 konfiguriert wird:

$ sudo update-alternatives –config java

Achtung: Anders als in der Anleitung heißen die Jitsi-internen Virtual Hosts für die beiden Control-Kanäle (hier im Beispiel heißt der Jitsi-Server jitsi.zim.uni-due.de, dass muss individuell angepasst werden):

VirtualHost “auth.jitsi.zim.uni-due.de” (in /etc/prosody/conf.avail )

und

Component “internal.auth.jitsi.zim.uni-due.de” “muc”

Diese Namen müssen sich in der jibji config.json wiederspiegeln.

Unbedingt sind dann auch die Passwörter für die richtigen “virtuellen” Domänen (mit Domain meint Jitsi ein eigenes virtuelles Subdomain-Konzept, dass gar nichts mit echten Subdomains zu tun hat) zu setzen:

$ prosodyctl register jibri auth.jitsi.zim.uni-due.de *********

$ prosodyctl register recorder recorder.jitsi.zim.uni-due.de ********

(Mit den vergebenen Passwörtern im Config-File.)

Damit alle Komponenten zusammenspielen, muss auch die Jicofo-Konfiguration angepasst werden:

Man editiere dazu  /etc/jitsi/jicofo/sip-communicator.properties, um für die MUC (Multi User Conference, Jitsi basiert ja auf Jabber) die Jitsi-Stream-Brauerei (ein Bier für den Admin ;-) , also die Jibri-Worker bekannt zu  machen. Das muss mit dem Eintrag in der jibri’s config.json korrespondieren. Jicofo muss nach der Änderung neu gestartet werden.

org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.yourdomain.com

muss bei unserem Beispiel

org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.jitsi.zim.uni-due.de

sein!

Dann müssen noch in /usr/share/jitsi-meet/interface_config.js
die  TOOLBAR_BUTTONS für ‘livestreaming’ aktiviert werden.

Damit kann man dann z.B. schon zu youtube streamen, wenn man dort einen Streaming Account hat. Ich denke auch Wowza würde  mit dem /etc/hosts Hack gehen, ich hatte aber keine Zeit mehr das an der UDE auszuprobieren.

Damit die Jibri-Instanzen (Farm) nicht zu youtube sondern auf einen eigenen Server streamen, einfach in /etc/hosts für youtube.com die IP des Streamingservers einsetzen. D.h. die Rechner der Jibri-Farm halten den eigenen Streamingserver für youtube. Das hat den Vorteil, dass nichts im Jitsi-Quellcode geändert werden muss.

Im Beispiel an der UDE heißt der Streamingserver livestream.zim.uni-due.de .

Die  JIBRI Farm

Jeweils in /etc/jitsi/jibri/config.json die Nicknamen ändern.

“nickname”: “jibri-nickname2″

siehe: https://github.com/jitsi/jibri/issues/187 (ganz unten)

dann

$ sudo systemctl restart jibri

In den Logfiles sieht man dann, ob sich die Jibri-Instanzen ordentlich am jicofo anmelden.

Ein eigener Open-Source Streaming-Server

Der Streaming-Server, hier ganz in Open Source ist ein nginx mit selbst kompilierten Modul realisiert worden:

Prinzipiell bin ich nach dieser Anleitung vorgegangen

https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server-using-nginx.50/

Zum Bauen des nginx:

$ sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

$ wget http://nginx.org/download/nginx-1.15.1.tar.gz

Das RTMP-Modul:

$ wget https://github.com/sergey-dryabzhinsky/nginx-rtmp-module/archive/dev.zip

$ tar -zxvf nginx-1.15.1.tar.gz

$ unzip dev.zip

$ cd nginx-1.15.1

Build  nginx:

$ ./configure –with-http_ssl_module –add-module=../nginx-rtmp-module-dev

$ make

$ sudo make install

Als Ergänzung habe ich auch ein LDAP-Modul in den nginx einkompiliert:

hiermit:

https://github.com/kvspb/nginx-auth-ldap/blob/master/example.conf

mit

$ ./configure –with-http_ssl_module –add-module=../nginx-rtmp-module-dev  –add-module=../nginx_ldap_module/nginx-auth-ldap-master

$ make

$ sudo make install

Restart nginx:

$ sudo /usr/local/nginx/sbin/nginx -s stop

$ sudo /usr/local/nginx/sbin/nginx

Der nginx ist selbstkompiliert und lebt nach install unter /usr/local/nginx.

Gestartet wird er bei einem Reboot über einen cronjob:

@reboot root /usr/local/nginx/sbin/nginx

@reboot root /home/zim026/worker.sh 2>/dev/null (für die Playlist, siehe unten)

So wie er nun ist, kann man den Streaming-Server mit OBS-Studio oder Videolan per RTMP füttern und sich den Stream in einem vlc medial player anschauen.

Per OBS-Studio geht das so:

Ein Profil erzeugen mit:

Streaming Service: Custom
Server: rtmp://<your server ip>/live
Play Path/Stream Key: test

Und dann mit VLC (Videolan):

rtmp://<your server ip>/live/test

Das war der einfache Teil ;-).

Ich will aber mehr und den Stream im Browser per Javascript als HLS anschauen. Dazu habe ich folgendes getan:

Der Job /home/zim026/worker.sh (landet in der Crotab) erzeugt eine dynamische Übersichtsseite:

 



#!/bin/bash

#erst mal dauernd
while :
do
cd /tmp/hls
#alias proj="cd /tmp/hls"

#jhome () {
#  cd /tmp/hls

#touch test.m3u8
#touch test2.m3u8
echo > /usr/local/nginx/html/playlist_cont.html
j=0
x=X
for i in *.m3u8 ; do
if [ "${i:0:1}" != "X" ]
then
echo "<a href='https://livestream.zim.uni-due.de/stream5.html?s=$i'>Stream: [$i] <base target="_parent"></a><br><br>" >> /usr/local/nginx/html/playlist_cont.html
fi
j=$(( $j + 1 ))
done

OUTPUT=`cat /usr/local/nginx/html/playlist_cont.html`
if echo "$OUTPUT" | grep -q "*"; then
echo "<p>Kein öffentlicher Livestream verfübar.</p>" >/usr/local/nginx/html/playlist_cont.html
j=$(( $j - 1 ))
fi

echo  "<p>"  >>/usr/local/nginx/html/playlist_cont.html
echo $j >> /usr/local/nginx/html/playlist_cont.html
echo ' aktive Streams.'  >> /usr/local/nginx/html/playlist_cont.html

#cat /usr/local/nginx/html/playlist_head.html /usr/local/nginx/html/playlist.txt /usr/local/nginx/html/playlist_footer.html > /usr/local/nginx/html/playlist.html

#} # fuer das cd

sleep 5
done

Optional können auch verborgene Streams erzeugt werden, denen im Namen ein “X” vorangestellt wird. Diese tauchen dann nicht auf der Playlist auf, sind aber, wie unten in der Anleitung beschreienen, aufrufbar.

Das passende stream5.html HTML dazu, dass die hls-Videos mit Hilfe des  videojs-contrib-hls.js javascript-Library abspielt:
Siehe auch (es klappt bei mir mit Version 7):
https://videojs.com/getting-started/

Da es Umbruchprobleme im Blog gibt, hier die Datei stream5_html.txt auch zum Herunterladen.


<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>ZIM Livestream</title>

<!--

Uses the latest versions of video.js and videojs-contrib-hls.

To use specific versions, please change the URLs to the form:

<link href="video-js.css" rel="stylesheet">
<script src="video.js"></script>
<script src="videojs-contrib-hls.js"></script>

-->

<link href="videojs7/video-js.css" rel="stylesheet">
<script src="videojs7/video.min.js"></script>

</head>
<body>
<!-- onload="myFunction()"> -->
<img src="UDE-logo-claim.svg" height="100"><img src="zim.jpg" height="100">
<h1>Livestream - Play Button klicken fC<r Start</h1>

<video id="myvideo1" controls preload="auto"
width="640"
height="360"
data-setup='{}'>

<!--   <source src="https://livestream.zim.uni-due.de/hls/novideo.m3u8" type="applicat
-->

</video>
<br>
<a href="playlist.html">zurC<ck zur Live-Stream Auswahl</a>

<script>
window.onload = myFunction();

function myFunction(){

function getUrlParam(parameter, defaultvalue){
var urlparameter = defaultvalue;
if(window.location.href.indexOf(parameter) > -1){
urlparameter = getUrlVars()[parameter];
}
return urlparameter;
}

function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,
vars[key] = value;
});
return vars;
}

var mystream = getUrlParam('s','Empty');
var video = document.getElementById('myvideo1');
/*alert(video);*/
var source = document.createElement('source');
var streambase = 'https://livestream.zim.uni-due.de/hls/';
var streamurl = streambase.concat(mystream);
source.setAttribute('src', streamurl);
source.setAttribute('type', "application/x-mpegURL");
video.appendChild(source);
/*let insertedNode = myvideo.insertBefore(insertedNode, source);*/
/*
video.play();
*/
}
</script>

</body>
</html>

Der Datei wird der Stream-URL durch die Playlist per Parameter übergeben und es wird ein bisschen mit Javascript gezaubert. Die Geschichte mit dem Parameter und der Playlist stammt von mir. Das kann man sicher mit einem beliebigen Framework viel eleganter machen, ist wollte allerdings eine rasche Lösung, da ich erwartet hatte, dass so etwas in Corona-Zeiten an der UDE benötigt wird.
Dieses ist meine fertige nginx.conf. Wer auf LDAP verzichten will, lässt die entsprechenden Konfigurationseintrage füe LDAP und das Modul einfach weg. Das Streaming geht auch ganz ohne LDAP. Das war nur ein Feature für die Uni Duisburg-Essen, um auch hochschulöffentliche Streams zu realisieren, die erst nach Anmeldung angeschaut werden können:

Da es Umbruchprobleme im Blog gibt, hier die Datei nginx_conf.txt auch zum Herunterladen.


#user  nobody;
worker_processes  10;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
worker_connections  2048;
}

http {
include       mime.types;
default_type  application/octet-stream;

#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
#                  '$status $body_bytes_sent "$http_referer" '
#                  '"$http_user_agent" "$http_x_forwarded_for"';

#access_log  logs/access.log  main;

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;

#gzip  on;
#LDAP
ldap_server test1 {
url ldaps://ldap2.uni-duisburg-essen.de/ou=people,dc=uni-duisburg-essen,dc=de?uid?sub?(objectClass=inetOrgPerson);
binddn "cn=*******,ou=admin,dc=uni-duisburg-essen,dc=de";
binddn_passwd "********";
#group_attribute uniquemember;
group_attribute_is_dn on;
require valid_user;
}
#bis hier LDAP

server {
#listen 80;
listen 443 ssl;
#ssl on;
##  livestream.zim.uni-due.de-key.pem  livestream_cert.pem root@stream:/usr/local/nginx/certs
ssl_certificate /usr/local/nginx/certs/livestream_cert.pem;
ssl_certificate_key /usr/local/nginx/certs/livestream.zim.uni-due.de-key.pem;
server_name livestream.zim.uni-due.de;
#  server_name  localhost;
#LDAP
# auth_ldap "Anmeldung mit UDE-Unikennung/Passwort";
# auth_ldap_servers test1;
#LDAP bis hier
#charset koi8-r;

#access_log  logs/host.access.log  main;

location / {
root   html;
index  index.html index.htm;
}

#error_page  404              /404.html;

# redirect server error pages to the static page /50x.html
#
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#    proxy_pass   http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#    include        fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#    deny  all;
#}
# Andreas
location /hls/ {
root /tmp;
add_header Cache-Control no-cache;
}
# Andreas
location ~  /hls/U {
root /tmp;
add_header Cache-Control no-cache;
auth_ldap "Anmeldung mit UDE-Unikennung/Passwort";
auth_ldap_servers test1;

}

}

# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#    listen       8000;
#    listen       somename:8080;
#    server_name  somename  alias  another.alias;

#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}

# HTTPS server
#
#server {
#    listen       443 ssl;
#    server_name  localhost;

#    ssl_certificate      cert.pem;
#    ssl_certificate_key  cert.key;

#    ssl_session_cache    shared:SSL:1m;
#    ssl_session_timeout  5m;

#    ssl_ciphers  HIGH:!aNULL:!MD5;
#    ssl_prefer_server_ciphers  on;

#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}

}

rtmp {
server {
listen 1935;
chunk_size 4096;

application live2 {
live on;
record off;
#Andreas
meta copy;
wait_key on;
wait_video on;
idle_streams off;
hls on;
hls_path /tmp/hls;

}
}
}

Aus der Nutzeranleitung, die ich für die UDE erstellt habe:

Livestreams bzw. Webcasts
Wählen Sie zur Nutzung von Livestreams bzw. Webcasts auf dem Server
jitsi.zim.uni-due.de  (nicht auf jitsi.uni-due.de) die Funktion “start live stream” im Menue rechts unten (drei Punkte übereinander). Vergeben Sie dann im Dialog einen aussagekräftigen Namen für den Stream (ohne Leerzeichen). Der Stream wird nicht zu youtube gesendet, wie es im GUI angezeigt wird, sondern zum Server https://livestream.zim.uni-due.de . Wenn Sie ein großes “X” dem Stream-Namen voranstellen, wird dieser nicht in der Streamübersicht angezeigt. Ihre Studierenden können den Stream dann unter der URL

https://livestream.zim.uni-due.de/stream5.html?s=X<ihrstreamname>.m3u8

betrachten. Sie müssen Ihren Studierenden den URL dann per Mail oder in Moodle mitteilen. Bitte keine Leer- oder Sonderzeichen im Stream-Namen verwenden.
Wenn Sie dem Stream-Namen mit einem großen “U” beginnen, z.B. “Utest”, können nur NutzerInnnen der UDE erst nach Eingabe der Unikennung und dem Passwort den Stream ansehen.
Stoppen können Sie den Livetream ebenfalls über das Menue.
Der Livestream kann dann über die Seite livestream.zim.uni-due.de von vielen hundert Teilnehmern angeschaut werden,

Den Streamingserver livestream.zim.uni-due.de können Sie beispielsweise aber auch mit Hilfe von OBS-Studio produzierten Livestreams aus dem Uninetz auf den Port 1935 beschicken. Die beiden Optionen mit dem vorangestellten “X” bzw. “U” gelten dann ebenfalls.

Ich hoffe diese Zusammenstellung hilft dem einen oder anderen Admin weiter. Insbesondere für große Veranstaltungen kann das sehr hilfreich sein.


					
				
			

Als kurz vor dem Lockdown der DFN-Verein (Deutsches Forschungsnetz) ankündigte, dass der DFN-Conf Videokonferenzservice für alle Eventualitäten gerüstet sei und keine Kapazitätsprobleme zu erwarten sind, war Fachleuten im ZIM sofort klar, dass die Kapazitäten niemals ausreichen werden. Der DFN-Verein hat in Vor-Corona-Zeiten Kapazitäten von gerade einmal 2000 gleichzeitigen Videokonferenzteilnehmern bereitgehalten. Bei über 400 angeschlossenen Hochschulen kann so eine geringe Kapazität nicht ausreichen, wenn der Dienst plötzlich stark nachgefragt wird.

Leider hat aber das zentrale Videokonferenzangebot des DFN dafür gesorgt, dass lokal an vielen Hochschulen keine eigenen Lösungen mehr vorgehalten worden sind. An der UDE war das anders. Unterstützt von den Kolleginnen und Kollegen im Bereich Lerntechnologien habe ich mir vor einigen Jahren diverse freie Videokonferenzsoftwarelösungen (z.B. OpenMeetings, Palava, Jitsi-Desktop) angeschaut. Openmeetings, ein freier Adobe Connect Clone, war einige Zeit im Testbetrieb an der UDE und damals noch Flash-basiert. OpenMeetings , Jitsi und BigBlueButton (BBB) nutzen WebRTC als Basistechnologie. BBB hat ähnlich wie OpenMeeting früher Flash als Video- und Audio-Übertragungstechnik eingesetzt.

Es war zu Beginn des Lockdowns nicht klar, wie die Hochschullehre im folgendem Semester organisiert werden kann. Sollte der Weg gewählt werden alle Vorlesungen einfach per Videokonferenz anzubieten oder nur in eine Richtung ohne Rückkanal für die Studierenden ein Stream anzubieten oder besser auf ein Learning Content Management System wie Moodle gesetzt werden, um die Lehre asynchron zu realisieren? Im (aus IT-Sicht) Worst-Case-Szenario würde man alle Veranstaltungen einfach per Videokonferenz anbieten. Allerdings kommen Videokonferenzlösungen dann sehr schnell an Ihre Grenzen. Wenn Sie beispielweise eine Videokonferenz mit 100 Teilnehmern veranstalten möchten, muss jeder Teilnehmer 99 Videobilder gleichzeitig empfangen können, was private Internetzugänge von der benötigten Bandbreite nicht hergeben. Deshalb reduzieren alle Videokonferenz-Werkzeuge die Anzahl der maximal gleichzeitig übertragenen Streams.  Teilnehmerzahlen von über 1000 sind so gar nicht zu realisieren. Bei einem normalen synchronen Vorlesungsbetrieb an einer Universität mit über 40.000 Studierenden ist das technisch mit Inhouse-Lösungen zu Spitzenlastzeiten möglicherweise auch nicht zu stemmen. Da sich aber die Hochschule für einen asynchronen Lehrbetrieb mit Moodle entschieden hat, verteilt sich die benötigte Bandbreite über den ganzen Tag und Lastspitzen werden vermieden.

Wir im ZIM haben uns dazu entschieden, mehrgleisig auf die neuen Bedarfe zu reagieren. Einerseits haben wir sehr rasch einen Jitsi-Server für WebRTC-Videokonferenzen aufgesetzt und später Lizenzen für ZOOM-basierte Videokonferenzen in der Cloud beschafft. In der Fakultät Biologie hat Ken Dreger zeitgleich damit begonnen den WebRTC-Dienst BigBlueButton zu evaluieren. Dieser Dienst wurde später gemeinsam mit der Fakultät Biologie, der Wirtschaftsinformatik und dem ZIM auch hochschulweit in den Betrieb genommen. Ein spezieller BBB-Server für die Gremienarbeit, der für alle Teilnehmer eine Anmeldung mit der Unikennung erzwingt, wurde ebenfalls realisiert.

Bei der eingekauften proprietären Lösung ZOOM liegen die live Audio- und Video-Streams Prinzip bedingt beim Anbieter auf dem Vermittlungsserver unverschlüsselt vor. Um auch Konferenzen zu ermöglichen, in denen personenbezogene Daten oder anderweitig schützenswerte Inhalte ausgetauscht werden, wurde im ZIM auch ein sogenannter „on-premise“ ZOOM-Server installiert, bei dem alle Audio-und Videodaten unverschlüsselt nur auf einem Server in der Hochschule vorliegen. Um die Sammlung von Metadaten durch den Anbieter zu verhindern, ist nun auch eine völlig anonyme Anmeldung der Initiatoren einer Zoom-Videokonferenz im ZIM realisiert worden. Wenn allerdings auch nur ein Teilnehmer per Telefon oder WebRTC an einer Konferenz auf dem ZOOM-on-premise-Server teilnimmt, werden im ersten Fall Audio und im zweiten Fall auch das Video der Konferenz über ZOOM-Server in die Cloud geleitet. Die Daten, die Sie darüber hinaus in Ihrem ZOOM-Profil pflegen und auch die Aufzeichnungen dort, verantworten Sie aber als Lehrende selber.

WebRTC (Web Real Time Conferencing)

WebRTC, also Echtzeitkonferenzen im Browser sind heute in allen aktuellen Browsern nutzbar, selbst der Microsoft Browser Edge und Apples Safari beherrschen das mittlerweile gut. Dazu ist in den Webbrowsern Programmcode integriert, der auf die Webcam und das Audio-Interface (Mikrofon/Lautsprecher) zugreift, Ton und Video komprimiert (kodiert) und empfangene Daten dekomprimiert (dekodiert).  Diese Softwarekomponente wird CODEC (von coding und decoding) genannt. Wegen der im WebRTC-Standard notwendigen Interoperabilität der verschiedenen Browser muss die das W3C-Standartisierungsgremium (World Wide Web Consortium) auf CODECs einigen, die von allen Browser-Herstellern unterstützt werden (VP8, H264 für Video und Opus, G711 PCMA und PCMU für Audio). Da die beiden führenden Browser mit einer Open Source-Lizenz entwickelt werden, müssen auch die verwendeten CODECs Open Source sein. Und hier zeigt sich der wesentliche Unterschied zu proprietärer Videokonferenz Software wie z.B. Zoom. Diese muss nicht mit anderer standardisierter Software zusammenarbeiten, ist nur für diesen einzigen Zweck geschrieben worden und kann auch hochwertige kommerzielle Closed Source CODECS einsetzen, die eine höhere Kompression ermöglichen. Insofern ist der Vergleich der Audio- und Video-Qualität von WebRTC basierten Lösungen mit proprietären, nicht interoperablen Lösungen müßig. WebRCT-basierte Videokonferenzen mit BBB und Jitsi werden an der UDE über Uni-eigene Server abgewickelt. Weder Metadaten (wer kommuniziert mit wem) noch Inhalte können auch dem über sichere HTTPS abgesicherten Transportweg abgehört werden. Eine echte Ende-zu-Ende Verschlüsselung kann Prinzip bedingt auf einfache Weise nun zwischen zwei Kommunikationspartnern realisiert werden. Jitsi bietet beispielsweise so eine Möglichkeit. Wenn Sie zu zweit eine Jitsi-Konferenz durchführen, werden weder Ton noch Bild über den Jitsi-Server der UDE geleitet. Sie kommunizieren dann direkt Ende-zu Ende verschlüsselt und kein Geheimdienst dieser Welt kann sie abhören, sofern sie Ihrem PC und dem installierten Betriebssystem vertrauen können.  Eine Ende-zu-Ende Verschlüsselung mit mehr als zwei Teilnehmern ist viel schwieriger zu realisieren, da dann beim Verbindungsaufbau ein geheimer Session-Schlüssel mit allen Teilnehmern ausgetauscht werden müssen, den der zentrale Server nicht mitbekommen darf.

Ein weiterer Vorteil der WebRTC-Dienste ist die einfache Integration in vorhandene Webdienste wie z.B. Moodle und Rocket-Chat.

In Webbrowsern sind Sicherheitsmechanismen eingebaut, die verhindern sollen, dass eine Browser-Nutzerin oder ein Nutzer heimlich beim Besuch einer Webseite abgehört wird. Deshalb fragen die Browser immer nach, ob der Zugriff auf Kamera, Mikrofon und gegebenenfalls den Desktop, falls etwas präsentiert werden soll, durch den Nutzer erlaubt wird. Die Freigabe wird für jeden Server einzeln gespeichert und kann auch widerrufen werden. Im Falle von BBB sind das aber 10 verschiedene Server auf die, je nach aktueller Last, verwiesen wird. Leider ist das für ungeübte Nutzer eine zusätzliche Fehlerquelle bei webbasierten Videokonferenzen. Übrigens unterstützt auch ZOOM den Zugang über WebRTC zu Videokonferenzen ohne Installation des ZOOM-Clients. Allerdings ist diese Funktion (möglicherweise beabsichtigt) etwas versteckt und funktioniert nicht so zuverlässig wie von Jitsi und BBB gewohnt.

WebRTC-Probleme mit Mikrofon, Kamera oder Netzwerkanbindung können Sie auf dieser Testseite ganz hervorragend eingrenzen: https://test.webrtc.org/

Beschränkte Internetzugänge

Alle hier beschriebe Dienste funktionieren nun auch über extrem limitierte Internetzugänge, wie z.B. dem Verwaltungsfirewall der UDE oder in NAT-Netzen mit privaten Internet-Adressen. Auch die von Providern gerne verkauften limitierten DSLite-Internetzugänge stellen kein Problem mehr dar. Sofern auch nur der Port 443 für HTTPS offen ist, lassen sich Jitsi und BBB nutzen. Ermöglicht wird das durch im ZIM betriebene STUN und TURN-Server, die bei solchen limitierten Zugängen für eine „Vermittlung“ zwischen Client und Server sorgen. Auf wenn diese „Vermittlung“ wegen einem beschränten Internetzugang beim Verbindungsaufbau benötigt wird, bleibt die oben erwähnte Ende-zu-Ende-Verschlüsselung bei Jitsi mit zwei Teilnehmern intakt.

Echtzeit Videokonferenz versus Live-Stream versus Stream einer Konserve

Häufig wird die Qualität einer Videokonferenz an Streaming-Angeboten für vorher aufgezeichnete und komprimierte  Videokonserven wie Netflix oder Youtube gemessen. Da bei einer Videokonferenz die Latenz höchsten 150 Millisekunden betragen darf, ist der technische Aufwand aber bei einer Konferenz ungleich höher als bei einem Live- oder Konserven-Stream.  Bei höheren Verzögerungen fallen sich die Teilnehmerinnen unabsichtlich ins Wort, weil sie von einer Sprechpause des Gegenübers ausgehen. Bei einem (Live) Stream ist es völlig egal, ob er erst nach 10 Sekunden beginnt und der CODEC die Zeit für eine verbesserte Kompression und für ein Puffern (Buffering) nutzen kann, welches Latenz und Jitter (Verzögerungen und ungleichmäßige Übertragung in Paketen) überbrücken kann. Insofern ist es für eine Streaming-Anwendung im Gegensatz zu einer Videokonferenz auch gleichgültig, ob LAN oder WLAN eingesetzt wird, wenn nur die verfügbare Bandbreite insgesamt ausreicht. Die Kompression über eine lange Pufferzeit spart viel Übertragungsbandbreite, weil der CODEC nur Blöcke im Bild neu übertragen muss, in denen sich etwas ändert. Der CODEC kann in einem langen Puffer auch Blöcke zwischenspeichern, was schnelle Bewegungen im Vordergrund bei wenig Veränderung im Hintergrund abfedert. Daher schaffen Streaming-Dienste es, eine höhere Videoqualität mit geringerem Bandbreitenbedarf zu übertragen, als es in Videokonferenzen möglich ist. Und hier wird bisher nur ein wirklicher Live-Stream mit einer Echtzeit-Videokonferenz verglichen. Wenn eine Quelle als Konserve vorliegt, kann mit speziellen CODECS vorher offline komprimiert werden, da der CODEC dann “alle Zeit der Welt” hat, um das Video vorab zu komprimieren. Hochkomprimierende offline-CODECS für Konserven benötigen dazu ein Vielfaches der Laufzeit des Videos und sind deshalb für Live-Anwendungen nicht geeignet. All das ist einem CODEC für Echtzeit-Videokonferenzen nur eingeschränkt oder im Fall der Konserve gar nicht möglich.

Welches Tool für welche Anwendung?

Für eine spontane kleine Videokonferenz oder selbstorganisierte Lerngruppen von Studierenden ohne große Organisation eignet sich besonders Jitsi, da gar keine Zugangsdaten eingegeben werden müssen und man sich den Raum, also die URL einfach ausdenken kann. Z.B. https://jitsi.uni-due.de/spontanestreffen funktioniert sofort und weltweit. Der erste Teilnehmer kann auch die Eingabe eines Passwortes erzwingen, so dass sichergestellt werden kann, dass der Nutzerkreis eines Raumes eingeschränkt wird. Ein spezieller Datensparmodus ermöglicht auch die Teilnahme ausschließlich per Audio, so dass notfalls auch ein sehr limitierter Internetzugang, beispielsweise ein stark volumenbeschränkter LTE-Zugang, ausreicht.  Für Android und IOS gibt es jeweils auch eine komfortable Jitsi-App. Auch ein Streaming-Server für automatisierte Streams ist im ZIM an Jitsi angebunden worden. In der aktuellen Jitsi-Version ist es auch möglich eine sehr große Teilnehmerzahl mit zunächst abgeschalteten Mikrofonen und Kameras beitreten zu lassen, wenn der Moderator (Initiator) dieses in den Einstellungen festlegt. Der Moderator ist aber auf die Disziplin der Teinehmer angewiesen. Schauen Sie sich für Details die Dokumentation auf den ZIM-Seiten zu Jitsi an. Für Konferenzen ab ca. 10 Teilnehmern nutzen Sie aber besser BBB, dass dem Moderator wesentlich mehr Möglichkeiten bietet.

Für sehr komfortable Konferenzen in BBB mit guter Präsentations- und Moderationsmöglichkeiten ist es erforderlich, dass zumindest die/der Einladende sich mit Unikennung und Passwort am BBB-Server anmeldet um einen Meeting-Raum zu erstellen. Die Berechtigung dazu muss vorher dazu vergeben werden, wenden Sie dafür an die Hotline des ZIM. Sowohl für Jitsi als auch BBB (Gremienserver) ist im ZIM eine Telefoneinwahl mit FreePBX (Asterisk) realisiert worden.

Über den Microsoft-Bundesvertrag haben Sie darüber hinaus auch die Möglichkeit kostenfrei MS-Teams zu nutzen. Dazu müssen sie aber als Einzelperson die Vertragsbedingungen von Microsoft akzeptieren und ein MS-Office365-Konto anlegen. Das ist allerdings kein Dienst des ZIM und wir können keinen Support oder eine Datensicherung dazu anbieten. Damit Studierende und Lehrende dort überhaupt zusammenarbeiten können, war eine Zusammenlegung der Tenents für Mitarbeiter und Studierende der UDE durch Kollegen im ZIM notwendig. Sie sind persönlich verantwortlich, wenn Sie in der Microsoft-Cloud dienstliche personenbezogene Daten speichern und verarbeiten. Bedenken Sie dabei die DSGVO und die vom EUGH „gekippte“ Privacy Shield Regelung. Aktuell hält ein Arbeitskreis der Datenschutzkonferenz  den rechtskonformen Einsatz von Microsoft 365 in öffentlichen Institutionen für unmöglich.

Auch der DFN-Conf-Dienst scheint nun wieder zuverlässig zu funktionieren. Ob er allerdings dem Semesterbeginn Stand hält, bleibt aber abzuwarten.

Den ZOOM-Cloud-Dienst können Sie für Lehre einsetzen, sofern Sie keine Datenschutzbedenken haben. Bei Dienstbesprechungen dürfen Sie ausschließlich Dienste einsetzen, die an der UDE betrieben werden, d.h. Jitsi, BBB oder ZOOM mit dem „on-premise“-Server. Für Gremiensitzungen empfehlen wir ausdrücklich den BBB-Gremienserver, da dort bei der Anmeldung jeder Teilnehmer mit Unikennung und Passwort authentifiziert wird.

Was alles schiefgehen kann – die drei Feinde der Videokonferenz:

  • Latenz und Jitter
    Wenn Sie am Teilnahmeort eine LAN-Verkabelung haben, nutzen Sie diese auch! Im WLAN haben Sie immer ein geteiltes Medium, daheim mit Nachbarn und Familienangehörigen an der Uni mit Kollegen und Studierenden, die unvermittelt und unabsichtlich für kurzfristige Verzögerungen beim Datentransfer sorgen. Selbst wenn Sie ganz allein einen WLAN-Router nutzen und wirklich Niemand mit einem Gerät in der Nähe ist, fangen Sie sich durch das WLAN eine vermeidbare zusätzliche Latenz (also Verzögerungen) ein. Sowohl bei der Telefonie als auch bei einer Videokonferenz akzeptieren Menschen eine Latenz von höchstens 150 Millisekunden. Bei höheren Verzögerungen fallen sich die Teilnehmerinnen unabsichtlich ins Wort, weil sie von einer Sprechpause des Gegenübers ausgehen. Schlimm wird es auch wenn Sie sich den WLAN Funkkanal teilen und Audio- und Video-Pakete unregelmäßig verzögert ankommen (Jitter), da dann Aussetzer in Ton und Bild vorkommen.
  • Rückkopplungen
    Benutzen Sie bei Videokonferenzen immer ein Headset oder zumindest einen Kopfhörer. Ansonsten kann es passieren, dass ihr Mikrofon den Ton aus Ihrem Lautsprecher aufnimmt und so ein Echo der aktuell Sprechenden erzeugt, was speziell für den Sprecher aber auch für alle Teilnehmerinnen sehr unangenehm ist. Im schlimmsten Fall erzeugen sie sogar einen unangenehmen Pfeifton, der sich immer weiter aufschaukelt. Moderne Videokonferenzsysteme versuchen solche Echos per Software zu unterdrückten, was aber nicht immer zuverlässig funktioniert. Auch eine schlechte Entkopplung von Mikrofon und Lautsprecher in einem minderwertigen Headset kann so eine Rückkopplung auslösen. Einige Bluetooth-Headsets vertragen sich nicht gut mit dem WAN-Chipsatz mancher Notebooks und können so für zusätzliche Latenz sorgen. Wenn Sie über kein Headset verfügen, schalten Sie Ihr Mikrofon immer ab, wenn Sie nicht selber sprechen.
  • Bandbreite Zuhause / der gebuchte Tarif und die Wirklichkeit
    Internet-Provider überbuchen ihre verfügbare Bandbreite, weil sie davon ausgehen, dass nicht alle ihre Kunden den Zugang gleichzeitig mit der gebuchten Maximalgeschwindigkeit nutzen. Deshalb können Sie nicht davon ausgehen, dass Ihnen wirklich die gebuchte Bandbreite immer zur Verfügung steht. Derzeit sind durch massive Homeoffice-Nutzung viele Internetprovider überlastet.  Unter unter https://www.uni-due.de/zim/speedtest/ können Sie testen, wie schnell Ihr Internetzugang wirklich ist.  Auch kurzfristige Verzögerungen und Jitter durch einen geteilten Zugang können Probleme verursachen. Ihre Internetverbindung ist immer der Flaschenhals, ganz selten der Server. Fast alle privaten Internetzugänge sind asynchron konfiguriert, d.h. die Daten von Ihrer Webcam bzw. Audio sind im Upstream (also von Ihnen aus zum Server) begrenzt. Vermeiden Sie die zeitgleiche Nutzung auch durch Familienmitglieder von anderen Internetdiensten während einer Videokonferenz. Wählen Sie immer eine geringe Videoauflösung, sofern die VC-Software das erlaubt. Die Tonübertragung benötigt sehr viel weniger Bandbreite als ein Videobild. Wenn es in einer größeren Konferenz Probleme gibt, sollte nur der aktuell Sprechende ein Videobild senden. Notfalls sollten Sie ganz auf Video zugunsten der Audiokonferenz verzichten.
    Alternativ können Sie Ihren Router daheim so konfigurieren, dass die Bandbreite fair aufgeteilt wird. Das funktioniert rudimentär mit jeder Fritz-Box  und ganz ausgezeichnet mit einem Router der mit der Open Source DD-WRT-Firmware (Einstellung unter NAT/QoS) betrieben wird. Die Fritzboxen priorisieren in der Default-Einstellung Dienste, die sie für Echtzeitanwendungen halten, allerdings liegen sie dabei häufig falsch. Beispielsweise wird der Dienst Wetransfer von Fritzboxen als Echtzeitanwendung priorisiert und killt bei einem großen Upload dann gerne gleichzeitig ablaufende Videokonferenzen. In der DD-WRT-Routerfirmware ist, im Gegensatz zu OpenWRT , die Priorisierung komfortabel konfigurierbar, ohne dass Software nachinstalliert werden muss. Möglichweise haben Sie noch ein älteres unterstütztes Gerät herumliegen, dass Sie für diesen Zweck weiterverwenden können.
36C3 wieder die CCC-Rakete

36C3 wieder die CCC-Rakete

 

Auch in diesem Jahr habe ich den Chaos Communication Congress besucht und wieder allerhand neues zu IT-Security, KI, Netzpolitik und  Medienkunst erfahren. Eine kleine Auswahl an Vorträgen, die ich sehr empfehlen kann,  möchte ich Euch hier nicht vorenthalten.

Zum Thema IT-Security gab es einen Vortrag von Linus Neuman, dem aus Funk und Fernsehen bekannte Pressesprecher des CCC, der wegen der aktuellen Bedrohung mit EMOTET für uns alle sehr interessant ist. Da Linus Neuman als ausgebildeter Psychologe nicht nur IT-spezifische Dinge anspricht, ist der Vortrag auch allgemeinverständlich und sehr sehenswert. Es geht dort um Angst und Lageweile, zwei Faktoren, die uns dazu bringen auf Phishing-Mails hereinzufallen.

Linus Neumann Hirne Hacken – Menschliche Faktoren der IT-Sicherheit

Einen umfassenden Blick auf die IT-(Un)sicherheit der elektronischen Patientenakte bekommt Ihr in dem Vortrag von  Martin Tschirsich, Dr. med. Christian Brodowski und Dr. André Zilch.

“Hacker hin oder her”: Die elektronische Patientenakte kommt!

Was passiert, wenn man Intel-CPUs per Software „undervoltet“, d.h. mit einer niedrigen Spannung betreibt, sieht man im Vortrag von Daniel Gruss und Kit Murdock. Ein Seitenkanalangriff per Software.

Plundervolt: Flipping Bits from Software without Rowhammer

Wer bei der Bahn sparen möchte und wichtige Tipps mitnehmen möchte, wann und ob sich Reservierungen und Sparpreise lohnen, kann sich den  sehr sehenswerten Vortrag ist der von David Kriesel anhören. David Krisel ist wegen seiner Talks auf den Kongressen schon eine Berühmtheit.

BahnMining – Pünktlichkeit ist eine Zier

Wie man aus einer virtuellen Maschine ausbrechen kann, erfahrt Ihr hier im Vortrag von “f1yyy”.

The Great Escape of ESXi - Breaking Out of a Sandboxed Virtual Machine

Wie SQLITE, dass sowohl in jedem IOS und  Android-Device, in Firefox, Chrome als auch in Windows 10 enthalten ist, angegriffen werden kann, kann sich diesen Vortrag von Omer Gull anschauen.

SELECT code_execution FROM * USING SQLite; -Gaining code execution using a malicious SQLite database

Alles was Ihr jemals über SIM-Karten wissen wolltet, beantwortet Euch der Mobilfunkspezialist  Harald Welte aka „Laforge“ in seinem Vortrag.

SIM card technology from A-Z

Wer demnächst in den Urlaub fliegt, kann sich den Spaß am Fliegen durch den spannenden Vortrag von Bernd Sieker verderben lassen.

Boeing 737MAX: Automated Crashes - Underestimating the dangers of designing a protection system

Wer etwas zu den illegalen Überwachungsmaßnamen der US-Geheimdienste  in der Botschaft Ecuadors in London, in der Julian Assange Asyl gewährt worden ist erfahren möchte, kann sich diesen verstörenden Vortrag von Andy Müller-Maguhn anschauen.

Technical aspects of the surveillance in and around the Ecuadorian embassy in London - Details about the man hunt for Julian Assange and Wikileaks

Wie sich die radikalen Rechten im Netz austoben, erfahrt Ihr hier im Vortrag von Arne Vogelsang. Verstörend, aber sehr informativ.

Let’s play Infokrieg - Wie die radikale Rechte (ihre) Politik gamifiziert

Wie man mit WLAN so richtig weit einen Videostream für Drohnen oder überhaupt beliebige Daten übertragen kann, sieht man hier (Spoiler: 10Km Live-HD Video von einer Drohne!) im Vortrag von „befi2.

Wifibroadcast – How to convert standard wifi dongles into digital broadcast transmitters

Für die Fans von Retro-Computing  gibt es hier von Matt Evens den Talk:

The Ultimate Acorn Archimedes talk

Medienkunst bzw. Musik von Frauen gibt es in den Talks von Helen Leight und Jasmine Guffond zu sehen. Hellen Light erwähnt u.A. die Komponistin der original  Dr. Who Titelmelodie:

Hackers & makers changing music technology

Und Jasmine Guffond verwandelt Browser-Cockies in Sounds:

Listening Back Browser Add-On Tranlates Cookies Into Sound - The Sound of Surveillance

Wie man die Verkehrwende selber hacken kann, wie Sharebike und E-Scooteranbieter bei Ihrer Software pfuschen und wie man Open Data in die Stadtverwaltungen bringt, findet sich in diesem großartigen Vortrag von „robbi5“ und „ubahnverleih“, der auch zum Kongressthema Nachhaltigkeit passt:

Verkehrswende selber hacken

Wie man in seiner Garage eine Quantencomputer selber bauen kann erfährt man in dem großartigen Talk von Yann Allain:

Build you own Quantum Computer @ Home – 99% of discount – Hacker Style !

Viel über die Sicherheitslücken in iMessage auf IOS erfährt man im ausgezeichneten Talk von Samuel Groß vom Google Project Zero. Außerdem eine Menge zu Heap-Spraying und ASLR :

Messenger Hacking: Remotely Compromising an iPhone through iMessage

Was sonst alles noch so beim Instant messaging schiefgehen kann, erfährt man bei Will Scott:
What’s left for private messaging?

Alle interessanten Talks kann ich hier gar nicht aufführen, aber unter  https://media.ccc.de/c/36c3 gibt es fast alle Vorträge als Video-Konserven. Viel Spaß damit!

Hi, AI – Liebesgeschichte aus der Zukunft

https://www.hiai-film.de/

Filmforum Duisburg

Dellplatz 16

https://filmforum.de/

10.00 -19:40 Uhr Vorführung

Der AI-Roboter Pepper

Der AI-Roboter Pepper

Den Trailer zum Film können Sie hier finden:

https://vimeo.com/310599944

19:40 – 20:20 Diskussion und Expertengespräch mit Isabelle Reiff und Dr.-Ing. Andreas Bischoff

Anlässlich des Expertengespräches zur Künstlichen Intelligenz habe ich hier einen kleinen Reader zu den Themen AI (im Deutschen KI) und Robotik zusammengestellt:

Eine sehr schöne umfassende und aktuelle Zusammenstellung zum Thema künstliche Intelligenz finden Sie im ganz wunderbaren Buch „Künstliche Intelligenz“ von Manuela Lentzen.

https://www.chbeck.de/lenzen-kuenstliche-intelligenz/product/22250137

Mein Kollege Dr.-habil. Burkhard Wald hat anlässlich eines Vortrages zum Thema KI eine recht umfassende Linkliste in drei Blogbeiträgen zusammengefasst, die gespickt mit Erklärungslinks in die Wikipedia, sowohl die Geschichte der KI, als auch aktuelle Entwicklungen vorstellt.

Blog 1: http://blogs.uni-due.de/zim/2016/12/11/leseempfehlungen-zur-kuenstlichen-intelligenz-teil-1/

Blog 2: http://blogs.uni-due.de/zim/2016/12/27/leseempfehlungen-zur-kuenstlichen-intelligenz-teil-2/

Blog 3: http://blogs.uni-due.de/zim/2017/01/02/leseempfehlungen-zur-kuenstlichen-intelligenz-teil-3/

Sehr visionäre Ideen zu künstlicher Intelligenz und Bewusstsein finden sich in der Vortragsreiche von Joscha Bach aufgezeichnet auf diversen CCC-Kongressen in englischer Sprache:

https://media.ccc.de/search?q=Joscha

Und in deutscher Sprache in diesem sehr hörenswerten Podcast:

https://wrint.de/2013/03/09/wr156-ortsgesprach-joscha-bach-wg-kunstlicher-intelligenz/

Wer selber programmierren kann oder möchte:

Tensorflow ist ein Softwareframework von Google für Künstliche Neuronale Netze, das in C++ und Python programmiert wird. Wer sich ein bisschen mit Webtechniken und Javascript auskennt, kann auch tensorflow.js ausprobieren:

https://www.tensorflow.org/js

Ganz ohne eigenes Programmieren lässt sich dieses tensorflow.js Beispiel im Browser ausprobieren:

tensorflow.js-Demo Webcam Controller für PACMAN im Browser.

Viele Infos in englischer Sprache zum Thema Roboter gibt es im The Robot Report.

Kommentare zum Dokumentarfilm:

Da der Film beabsichtigt unkommentiert verschiedene Robotermodelle mit ganz unterschiedlichen Eigenschaften zeigt, möchte ich hier einige technische Einordnungen zu einzelnen Robotern vornehmen:

Der zittrig gehende humanoide (menschenähnliche) Roboter der italienischen Forschergruppe ist möglicherweise wirklich ein mit einer AI (einem neuronalen Netz) selbst lernendes System. In der AI (KI) wird tatsächlich diskutiert, ob für künstliche Intelligenz (künstliches Bewusstsein) ein Körper nötigt ist.

Pepper, der Roboter, der mit die älteren Dame auf Japanisch kommuniziert zeigt einige Eigenschaften, die man in autonomen Robotern künstlich implementiert, damit sich ein für Menschen glaubhaftes Kommunikationsverhalten realisiert werden kann. Menschen mögen es, wenn Sie angesehen werden, wenn man mit Ihren spricht. Das dauernde Anstarren  durch einen Roboter wird aber als psychologisch unangenehm empfunden. Wenn der Roboter umher oder zur Decke blickt, wir dieses von Menschen als nachdenken interpretiert.

Der weibliche „Gummipuppen-Roboter“ ist offensichtlich ein Sprach-Dialogsystem, dass in der Cloud läuft, ähnlich Alexa und Siri. Die Antworten und Dialoge des Systems sind recht primitiv und lassen vermuten, da eine Chat-Bot Software eingesetzt wird. Eine sehr bekannte Chat-Bot Software mit den Namen Eliza wurde schon in den 70er Jahren realisiert. Ethiker beschäftigen sich aber  tatsächlich damit, Roboter vor einem Einsatz als Sex-Sklaven zu schützen.

Ein kleiner Tipp: Wenn Sie auf Webseiten im Chat oder in Sprachdialogsystemen überprüfen wollen, ob Sie es wirklich mit einem Menschen zu tun haben, machen Sie einen kleinen Turing-Test (ein Test der das Gegenüber auf Intelligenz testet) und fragen Sie den Chat-Partner was er sieht, wenn er aus seinem Bürofenster schaut.

Starke KI – schwache KI – wie weit die Forschung wirklich ist

Mit schwacher KI bezeichnet man Systeme die konkrete Aufgaben lösen wie z.B. künstliche Sprachausgabe, Spracherkennung, Bilderkennung usw. Diese Probleme können mit dem heutigen Stand der Technik als gelöst bzw. beherrschbar angesehen werden. Mit starker KI bezeichnet man echte Künstliche Intelligenz bzw. künstliches Bewusstsein. Eine Definition von KI besagt, dass wenn ein Mensch einen künstlichen Kommunikationspartner nicht von einem echten unterscheiden kann, ist dieser als intelligent zu bezeichnen (Turing-Test).

Alle gezeigten AI-Systeme sind sehr weit von echtem künstlichem Bewusstsein entfernt. Unabhängig vom derzeitigen KI-Hype und Darstellungen in der Science Fiction, ist die Forschung derzeit noch sehr weit von einem künstlichen Bewusstsein entfernt, was unter anderem daran liegt, dass niemand weiß, wie unser Bewusstsein genau funktioniert. Allerdings zeigen die teils bedrückenden Dialoge, was echte oder auch nur vorgegebene AI mit uns Menschen anstellen. Wollen wir im Alter wirklich von Pflegerobotern unterhalten werden? Sollen Dialoge mit Sexspielzeugen in irgendwelchen Clouds abgespeichert werden? Wie verhalten sich Menschen gegenüber intelligenten Maschinen?

Interessanter ist auch die Frage, welche Auswirkungen trainierte künstliche neuronale Netze auf unser Alltagsleben haben werden (oder schon haben). Diese entscheiden schon heute, basierend auf Datenspuren die wir hinterlassen (Big Data), welche Werbung wir angezeigt bekommen, welche Versicherungen uns verweigert werden, welche Therapie bei einer Erkrankung für uns die richtige ist oder nehmen gar Social Scoring (wie in China) vor. Ein Problem künstlicher neuronaler Netze ist immer die Auswahl der Trainingsdaten. Wenn diese Trainingsdaten schon Vorurteile und gefärbte Einschätzungen enthalten, werden die Netze in dieser schon „befangenen“ Weise trainiert. Ein weiteres Problem ist, dass es unmöglich ist, die einzelne Entscheidung eines künstlichen Neuronalen Netzes genau zu verifizieren, also den Grund für eine  Entscheidung herauszufinden.

Isabell Reiff und Andreas Bischoff

Isabelle Reiff:

Isabelle Reiff, geboren 1968 in Bremen, arbeitet als freie Journalistin für Fachverlage und Unternehmen. 1994 noch geduldig aufs Freizeichen ihres 14.4k-Modems wartend, ist ihr heute oft nach Digital Detox. Dem Redaktionsvolontariat folgten zwei Informatik-Forschungsprojekte, seitdem gilt ihr Augenmerk den sozialen Implikationen von IT. Das Kulturhauptstadtjahr brachte sie 2010 nach Dortmund, wo sie als Autorin im »2-3 Straßen«-Konzeptkunstwerk von Jochen Gerz die Bewohner der Nordstadt um »Satz-Spenden« bat. In Köln erschienen ihre ersten Kurzgeschichten wie die über einen Mann, den Spam bis in seine Träume
verfolgt. In ihrem 2017 erschienenen Near-Future-Krimi »UhrZeit« sollen alle Dortmunder per Smartwatch optimiert werden.

https://www.text-der-trifft.de/

https://www.reiff-fuer-die-insel.de

Der Near-Future-Krimi »UhrZeit«:

https://www.amazon.de/UhrZeit-ein-Near-Future-Krimi-Isabelle-Reiff-ebook/dp/B074B9TV6W

Andreas Bischoff:

Dr.-Ing. Andreas Bischoff ist seit 19 Jahren wissenschaftlich in Bereichen Robotik, virtueller und augmentierter Realität unterwegs. Seit 9 Jahren beschäftigt er sich an der Universität Duisburg-Essen mit Hochschul-IT. Ab 2011 Ausstellungen mit interaktiven audio-visuellen Videokunstprojekten. Schwerpunkt ist die kritische künstlerische Auseinandersetzung mit dem Leben im Zeitalter von Big Data und globaler Überwachung.

Kunst: https://mediaart.robotnet.de/

Blog: https://www.robotnet.de/

HP: https://www.dr-bischoff.de/

Uni DUE: https://www.uni-due.de/~bischoff/

Größer, schneller, weiter – das Wachstum setzt sich fort! Mit über 17 Tausend Besuchern war der 35. Chaos Communication Congress unter dem Motto „refreshing memories“(*) Ende Dezember 2018 der bisher größte. Die neuen Räumlichkeiten bieten auch noch ein wenig Reserven für ein weiteres Wachstum.

Der 35C3 in Leipzig in den Hallen der neuen Leipziger Messe. Laserprojektion in der zentralen Messehalle.

Der 35C3 in Leipzig in den Hallen der neuen Leipziger Messe. Laserprojektion in der zentralen Messehalle.

Die Organisation war wie immer perfekt. Über 5000 freiwillige „Engel“ halfen in unzähligen Arbeitsstunden mit, den 35C3 zu einem unvergesslichen Erlebnis zu machen.

Meine Lieblingstalks dort in recht zufälliger Auswahl nach eigenen Präferenzen habe ich hier zusammengestellt. Thematisch ist von KI, Smart Home, Kryptographie, Kryptowährungen, Gesundheits-Apps, Datenschutz und Hardware-Hacking für jede/jeden Interessierten etwas dabei. In der fachlichen Tiefe gab es sowohl Vorträge für Anfänger als auch hochtechnische Talks für echte Nerds.

Alles kann man wegen der vielen parallelen Sessions gar nicht anschauen, aber da helfen wie immer die Aufzeichnungen vom Kongress die vom großartigen VOC-Team (Video Operation Center) unter https://media.ccc.de/b/congress/2018 nachhaltig zur Verfügung gestellt werden. Thematisch reicht der Kongress weit von Algorithmen in der Kryptographie, Angriffen auf Apps, Software, Hardware bis hin zu Auswirkungen von Netzpolitik und Datenschutz auf unser gesellschaftliches Zusammenleben.

Sehr sehenswert waren die vielen Aufbauten (Assemblies) der Regionalgruppen (Erfta-Kreise) des CCC. Da Fotos von Personen auf dem Kongress wegen Einhaltung der Privatsphäre verpönt sind, gibt es hier nur einige Fotos von Exponaten zu sehen.

In der Blog-Version dieses Artikels werde ich noch Vorträge ergänzen, die ich mir zwischenzeitlich noch als Aufzeichnung angeschaut habe.

Das Hauptthema des Kongresses war natürlich Security:

Nexus 5-Besitzer aufgepasst: Einen technisch anspruchsvollen Bluetooth-Angriff auf Broadcom Chipsatz kann man sich im Vortrag „ Dissecting Broadcom Bluetooth“ von jiska und mantz anschauen.

https://media.ccc.de/v/35c3-9498-dissecting_broadcom_bluetooth (en)

Biometrie ist so ziemlich auf allen Gebieten gebrochen. Auf diesem Kongress war die Venenerkennung dran:  „Venenerkennung hacken

Vom Fall der letzten Bastion biometrischer Systeme“ -  ein sehr sehenswerter Vortrag von starbug und Julian.

https://media.ccc.de/v/35c3-9545-venenerkennung_hacken

Festplattenverschlüsselung in Hardware – warum manchmal Bitlocker gar nicht nützt, erfährt man hier:  „Self-encrypting deception weaknesses in the encryption of solid state drives (SSDs) von Carlo Meijer“.

https://media.ccc.de/v/35c3-9671-self-encrypting_deception  (en)

Warum Lampen nicht in die Cloud gehören, erläuterte Michael Steigerwald in seinem Talk „Smart Home – Smart Hack -Wie der Weg ins digitale Zuhause zum Spaziergang wird“. Viele dieser Geräte nutzen ein und dieselbe Software eines chinesischen Herstellers, welche leicht angreifbar ist. Vielen Nutzern ist unklar welche Risiken daraus entstehen. Sie nehmen an, dass dann ein Hacker nur auf dem Internet eine Lampe an- und ausschalten kann. Viel schlimmer ist aber ein Eindringling, der ein Gerät im eigenen Netzwerk übernehmen und von dort aus Rechner im LAN angreifen kann.

https://media.ccc.de/v/35c3-9723-smart_home_-_smart_hack

Wer (glücklicher oder unglücklicher ;-) Besitzer einer Cryptowährung ist, sollte sich diesen Angriff auf Hardware-Wallets einmal anschauen. Eine Besonderheit ist dort, dass auch ein reiner Hardwareangriff mittels Glitches durchgeführt wurde:

„wallet.fail – Hacking the most popular cryptocurrency hardware wallets“von Thomas Roth, Dmitry Nedospasov und Josh Datko.

https://media.ccc.de/v/35c3-9563-wallet_fail

„Open Source Firmware – Eine Liebesgeschichte“ von zaolin bringt Euch Coreboot näher, in das sich der Vortragende wohl verliebt hat.

https://media.ccc.de/v/35c3-9778-open_source_firmware

Das Facebook uns allen DSGVO-widrig hinterherspioniert, auch wenn wir gar keinen Account dort haben zeigt:

„How Facebook tracks you on Android (even if you don’t have a Facebook account)“ von Frederike Kaltheuner und Christopher Weatherhead.

https://media.ccc.de/v/35c3-9941-how_facebook_tracks_you_on_android (en)

“All Your Gesundheitsakten Are Belong To Us – So sicher wie beim Online-Banking”: Die elektronische Patientenakte kommt – für alle.  Warum es keine gute Idee ist Gesundheitsdaten einer App anzuvertrauen zeigt Martin Tschirsich in seinem deutschsprachigen Vortrag. So ganz nebenbei erfährt die Zuschauerin, wie Angriffe auf Apps und auf Webseiten funktionieren und warum Public-Private-Key Verschlüsselungsverfahren auf Smartphones immer wieder versagen.

https://media.ccc.de/v/35c3-9992-all_your_gesundheitsakten_are_belong_to_us

Wer ein bisschen Retrocomputing mag, interessiert sich vielleicht für den Talk von Yaniv Balmas und Eyal Itkin. Der Angriff ist allerdings hochmodern und betrifft jeden HP-Multifunktionsdrucker, der FAX kann! Wenn der Angreifer einmal auf diesem Weg im LAN ist, kann er weitere Rechner infizieren. „What The Fax?! Hacking your network likes it’s 1980 again“:

https://media.ccc.de/v/35c3-9462-what_the_fax (en)

Mobilfunk:

„Die verborgene Seite des Mobilfunks – HF-Störquellen im Uplink“ von Peter Schmidt. Viel über Störquellen beim Uplink in den Mobilfunknetzen erfährt man hier von einem echten Experten aus erster Hand. Man lernt viel über Mobilfunkmasten und kann im Vortrag Tipps abgreifen, wie man einen kostenpflichtigen und ungebetenen Besuch der Bundesnetzagentur vermeiden kann.

https://media.ccc.de/v/35c3-9407-die_verborgene_seite_des_mobilfunks

KI:

Für mich der wahre KI-Experte schlechthin ist Joscha Bach, über dessen Vorträge ich schon einmal berichtet hatte. Der letzte Vortrag dieser Reihe zu Bewusstsein, also starker KI, schlägt in der Einführung einen Bogen von Denkern und Philosophen wie Wittgenstein, Russel zu Turing und Minski zu seinen eigenen Ideen zum künstlichen Bewusstsein.

Auch seine Folien sind ein Genuss – vom kleinem Prinzen bis zur einfachen Erklärung von neuronalen Netzwerken mit einem mechanischen Modell ist alles dabei.

“The Ghost in the Machine – An Artificial Intelligence Perspective on the Soul”

https://media.ccc.de/v/35c3-10030-the_ghost_in_the_machine (en)

Wer Lust auf mehr bekommt, hier sind alle Vorträge von Joscha Bach zu finden:

https://media.ccc.de/search?q=Joscha

Post Quantum Cryptography:

Was mit Kryptographie passiert, wenn es in Zukunft einmal Quantencomputer gibt, kann man sich in diesem Talk anhören (es schadet nicht, wenn man Mathematiker ist ;-).  „The year in post-quantum crypto“ von djb und Tanja Lange.

https://media.ccc.de/v/35c3-9926-the_year_in_post-quantum_crypto (en)

Wissenschaft:

Im Talk „Inside the Fake Science Factories“ von @sveckert, @tillkrause, Peter Hornung and Dr Dade Murphy, kann man sich einmal für die RWTH-Aachen fremdschämen und bekommt einen Einblick in das pervertierte Publikationssystem der Wissenschaft. Eine Warnung vor Fake Science und Fake Konferenzenan alle Wissenschaftler:

https://media.ccc.de/v/35c3-9744-inside_the_fake_science_factories (en)

Kunst:

Auch Kunst und Musik sind in diesem Jahr nicht zu kurz gekommen.

Einen sehr schönen Talk zum Thema Digital Painting hat der Künstler Jeffrey Alan Scudder „Radical Digital Painting – Fantastic Media Manipulation“ gehalten. Er mischt analoge mit digitalen Dingen in seine spannenden Live-Präsentation:

https://media.ccc.de/v/35c3-9774-radical_digital_painting (en)

Eine Installation aus Monoblock Stühlen.

Eine Installation aus Monoblock Stühlen.

Netzpolitik:

Zu Netzpolitik, DSGVO, den Polizeigesetzen und dem Staatstrojaner gab es natürlich auch eine Menge an Vorträgen. Vielleicht ein recht handfester Ratschlag: “Verhalten bei Hausdurchsuchungen

Praktische Hinweise für den Kontakt mit der Staatsmacht” von qbi und Kristin Pietrzyk.

https://media.ccc.de/v/35c3-10018-verhalten_bei_hausdurchsuchungen

Metainformationen zum Hacken

Wer nun jetzt selber Lust aufs Hacken bekommt, sollte sich erst die beiden folgenden Vorträge anschauen.

Wie einen Metadaten verraten (und beim aktuellen Hack von Politiker-Daten den Verursacher verraten haben) erfährt man vom CCC-Sprecher Linus Neumann und Thorsten Schröder im Vortrag „Du kannst alles hacken – du darfst dich nur nicht erwischen lassen – OpSec für Datenreisende“.

https://media.ccc.de/v/35c3-9716-du_kannst_alles_hacken_du_darfst_dich_nur_nicht_erwischen_lassen

Wenn der “Hacker” Orbit diesen Talk gehört und beherzigt hätte, wäre er wohl nicht so schnell geschnappt worden.

Und Frank Riegers (auch einer der Sprecher des CCC) Vortrag:

„Hackerethik – eine Einführung

Verantwortung und Ethik beim schöpferisch-kritischen Umgang mit Technologie“

https://media.ccc.de/v/35c3-10011-hackerethik_-_eine_einfuhrung

Ein Tipp für Besucher des nächsten Kongresses: Das Messegelände ist sehr ausgedehnt – ohne Tretroller macht man dort Kilometer und der Besuch artet in Sport aus!

(*) Dynamisches RAM muss regelmäßig “refreshed” werden. „Memory is RAM!“ –  IT-Crowd ;-)

https://www.youtube.com/watch?v=NdREEcfaihg