Peer to Peer – Sicherheit

February 11th, 2010

Hallo zusammen,

vor Kurzem ist in einem Spieleforum die Frage aufgekommen, wie es mit der Sicherheit von Peer-to-Peer Systemen aussieht. Vermutlich werden jetzt viele Leser an die juristischen Folgen durch, populär ausgedrückt, “illegale Downloads” denken. Damit soll sich dieser Beitrag allerdings nicht befassen. Außerdem muss auch die Frage geklärt werden, wieso sich ein “Spieler”, eine möglicherweise leicht Klieschee behaftete Gruppe, dafür interessiert.

Insbesondere MMORPGs zeichnen sich durch einen sehr dynamischen Inhalt aus, was für viele einen Reiz darstellt, eine beachtliche Menge an Zeit zu investieren. Dies erfordert jedoch einen permanenten Aktualisierungsvorgang aller Clients. Viele “Kleinigkeiten”, wie Art/Position/Verhalten von s.g. NPCs können durchaus “on the fly” dem Spieler mitgeteilt werden. Umfangreichere Änderungen, insbesondere neue Grafiken, erfordern jedoch eine Änderung des Programms bzw. der verwendeten Bibliotheken. Hiervon soll allerdings der Spieler möglichst wenig betroffen sein – insbesondere soll er nicht gezwungen sein auf dubiosen Webseiten die Patches zu laden und dann auf dem jeweiligen Rechner zu installieren. Jedoch ein Client-Server Modell, bei dem ein Server die Daten für alle Clients bereitstellt, ist nur für geringe Benutzerzahlen praktikabel. So bedeutet ein 100 MB Update, was durchaus nicht selten ist, bei 100.000 Spielern nunmal 10.000.000 MB Traffic, also 10 TB. An dieser Stelle sei noch anzumerken, dass es durchaus Spiele mit 5-10 Millionen aktiven Spieler gibt. Außerdem besteht ein betriebswirtschaftliches Interesse, die Kosten solcher Prozesse möglichst gering zu halten.

Torrent
P2P-Netzwerk Quelle: Wikipedia.de

Was also tun? Das Thema liefert die Antwort: Peer to Peer Netzwerke, kurz P2P. Wie funktioniert das?
Nunja, viele leichtverständliche Informationen findet man auf einschlägigen Webseiten. Ich möchte an dieser Stelle insbesondere auf das P2P Netz eingehen, welches überwiegend beim Filesharing eingesetzt wird. Auch wenn “Filesharing”, “Peer to Peer”, etc. vielen Lesern die roten Alarmglocken schlagen lässt: es ist eine Technik, die von vielen Unternehmen eingesetzt wird und daran ist überhaupt nichts Illegal. Sie eignet sich allerdings auch zum Tausch von geschütztem Material wodurch sie häufig in einen falschen Zusammenhang gesetzt wird. Um dieses System in kurzen Worten zu erklären, möchte ich mich der Schneeball-Metapher bedienen:

Durch umfangreiche Aufklärungsarbeit der öffentlich rechtlichen Funk und Fernsehanstalten sollte vielen Lesern bekannt sein, wie ein Schneeballsystem (oder ein Kettenbrief) funktioniert. Wir definieren eine Person, die ein Produkt an eine Reihe von Personen anbietet und nennen diesen Tracker. Diese Reihe von Personen bemühen sich, aus eigenem Interesse, möglichst viele weitere Personen für dieses Produkt zu gewinnen. Wir bezeichnen alle Personen, die daran interessiert sind, als Schwarm. Angenommen jeder Teilnehmer gibt das Produkt (oder die Information) nur an zwei Andere weiter, haben wir nach 30 Schritten schon eine Schwarmgröße von 1.073.741.823 (2^30-1). Der Aufwand für den Einzelnen, 2 weitere zu “finden” bzw. zu bedienen, war relativ gering – in der Gesamtheit war das Produkt jedoch ein riesen Erfolg.

Als Informatiker möchte ich jedoch an dieser Stelle anmerken, dass es sich hierbei um einen Baum der Ordnung 2 handelt – hingegen ein P2P System als ein Multigraph anzusehen ist. Übertragen auf das “Updateproblem”: der Tracker wirft den Patch also in die Menge (den Schwarm) und die Spieler organisieren sich untereinander diesen zu verteilen. Also läd man, bei diesem Vorgang, nicht vom offiziellen Server, sondern von Personen “wie dich und mich” – jedoch natürlich nur von den Beteiligten.

Nun zurück zu dem besorgten Spieler. Grundsätzlich handelt es sich hierbei auch um Programmaktualisierungen. D.h. der Programmcode wird entweder ersetzt oder Neuer wird eingefügt – je nach Updatestrategie. Ein Beweis hierfür ist auch leicht erbracht: Updater sind immer “extra” Programme, also kein Unterprozess. So findet sich in dem entsprechenden Spielordner stets das Spiel selbst, als auch ein Updater als ausführbare (exe) Datei.

Und daher nun endlich die Frage: Können mir andere Spieler “Schadcode” übergeben, der sich dann, durch den Updatevorgang, auf meinem Rechner befindet?

Damit habe ich mich etwas Näher befasst. Zunächst muss natürlich klar sein, dass diese Frage nicht für alle Spiele geklärt werden kann. Grundsätzlich werden Daten von unbekannten Quellen geladen und diese können durchaus Fehlerhaft sein – gewollt oder ungewollt. Das ist die schlechte Nachricht. Die Gute ist, dass sich viele Spielebetreiber Techniken bedienen, die sich mittlerweile als Standard etabliert haben. Das relativ bekannte “BitTorrent” Protokoll ist eines dieser – wofür es auch sehr viele und gute Clients gibt. Bei dieser Technik erhält der Client ein File genannt “Torrentfile”. Dieses enthält eine Auflistung der Dateien, die geladen und verteilt werden müssen – zusätzlich weitere triviale Informationen.
Am Ende, das lässt uns wieder aufatmen, ein SHA-1 Hash für jeden Part. Wer mag, kann an dieser Stelle einen Exkurs zum aktuellen Stand der Technik bzgl. der Sicherheit des SHA-1 unternehmen.

~

Wieder zurück? Gut. Denn selbst wir ein Programm hätten, das uns “günstig” Kollisionen des SHA1 aufzeigt, wäre es sehr unwahrscheinlich, dass dabei ein Teil eines ausfühbaren Programmes herauskommt und gleichzeitig auch den gewollten Schadcode enthält. Diese Thematik lässt sicherlich Platz für Diskussionen – allerdings kann an dieser Stelle und an diesem Tag festgehalten werden, dass der SHA-1 Hashalgorithmus für diesen Einsatzzweck noch völlig genügt. Was ein Hashcode “genau” ist, habe ich in diesem Beitrag beschrieben: http://cryptblog.de/2008/06/18/hacken-fur-anfanger/

Es besteht also keinen Anlass zur Beunruhigung. Sofern der Tracker das Torrentfile korrekt an den Benutzer überträgt, ist ein P2P System (basierend auf BitTorrent), für diesen Einsatzzweck ausreichend sicher.

Tim IT-Sicherheit, Kryptographie , , ,

Warum nichts tun eine “gute Arbeit” ist

November 10th, 2009

Es gibt einen ganz einfachen Grund warum “nichts” arbeiten eine “gute Arbeit” ist.

Wir definieren uns eine Menge A welche das Ergebnis unserer Arbeit repräsentiert. Wie angegeben ist dies “nichts” also
A = { } (die leere Menge).

Nun definieren wir uns eine Menge G, welches die “gute Arbeit” darstellt, also alle sinnvollen Tätigkeiten; x0, x1, x2, … xn seien die Elemente dieser Menge:

G = {x0, x1, x2, … xn}

Nun zeigen wir, dass unsere Arbeit A eine Teilmenge von G ist.

Dies gelingt über einen Widerspuchsbeweis:
Sei A (also die leere Menge) keine Teilmenge von G, so existiert ein x element A welches in G nicht zu finden ist.
Dieses x ist also ein Element der leeren Menge -> Widerspruch gemäß Definition der leeren Menge, welche die Mächtigkeit |{ }|=0 besitzt.

Damit ist also unsere Arbeit A eine Teilmenge von G und wir leisten täglich, auf dem Sofa, eine gute Arbeit. Und es erklärt, warum hier in der letzten Zeit so wenig passiert ist.

Tim Sonstiges

Cluedo und Informatik

August 24th, 2009

Ausnahmsweise mal etwas, was nichts mit Kryptographie und IT-Sicherheit zu tun hat.

Während einem Spiel Cluedo, bei dem es darum geht mittels eigenen (eigene Karten) und fremde Informationen (fremde Karten) auf neue Informationen (Lösungskarten) zu schließen, habe ich mir die Frage gestellt, in wie fern die Informatik einem an dieser Stelle helfen kann. Zunächst eine Spielbeschreibung von Wikipedia.de:

Auf dem Spielplan ist der Grundriss eines Hauses mit neun Räumen und dem Flur dargestellt. In diesem Haus ist Dr. Schwarz (auch Graf Eutin) ermordet worden und alle Mitspieler übernehmen im Verlaufe des Spiels die Rolle eines Detektivs. Am Anfang wird von jedem Kartenstapel der Verdächtigen, Mordwerkzeuge und Mordzimmer jeweils eine Karte verdeckt gezogen. Diese gilt es im Laufe des Spiels zu ermitteln. Alle übrigen Karten werden an die Mitspieler verteilt. Diese können nun durch geschickte kombinierte Verdächtigungen, die sie immer den anderen Mitspielern vortragen, erfahren, welche Karte diese besitzen. Dadurch muss jeder auf den korrekten Mörder, die Tatwaffe und den Tatort Rückschlüsse ziehen. Wer zuerst diese drei Fragen richtig beantworten kann, hat gewonnen. Wer allerdings eine falsche Anklage erhebt, scheidet aus. Es existieren mit sechs Verdächtigen, sechs Tatwaffen und neun Räumen insgesamt 324 verschiedene Lösungskombinationen.

Die Anzahl der Möglichkeiten ist also die Mächtigkeit aus dem Kreuzprodukt: Verdächtige (Täter) x Waffen x Räume. Bei 3 Spielern erhält jeder Spieler 6 Karten auf die Hand (3*6+3). Je nachdem von welchem Typ diese Karte sind, verringert sich die Lösungsmenge zunächst. Nun hat jeder Spieler das Ziel, diese Menge auf 1 zu reduzieren, indem er anderen Spielern Fragen stellt (Täter – Waffe – Raum). Sofern der nächste Spieler in der Runde eine (oder mehrere) dieser genanntne Karten besitzt, muss sie, allerdings im Verborgenen, dem Fragesteller gezeigt werden. Damit kann dieser die mögliche Lösungsmenge weiter vermindern.
(1) Diese Menge mit Hilfe der eigenen Karte und die Karten, die einem von anderen gezeigt worden sind zu reduzieren ist vergleichsweise einfach bzw. müssen nur von der Liste gestrichen werden.
Kritischer ist die Einschränkung durch Kommunikation der anderen Spieler untereinander (2). Fragt beispielsweise Spieler B nach 3 Karten und zeigt Spieler C eine dieser, ist zunächst nicht bekannt welche, außer ich besitze konkrete Informationen über 2 dieser 3 Karten und kann ausschließen, dass eine dieser vorgezeigt wurde. Kann ein Spieler auf eine Anfrage nicht antworten (3), ist dies erneut eine wichtige Information, denn wenn bekannt ist, dass alle Spieler eine Karte nicht besitzen, ist dies die gesuchte Gewinnkarte.

Es ist allerdings nur sehr schwer möglich ALLE Informationen auf einem kleinen Zettel durch Striche, Kreise und Pfeile zu notieren. Insbesondere die Auswertung fällt sehr schwer. Deshalb übergehen viele Spieler einfach Informationen welche sie zunächst nicht direkt in eindeutige Informationen umwandeln können. Lässt sich also aus einer Handlung (Spieler B zeigt Spieler C eine unbekannte Karte) nicht direkt eindeutig verarbeiten (Spieler B besitzt Karte X), wird diese Information nicht weiter notiert. Dies ist natürlich ein Fehler welcher durch die Informatik korrigiert werden soll. Daher habe ich ein 4-Tupel zur Speicherung jeder Information gewählt, welche sich aus Täter (Verdächtiger), Waffe, Raum und dem Spieler der darauf antworten konnte, zusammensetzt. Aufgrund der vorherigen Informationen und jener, die erst im weiteren Verlauf des Spiels gewonnen werden, lässt sich unter Umständen (in manchen Fällen auch nachträglich) ermitteln, um welche Karte es sich dabei gehandelt hat. Wie diese Informationsmengen (Eindeutige Karten, Mehrdeutige Karten (siehe Beispiel), Negationale Karten (falls jemand nicht Antworten kann)) zu verarbeiten sind, habe ich in einem PDF zusammengefasst. Es enthält durchaus noch einige Fehler und ist auch nicht als wissenschaftliche Veröffentlichung anzusehen – ist ist mehr eine Skizze aus der noch weiteres entstehen kann.

Hier das PDF:

http://www.cryptblog.de/cluedo1.pdf

Ich habe das Ganze auch in Java programmiert und einem Praxistest unterzogen. Dabei hat es sich durchaus bewährt – wobei die Leistung nur schwierig einzuschätzen ist, da Glück ein wichtiger Bestandteil dieses Spiels ist.
Es handelt sich dabei allerdings AUSSCHLIESSLICH um die Aufarbeitung und Auswertung bekannter Informationen. Der Algorithmus bietet keinen dominanten Lösungsweg durch das Spiel bzw. stellt (noch) nicht Fragen an andere Spieler. Dies wäre eine Arbeit, die darauf aufsetzen könnte.

Tim Sonstiges

Mathematik zum Anfassen – Kryptographie

May 20th, 2009

Hallo!

Diesmal nur ganz kurz eine kleine und Interessante Einführung in die Kryptographie, aus der Reihe “Mathematik zum Anfassen” von Prof. Albrecht Beutelspacher:
-> Video <-

Einges davon sollte dem treuen cryptblog.de Fan schon bekannt sein.

Tim Kryptographie

Zufällige Entscheidungen

May 9th, 2009

Hallo zusammen,

vor kurzem hatten ein Kommilitone und ich ein Problem. Wir wollten (über das Internet) ausknobeln, wer von uns mit dem Auto fahren muss und wer dafür Alkohol trinken kann. Ein Schnick-Schnack-Schnuck über das Internet sozusagen. Beide hatten wir nach einer Lösung für dieses Problem gesucht jedoch keine wirklich gute gefunden. Zuletzt entschieden wir uns dazu, es über die Anzahl der Heise.de-News des nächsten Tages zu bestimmen. Je nachdem ob es eine gerade oder ungerade Anzahl ist, muss der eine oder der andere.

Die Frage ist also, ob es dafür bessere Lösungen gibt. Mit Hilfe einer dritten, unabhängigen Instanz sollte dies nicht so schwierig sein, einige Lösungsbeispiele habe ich dafür mal ausgearbeitet:

Beide Parteien könnten mit einem Client auf einen Server verbinden. Sobald alle verbunden sind, gibt dieser eine zufällige Zahl aus. So hat man, synchronisiert, allen Teilnehmern dieses Ereignis zugänglich gemacht.

Oder man könnte eine Webseite bereitstellen, die alle 5 Minuten eine zufällige Zahl ausgibt. So könnten beide Parteien Vermutungen über die nächste Ausgabe treffen und diesbezüglich eine Entscheidung finden. Um dieses Beispiel zu verdeutlichen habe ich diese Webseite angefertigt: http://www.cryptblog.de/random.php.

Eine weitere Möglichkeit wären Kryptogramme eines Servers: Partei A bezieht ein aktuelles Kryptogramm von einem Server, welches eine verschlüsselte Zahl enthält. Er übergibt das Kryptogramm der Partei B und beide einigen sich darauf, welche Entscheidung bei einer geraden/ungeraden getroffen wird. Die Entschlüsselung ist allerdings erst später (~5 Minuten) möglich. Ich denke allerdings, dass diese Lösung unnötig kompliziert ist und kaum einen Vorteil gegenüber den anderen besitzt.

Aber nun die Frage: ist es möglich eine solche Entscheidung zu treffen, ohne dass ein Dritter (Server) beteiligt ist? Meine Antwort darauf ist JA. Folgendes Verfahren habe ich mir überlegt:

Sowohl A, als auch B, denken sich eine möglichst große zufällige Zahl (a und b) aus. Mit Hilfe einer Webseite, die hier lediglich als “Taschenrechner” dient, berechnen A und B jeweils einen Hash (Fingerabdruck, beispielsweise MD5) ihrer Zahl, also z.B. H(a) und H(b). Über ein beliebiges Kommunikationsmedium kann nun dieser Hashwert ausgetauscht werden. Außerdem müssen sich A und B jeweils für eine gerade oder ungerade Zahl entscheiden. Durch diesen Austausch, haben sich beide auch damit einverstanden erklärt, dieses Verfahren zu nutzen. Nachdem also Hashwerte ausgetauscht sind, ist jeder im Besitz seiner eigenen Zahl und einem Fingerabdruck der Zahl des anderen.

Jetzt kann jeder seine Zahl dem anderen nennen, ob nun A oder B zuerst ist egal. Beide Zahlen werden miteinander addiert, also m = a + b berechnet, und je nachdem ob diese Zahl gerade oder ungerade ist, fällt die Entscheidung für A oder B aus. Aufgrund des vorherigen Austausch der Hashwerte, ist ein nachträgliches ändern der Zahl nicht möglich bzw. A und B können die Aussagen des anderen verifizieren.

Um dieses Beispiel zu verdeutlichen, existiert eine neue Sektion und ein Script um die Durchführung zu vereinfachen: http://cryptblog.de/webchallenge/.

Nochmal grob zusammengefasst:

zufallprotokoll
A prüft H(b)=H(b’), B prüft H(a)=H(a’). Sofern beides wahr, kann von a’=a und b’=b ausgegangen werden.
 Beide berechnen m = a+b.

Mittels diesem Protokoll hat jeder Teilnehmer eine 50% Chance zu gewinnen:

geradeungerade

In der Anwendung ist folgendes zu beachten:

Die Hashfunktion sollte einigermaßen sicher sein und um Rainbowtables entgegenzuwirken, sollten die Zahlen möglichst groß sein. Sofern dies erfüllt ist, können auch JavaScript Lösungen zum berechnen verwendet werden, wie z.B. http://aktuell.de.selfhtml.org/artikel/javascript/md5/ .

Nachtrag:
Grundsätzlich kann man dieses System auch, leicht modifiziert, für das bekannte Stein-Schere-Papier einsetzen, indem ein Hash von Stein|Zufallszahl, Schere|Zufallszahl oder Papier|Zufallszahl gebildet und später ausgetauscht wird. Das macht die vorherige Absprache ob gerade oder ungerade unnötig.

Tim Kryptographie

ITS-Quiz für Zwischendurch

April 23rd, 2009

Hallo,

es handelt es sich um Protokollsicherheit in Verbindung mit asymmetrischer Verschlüsselung. In diesem Szenario möchte die Partei A eine geheime Information an Partei B senden. A besitzt den geheimen Schlüssel zum öffentlichen Schlüssel PK_A, und B äquivalent PK_B. Hierbei wird folgendes Protokoll verwendet:

(1) A –> B:     (A, E(PK_B, A|M), B)
(2) B –> A:     (B, E(PK_A, A|M), A)

also: (Absender, Nachricht, Empfänger) wobei Nachricht = Absender|Information.

Schritt für Schritt: A sendet an B eine Nachricht, diese besteht aus

  • dem Absender (A),
  • dem asymmetrisch verschlüsselten Text M wobei dieser noch mit  und dem Absender verbunden wurde (A|M),
  • dem Empfänger (B).

daraufhin bestätigt B den Erhalt der Nachricht durch:

  • den Empfänger (B),
  • die exakt identische Nachricht, diesmal allerdings mit dem öffentlichen Schlüssel des ursprünglichen Absenders – also des neuen Empfängers (PK_A) verschlüsselt,
  • den Absender der usprünglichen Nachricht (A).

E(PK_X, M) ist die asymmetrische Verschlüsselung, z.B. RSA, mit Hilfe des öffentlichen Schlüssels X, im obrigen Beispiel also jeweils des Empfängers. Das Ganze etwas anders ausgedrückt: Die Partei A sendet eine Nachricht an B, wobei diese mit dem öffentlichen Schlüssel des Empfängers verschlüsselt wurde und außerdem auch den Absender enthält.

Im Zuge einer Umstellung wurde das Protokoll abgeändert auf:

A –> B:     (A, E(PK_B, M), B)
B –> A:     (B, E(PK_A, M), A)  (Bestätigung)

Der Unterschied: der Absender ist hier nun nicht mehr innerhalb der verschlüsselten Nachricht enthalten.

Frage: ergibt sich daraus ein Problem? Wo ist der Unterschied bzw. gibt es überhaupt einen?

Tim IT-Sicherheit, Kryptographie

Auflösung Februar

March 16th, 2009

Hallo liebe Gemeinde,

eine Vermutung wurde ja geäußert (siehe Kommentare). Dieser geht in die Richtung, den Klartext mit einem zufälligen Schlüssel zu chiffrieren und diesen wiederrum mit dem geheimen (ausgetauschten) zu verschlüsseln und an die Nachricht anzuhängen. Also: [E_tempkey(Text) | E_key(tempkey)]. Also ein ähnliches System wie bei den DLC-Containern.

Die Idee ist natürlich nicht schlecht, allerdings handelt es sich hierbei um etwas anderes. Und zwar gibt es in der Praxis verschiedene Betriebsmodi; um einige zu nennen: ECB, OFB, CFB. Und an dieser Stelle wurde der CBC “Cipher Block Chaining” Modus verwendet. Was dies nun genau bedeutet ist etwas schwierig zu eklären, daher beschränke ich mich an dieser Stelle darauf den Unterschied zwischen dem simpelsten (ECB) darzustellen.

Beim ECB-Modus wird der Klartext in gleiche Stücke getrennt. Im Beitrag zur Bildverschlüsselung (http://cryptblog.de/2008/10/06/bildverschlusselung/) hatte ich dieses Verfahren bereits erläutert. Dort wurde

“Hallo, wie geht es dir  ”

in:

“Hallo, w”, “ie geht “, “es dir  ”

aufgeteilt. Jeder dieser Blöcke wird mit dem gleichen Key verschlüsselt und so erhalten wir am Ende wieder 3 Blöcke. Beispielhaft dargestellt:

“mdjwbcxg”, “ötüeoejd”, “ndkrdkdp”.

Angenommen ich ändere das “Hallo” im Klartext in ein “Hello”, so würde sich nur der erste Block ändern, die anderen zwei blieben unberührt. Und um diesen Einfluss zu vergrößern gibt es die oben genannten Betriebsmodi. Ein Bild dazu aus Wikipedia zum CBC-Modus:

 cbc_encryption

Zunächst schwierig zu verstehen. Auf der linken Seite haben wir den sehr bekannten Initialisierungsvektor. Bei der Blowfish-Implementierung wird dieser einfach zufällig gewählt. Er wird mit dem Klartext verrechnet (XOR). Das Ergebnis daraus, wird verschlüsselt und ergibt den Chiffretext welches wiederrum auf den nächsten Klartextblock Einfluss nimmt. Durch diese Pfeile ist also zu sehen, dass der Vorgänger immer auf den unmittelbaren Nachfolger einwirkt.

Dadurch ergibt sich eine Kette: wird am Anfang eine Veränderung vorgenommen, ändert dies den kompletten restlichen Chiffretext. Und da, wie schon erwähnt, der IV gewürfelt wird, ergibt sich bei jeder Verschlüsselung einen anderen Chiffretext. Zur Entschlüsselung wird allerdings dieser Vektor benötigt, daher wird er einfach mitgeschickt. Aus dem Plaintext P wird also nicht nur ein Chiffretext C, sondern beinhaltet auch einen IV.

Verstanden sollte sein, dass diese “Block für Block”-Verschlüsselung Probleme bereiten kann und ein Betriebsmodus, wie der CBC, für noch mehr Einflussnahme des Klartextes sorgt.

Tim Kryptographie

“Sicher im Internet”

February 7th, 2009

Ich möchte an dieser Stelle  nur kurz auf den neuen Bereich “Sicher im Internet” hinweisen.  Es handelt sich dabei um einen Teil meiner Abschlussarbeit. 

Im Laufe der zunehmenden Verbreitung des Internetzugangs sind Anwender häufig damit überfordert die Gefahren richtig einzuschätzen, die im Umgang mit den neuen Medien entstehen können. Die Anzahl der Internetnutzer – sowohl geschäftlich als auch privat -  steigt kontinuierlich. Im Mai 2007 wurde festgestellt, dass bereits jeder 5. Mensch (1,23 Milliarden) daran teilnimmt.

Nach Untersuchungen des Antivirus-Herstellers „Kaspersky Lab“ ist jeder zehnte PC Teil eines Bot-Netzwerkes. Die Ursache liegt häufig in Fehleinschätzungen von E-Mail Dateianhängen oder heruntergeladenen Dateien aus dem Internet. Nur in seltenen Fällen sind sog. Exploits die Ursache, bei denen der Anwender keine Mitschuld trägt.

Probleme dieser Art lassen sich häufig schon durch Aufklärung vermeiden oder zumindest eindämmen. Informationsmaterial zu dem Thema PC–Sicherheit, welches auch für Laien verständlich und leicht zugänglich ist, soll dem Benutzer helfen Gefahren rechtzeitig zu erkennen. Innerhalb der Abschlussarbeit wurden verschiedene Gefahrenquellen analysiert und in geeigneter Weise aufgearbeitet.
Eine Quiz soll u. A. zur Wissensvermittlung dienen.

 >>> Hier geht es zum Quiz

Tim IT-Sicherheit

Frage des Monats (Februar)

February 3rd, 2009

Nicht grade traditionsgemäß, aber um mal Abwechslung in den Cryptblog Alltag zu bringen.

Wir betrachten folgende Internetseite:
http://www.php-einfach.de/sonstiges_generator_blowfish_js.php

Der angezeigte Key wird zufällig ausgewürfelt und kann ähnlich wie der Klartext geändert werden, muss aber nicht. Danach besteht die Möglichkeit, die Eingabe zu verschlüsseln, worauf eine Ausgabe des verschlüsselten Textes im Base64 erfolgt. Mal als Eingabebeispiel:

Key: tsu15bdi
Klartext: test

Und nun? Jetzt kann mit dem “Verschlüsseln”-Button chiffriert werden. Um dies hier alles nachvollziehen zu können, sollte dies nun jeder einmal durchführen. Nun kommt das große “Problem”. Mit den oben genannten Daten ergibt sich:

AAtRZQALh6Bkp67o8pNUbg==

Wenn ich aber mehrmals den Button betätige, entsteht immer wieder etwas anderes:

AAUYzgALLpTtP2+zdG0O4A==
AAD+sgAJaAF/3D3mdFxHWw==
AA874gALmyCaU23yyjVKcQ==
AAHn2gAKE4mfFu4zg/muTQ==

Und es handelt sich dort jeweils um “test”. Jeder dieser Ergebnisse kann mit dem oben genannten Passwort auch wieder nach “test” dechiffriert werden. Genaugenommen zu

“test    “

was 8 Zeichen mit jeweils 16 Bit = 128 Bit (Blockgröße) entspricht, dies allerdings nur am Rande.

Normalerweise geht man davon aus, das ein fester Klartext P mit dem festen Schlüssel K nur EIN eindeutiges Ergebnis zurückliefert, um das Entschlüsseln bzw. die Umkehrbarkeit eben möglich ist. Bei der einfachen (additiven) Cäsar Verschiebechiffre ist das ja ähnlich (Schlüssel 2):

A -> C
B -> D
C -> E

etc.

Das oben gezeigte verhält sich also so, als würde A (nach Verschlüsselung) sowohl zu C als auch zu D und E verschlüsselt werden. Und dies jeweils zufällig.

Frage: Wieso ist hier eine eindeutige Entschlüsselung möglich?

Tim Kryptographie

Neueröffnung nach Umzug

February 3rd, 2009

Hallo,

in verändertem Design, auf einem eigenen Server und mit eigener Domain präsentiert sich der cryptblog von Neuem. Innerhalb der nächsten Tage werde ich hier noch einige kleine Änderungen vornehmen, die wichtigsten Arbeiten sind allerdings erledigt.

Tim Sonstiges