Einmalpasswörter: Schlimmer als Passwörter?

2025-08-07

Viele Dienste verwenden eine fehlerhafte Anmeldemethode: Senden eines 6-stelligen Codes per E-Mail oder Telefon. Das ist unglaublich unsicher. Angreifer können leicht Phishing-Websites erstellen, um Benutzer zum Eingeben von Codes zu verleiten und Konten zu stehlen. Passwort-Manager bieten keinen Schutz. Die Microsoft-Minecraft-Anmeldung, die diese Methode verwendet, hat bereits zahlreiche Kontodiebstähle erlitten. Beenden Sie die Verwendung dieses unsicheren Anmeldesystems!

Mehr lesen
Technologie

Linux PATH: Das Geheimnis der Shell

2025-04-29

Haben Sie sich schon einmal gefragt, wie Linux die Befehle findet, die Sie ausführen? Die Antwort: Es hängt von der Shell ab, nicht vom Kernel! Dieser Artikel geht auf die Mechanik der PATH-Umgebungsvariable ein und enthüllt, wie Shells (wie dash) Funktionen wie `padvance` verwenden, um nach ausführbaren Dateien in PATH zu suchen, während der `execve`-Systemaufruf des Kernels tatsächlich den vollständigen Pfad erhält. Programmiersprachen wie Python, Go und Rust implementieren auch ihre eigene PATH-Suche in ihren Subprozessbibliotheken und verlassen sich letztendlich auf zugrunde liegende Funktionen wie `execvp`. Der Artikel erklärt auch, warum Shebangs absolute Pfade benötigen und die clevere Rolle von `/usr/bin/env`.

Mehr lesen
Entwicklung

Hören Sie auf, *e* mit Zinseszins zu erklären

2025-04-11

Im Mathematikunterricht wird die natürliche Konstante *e* oft mit Zinseszins eingeführt: Ein Konto mit 100 % jährlichem Zins verdoppelt sich bei jährlicher Verzinsung, wird 2,25-mal so groß bei halbjährlicher Verzinsung, ungefähr 2,714-mal so groß bei täglicher Verzinsung und genau *e*-mal so groß bei kontinuierlicher Verzinsung. Dies ist jedoch irreführend. Das Zinseszinssystem wächst exponentiell, aber das Beispiel verwendet eine lineare Aufteilung der Verzinsungszeiträume. Banken müssen Zinssatz, Verzinsungsintervall und jährliche prozentuale Rendite separat veröffentlichen. Es gibt viel elegantere Möglichkeiten, *e* einzuführen, wie seine einzigartige Eigenschaft, seine eigene Ableitung zu sein, oder seine entscheidende Rolle in der Euler-Formel. Diese Ansätze erfordern keine Vorkenntnisse über *e* und sind mathematisch rigoroser.

Mehr lesen

Von Stunden zu 360 ms: Über-Engineering einer Puzzle-Lösung

2025-02-08

Der Autor versucht, ein Sudoku-Puzzle zu lösen, mit dem Ziel, die Lösung zu finden, die den größtmöglichen GGT unter den neun neunstelligen Zahlen erzeugt, die durch die Zeilen gebildet werden. Anfängliche Versuche mit dem Z3-Solver konnten innerhalb von Stunden keine Lösung finden. Der Autor setzte dann mehrere Optimierungsstrategien ein: mathematische Analyse zur Reduzierung des Suchraums, einen BFS-Algorithmus und iterative Verbesserungen der Funktion `is_good`, wobei er von HashSet zu Bitset wechselte und schließlich SIMD für vektorisierte Berechnungen verwendete. Multithreading und verfeinerte Thread-Synchronisierung reduzierten die Lösungsdauer von Stunden auf 360 ms und erzielten eine Beschleunigung um mehr als das 1600-fache. Obwohl sich eine hartcodierte Antwort als die schnellste erwies, zeigt der Artikel, dass selbst scheinbar einfache arithmetische Probleme durch sorgfältige algorithmische Optimierung erhebliche Performance-Verbesserungen bieten.

Mehr lesen
Entwicklung

Die Wahl des Minecraft-Serverstandorts löst eine Debatte über Wahlsysteme aus

2024-12-21

Die Wahl eines Standorts für einen Minecraft-Server führte zu einer eingehenden Diskussion verschiedener Wahlsysteme. Das anfänglich verwendete Mehrheitswahlsystem (Plurality voting) führte aufgrund des „Spoiler-Effekts“ dazu, dass die unbeliebteste Option gewann. Anschließend wurde die sofortige Stichwahl (Instant runoff) getestet, die einige Probleme löste, aber die Monotonie verletzte, als sich die Kandidaten änderten. Der Autor stellt außerdem die Borda-Methode und den Arrow-Unmöglichkeitssatz vor und empfiehlt schließlich die Bewertungsstimmen (Score voting) und die Zustimmungsstimmen (Approval voting) als bessere Optionen, da sie die drei Bedingungen des Arrow-Unmöglichkeitssatzes erfüllen: Einstimmigkeit, Nicht-Diktatur und Unabhängigkeit von irrelevanten Alternativen.

Mehr lesen