Sonntag, 28. Juni 2009

Elektronische Revolutionen: Mit TOR gegen Zensur

Gerade in den letzten Wochen macht vor allem ein Thema immer wieder die Runde: Zensur. Andere Länder leiden bereits unter ihr und unsere Regierung ist nun auch fröhlich dabei Stück für Stück eine solche Infrastruktur zu errichten und gleichzeitig aber Länder zu verurteilen die diese bereits haben.

Des weiteren werden wir im Moment auch Zeuge eines Volksaufstandes wie wir ihn noch nie in der Geschichte der Menschheit erlebt haben. Die Bevölkerung des Iran erhebt sich gegen das Regime und nutzt das Internet als Medium der Kommunikation in die ganze Welt. Da gerade der Iran über Kontrolltechnologien verfügt die wir uns in unseren wüstesten Albträumen nicht wünschen würden brauchen diese Menschen einen Weg diese Sperren zu umgehen. Einer der prominentesten ist sicherlich The Onion Router, ein anonymisierendes Netzwerk welches es Menschen ermöglichet Zensur zu umgehen und Information aus oder einzuschleusen. Das schöne an TOR ist: jeder kann praktisch mitmachen und ich will hier mal 3 Methoden vorstellen wie das geht.

Relays

TOR besteht aus vielen Knoten die Daten untereinander weiterleiten. Die Verbindung zwischen diesen Knoten ist in TOR komplett verschlüsselt und lässt praktisch kaum Rückschlüsse auf Absender und Ziel zu (sicher ist dies mit einem hohen technischen Aufwand auch zu bewerkstelligen). Ein solches Relay ist relativ einfach zu konfigurieren und spendet dem Netzwerk Bandbreite. Wichtig ist hierbei das von einem Relay aus keine Verbindung aus dem TOR Netzwerk heraus aufgebaut werden kann (man hat also nicht zu befürchten das kriminelle Inhalte durch ein Relay aufgerufen werden).

Eine Konfiguration für ein Relay wäre z.B. folgende:


SocksPort 0
DirPort 443
ORPort 80
ExitPolicy reject *:*


Das ganze lässt sich einfach über tor -f /pfad/zur/config starten. Man sollte allerdings sichergehen das DirPort und ORPort durch die Firewall erreichbar sind. (Protip: TOR als Solaris Zone ;) ). Mehr Infos zu Relays findet man auch auf der TOR Seite. Die ExitPolicy sichert das man von diesem Knoten aus das TOR Netzwerk nicht verlassen kann, diesen Eintrag sollte man auf keinen Fall weglassen wenn man sich nicht genau der Konsequenzen bewusst ist. Mehr dazu im Abschnitt über Exit Nodes.

Bridges

Diese speziellen Relays werden "geheim" gehalten. Da Regierungen gerne mal Zugangspunkte zum TOR Netzwerk blockiert verlangt es nach Zugangspunkten die in keiner Liste auftauchen. Durch diese kann man dann anonym ins Netz kommen um z.B. brisantes Material aus Krisengebieten herauszuschleusen. Anhand eines Fingerprints kann man sich mit solch einer Bridge verbinden.


SocksPort 0
ORPort 443
BridgeRelay 1
Exitpolicy reject *:*


Es gibt unter anderem eine Initiative die sich dafür einsetzt TOR Bridges für den Iran bereitzustellen.

Exit Nodes (VORSICHT!)

Diese Dinger sind nicht ganz ohne. An einem Exit Node wird das TOR Netzwerk verlassen und es werden Verbindungen ins unverschlüsselte Netz aufgebaut. Hierbei kann es sich auch um strafbares Material handeln, wer also nicht umbedingt unangemeldeten Besuch von der Polizei haben möchte sollte sich absichern oder halt darüber im klaren sein was hier passiert. Um einen Exit Node einzurichten entfernt man lediglich die Exit Policy aus der Relay Konfiguration. Ich übernehme keine Verantwortung für entstehende Schäden. YOU HAVE BEEN WARNED!Auch wenn die Beschlagnahmung eines TOR Servers in der Regel nichts bringt da keine verwertbaren Daten anfallen, sollte man sich nicht umgedingt darauf verlassen das dies als Argument gilt die Maschine nicht mitzunehmen.

Relay oder Bridge? Was hilft am meisten und wann?

Diese Frage habe ich mir zu Anfang auch gestellt. Bridges sind sehr wichtig, allerdings bringt es nicht viel dies vom heimischen DSL Anschluss aus zu machen, da deutsche Provider innerhalb von 24 Stunden die Netzverbindung kappen. Hat man allerdings das Glück eine feste IP zu haben oder einen Anbieter ohne 24h-Disconnect sollte man sich überlegem eine Bridge aufzusetzen. Bridges fressen im allgemeinen recht wenig Bandbreite, Relays hingegen stehen eigentlich permanent unter Strom und verteilen Daten, es ist also nicht unklug den Transferrate etwas anzupassen wenn man nicht komplett auf seine Verbindung verzichten will. Dies geht über z.B. folgende Konfigurationseinträge:


RelayBandwidthRate 50 KBytes
RelayBandwidthBurst 200 KBytes


In meinen Augen ist TOR ein immer wichtiger werdendes Netzwerk das es Menschen ermöglicht sich über staatliche Willkür hinwegzusetzen und eventuell sogar Leben zu retten oder gar ganze Regierungen zu stürzen. TOR wird heute schon genutzt um die Chinesische Firewall zu umgehen und wird hoffentlich immer mehr Menschen die in Unterdrückung leben die Möglichkeit geben sich Gehör zu verschaffen.



Dienstag, 16. Juni 2009

LLVM: Neue Compiler braucht das Land!

In letzter Zeit macht die Low Level Virtual Machine immer mehr von sich Reden. Blöderweise ist der Name doch ein wenig verwirrend und man denkt schnell an die Java VM oder dergleichen. In Wirklichkeit handelt es sich um ein Compilerframework (und eine eigene Sprache) welches einem sehr interessante Möglichkeiten eröffnet. Apple verwendet LLVM unter anderem um OpenCL zu realisieren.
Was mich besonders an LLVM interessiert sind vor allem die Möglichkeiten zur Analyse von Fehlern die es bietet. Hier mal gcc und clang (ein C/C++/ObjC Frontend für LLVM) im Vergleich.

$ gcc-4.2 -fsyntax-only t.c
t.c:7: error: invalid operands to binary + (have 'int' and 'struct A')
$ clang -fsyntax-only t.c
t.c:7:39: error: invalid operands to binary expression ('int' and 'struct A')
return y + func(y ? ((SomeA.X + 40) + SomeA) / 42 + SomeA.X : SomeA.X);
~~~~~~~~~~~~~~ ^ ~~~~~

Clang nagelt den Fehler auf Zeile UND Spalte fest, nebenher verbraucht er zum kompilieren auch noch weniger Speicher und ist auch noch schneller. Ziemlich beeindruckend.

LLVM wird sicherlich den Compilermarkt in der Opensource Welt nachhaltig verändern. So gibt es z.B. Ambitionen FreeBSD komplett mit Clang anstelle von GCC zu übersetzen.

Auch die Rubyfraktion will von LLVM profitieren und so experimentiert das MacRuby-Projekt ebenfalls mit LLVM um Ruby auf dem Mac zu beschleunigen.

Für alle die jetzt neugierig geworden sind gibt es hier einen interessanten Tech Talk zum Thema, genauso wie einen Podcast vom Chaosradio Express

Stoppschild für die SPD

Ich wollte eigentlich politischen Content auf diesem Blog außen vor lassen, aber die derzeitige politische Lage veranlasst mich dazu. Die SPD winkt das Zensurgesetz der CDU brav durch wie es sich schon angedeutet hat. Ich für meinen Teil sehe beide Parteien somit für diese Bundestagswahl als unwählbar an. Meine Stimme wird weder die Stasi CDU noch die Kohlekumpel und BILD-Leser SPD kriegen.

Montag, 15. Juni 2009

Vortrag: LDC - ein D Frontend für LLVM

Im Moment bin ich extrem auf der Suche nach einer modernen Sprache mit der sich ein elegantes Framework für das Programmieren von Applikationen realisieren lässt (schon frustrierend wie wenig der Markt da wirklich bietet, vor allem wenn es darum geht auch auf exotischeren Plattformen zu laufen). D hat einige interessante Ansätze die die Probleme vieler Sprachen löst. Mit LDC stehen jetzt auch die Chancen gut diese Sprache auf weitaus mehr Plattformen zu bringen als bisher, darum habe ich hier mal einen kleinen Vortrag verlinkt der das Projekt erklärt. Leider ist die Tonqualität ziemlich schlecht aber man kann es gerade noch so aushalten.

LDC from Tom Stachowiak on Vimeo.

Mittwoch, 10. Juni 2009

Vortrag: Inside the Mac OS X Kernel

Diesen Vortrag wollte ich eigentlich schon vor lange Zeit mal verlinken, aber irgendwie habe ich das immer verschwitzt. Sollte sich jeder mal ansehen der sich für Kernel Designs interessiert. Vor allem die Mach IPC und IOKit sind wirklich einen Blick wert.