kostenloser Webspace werbefrei: lima-city


Sicheres One-Time-Pad mit geringer Schlüssellänge

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    drafed-map

    Kostenloser Webspace von drafed-map

    drafed-map hat kostenlosen Webspace.

    Hi,

    angeblich braucht man bei Nutzung eines One-Time-Pad-Verfahrens (ich gehe im weiteren Verlauf des Beitrags immer von der Verwendung von XOR aus) einen Schlüssel, der mindestens so lang ist, wie alle Nachrichten, die man jemals mit ihm verschlüsseln will, zusammen, damit an Angreifer nicht durch Häufigkeits-Verfahren auf den Schlüssel kommen kann. Danach erhöht sich die Wahrscheinlichkeit, dass der Schlüssel geknackt werden kann. Das ist natürlich sehr ungünstig, wenn man viel Inhalt verschlüsseln will, denn will man insgesamt 1 TiB Daten verschlüsseln, dann muss man auch erst mal einen 1 TiB großen Schlüssel zum Empfänger bringen.

    Ich behaupte nun aber, dass das auch ohne diesen großen Schlüssel geht:

    Man setzt eine bestimmte Blockgröße fest, z.B. 256 Bit. Man beginnt mit dem ersten Klartext-Block und wendet XOR auf jedes Bit dieses Blocks in Kombination mit dem sovielten Bit des zweiten Klartext-Blocks an. Dadurch erhält man den ersten Geheimtext-Block. Den zweiten erhält man, indem man das gleich mit dem zweiten und dritten Klartext-Block macht. Das Schema setzt man fort, bis man nur noch einen Block übrig hat. Auf diesen wendet man bitweises XOR zusammen mit dem nächsten zuvor getauschten Schlüssels an.

    Macht man es rückwärts, ist es auch egal, wenn die Größe des Klartextes kein Vielfaches der Blockgröße ist, aber vorwärts versteht man es einfacher.

    Das Verfahren der Entschlüsselung dürfte jedem klar sein.

    Der Vorteil ist, dass man immer nur einen Schlüssel der Größe eines Blocks benötigt. Unabhängig davon, ob man 100 Zeichen Text oder tibibyteweise Daten überträgt. Hat man 1 TiB Zufalldaten als Schlüssel getauscht, kann man damit etwa 33,5 Mio. Nachrichten verschlüsseln. Merken sich Sender und Empfänger einen vereinbarten Klartext-Block einer Nachricht und verwenden ihn als Schlüssel (der erste Block der Nachricht bietet sich da ja richtig an), genügt ein einziger Schlüssel einer Blockgröße, um beliebig viele Nachrichten zu versenden.


    Übersehe ich dabei etwas, oder würde das wirklich sicher funktionieren?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Dabei wirst du aber zwangsläufig Muster in deinen Geheimtext bekommen, was bestimmt nicht gewollt ist. Denn: Verschlüsselst du mittels XOR ein
    A
    mit einem
    A
    als Schlüssel kommt
    0x00
    raus.

    Sagt dir der Verschlüsselungsalgorithmus RC4 etwas? Eventuell solltest du dir das mal ansehen…

    Dort ist das so gelöst: der Schlüssel wird mittels Zufallszahlengenerator erstellt, der mit dem eigentlichen Schlüssel initialisiert wird. Wichtig ist dabei nur, dass aus dem Zufallszahlengenerator ein vollkommen zufälliger Schlüssel für das XOR herauskommt, bei dem es nicht möglich ist das nächste Bit als Angreifer vorherzusagen.
  4. Autor dieses Themas

    drafed-map

    Kostenloser Webspace von drafed-map

    drafed-map hat kostenlosen Webspace.

    Etwas ähnliches, wie du RC4 beschrieben hast, habe ich mir auch schon ausgedacht und finde es auch wesentlich besser, als ein One-Time-Pad-Verfahren. Aber ich habe nun die Behauptung, der Schlüssel müsse sehr groß sein, gehört und bin auf äußerst komplizierte Lösungsvorschläge gestoßen. Ich denke nicht, dass es solch komplexer Lösungsansätze bedarf und will diese Behauptung mit einfachen Mitteln widerlegen.


    hackyourlife schrieb:
    Dabei wirst du aber zwangsläufig Muster in deinen Geheimtext bekommen, was bestimmt nicht gewollt ist. Denn: Verschlüsselst du mittels XOR ein
    A
    mit einem
    A
    als Schlüssel kommt
    0x00
    raus.
    Stimmt. Bei einer großen Datenmenge könnte man damit etwas anfangen.

    Ok, dann eine Abwandlung: Auf jeden Geheimtext-Block, der mit dem Verfahren, das ich im Eröffnungsbeitrag vorgestellt habe, erzeugt wird, wird mit Ausnahme des letzten Blocks noch mal bitweise XOR mit dem Schlüssel angewendet.

    Beitrag zuletzt geändert: 23.11.2012 20:40:11 von drafed-map
  5. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    drafed-map schrieb:
    Ok, dann eine Abwandlung: Auf jeden Geheimtext-Block, der mit dem Verfahren, das ich im Eröffnungsbeitrag vorgestellt habe, erzeugt wird, wird mit Ausnahme des letzten Blocks noch mal bitweise XOR mit dem Schlüssel angewendet.
    Es werden immer Muster zurückbleiben ;-)

    Wie viele hoch intelligente Leute glaubst du beschäftigen sich schon seit Ewigkeiten mit dem Thema Kryptograpie? Wenn es so einfach und dennoch sicher wäre würde es dieses Verfahren bestimmt im Einsatz geben.

    Das grundlegende Problem beim Verschlüsseln ist, wie es möglich ist, einen Klartext in einen Geheimtext zu übersetzen, der für einen Angreifer keine Information enthält, also so wie die Ausgabe eines sehr guten Zufallszahlengenerators aussieht, aber es für den Empfänger trotzdem noch möglich ist daraus wieder den Klartext zu gewinnen.

    Sind dabei irgendwelche (noch so kleine) Muster enthalten könnten diese dazu benutzt werden den Klartext wieder zu gewinnen.

    Bei deinem Verfahren würde der Schlüssel übrigens geknackt sein, wenn eine Klartext-Nachricht sowie die dazugehörende Geheimtext-Nachricht bekannt ist. Bei einem wirklich guten Verschlüsselungsalgorithmus ist dies niemals möglich.

    Warum funktioniert das bei deinem Verfahren?
    Formel: Klartext \oplus Schlüssel= Geheimtext
    Aufgrund der Eigenschaften des exklusiven Oders gillt aber auch:
    Formel: Klartext \oplus Geheimtext = Schlüssel
  6. Autor dieses Themas

    drafed-map

    Kostenloser Webspace von drafed-map

    drafed-map hat kostenlosen Webspace.

    Dass man mit dem Klartext und dem Geheimtext auf den Schlüssel kommt, ist bei One-Time-Pad-Verfahren üblicherweise so.

    Um Muster zu eliminieren, kann man den anderen Block einfach durchhashen. Man könnte die Blöcke 128 Bit lang machen und mit dem 128 Bit langen Hash des nächsten Blocks – meinetwegen mit dem Schlüssel als Salt – durch bitweises XOR jagen.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!