Transparente Chiffre

  • Ich versuche dieses Protokoll zu implementieren:

    1. Alice hat ihren permanenten Schlüssel $ K_1 $. Sie berechnet $ E (K_1, P) $.

    2. Sie möchte $ P $ mit Bob, Carol und Dave teilen. Für jeden von ihnen:

      2.1. Erzeugt $ K_2 $.

      2.2. Berechnet $ E_k (K_2, K_1) $ als $ C_k $ und sendet es über einen sicheren Kanal.

      2.3. Berechnet $ E (K_2, E (K_1, P)) $ als $ C $ und sendet es über einen sicheren Kanal.

    3. Jeder entschlüsselt $ P $ mit $ D (C_k, C) $

    Anscheinend brauche ich so etwas wie diese Eigenschaft:

    $$ D (K_1 + K_2, E (K_2, E (K_1, P))) = P, $$

    mit $ E_k: (K_2, K_1) \ mapsto E_k (K_2, K_1) = K_1 + K_2 $, wobei $ + $ nicht unbedingt "Verkettung" bedeutet. Ich kenne den richtigen Begriff dafür nicht, obwohl ich ziemlich sicher bin, dass er existiert.

    Bearbeiten: "sicherer Kanal" in 2.2 und 2.3 ; $ K_2 $ in 2.3.

    Das ursprüngliche Problem hat Frank als Relay-Host. Er hat $ E (K_1, P) $ und führt 2.1, 2.2 und 2.3 aus. Ich möchte nicht, dass jemand $ K_1 $ kennen muss, um die ursprüngliche Nachricht zu entschlüsseln. Deswegen versuche ich, etwas Kompliziertes zu finden. Ich kann Schritt 1 nicht ändern - wenn ich könnte, würde asymmetrische Chiffre mein Problem lösen.

    06 November 2013
    Ilmari Karonen
1 answer
  • Das Einmal-Pad verfügt über diese Eigenschaft. Indem $ \ oplus $ die bitweise XOR-Operation bezeichnet, ist das binäre OTP definiert als:

    $$ E (K, M) = D (K, M) = K \ oplus M. $$

    Aus den Kommutativitäts- und Löschungseigenschaften von $ \ oplus $ folgt dann

    $$ \ begin {align} D (K_1 \ oplus K_2, E (K_1, E (K_2, M))) & amp; = (K_1 \ oplus K_2) \ oplus (K_1 \ oplus (K_2 \ oplus M )) \\ & amp; = (K_1 \ oplus K_2) \ oplus (K_1 \ oplus K_2) \ oplus M \\ & amp; M \ end {align} $$

    Allgemeiner gilt, dass alle synchrone Stream-Chiffre im Wesentlichen enthalten die gleiche Eigenschaft Wenn $ S (K) $ der durch den Schlüssel $ K $ erzeugte Schlüsselstrom ist, wird eine binäre additive Stromchiffre definiert als:

    $$ E (K, M) = D (K, M) = S (K) \ oplus M. $$

    Wenn wir also $ S (K_1 + K_2) $ als $ S (K_1) \ oplus definieren S (K_2) $ (wobei $ K_1 + K_2 $ einen beliebigen codierten Wert bezeichnet, aus dem wir $ K_1 $ und $ K_2 $ eindeutig dekodieren können), dann hat die Stream-Verschlüsselung die von Ihnen gesuchte Eigenschaft.

    Noch allgemeiner könnten verschiedene andere kommutative Verschlüsselungsverfahren, wie (Lehrbuch) RSA, verwendet werden, um eine ähnliche Eigenschaft zu erzielen. Wie andere jedoch in den Kommentaren festgestellt haben, ist dies keineswegs klar tatsächlich ein nützliches Sicherheitsziel erreicht. Ich würde vorschlagen, dass Sie Ihr Protokoll überdenken und vorzugsweise eine genauere Beschreibung dessen geben, was Sie damit erreichen möchten.

    Ich habe eine Ahnung, was Sie tun Nach kann nach etwas wie das Protokoll mit drei Durchläufen , mit der eine Partei eine geheime Nachricht mittels kommutativer Verschlüsselung (insbesondere Potenzierung in einem endlichen Feld) an eine andere senden kann, auch wenn die beiden Parteien keine gemeinsamen Schlüssel besitzen. Auf allgemeiner Ebene

    11 June 2012
    Ilmari Karonen