Startseite Artikel Galerie Kontakt
JK ~ IT & Technik Blog

Passwörter im Internet sicher speichern

Mit Erschrecken stelle ich immer wieder fest, dass viele Internetseiten die Sicherheit von Benutzerkonten hinsichtlich der Passwörter vernachlässigen.

Der schlimmste Fall betrifft eine recht populäre Internetseite mit angekoppeltem Online-Shop, die die Passwörter sogar im Klartext zu hinterlegen scheint. Hat man das Passwort vergessen wird es nämlich im Klartext per E-Mail zugesendet, was ein enormes Sicherheitsrisiko bedeutet. Zum einen können die Datenbestände des Anbieters in falsche Hände gelangen, zum anderen birgt der unverschlüsselte Versand des Passwortes weitere Risiken (z.B.: Man-In-The-Middle Angriff). Man kann sich leicht vorstellen, wie viele Benutzer das dortige Passwort auch auf anderen Internetseiten verwenden und was das im Falle von Datendiebstahl bedeuten kann… Einen Hinweis sucht man auf der Internetseite ebenfalls vergebens.

Leider stoße ich sogar bei etwas besser abgesicherten Internetseiten häufig über sehr niedrige Begrenzungen der Passwortlänge. Aus welchem Grund darf ein Passwort nur 10 oder 20 Zeichen lang sein? Das Passwort wird ohnehin verschlüsselt und ist damit immer gleich lang (z.B.: 64 Bytes bei MD5). Einzig die möglichen Performance-Verluste seitens des Webservers fallen mir dabei als Grund ein. Daraufhin bastelte ich mir kurzerhand ein kleines PHP-Script um Benchmarks für unterschiedlich lange Zeichenketten aufzuzeichnen. Dabei werden die Hash-Verfahren MD4, MD5, SHA1, SHA256 und SHA512 jeweils mit einer 32, 64, 160 und 320 Bytes langen Zeichenkette berechnet. Um auf einigermaßen aussagekräftige Werte zu kommen, wird jede Berechnung 10.000 mal durchgeführt und der Mittelwert gebildet. Als Ergebnis der Untersuchungen kam ich zu der Erkenntnis, dass die Hash-Verfahren MD4 und MD5 die Zeichenkette in der kürzesten Zeit berechnen konnten. Die Länge der Zeichenkette wirkt sich dabei zwar auf die Dauer der Berechnung aus, aber nicht sehr stark: während sich die Länge verzehnfacht, benötigen die beiden Hash-Verfahren lediglich die rund 1,4-fache Zeit.
Etwas anders sieht es bei SHAx aus. Die Leistung von SHA1 ist noch ungefähr vergleichbar mit MD4/MD5. Die Berechnung mit SHA256 dauert aber schon etwas länger und bei der zehnfachen Länge der Zeichenkette wird auch schon die doppelte Zeit benötigt. Am längsten dauert die Berechnung mit SHA512, nämlich rund drei bis vier mal so lange im Vergleich zu MD4/MD5. Die Proportionen verhalten sich hier wie bei SHA256.

Ergebnisse: hashbenchmark.txt

Was bedeutet das nun? Obwohl sich die Zeiten teilweise deutlich unterscheiden, kann ich mir kaum vorstellen, dass ein Webserver durch längere Berechnungen deutlich an Performance verliert. Im übrigen bin ich der Meinung, dass auch diese Umstände bei der Auslegung der Hardware des Servers berücksichtigt werden sollten! Übrigens sind schnelle Hash-Verfahren nicht unbedingt die besten, denn auch Rainbow-Tables lassen sich damit schneller erstellen, wovon die Cracker profitieren.

Eine Begrenzung der Passwortlänge würde ich erst ab mindestens 50 Zeichen ansetzen und als Hash-Verfahren SHA256 oder SHA512 verwenden. Weiterhin ist die Verwendung von Salts, die vor, hinter oder/und in das Passwort eingefügt werden, zu empfehlen. Damit lassen sich die Passwörter künstlich in die Länge ziehen und sogar Wörter aus Wörterbüchern so verschlüsseln, dass Angriffe mit Rainbow-Tables erfolglos bleiben. Eine weitere sinnvolle Methode ist das mehrfache Berechnen eines Hashes. So wird die resultierende Zeichenkette nach dem Verschlüsseln des Passwörtes wiederum verschlüsselt. Dieser Vorgang kann beliebig oft wiederholt werden, was wiederum die Rückverfolgung über Rainbow-Tables erschwert.

Den abschließenden Appell auf jeder Internetseite ein anderes Passwort zu verwenden kann so manch einer vielleicht nicht mehr hören, möchte ich an dieser Stelle der Vollständigkeit halber erwähnen!

Verfasst am: 06.01.2012 · Kategorien: Internet, Webserver
Schlagworte: , , , , , , , , , , , ,  · Kommentare: Keine Kommentare

Inhalte als Vektoren aus PDF-Dateien ausschneiden

Man kennt das Problem: komprimierte Grafiken sehen auch bei hoher Auflösung nicht immer schön aus und spätestens, wenn man hineinzoomt geht der Pixelmatsch los. Viel praktischer sind hier Vektorgrafiken, die sich beliebig Skalieren lassen und keine Bildinformationen verlieren.
In diesem Artikel möchte ich erklären, wie man Inhalte aus PDF-Dateien extrahieren kann und dabei die Vektoreigenschaften erhält. Oftmals macht man simple Screenshots und arbeitet damit weiter. Dadurch gehen besagte Vektoreigenschaften verloren und man ist wieder beim Pixelmatsch angekommen.
Was also tun?
Die Lösung ist viel einfacher als man denkt und die benötigten Tools sind kostenlos!
- Adobe Acrobat Reader
- ein PDF-Drucker (z.B. PDFCreator)
- Paint (optional, dazu später mehr)

Man öffnet also die Quell-PDF mit dem Acrobat Reader und scrollt zu der Stelle, die man ausschneiden möchte.
Unter “Bearbeiten” -> “Schnappschuss erstellen” findet man das wichtige Auswahl-Tool. Also zieht man eine Markierung um den auszuschneidenden Inhalt. Dabei wird der Inhalt in die Zwischenablage kopiert, was gleich noch wichtig wird.
Quell-PDF
Nun öffnet man den Druckdialog (Strg + P) und wählt den PDF-Drucker als Drucker aus. Unter “Druckbereich” sollte ein Häkchen bei “ausgewählte Grafik” gesetzt sein und unter den “Seiteneinstellungen” muss noch die Seitengröße eingestellt werden: “Anpassen der Seitengröße” -> “In Druckbereich anpassen”.
Es fehlt noch ein Klick auf die Schaltfläche “Seite einrichten…”, um dort die Ausrichtung “Querformat” auszuwählen (rückgängig machen, sollte das Endergebnis auf die Seite gedreht sein!).
PDF-Druckeinstellungen
Das reicht dann eigentlich schon fast und mit einem Klick auf “OK” speichert man den ausgewählten Inhalt als ein neues PDF-Dokument ab.
Ein Problem gibt es aber und man sieht es im Vorschaufenster auch schon: Die Proportion des ausgewählten Inhalts (Breite:Höhe) stimmt oftmals nicht mit dem normalen DIN A4-Format überein, weshalb es zu unschönen Rändern kommt.
Jetzt kommt Paint ins Spiel. Man öffnet Paint und zieht den Skalierungspunkt unten rechts nach oben Links, sodass die Leinwand von Paint definitiv kleiner ist, als der ausgewählte Inhalt. Selbigen fügt man anschließend ein (Strg + v) und die Leinwand vergrößert sich automatisch auf die Bildgröße. In der Statusleiste (ganz unten) kann man jetzt die Abmessung des ausgewählten Inhaltes sehen (Breite x Höhe) und genau dafür haben wir Paint gebraucht.
Abmessungen mit Paint
Theoretisch (bzw. eher praktisch) könnte man das Seitenverhältnis auch mit einem Lineal auf dem Monitor bestimmen ;-)
Bevor man das neue PDF-Dokument druckt, klickt man auf die Schaltfläche “Eigenschaften” (des Druckers) im Druckdialog und dort wiederum auf “Erweitert..”. Als Papiergröße kann man hier die zuvor bestimmte Abmessung eingeben. Statt “DIN A4″ nimmt man also “PostScript Custom Page”, klickt auf die nebenstehende Schaltfläche und trägt im Popup-Fenster die Abmessungen ein (gemessene Pixel aus Paint kann man quasi direkt als Millimeterangabe eintragen).
Abmessungen mit Paint
Die ganzen kleinen Fenster mit “OK” schließen und im Vorschaufenster sieht man schon, dass das Dokument sich an das Seitenverhältnis angepasst hat.
neue Seitengröße im Vorschaufenster
Jetzt druckt man endlich das neue PDF-Dokument und hat also den ausgewählten Inhalt aus dem Quell-PDF extrahiert und in einer separaten Datei vorliegen. Diese lässt sich dann z.B. prima in LaTeX einbinden. Besonders toll: sogar Textabschnitte bleiben dadurch erhalten (Markieren & Kopieren möglich, sofern es in der Quell-PDF funktionierte)!

Achtung: Nicht alle Inhalte in PDF-Dateien sind auch wirklich Vektoren! Da nützt die geschilderte Methode natürlich auch nichts. Bei geschützten PDF-Dateien kann es ebenfalls Probleme geben!

Verfasst am: 20.09.2011 · Kategorien: Office
Schlagworte: , , , , , , ,  · Kommentare: 1 Kommentar

Guayadeque Audioplayer – Was wird gerade gespielt?

Ich habe nach einer Möglichkeit gesucht, die Titelinformationen zu dem aktuell laufenden Song bei Guayadeque abzurufen (Stichwort: “now playing”, “current track”, “was ich gerade höre”). Zum Glück nutzt Guayadeque D-Bus bzw. MPRIS (Media Player Remote Interfacing Specification), was die Umsetzung deutlich erleichtert.
Mit dem folgenden Befehl werden die Metadaten (ID3-Tag) des Songs ausgelesen:

qdbus org.mpris.guayadeque /Player org.freedesktop.MediaPlayer.GetMetadata

Ausgabe (Beispiel):

album: Colour Haze
artist: Colour Haze
arturl: [...]/Colour Haze - 04 - Love.mp3
bitrate: 320
genre: Psychedelic Rock
location: [...]/Colour Haze - 04 - Love.mp3
mtime: 560000
rating: 5
time: 560
title: Love
tracknumber: 4
year: 2005

Mit sed kommt man recht bequem an die rohen Informationen. Der nachfolgende Befehl schneidet aus der Zeile mit dem Song-Titel das vorangestellte “title: ” heraus und gibt alles dahinter aus:

qdbus org.mpris.guayadeque /Player org.freedesktop.MediaPlayer.GetMetadata | sed -n -e 's/^title: //p'

Ausgabe (Beispiel):

Love

Das funktioniert natürlich auch mit den anderen Einträgen!
Anmerkung: Das Leerzeichen hinter “title:” ist notwendig, damit der gesuchte Text-String nicht mit einem Leerzeichen beginnt.

Guayadeque: offizielle Homepage

Verfasst am: 01.08.2011 · Kategorien: Linux
Schlagworte: , , , , , , , , , , , , , ,  · Kommentare: Keine Kommentare

USB-Stick automatisch synchronisieren (udev+rsync)

Im Zuge meiner Abschlussarbeit stellte ich einige Überlegungen zwecks der Verwaltung und Sicherung der entstehenden Datenflut an. Nach einigem Für und Wider habe ich mich für eine Variante entschieden, die ich hier kurz vorstellen möchte.
Ein USB-Stick dient zum Transport der Daten. Dies hat sich als besonders praktikabel erwiesen, da auf unterschiedlichen PCs gearbeitet werden muss und auch ein Internetzugang nicht immer garantiert ist.
Vor dem Verlust des USB-Sticks oder einem technischen Defekt ist keiner gefeit und darum muss eine möglichst einfache Backup-Lösung her.
Das geht unter Linux nativ mit Bordmitteln, die nur ein wenig kombiniert werden müssen:

Um das Sichern der Daten so bequem wie möglich zu machen, soll sich der USB-Stick nach dem Einstecken automatisch mit einem Verzeichnis auf der Festplatte synchronisieren. Ein Benutzereingriff soll nicht nötig sein.
Das kleine Tool udev (Homepage) ist dafür besonders gut geeignet, denn mit selbst erstellten Regeln kann man das Anschließen von Hardware erkennen (hotplug-Ereignisse) und selber Aktionen definieren.

Zuerst müssen ein paar Daten gesammelt werden, damit der USB-Stick von der udev-Regel eindeutig identifiziert werden kann. Mit dem folgenden Befehl sucht man sich das Device zum USB-Stick heraus:

mount


/dev/sdc1 on /media/JETFLASH600 …

Der USB-Stick ist dem System also unter /dev/sdc bekannt. Mit einem Tool von udev können nun Gerätedetails ausgelesen werden:

udevadm info --path=/sys/block/sdc --query=all --attribute-walk | grep serial


ATTRS{serial}==”RWTAG4K2
ATTRS{serial}==”0000:00:1d.7″

Das fett gedruckte ist die Seriennummer des USB-Sticks, die wir zur eindeutigen Identifizierung benutzen werden. Es können auch andere Merkmale zur Identifizierung genutzt werden und auch Kombinationen daraus (grep-Befehl weglassen). Nähere Informationen gibt es auf der man-Page.

Die udev-Regeln liegen bei Ubuntu im Verzeichnis /lib/udev/rules.d/ bzw. /etc/udev/rules.d/. Und im letzteren legt man eine eigene Regel an. Die Zahl im Dateinamen gibt an, zu welchem Zeitpunkt/in welcher Reihenfolge die Regeln greifen (näheres dazu in /lib/udev/rules.d/README).

sudo vim /etc/udev/rules.d/99-usb-backup-custom.rules

BUS==”usb”, ACTION==”add”, KERNEL==”sd?1″, SYSFS{serial}==”RWTAG4K2“, RUN+=”/pfad/zum/script/usb_backup.sh

(wichtig: kein Zeilenumbruch!)

BUS==”usb” USB-Ports sollen beobachtet werden
ACTION==”add” Nur beim Anschließen des Gerätes die Regel ausführen (sonst startet das Backup-Script immer wieder neu)
KERNEL==”sd?1″ Mit dem Fragezeichen als Platzhalter wird die erste Partition des Device berücksichtigt (sda1, sdb1, …)
SYSFS{serial}==”RWTAG4K2″ Es wird nach der Seriennummer gefiltert
RUN+=”/pfad/zum/script/usb_backup.sh” Hier wird die Aktion angegeben (hier: Pfad zum Backup-Script)

Nun kann das Backup-Script angelegt werden (unbedingt die gekennzeichneten Stellen anpassen!):

vim /pfad/zum/script/usb_backup.sh
#!/bin/bash
{
dev="JETFLASH600" #Device-Name angeben! (hier z.B. /media/JETFLASH600)
exec 3> >(sudo -H -u USERNAME zenity \	#Username einfügen!
			--display :0.0 \
			--text-info \
			--title "USB-Stick Datasaver" \
			--width=450 \
			--height=250)
echo "USB-Stick detected: $dev" >&3
mp=$(grep "$dev" /etc/mtab)
i=0
while [ -z "$mp" ] && [ "$i" -lt 30 ]
do
	sleep 1
	mp=$(grep "$dev" /etc/mtab)
	i=$((i+1))
done
if [ -n "$mp" ]
then
	rsync -avz --delete /media/$dev /pfad/zum/backup >&3 #Verzeichnis anpassen!
	echo "Done!" >&3
fi
} &

Sehr wichtig sind die geschweiften Klammern ({,}) und das Et-Zeichen (&). Dies bewirkt, dass das Script im Hintergrund arbeitet und dazu parallel die gewöhnliche Einbindung des USB-Sticks ablaufen kann. Mit zenity (Homepage) wird ein kleines Fenster geöffnet, was eine Übersicht über den Vorgang gibt. Die etwas umständlich wirkende Warteschleife (while…) ist nötig, um die Zeit zwischen der Erkennung des USB-Sticks (Script wird gestartet) und dem Einbinden zu überbrücken. Erst nach dem Einbinden ist ein Zugriff auf die Dateien möglich.
Das Tool rsync (Homepage) gleicht die Daten zwischen dem USB-Stick und dem Backup-Verzeichnis ab. In der man-Page wird erklärt, was die einzelnen Optionen bedeuten:

-a Dateien, Verzeichnisse, symbolische Links rekursiv abgleichen und dabei Rechte beibehalten
-v Ausgabe anzeigen
-z Datenabgleich komprimieren
–delete in der Quelle (USB-Stick) gelöschte Dateien auch im Ziel (Backup) löschen

Das Backup-Script braucht jetzt noch Berechtigungen zum Ausführen:

chmod 755 /pfad/zum/script/usb_backup.sh

Ausserdem muss das Verzeichnis für das Backup angelegt werden:

mkdir /pfad/zum/backup

Damit die udev-Regel benutzt werden kann, ist ein Neustart des udev-Daemons nötig:

sudo service udev reload

Fertig! Ab sofort werden die Daten des USB-Sticks beim Einstecken in das Backup-Verzeichnis geschrieben.

Screenshot:

Verfasst am: 18.05.2011 · Kategorien: Linux
Schlagworte: , , , , , , , , , , ,  · Kommentare: Keine Kommentare

Nützlichste Tastenkürzel des Google Chrome

Im Nachfolgenden möchte ich die nützlichsten Tastenkürzel zusammenfassen, durch die Google Chrome das Surfen im Web erleichtert:

Beschreibung Tastenkürzel
Neues Fenster öffnen [STRG] + [N]
Neues Tab öffnen [STRG] + [T]
Tab schließen [STRG] + [W]
Das zuletzt geschlossene Tab öffnen [STRG] + [SHIFT] + [T]
Zum nächsten Tab springen [STRG] + [Bild auf]
Zum vorherhigen Tab springen [STRG] + [Bild ab]
Download-Tab anzeigen [STRG] + [J]
URL in Adressleiste markieren [STRG] + [L]
In Adressleiste springen und suchen [STRG] + [K]
Webseite neuladen [STRG] + [R]
Webseite durchsuchen [STRG] + [F]
Webseite als Lesezeichen speichern [STRG] + [D]
Zum Anfang der Seite springen [POS1]
Zum Ende der Seite springen [ENDE]
Nach unten blättern/scrollen [LEERTASTE]
Link in neuem Hintergrund-Tab öffnen [STRG] + Link anklicken
Ziel eines Links herunterladen [ALT] + Link anklicken
History zurück [ALT] + [←]
History vor [ALT] + [→]

Quelle: Google Chrome Hilfe

Verfasst am: 14.05.2011 · Kategorien: Internet, Linux
Schlagworte: , , , , ,  · Kommentare: Keine Kommentare
vor »