Deutsch English
pesco @ khjk.org
Dipl.-Math. Sven Moritz Hallberg
Programmierung und IT-Sicherheit

http://www.khjk.org/

Portfolio

Grundlagen der Kryptowährung "Zcash"

Zcash is the third iteration of an extension to the Bitcoin protocol that provides true untraceability, i.e. fully anonymous transactions. It is arguably the first serious attempt to establish this extension, in the form of its own blockchain, beyond the form of an academic proposal. The talk provides an introduction to the magic that makes it work.

Vortrag auf dem 33. Chaos Communication Congress (30min)
Vortragsfolien

Iteratees in C (Prototyp)

An Iteratee is a data structure that represents a stream processor. It consumes a stream of input elements and at some point produces a result or fails with an error. Streams may consist of elements of any type. Processing proceeds one chunk of input at a time.

Entwicklung einer C-Bibliothek, die das ursprünglich dem Kontext funktionaler Programmierung entstammende Konzept des Iteratee I/O umsetzt.

Enthält einen selbst entworfenen schnellen Garbage-Collector, dessen Eigenschaften dem gegebenen Fall angepasst sind.

Implementation eines einfachen Beispiels (Wörter zählen), das die Laufzeit-Performance seines klassischen Äquivalents erreicht, sogar leicht übertrifft.

Kurzvortrag auf dem 30. Chaos Communication Congress (5min)
Vortragsfolien: 5min-Version ausführlichere Version
README
Programm-Code und weitere Dateien

Ein kleiner funktionaler Compiler (laufende Arbeit)

The project is to build a compiler for a modern functional programming language and to get it self-hosting as quickly as possible, bootstrapping from minimal dependencies.

Aufbau einer minimalistischen funktionalen Programmiersprache in Form eines Übersetzers nach Standard-C. Die erste Version wurde in rund 500 Zeilen C gefasst und danach in etwa 300 Zeilen der Sprache selbst reimplementiert (Selbstübersetzung).

Enthält einen selbst entworfenen Garbage-Collector, dessen Eigenschaften dem gegebenen Fall angepasst sind, sowie ein flexibles Test-System, um die Funktion des Compilers zu prüfen.

README
Programm-Code und weitere Dateien

Funktionen in verschiedenen Programmiersprachen

The specific realization of functions and subroutines as provided by six popular programming languages are surveyed from the standpoint of language design. The languages discussed are C, Scheme, (Common) Lisp, Smalltalk, Python, and Scala. Questions of interest include the sharing of namespaces between functions and other objects, closures and scoping rules, support for higher-order functions, lambda expressions, etc. An additional section notes interesting points about some languages that are not included in the main presentation.

Aufsatz zu den unterschiedlichen Darstellungen des mathematischen Funktionskonzepts in einigen Programmiersprachen.

Angefertigt als Seminararbeit im Nebenfach Informatik.

Schriftliche Ausarbeitung

Arduino JTAG-Adapter

The XC9572XL is programmed via a standard JTAG interface. I did not have anything that speaks JTAG so went looking if my Arduino can be turned into an appropriate programmer. The solution that I found, however, did not work; so I built my own.

Eigenentwicklung eines Arduino-Programms zur direkten Interaktion mit Mikrochips ueber die JTAG-Schnittstelle.

Dokumentation im Blog
Programm-Code

Arduino AVR-Programmierer

Also ist mein erstes richtiges Arduino-Projekt ein AVR-Programmierer.

Eigenentwicklung eines Arduino-Programms zum Bespielen anderer ATmega-Mikrocontroller über die proprietäre Programmierschnittstelle.

Dokumentation im Blog
Programm-Code

Mathematische Grundlagen asymmetrischer Verschlüsselungsverfahren

Dieser Vortrag will eine allgemeinverständliche Einführung in die mathematischen Grundlagen der asymmetrischen Verschlüsselungsverfahren geben, die das Rückgrat moderner Kryptoinfrastruktur bilden. Den Teilnehmern soll der Schlüssel gegeben werden, kryptographische Systeme, die auf diesen Primitiven aufbauen, mehr als nur oberflächlich beurteilen zu können.

Vortrag im Rahmen der CCC-Konferenz SIGINT 2009.

Schriftliche Ausarbeitung
Video-Mitschnitt Vortragsfolien

Kryptoanalyse der Siemens & Halske T52

The Siemens & Halske T52 (in its several variants) [...] was a teleprinter with integrated encryption/decryption facility. It was cryptographically superior to the Enigma and, by its nature, much more sophisticated in terms of its electro-mechanical engineering.

Aufsatz über die erfolgreiche Entschlüsselung nazideutschen Telegraphenverkehrs durch schwedische Mathematiker während des zweiten Weltkriegs.

Ursprünglich angefertigt als Seminararbeit im Rahmen des Mathematikstudiums.

Schriftliche Ausarbeitung
Vortrag auf dem Chaos Communication Camp 2007
Vortragsfolien

Das Socialist Millionaires' Protocol

Ein von Boudot et al. entwickeltes Zero-Knowledge-Protokoll ermöglicht den geheimen und sicheren Vergleich zweier Abdrücke über einen ungesicherten Kanal. Dabei benötigen die Kommunikationspartner nur einmalig ein vergleichsweise schwaches Shared-Secret.

Ausarbeitung zum mathematischen Hintergrund eines in der Praxis eingesetzten aber wenig bekannten kryptographischen Verfahrens.

Angefertigt als Seminararbeit im Rahmen des Mathematikstudiums.

Schriftliche Ausarbeitung
Hand-out

Skein 512 in 256 Zeilen

Skein is a new family of cryptographic hash functions. Its design combines speed, security, simplicity, and a great deal of flexibility in a modular package that is easy to analyze.

Entwicklung einer möglichst kurzen und lesbaren C-Implementation der Skein Hashfunktion von Schneier et. al, eines der Finalkandidaten im Wettbewerb um die Standardisierung von SHA-3.

Dokumentation im Blog
Programm-Code

Diffie-Hellman in 200 Zeilen

Diffie-Hellman ist natürlich wirklich ganz einfach. Fünf Zeilen. Man braucht nur [Potenzierung]. Kein Problem. Dafür gibt's ja Square-and-Multiply. Easy peasy solange man multiplizieren kann ... modulo großer Primzahlen.

Entwicklung einer möglichst kurzen und lesbaren C-Implementation des Diffie-Hellman-Verfahrens unter Verwendung der Montgomery-Multiplikation in großen Restklassenringen.

Dokumentation im Blog
Programm-Code