10 Jul 2011

Buchtipp: Daniel Suarez - Daemon

daemon (dēʹmən) n.—A computer program that runs continuously in the background and performs specified operations at predefined times or in response to certain events. Condensed from ‘Disk And Execution MONitor.’

Vor ein paar Wochen bin ich auf ein Interview von Frank Rieger (englische Version hier) mit dem Autor Daniel Suarez aufmerksam geworden. In dem durchaus lesenswerten Interview sprechen die beiden über unintelligente künstliche Intelligenzen, Sicherheitswahn und die Angreifbarkeit moderner Infrastrukturen alles Motive aus Suarez' zweibändiger Daemon-Serie .

Das erste als "Daemon" betitelte Buch beginnt mit dem Ableben des erfolgreichen Spielentwicklers Matthew A. Sobol, dessen Hinterlassenschaft ein bis an hin schlummerndes Computerprogramm namens "The Daemon" ist. Erweckt durch die Nachricht des Dahinscheidens seines Erschaffers beginnt dieser Daemon nun eine Kette von Ereignissen auszulösen, die mehrere Todesfälle zur Folge hat.

Anders als in klassischer Science Fiction ist der Daemon allerdings keine künstliche Intelligenz, sondern im Kern ein einfach gehaltener Web-Crawler, der Nachrichtenseiten nach fest vorgegebenen Schlüsselwörtern durchsucht und darauf hin bestimmte Aktionen auslöst.

Einem von Sobol absteckten Plan folgend, beginnt der Daemon bald Kontakt mit diversen Charakteren aufzunehmen, um Ihnen von Sobol vorgegebene Aufgaben aufzutragen. So dauert es nicht lange, bis der Daemon eine kleine Gruppe an so genannten "Daemon Operators" rekrutiert hat, die sich in seinen Dienst stellen, dafür gleichzeitig aber auch diverse Privilegien geniessen dürfen.

Daemon

Das Interessante an dem Buch ist, dass die ganze in der Geschichte verwendete Technologie an sich heute schon vorhanden ist. Es ist also keine eigentliche SciFi-Geschichte, sondern viel mehr ein Techno-Thriller. Anders als im Hacker-Genre üblich, sind sämtliche technischen Details durchaus denkbar und technisch korrekt erklärt, ohne dabei für Nicht-Fachleute unverständlich zu werden.

Diese Kombination aus spannender, actionreicher Handlung und technischer Korrektheit macht "The Daemon" meiner Meinung nach zu einem der besten Werke des Hacker-Genres und verdient daher meine Empfehlung an alle technik-interessierten Leser.

Für diejenigen, die das Buch bereits gelesen haben, ist auch der Google Tech Talk, den Daniel Suarez vor zwei Jahren gehalten hat, zu empfehlen. In dem Vortrag erzählt unter anderem von einem eigenen Softwareprojekt, welches schliesslich zur Inspiration des Daemon wurde oder wie er die erste Auflage ohne Mainstream-Verlag selber publiziert hat.

19 May 2011

TermKit - Das Terminal der Zukunft

Zuerst über @isotopp auf Twitter, dann nochmals via Golem bin ich auf TermKit aufmerksam geworden: Ein Terminal fürs 21. Jahrhundert.

Die Idee dabei ist keineswegs das Rad neu zu erfinden, im Gegenteil: TermKit ist unix-typisch in als Client/Server aufgebaut und für den Endbenutzer besteht das Ganze nach wie vor aus einer Eingabezeile und Standardbefehle wie ls, cat und echo.

Der Unterschied zu herkömmlichen Shells wie bash besteht hauptsächlich darin, dass die Ausgabe der Programme nicht direkt und unbearbeitet dem User angezeigt wird: Erstens werden die üblichen Unix-Kanäle, stdin, stdout und stderr weiter unterteilt in Data I/O und View I/O. Der Standardin- und output besteht also nun aus je zwei Kanälen (insgesamt vier), einer für Programmdaten und einer für Benutzerinformationen. Die andere grosse Änderung ist, dass sowohl Daten- als auch die Benutzerkanäle mit Metadaten wie etwa Inhalt und Länge versehen worden ist.

Dies ermöglicht es jetzt dem Client, also dem Terminal, dem Benutzer erstens mehr Informationen und zweitens besser aufbereitete Informationen anzubieten, wie beispielsweise Fortschrittsbalken bei grep oder Syntaxhighlighting beim Anzeigen von Quellcode. Hier mal ein Screenshot, wie man sich das vorstellen darf:

Shot-0

Testinstallation unter Linux

Offiziell gibt es die aktuelle Alpha-Version nur für Mac OS X, aber da der Server (die Shell) in node.js und der Client (das Terminalfenster) in HTML5 geschrieben ist, lässt es sich mit einem WebKit-fähigen Browser auch unter Linux testen. Dazu benötigt man eine aktuelle Version von node.js und dessen Paketmanager npm. Bei Arch findet sowohl nodejs als auch nodejs-npm im AUR.

Zuerst das Git-Repository inkl. Submodule klonen, danach das nötige npm-Modul ins lokale Verzeichnis nachladen und dann Server und Client starten:

$ git clone git://github.com/unconed/TermKit.git --recursive
$ cd TermKit/Node
$ npm install mime
$ node nodekit.js &
$ chromium ../HTML/index.html

Fazit

Es bleibt zu hoffen, dass TermKit eine Zukunft hat, denn die Idee hat Potential. Es ist um Welten benutzerfreundlicher in der Ausgabe von ls scrollen zu können, ohne dass der Rest des Terminals dabei mitscrollt. Natürlich wird TermKit noch einige Zeit brauchen, bis es im Alltag benutzbar ist, so ist keinerlei Terminal-Kompatiblität vorhanden, der Aufruf von vim führte bei mir zu einem (aber nicht dem einzigen) Crash und auch sonst war die Geschwindigkeit des HTML5-GUIs nicht atemraubend, aber hey, das Teil ist quelloffen und basiert auf dem Client-/Server-Prinzip, es steht jedem frei eine eigene GUI für das Framework zu basteln, und das ist hoffe ich auch was passieren wird. Denn auch wenn ich viele CLI-Tools in vielen Fällen nach wie vor für benutzerfreundlicher als ihre GUI-Pendant halte, so spräche gegen ein bisschen modernen Anzeigebildschirm nun echt nichts.

Mehr Informationen und Screenhosts besucht das Blog und die GitHub-Seite des Entwicklers.

16 May 2011

Das Problem mit Facebook

Das Problem mit Facebook ist nicht etwa der sogenannte Ego-Striptease, welcher von der Plattform ermutigt wird. Oder dass persönliche Daten für Werbung anaylsiert und monetarisiert werden. Denn jene Phänomen sind gesellschaftlicher bzw. wirtschaftlicher Natur und damit nichts, was Facebook im Besonderen betrifft oder der Grundidee des Datenschutzes widersprechen würde.

Viel mehr ist das Problem mit Facebook die technische Umsetzung: Facebook sieht sich selber als zentraler Knotenpunkt für soziale Kommunikation. Facebook ist also kein dezentrales Netzwerk wie E-Mail oder BitTorrent, sondern oberste und zentrale Kontroll- und Weiterleitungsinstanz sämtlicher Kommunikation.

Die Konsequenz daraus ist folgende: Um in Facebook private Nachrichten zu versenden oder mit anderen Personen zu chatten muss ich, bevor ich den eigentlichen Empfänger erreiche, meine Nachricht Facebook zur Weiterleitung übergeben.

Der Grund warum ich eine Nachricht nicht halb-öffentlich an eine Facebook-Wand schreibe, sondern persönlich einer Person anvertraue, ist ja in der Regel der, dass diese Nachricht Informationen enthält, über deren Verbreitung ich gerne die Kontrolle behalten möchte. Daher sende ich solche Informationen nur an Personen, denen ich vertraue, dass sie diese Informationen in meinem Sinne handhaben.

Bei einem zentralen System muss ich die Nachricht zuerst Facebook anvertrauen, damit sie transportiert werden kann. Ich muss also dem Unternehmen Facebook das gleiche Vertrauen entgegenbringen, wie meinen engsten Bekanntschaften (und das kann nicht funktionieren, nur schon weil Vertrauen auf Gegenseitigkeit basiert).

Dieser Verlust der Zugriffskontrolle meiner Informationen (Daten) ist also das eigentliche Problem an Facebook.

Andere Dienste wie beispielsweise Twitter leiden nicht unter diesem Problem, weil bei Twitter die Kommunikation öffentlich ist und das Unternehmen damit nicht mehr Kontrolle über meine Daten erhält als jeder andere Teilnehmer der Öffentlichkeit auch.

Um das Konzept von Facebook zu erhalten müsste der Dienst technisch so abgeändert werden, dass die Benutzer die Kontrolle über den Zugriff ihrer persönlichen Daten behalten, beispielsweise über Private/Public-Kryptographie und/oder dezentrale Speicherung der Daten, wie das Diaspora beispielsweise macht. Dazu müsste Facebook nicht einmal ihr Geschäftsmodell gross umkrempeln, denn dass Facebook weiterhin meine für die Öffentlichkeit bestimmten Nachrichten zu Werbezecken analysiert, dagegen spricht aus datenschutztechnischer Sicht nichts.

Aber damit Facebook (und viele andere Cloud-Dienste mit dem gleichen Problemen) diese technische Änderung aber überhaupt umsetzt, ist ein gesellschaftlicher oder gesetzlicher Druck von Nöten. Beides verlangt allerdings die Sensibilisierung der Massen für das Problem.

16 May 2011

Bitcoin - eine digitale und quelloffene Währung

Bitcoin scheint in etwa genau das zu sein, was ich mir schon lange erhoffe: Digitales Bargeld.

Obwohl man fast überall, sowohl im Internet als auch offline, mit Kredit- oder EC-Karte oder Überweisungssysteme wie klassisches E-Banking und PayPal bezahlen kann, so mangelt es an all diesen "bargeldlosen" Systemen an einer Eigenschaft: Anonymität. Das mag jetzt tragischer klingen als es ist, aber dennoch ist diese Mangel an Anonymität eine Hürde beim Ausgeben von kleinen Beträgen: Während man einen Strassenkünstler mit etwas Kleingeld unkompliziert entlohnen kann, so muss man einem digitalen Künstler der seine Werke online zur Schau stellt gleich seinen Realnamen, Bankdaten und/oder Kreditkarten-Nr. anvertrauen, um ihm einen kleinen Betrag zukommen zu lassen.

Dazu kommt bei genannten Methoden das Problem, dass der zentralen Verwaltungsinstanz für die Ausführung der Transaktion eine gewisse Macht zugesprochen wird, die in Vergangenheit auch schon des öfteren missbraucht wurde.

Diese beiden Probleme existieren mit Bitcoin nicht, denn es ist ein dezentrales P2P-Rechner-Netzwerk bei dem jeder Teilhaben kann und dessen Software komplett quelloffen (MIT-Lizenz) ist. Damit das funktioniert wurden einige kryptografische und algorithmische Tricks angewandet:

Hyper-Inflation wird dadurch verhindert, dass die Erzeugung eines Bitcoins auf einem Zufalls-Algorithmus basiert, der nicht nur sehr rechenintensiv ist (und daher das eigenständige Erzeugen von Bitcoins unverhältnismässig teuer), sondern dass die Anzahl Bitcoins durch Algorithmus auf rund 21 Mio. Stück beschränkt ist (in ca. 20 Jahren werden alle Bitcoins berechnet sein). Technisch betrachtet berechnet der Algorithmus SHA256-Summen aus einer von ihm gewählten Zufallszahl und einem vom Netzwerk gegebenen Datenblock bis die SHA256-Summe kleiner als die netzwerkweite Obergrenze ist.

Transaktionssicherheit wird durch einerseits durch Anwendung von digitale Signaturen und andererseits durch die Speicherung der Transaktionsdaten im Netzwerk erreicht. Dies mag zwar auf den ersten Blick der Anforderung "Anonymität" widersprechen, aber da die Signaturen durch den Benutzer erzeugt werden, kann bei jedem Empfangen eine neue Identität geschaffen werden.

Alles in allem ist Bitcoin also durchaus ein interessantes Projekt. Auch wenn der Dollar-Wert eines Bitcoins zur Zeit relativ stark schwankt, so ist davon auszugehen dass sich dies mit mehr Benutzern stabilisiert. Und weil es dezentral und quelloffen ist, lässt es sich nicht im Interesse von Staaten oder Firmen kontrollieren, lediglich durch Gesetze kriminalisieren. Daher ist der Artikel über den ich überhaupt auf das Projekt gestossen bin auch betitelt mit Bitcoin: Das gefährlichste Open Source Projekt aller Zeiten?. Bleibt zu hoffen, dass die Idee Früchte trägt. Die Electronic Frontier Foundation (EFF) hat zumindest bereits damit begonnen, Spenden in Form von Bitcoins anzunehmen.

16 May 2011

Geplante Obsoleszenz: Kaufen für die Müllhalde

via sixtus