Skip to content
Snippets Groups Projects
Commit 8ea4663b authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Notizen, Beispiele und Tafelbilder 2.5.2024

parent 9be5824b
No related branches found
No related tags found
No related merge requests found
...@@ -14,8 +14,271 @@ ...@@ -14,8 +14,271 @@
02.05.2024 02.05.2024
~~~~~~~~~~ ~~~~~~~~~~
- yesVNC (Fortsetzung) :) Skripte zur allgemeinen Nutzung von Online-Plattformen (s, mic)
- Skripte zur allgemeinen Nutzung von Online-Plattformen :) Weiterentwicklung dieser Skripte: BBB Mute/Unmute
(s, mic, Weiterentwicklung: VNC Vollbild) - Weiterentwicklung dieser Skripte: VNC Vollbild)
- weitere Anwendungen diskreter Mathematik: --> DISPLAY=:0 xvkbd -no-jump-pointer -window 29360133 -text "\[F8]\[Down]\[Down] "
o weitere Anwendungen diskreter Mathematik:
elliptische Kurven, AES, Fehlererkennung und -korrektur elliptische Kurven, AES, Fehlererkennung und -korrektur
- yesVNC (Fortsetzung)
Sicherheitsanforderungen des BSI zu Individual-Software, 02.05.2024, 13:32:29
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Vor Beginn der Entwicklung: Sicherheitskonzept
- Installationsanleitung
- Installation durch die Campus-IT
Hallo zusammen,
ich habe mir vorhin eine kleine Individual-Software programmiert,
mit der ich per Tastatur zuverlässig das Mikrofon ein- und
ausschalten kann. Im Anhang zwei Shell-Skripte und die davon
benötigten Audio- und Grafikdateien.
Sicherheitskonzept: Ich nutze ganz normal auf meinem
Notebook dbus-send, amixer, aplay und xteddy. Solange diese
Nicht-Individual-Programme keine Sicherheitslücken enthalten,
wird daher auch meine Individual-Software sicher sein.
Lizenzen: Das Mikrofon-Icon von GNOME steht unter GNU GPL v2,
alles von mir selbst unter CC0 ("public domain").
Installationsanleitung: Alle Dateien irgendwo ablegen, nötigenfalls
in den Shell-Skripten die Pfade anpassen. Bei mir hat es sich
bewährt, die Programme mittels xbindkeys aufzurufen, z.B. durch
die folgende Konfiguration in ~/.xbindkeysrc:
"$HOME/usr/bin/s"
Print
"$HOME/usr/bin/s i"
Control+Print
"$HOME/usr/bin/mic toggle"
Pause
Bedienungsanleitung: "s --help" bzw. "mic --help" eingeben.
Das Programm "mic" schaltet das Mikrofon per amixer an und aus und
stellt ggf. auch mumble per DBUS auf "stumm", damit Mumble-Nutzende
von außen sehen, daß mein Mikrofon an- bzw. ausgeschaltet ist.
Darüberhinaus zeigt es mittels xteddy auf meinem exportierten
Bildschirm ein Icon, das Personen im Raum anzeigt, ob das Mikrofon
aktuell an- oder ausgeschaltet ist.
Ich habe leider keine Möglichkeit gefunden, BBB per Skript
abzufragen, ob ich gerade stumm geschaltet bin oder nicht.
Daher halte ich es aktuell für zu riskant, das BBB-Mikro per
Skript umzuschalten, selbst wenn wir einen zuverlässigen Weg
finden, dies zu tun (z.B. mittels xdotool). Bzgl. BBB beschränke
ich mich also aktuell darauf, das Mikrofon per amixer an- bzw.
auszuschalten und den aktuellen Status über meinen exportierten
Bildschirm mitzuteilen.
Statstik: Um die Software zu schreiben und zu debuggen, habe ich
heute genau 90 Minuten investiert. Um die Lizenzen zu prüfen und
die Dokumentation in dieser E-Mail zu schreiben, weitere 41 Minuten,
also weniger als die Hälfte der Zeit für die Software-Entwicklung.
Immerhin. :-]
Schöne Grüße
Peter
--
Prof. Dr. Peter Gerwinski - Hardwarenahe IT-Systeme
embedded systems - microcontrollers - device drivers
Hochschule Bochum - Bochum University of Applied Sciences
Campus Velbert/Heiligenhaus - https://www.hs-bochum.de/cvh/
Elliptische Kurven, 02.05.2024, 15:51:17
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Elliptische Kurve = Lösung einer Gleichung 3. Grades mit 2 Variablen
--> Funktionsgraph = glatte Kurve
Körper: Anstelle der reellen Zahlen nehmen wir einen endlichen Körper.
--> Funktionsgraph = Schneegestöber
Auf diesem Funktionsgraphen identifizieren wir eine Gruppe (G,·),
auf der die Multiplikation einfach ist, aber die Division schwierig.
--> Grundlage für ein asymmetrisches Kryptosystem
--> :-)
Symmetrische und Asymmetrische Verschlüsselung, 02.05.2024, 15:54:13
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Symmetrische Verschlüsselung:
- Ver- und Entschlüsseln mit demselben (geheimen!) Schlüssel
- sicher ab einer Schlüssellänge von ~128 Bit
- schnell
(Z.B. 128-Bit-Operationen auf 64-Bit-Prozessoren:
https://de.wikipedia.org/wiki/Advanced_Vector_Extensions)
- Problem: Schlüsselaustausch
- Lösung: Schlüsselaustausch vorab ("pre-shared key" - PSK)
- Lösung: Diffie-Hellman
- Lösung: Asymmetrische Verschlüsselung
Asymmetrische Verschlüsselung:
- Verschlüsseln mit öffentlichem Schlüssel,
Entschlüsseln mit geheimem Schlüssel
- sicher ab einer Schlüssellänge von ~2048 Bit
- langsam
- Anwendung: einen symmetrischen (geheimen) Schlüssel asymmetrisch verschlüsseln
--> hybride Verschlüsselung
- Problem: Schlüsselaustausch
- Lösung: Schlüssel auf mehreren Wegen austauschen.
Diese brauchen nicht abhörsicher zu sein, sondern nur manipulationssicher.
AES und endliche Körper, 02.05.2024, 16:04:30
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AES arbeitet in einem Körper mit 256 Elementen.
Zur Veranschaulichung: Körper mit 4 Elementen
- Elemente: 0, 1, x, x+1
- Addition: modulo 2, ähnlich der Addition von komplexen Zahlen als "Vektor"
- Multiplikation: x · x = x+1, x+1 · x+1 = x
Veranschaulichung: (x + 1) · (x + 1) = x² + 2x + 1 = x+1 + 0 + 1 = x --> :-)
- Ist dies wirklich ein Körper? --> Inverse Elemente für Multiplikation prüfen
z.B.: Das multiplikative Inverse von x+1 ist x, da x+1 · x = 1.
Zur Veranschaulichung: Körper mit 25 Elementen
- Elemente: { 0, 1, 2, 3, 4 } mit Adjunktion von \sqrt{2}
--> z.B.: 3 · \sqrt{2}
Ähnlich gehen die komplexen Zahlen aus den reellen Zahlen hervor:
Adjunktion von i mit i² = -1
Zur Veranschaulichung: Körper mit 49 Elementen
- Elemente: { 0, 1, 2, 3, 4, 5, 6 } mit Adjunktion von \sqrt{6} = \sqrt{-1} = i
Fehlererkennung, 02.05.2024, 16:35:51
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Fehlererkennung durch Parität:
- binäre Nachricht: 10110100
- Parität: Wir zählen die Einsen.
- zusätzliches Bit: War es eine gerade oder ungerade Anzahl von Einsen?
- ungerade Parität: Zusammen mit dem Zusatzbit muß es eine ungerade Anzahl sein.
Hier: Zusatzbit 1, also senden wir insgesamt: 101101001
- gerade Parität: Zusammen mit dem Zusatzbit muß es eine gerade Anzahl sein.
Hier: Zusatzbit 0, also senden wir insgesamt: 101101000
--> kann 1 umgedrehtes Bit erkennen, versagt bei 2 umgedrehten Bits
- Mathematische Operation: modulo 2, Untersuchung des Restes
Fehlererkennung durch CRC (cyclic redundancy check):
- Mathematische Operation: modulo ein Polynom (in einem Ring), Untersuchung des Restes
--> http://www.peter.gerwinski.de/download/net-2013ss.tar.gz, Seite 31
- Polynomdivision über dem Körper ( { 0, 1 }, +, · )
- Wir versenden die Nachricht mit angehängten Bits und interpretieren sie
als Polynom über diesem Körper. Wenn die Divison durch ein vorher vereinbartes
Polynom funktioniert, war die Datenübertragung erfolgreich.
--> Die Wahrscheinlichkeit, daß die Division zufällig funktioniert,
ist für ein 4-Bit-Polynom 1 : 2^4. --> CRC4
In der Praxis: CRC32, CRC64, ...
Ausfallsicherheit: RAID 5, 02.05.2024, 17:16:34
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Netzwerk-Skript, S. 27
Mindestens 3 Platten: A B C
A speichert Daten
B speichert weitere Daten
C speichert A-Daten xor B-Daten ("Paritäts-Platte")
--> Wenn eine Platte ausfällt, kann ich sie durch ein xor der beiden
verbliebenen Platten rekonstruieren.
RAID 5: Die Platten wechseln sich für verschiedene Datenblöcke in ihren Rollen ab:
Mal ist C die Paritäts-Platte, mal A, mal B.
--> Gleichmäßige Auslastung aller Platten
Päritätsplatte wird immer doppelt belastet.
--> höherer Verschleiß, "Flaschenhals" für die Performanz
Bei 4 Platten: A B C D
A speichert Daten
B speichert weitere Daten
C speichert weitere Daten
D speichert A-Daten xor B-Daten xor C-Daten ("Paritäts-Platte")
Fehlerkorrektur: Reed-Solomon-Code, 02.05.2024, 17:23:59
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Wir übertragen die Informationen als die Koeffizienten eines Polynoms,
indem wir Stützpunkte übertragen, z.B. 3 Punkte für eine Parabel.
Wenn wir mindestens 2 Punkte zusätzlich übertragen, kann das Polonom
auch dann rekonstruiert werden, wenn ein Punkt falsch übertragen wurde.
--> reed-solomon-*.png
"Überschriften" in vi(m), 02.05.2024, 17:48:44
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Text markieren, dann durch das untenstehende Shell-Skript "hh" pipen:
#!/bin/bash
IFS='' read TXT
if echo "$TXT" | file - | grep -q UTF-8; then
RTXT="$TXT"
unrecode="cat"
else
RTXT=$(echo "$TXT" | recode latin1..utf8)
unrecode="recode utf8..latin1"
fi
if [ -z "$RTXT" ]; then
SUFFIX=""
elif echo "$RTXT" | grep -q "[?.!]$"; then
SUFFIX=" "
else
SUFFIX=", "
fi
PREFIX=$(echo "$RTXT" | sed -e 's/^\([^0-9A-Za-zÄÖÜäöüß]*\).*/\1/')
DATE=$($HOME/usr/bin/hd)
FULLTXT="$(echo "$RTXT" | sed -e 's/^[^0-9A-Za-zÄÖÜäöüß]*//')$SUFFIX$DATE"
UNDERLINE=$(echo "$FULLTXT" | sed -e 's/./~/g')
INDENT=$(echo "$PREFIX" | sed -e 's/./ /g')
#echo "|$TXT|"
#echo "|$RTXT|"
#echo "|$PREFIX|"
#echo "|$FULLTXT|"
echo -e "$PREFIX$FULLTXT\n$INDENT$UNDERLINE" | $unrecode
BBB-Betriebsmodi für Lehrveranstaltungen, 02.05.2024, 16:55:47
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Wie PULT:
Kamerabild unten rechts in der Bildschirmpräsentation
--> Die Anordnung, bei der die Bildschirmpräsentation nicht verkleinert wird
und trotzdem die Kamera zu sehen ist, ist ein Vorteil.
* BBB mit geteilter Präsentation:
Kamerabild oben, darunter jeweils ein geteiltes Fenster (z.B. Folien)
* BBB mit geteiltem Bildschirm:
Kamerabild z.B. unter dem Chat, daneben der geteilte Bildschirm
--> Die Möglichkeit, das Kamerabild separat anordnen und wegschalten zu können,
ist ein Vorteil.
* BBB mit geteiltem Bildschirm und "Bild im Bild":
Es ist möglich, den geteilten Bildschirm im Vollbildmodus zu betrachten
und das Kamerabild an eine beliebige Stelle zu schieben.
--> Die PULT-Anordnung als Startbildschirm wäre eine perfekte Lösung.
--> Funktioniert nicht, weil "Bild im Bild" vom Browser aktiviert wird
und an BBB komplett vorbeigeht.
==> Das Vorhaben, die PULT-Anordnung als Startbildschirm in BBB zu realisieren,
ist sinnvoll.
export DISPLAY=:0.0
winid=$(xwininfo -root -tree | grep BigBlueButton | awk '{print $1}')
if [ -n "$winid" ]; then
focus=$(xdotool getwindowfocus)
xvkbd -no-jump-pointer -window $winid -text 'x'
sleep 0.1
xdotool windowfocus $focus
fi
#!/bin/sh
export DISPLAY=:0.0
debug=true
winid=$(xdotool search --name BigBlueButton)
$debug && echo $winid
if [ -n "$winid" ]; then
focus=$(xdotool getwindowfocus)
xdotool windowactivate --window $winid
xdotool key --window $winid "x"
sleep 0.1
xdotool windowfocus $focus
fi
export DISPLAY=:0.0
winid=$(xdotool search --name BigBlueButton)
if [ -n "$winid" ]; then
focus=$(xdotool getwindowfocus)
xvkbd -no-jump-pointer -window $winid -text '\Am'
sleep 0.1
xdotool windowfocus $focus
fi
20240502/reed-solomon-01-parabel.png

78.5 KiB

20240502/reed-solomon-02-4-punkte.png

92.6 KiB

20240502/reed-solomon-03-5-punkte.png

93.3 KiB

20240502/reed-solomon-04-fehlerkorrektur.png

139 KiB

File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment