Schlüssel auf USB-Stick für verschlüsselte Root-Partition

In diesem Artikel möchte ich mal ein kleines How-To schreiben wie ich meine Festplatte über einen Schlüssel auf einem USB-Key während des Bootens entschlüssele. Den Schlüssel für die verschlüsselte Festplatte auf einem USB-Key zu haben hat natürlich Vor- und Nachteile. Natürlich ist es eine Gefährdung für die Sicherheit, da jeder, der an den Stick drankommt auch an den Schlüssel kommt. Wenn man es schafft diese Gefahr zu reduzieren, bietet der Schlüssel einige Vorteile in der Bequemlichkeit. Man muss kein Passwort eintippen und die Festplatte wird “automatisch” entsperrt. Außerdem kommt man über einen Hardware-Keylogger nicht an das Passwort heran (jedoch ist das eher theoretischer Natur).

Ich setze nun folgendes Voraus: Es ist bereits eine verschlüsselte Partition über Cryptsetup angelegt und einer der Keyslots ist mit einem in einer Datei gespeicherten Schlüssel gefüllt. Außerdem ist der Boot-Vorgang so eingerichtet, dass von einer verschlüsselten Root-Partition gestartet wird.

Nun sollte man als erstes den USB-Stick als ext2 formatieren. Das hat zwei Vorteile: 1. man braucht keine Treiber für fat in die initrd integrieren. 2. sollte jemand mal aus Versehen an den Stick kommen, funktioniert er nicht unter Windows 😉
An der Stelle könnte man sich auch gleich die UUID des USB-Keys ausgeben lassen.

So nun kommen wir zum Kernstück des ganzen Vorhabens. Wir schreiben ein Skript welches das Passwort aus einer Datei auf dem USB-Stick liest und Cryptsetup zuführt. Cryptsetup unterstützt einen solchen Mode: es kann ein Skript angegeben werden, welches das Passwort zufüttert. Dabei ist es wichtig, dass JEDE Ausgabe des Skripts an Cryptsetup weitergegeben wird. Deshalb muss man alle Ausgaben auf stderr umleiten.
Mein Skript:

#!/bin/sh
modprobe usb-storage 1>&2
sleep 5
mkdir /usb 1>2&
mount -t ext2 /dev/disk/by-uuid/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /usb 1>2&
sleep 5
cat /usb/root.key
umount /usb 1>2&

Wir sehen, dass Skript lädt als erstes das Treiber-Modul für USB-Sticks. Danach geben wir über den sleep dem System Zeit den Stick zu erkennen. Nun erzeugen wir den Mountpoint und binden den Stick ein. Erneut geben wir dem System etwas Zeit (hier kann man natürlich etwas herumspielen und die Zeit verkürzen). Nun geben wir einfach den Inhalt des gespeicherten Schlüssels aus und unmounten den Stick wieder. Beim Starten wird uns das ganze dann durch eine Success-Meldung angezeigt. An dieser Stelle kann man den Stick auch ohne Probleme wieder abziehen.

Nun müssen wir noch dem Cryptsetup mitteilen, dass wir ein Skript verwenden wollen. Dazu bearbeiten wir /etc/crypttab:

# target name|source device|key file|options
root /dev/vg1/vol1 none luks,retry=1,cipher=aes-cbc-essiv:sha256,keyscript=/path/to/keyscript

Wir sehen, dass entscheidende ist, dass bei “key file” “none” angegeben ist und bei den Optionen ein “keyscript=/path/to/keyscript” hinzukommt. Wenn man nun eine neue initrd erstellt, wird das Skript mit eingearbeitet.

Nun fehlt noch eins: die initrd braucht auch sämtliche Module um den USB-Stick überhaupt einbinden zu können. Sonst hat man ein Henne-Ei Problem. Der Treiber für den USB-Stick liegt im verschlüsselten System und um das System zu entschlüsseln, braucht man den Treiber. Dazu bearbeitet man die Datei /etc/initramfs-tools/modules. Hier müssen alle Module aufgelistet werden, die man braucht um den USB-Stick einzubinden. Da ich jetzt nicht genau weiß, welche es zwingen sind, gib ich mal meine komplette Datei an:

aes-x86_64
dm-crypt
dm-mod
sha256
sd_mod
usb_storage
usb-storage
ehci_hcd
ohci_hcd

Wenn ich jetzt nichts wichtiges vergessen habe, sollte man nun die initrd neue erzeugen können. Dies macht man über:
update-initramfs -u
Wichtig: erst mal nur die initrd für den aktuellen Kernel bearbeiten. Falls etwas nicht klappt, möchte man ja zumindest noch mit einem alten Kernel ein startfähiges System haben 😉

Nun ist der Zeitpunkt das ganze auszuprobieren. Reboot 🙂

Was passiert…

… wenn man Student bei Google Summer of Code ist?

Das Postfach explodiert 😉
Mailaufkommen
Ich hab nicht schlecht gestaunt, als ich heute morgen 300 ungelesene und unsortierte Mails in meinem Postfach entdeckt hatte. Es existiert eine Mailinglist, in der sich jeder Student vorstellen soll. Tja auf Grund von Zeitverschiebung konnte ich das nicht rechtzeitig reduzieren. Ich erwarte nun noch weitere 400 Mails.

Was ist so besonders an diesem Post?

Der Eintrag ist in einem WebKit Browser geschrieben.
Ich habe dieses Wochenende mal die KDE 4.1 pre pre alpha (oder wie man so was nennt) gebaut und bin gerade in einer KDE 4.1 Session. Als kleine Zugabe hab ich auch mal den WebKit Part für Konqueror gebaut und ja er funktioniert 😉 Ein langer Wunsch geht in Erfüllung: WebKit Browser.

KDE 4.1 macht jetzt einen sehr guten Eindruck. Klar es ist noch eine Alpha und an ein paar Stellen harkts (Systray wird nicht neu gezeichnet), aber ich glaube ich werde es nun produktiv einsetzen. Das liegt aber eher daran, dass ich zum Bauen von KDE 4.1 Qt 4.4 benötige und das macht Plasma aus KDE 4.0 fast unbenutzbar.

Ich hab jetzt auch Amarok und Kontact in der KDE 4 Variante 😉

Konqui ist tot – es lebe Konqui

Nach zwei Monaten schwerer Krankheit ist heute durch ein Upgrade auf Hardy Heron Alpha 6 KDE 3 auf meinem Rechner gestorben. Was sich bereits im Januar andeutete, konnte nun vollendet werden: der Nachfolger KDE 4 lebt und hat nur noch wenige Verweise auf die alte KDE 3 (amarok, kile, k3b, kdevelop, kaffeine, …). Und auch diese wenigen Überbleibsel werden wohl im nächsten halben Jahr sterben.

KDE 3 du warst ein guter Partner. Du hast mich zu Linux gebracht und mir den Anfang vereinfacht. Du hast tolle neue Software bekommen, die bei mir zum Standard wurden. So z.B. Kontact und kaffeine. Nun bist du aber in die Jahre gekommen. Viele deiner Teile waren kaum noch wartbar. So wurde ein Nachfolger für dich entwickelt. Dieser dein Sohn hat dir am 11. Januar eine tödliche Wunde versetzt. Du der ergraute König bist tot – es lebe der König.

Ich bin beeindruckt

Ich hab gestern auf meinem Notebook Kubuntu-KDE4 Hardy Heron Alpha 6 neuinstalliert. Nach dem erfolgreichen ersten Start musste ich natürlich als erstes die Compositing Effekte einschalten. In meinem Notebook läuft eine Ati Karte und der proprietäre Treiber kann Compositing noch nicht wirklich lange und ich war daher positiv überrascht, dass der X-Server so konfiguriert ist, dass Compositing funktioniert. Nun eigentlich hätte ich hier stutzen müssen: wieso funktioniert das überhaupt ohne dass ich die manuelle Installation des proprietären Treibers angestoßen habe? Nun ich hab mich einfach nur gefreut, dass es funktioniert. Nach ein bißchen rumspielen mit den Systemsettings bin ich auf einen bug gestoßen, den ich bei Launchpad aufmachen wollte. Also wollte ich die benötigten Informationen raussuchen. Ich schaue in die Xorg.conf. Da steht irgendwie nur Quatsch. Kein “Ati”, kein “fglrx”. Also glxinfo gestartet. Hier dämmerte es mir, bei Vendor steht Mesa. Das ist der freie Treiber. glxgears gestartet: keine Probleme.

Ich bin wirklich beeindruckt: der freie Treiber für Ati Karten beherrscht 2D, 3D und auch Compositing. Auf mein Notebook kommt kein proprietärer Treiber mehr. Jetzt muss nur noch der freie NVIDIA auf den gleichen Stand kommen.

DSL 16.000

Wie man der Überschrift entnehmen kann: seit heute Abend hab ich DSL 16.000

Beweis 😉
64 bytes from v32201.1blu.de (88.84.154.41): icmp_seq=1 ttl=57 time=9.14 ms
64 bytes from v32201.1blu.de (88.84.154.41): icmp_seq=2 ttl=57 time=9.27 ms
64 bytes from v32201.1blu.de (88.84.154.41): icmp_seq=3 ttl=57 time=9.30 ms
64 bytes from v32201.1blu.de (88.84.154.41): icmp_seq=4 ttl=57 time=8.99 ms

Verstößt Microsoft Windows gegen die Grundrechte?

Disclaimer: dieser Beitrag ist nicht Ernst völlig Ernst gemeint 😉

Seit gestern haben wir ein neues Grundrecht auf “Gewährleistung der Vertraulichkeit und Integrität informationstechnischer Systeme”. Zerlegen wir das ganze Mal: “informationstechnisches System” = PC; “Gewährleistung der Vertraulichkeit” bedeutet alles was ich im PC speicher oder auch nur eintippe wird vertraulich behandelt, also nicht an dritte weitergegeben; “Gewährleistung der Integrität” bedeutet, dass der PC nicht verändert wird, er also in dem Zustand bleibt wie er eingerichtet wurde und man sich darauf verlassen kann.

Jetzt stell ich mir die Frage: sind die Voraussetzungen bei Microsoft Windows gegeben? Vertraulichkeit? Nun es gibt diese Zwangsaktivierung über das Internet. Man weiß jedoch nicht welche Daten übertragen werden. Dieser Punkt ist also schon mal fraglich. Außerdem werden wohl auch beim Update Information an Microsoft übertragen um zu prüfen, ob man eine legale Kopie hat – für mich ein klarer Verstoß gegen Vertraulichkeit. Das sind Informationen, die eigentlich nur den PC Besitzer etwas angehen. (Natürlich hat MS ein berechtigtes Interesse nicht lizenzierte Versionen aufzuspüren. Jedoch ist nun mit dem neuen Grundrecht sicherlich nicht mehr die Verhältnismäßigkeit geboten.)

Integrität? Als Vista plötzlich fälschlicherweise bei mir meinte, ich müsste noch einmal aktivieren, da ich “Hardware” ausgetaucht hatte, wurde das System in einen reduzierten Modus gesetzt. Die Reduzierung der Features sehe ich als Verletzung der Integrität an. Abgesehen davon scheint Microsoft ohne Rückfragen Updates zu installieren. Dies ist ein Gefahrenpotential, da somit das System verändert werden könnte und die Integrität nicht mehr sichergestellt wäre. Auch das Malware Problem verstößt definitiv gegen das Gebot der Integrität. Microsoft muss das System nun so programmieren, dass Viren/Würmer/Trojaner nicht mehr die Integrität des Systems verletzen können. (Wobei hier wohl die EU-Kommission einen Strich durch die Rechnung machen würde, da bei einem sicheren Windows Nortons und F-Secures Geschäftsmodell zerstört wären)

Leider hat das BVerfG kein Strafmaß definiert. Man kann daher Microsoft kaum zwingen dieses IT-Grundrecht einzuhalten. Hoffentlich regelt der Gesetzgeber dieses. Das IT-Grundrecht ergänzt gerade bei solchen Sachen wie heimliche Übertragung von PC-Daten das Recht auf informationelle Selbstbestimmung. Eine gesetzliche Regelung wie der Anwender darüber informiert werden muss, wäre schon angebracht. Es wäre auch schön, wenn die zwei vom BVerfG definierten Grundrechte endlich einmal in das Grundgesetz geschrieben würden.

Open Source Geschäftsmodell

Ich hatte vor einiger Zeit mal eine ausführliche Diskussion mit einem VWL-Studenten über das Open Source Geschäftsmodell. Ich hatte versprochen, dass ich mal in meinem Blog meine Sicht zu Open Source in der Wirtschaft niederschreibe und warum das Ganze überhaupt funktioniert. Natürlich habe ich keine Ahnung von VWL, BWL und keinen Einblick in die Firmen, kann also nicht wissen, wie gut oder schlecht die verschiedenen Open Source Firmen dastehen.

Was ist Open Source?
Open Source ist eine seit 10 Jahren (Freie Software ~20 Jahre) in der Informatik existierende Bewegung, die ein konkurrierendes Geschäftsmodell zur klassischen Lizensierung von Software (Proprietäre Software) darstellt. Bei proprietärer Software erhält der Käufer (Anwender) nur eine eingeschränkte Benutzungslizenz. Es gibt verschiedene Bezahlungsmodelle. So ist es durchaus üblich für jede Version einmalig zu zahlen oder aber für die mit der Software erbrachte Rechenleistung (pro Jahr, pro Anzahl Prozessoren, etc.). Der Quellcode ist jedoch nicht in der Lizenz erhalten, der Käufer erhält meistens nur eine vorkompilierte, zum Teil angepasste Binärversion.

Bei Open Source liegt der Quelltext offen, wobei der Verkauf der Software nicht ausgeschlossen ist. So ist es durchaus möglich für die Bereitstellung der Open Source Software als Datenträger oder als Download Geld zu verlangen, jedoch müssen dem Nutzer bzw. Käufer einige grundlegende durch eine spezielle Softwarelizenz garantierte Freiheiten eingeräumt werden. Dazu gehört die Bereitstellung des Quellcodes und das Recht diesen zu verändern oder einfach nur weiterzugeben. Ein Käufer einer kostenpflichtigen Open Source Software hat also das Recht diese kostenfrei weiterzugeben. Daher ist in der Regel Open Source Software kostenlos erhältlich, die anfallenden Bereitstellungskosten werden anderweitig (z.B. Werbung) finanziert. Im Allgemeinen haben sich zwei Lizenzen in der Freien und Open Source Welt durchgesetzt: die GPL und Apache Lizenz. Die GPL ist die bedeutend striktere. Sie garantiert dem Benutzer, dass die Software auch in jeder zukünftigen Version unter der gleichen Lizenz stehen wird. Die Apache Lizenz ist pragmatischer und erlaubt auch den Einsatz in proprietärer Software oder in Verbindung mit anderen Lizenzen und ist daher im unternehmerischen Bereich beliebter.

Die Community
Um die meisten Open Source Projekte has sich eine sogenannte Community entwickelt. Diese entwickelt und supportet die Software. Die Community besteht meistens sowohl aus Firmen als auch aus freiwilligen Entwicklern, die ihre Freizeit dafür opfern. Warum Firmen dabei mitarbeiten, schauen wir uns später an. Für die Freiwilligen gibt es verschiedene Motivationsgründe:

  • Sie haben lange von der Software profitiert und wollen aus “Dankbarkeit” etwas zurückgeben
  • Sie wollen mithelfen das Produkt noch weiter zu verbessern, eigene Ideen einzubringen
  • Eine Möglichkeit die eigenen Kenntnisse im Rahmen eines professionellen Projekts zu verbessern
  • Durch die offene Mitarbeit sich selber profilieren und bessere Jobaussichten zu bekommen
  • viele weitere

Für mich als KDE Entwickler trifft eigentlich jeder der oberen Punkte zu. Der erste ist sicherlich der wichtigste, jedoch angesicht meines in absehbarer Zeit endendes Studiums ist auch der letzte Punkt durchaus ein wichtiger Motivationsfaktor.

Software, die in einem Community-Prozess entwickelt wird, ist von den Entwicklungskosten her bedeutend billiger als proprietäre Software. Trotzdem können “Nice-to-have” Features implementiert werden, da die Entwicklung der Software nicht das Geschäftsziel ist. Community Software enthält somit meistens mehr Features, ist in mehr Sprachen übersetzt, mehr usable als vergleichbare konkurrierende proprietäre Software. Dazu kommt, dass quelloffene Software von konkurrierenden quelloffenen Projekten durchaus profitieren kann, da es Code einfach austauschen kann.

Nun wollen wir uns den verschiedenen Geschäftsmodellen widmen.

Dual Lizensierung
Die Dual Lizensierung ist sicherlich das interessanteste und erfolgreichste Open Source Geschäftsmodell. Das vorzeige Projekt ist Suns MySQL. Die Software wird nicht in einem Community Prozess entwickelt, sondern ausschließlich von einer Firma. Das Copyright des Quelltextes liegt somit in der Hand der Firma und diese kann die Software unter verschiedene Lizenzen stellen (Änderungen durch die Community fließen nicht in die Software ein). Im Falle von MySQL wird eine proprietäre Lizenz angeboten und die GPL. Die GPL erzwingt, dass MySQL nur in Verbindung mit GPL-lizensierten Projekten verwendet werden kann. Für den einfachen Anwender (wie die vielen Webseiten) völlig ausreichend. Für große Open Source Projekte ebenfalls. So verwendet MediaWiki (die Engine der Wikipedia) MySQL, genauso wie die bekannte Blog-Software WordPress. Für Firmen ist dies jedoch nicht geeignet. Sie wollen in der Regel nicht die GPL und erwerben nun bei – in Zukunft – Sun eine Lizenz für MySQL. Der Vorteil dieses Modells ist, dass durch die kostenlose Variante die Software schnell zum Einsatz gelangen kann und auch bei Prototypen durchaus zum Einsatz kommt. Eine proprietäre Lizenz kann im Nachhinein immer noch gekauft werden. Dieser Ansatz ist so erfolgreich, dass im Januar Sun die Firma MySQL AB für $ 1 Mrd. gekauft hat. Im Februar hat Sun auch noch die Firma Innotek gekauft, und im Januar Nokia Trolltech. Ebenfalls zwei Firmen, die dieses Lizensierungsmodell verfolgen.

Support
Das zweite bekannte Modell ist das Support Modell. Firmen bieten kostenpflichtigen Support für Open Source Software an. So garantieren sie zum Beispiel Sicherheitsupdates bereitzustellen und helfen bei der Installation. Das Geld, das mit der Erbringung von Support erwirtschaftet wird, fließt in die Entwicklung der Open Source Software. Wir haben somit eine Trennung von Produkt und Finanzierung des Produkts. Das Produkt wird kostenfrei angeboten und dies wird über Support finanziert. Dazu kommt, dass die Software auch von der Community entwickelt wird. Die Firma also nicht so viel Entwicklungszeit finanzieren muss und einfach nur professionell leitend eingreifen muss. Für die Community stellt das keinen Konflikt da, da die Firmen nicht mit ihrem Quellcode Geld verdienen sondern mit einem Zusatzprodukt. Die Unterstützung durch die Firmen ist daher durchaus willkommen und auch gefordert. Prominente Beispiele dieses Modells sind RedHat und Canonical.

“Nebenprodukt”
Bei vielen großen IT-Firmen fällt Software im Rahmen eines internen Projekts als “Nebenprodukt” an. Ein klassisches Beispiel ist die Java Entwicklungsumgebung Eclipse, die von IBM entwickelt wurde. Die Firmen geben diese Produkte als Open Source frei um durch die Community eine weitere Verbesserung zu erhalten, wovon sie auch profitieren. Die Software betrifft nicht ihre Kernkompetenz und es ließe sich ohne die Community und viel Geld kein konkurrenzfähiges Produkt entwickeln. Somit ist Open Source hier ideal. Es ist somit nicht wirklich ein Geschäftsmodell 😉

Der Pakt mit dem Teufel
Dies ist das letzte von mir vorgestellte Geschäftsmodell. Es ist das neuste und am wenigsten Erfolg versprechende Geschäftsmodell. Mehrere Linux Distributoren haben einen Deal mit einer konkurrierenden Firma geschlossen, der sie und zahlende Kunden vor Patentklagen schützen soll und dafür Geld erhalten. All diese Distributionen sind entweder unbedeutend oder haben in den letzten Jahren massiv User verloren. Die Deals dürften die Firmen kurzfristig retten, jedoch langfristig besteht keine Chance für sie. Anwender und freie Entwickler verlassen die Distributionen und wenden sich garantiert freien Distributionen zu. Dazu kommt, dass der diskriminierende Ausschluss per GPLv3 verboten ist. Die Distributionen verlieren beim Einsatz derartig lizensierter Software die Vorteile des Deals oder können die Software nicht einsezten. Langfristig werden sie dadurch keine aktuelle Software anbieten können und somit verschwinden.

Zusammenfassung
Open Source insgesammt stellt eine komplett neue wirtschaftliche Entwicklung dar. Manche würden es sicherlich als funktionierenden Kommunismus bezeichnen, wovon ich mich jedoch distanziere. Bei Open Source geht es um sehr viel Geld – es ist also ein kapitalistisches System. Bei Open Source erfolgt eine Trennung zwischen Anbieten einer Ware und deren Finanzierung. Ein Ansatz der sich wahrscheinlich auf viele weitere Wirtschaftsbereiche ausbreiten ließe. Das Prinzip Google basiert zum Beispiel darauf (Finanzierung über Werbung). Aber auch im Wissensbereich sehen wir zur Zeit eine klare Öffnung. Wissen ist kostenlos geworden und in Zukunft wird es den Brockhaus nur noch online geben, kostenfrei und quersubventioniert. Ich denke, dass sich das Modell der Öffnung weiter verbreiten wird und auch in anderen Bereichen zum Einsatz kommt. Warum nicht freie Baupläne, kostenlose Kaffeemaschinen, etc.? All dies ließe sich wohl quersubventionieren. Jedoch solange Open Source in kritischen Bereichen (Desktop) so eine Nischenstellung hat, werden wir es wohl kaum erleben, dass BWLer davon etwas mitbekommen. Jedoch wer weiß – vielleicht in 50 Jahren…

Hollywood und Informatik

Ich hab vor ein paar Tagen den Film Stirb Langsam 4.0 gesehen. Dass dieser nicht viel mit der Realität zu tun hat, ist klar und auch nicht anders zu erwarten. Eine Stelle fand ich – als Informatiker – dann doch höchst amüsant. Ich war mir zuerst nicht sicher, aber ein Rückspulen hat meinen Verdacht bestätigt.

Wir sind in der Szene in der Bruce Willis mit seinem Nerd bei dem fetten Superhacker, der als einziger noch Strom hat während die Welt im Dunkeln ist, ist. Dieser Superhacker hackt sich nun in das Rechenzentrum ein, das von den bösen Superhackern schon gehackt wurde. Wie das bei Hackern so üblich ist, installieren die natürlich als erstes ein IDS, weil es ja so oft vorkommt, dass wenn die gesamte Infrastruktur zusammenbricht andere sich auch in das Rechenzentrum einhacken. Nun die bösen Superhacker bekommen sofort mit, dass sie gehackt werden und man sieht im Film ganz kurz die IP-Adresse des “guten” Superhackers. Und irgendwie denke ich mir: da stimmt doch was nicht an der Adresse. Und richtig:
Stirb langsam
Auflösung für die nicht Informatiker. Nein die IP Adresse ist prinzipiell korrekt. Sie besteht aus vier Blöcken getrennt durch “.” und keine der Zahlen ist größer als 255.
Das amüsante ist: das ist eine private IP-Adresse. Nach RFC 1981 ist der Bereich 10.0.0.0 – 10.255.255.255 reserviert für private Netzwerke. Eine solche Adresse ist im Internet nicht verfügbar. Ich zitiere: “Routers in networks not using private address space, especially those of Internet service providers, are expected to be configured to reject (filter out) routing information about private networks.” Also die Adresse war ungültig und nicht erreichbar.
Der zweite amüsante Punkt ist die Namensauflösung. Selbst wenn es keine private Adresse wäre, bekommt man noch lange nicht den Namen heraus. Man kann durchaus die IP in was aussprechbares umwandeln. Meine IP ist gerade etwa 91.7.20.*** . Dies lässt sich auflösen zu p5b0714**.dip0.t-ipconnect.de. Kein Name! Unter der Annahme, dass der Superhacker keine dynamische sondern eine statische IP-Adresse hat und darauf eine echte Domain, ließe sich unter Umständen mit Hilfe von whois der tatsächliche Besitzer ermitteln. Dies ist aber doch alles etwas umständlich, also unwahrscheinlich.