P2P

Zero Knowledge P2P

In einem Heise-Posting habe ich mal wieder ein Pamphlet geschrieben, welches Zero Knowledge als Tauschbörse zum Thema hatte.

Hier zur Sicherheit die Kopie des Textes:

Zero Knowledge Tauschbörse die Dateien beweisbar nicht überträgt

Überlegen wir mal:

Zerlege das File M in 3 Teile: A B C
Nun veröffentliche folgende daraus generierten Dateien:
D[1,0]=A+B+C
D[2,0]=2A+B+C
D[2,1]=A+2B+C
D[2,2]=A+B+2C
Bei keinem Teil verbreitest Du F, denn niemand kann behaupten, dass
Du mit A+B+C etwas von F verbreitest!

Interessant daran ist, dass Du mit beliebigen 3 Teilen F wieder
errechnen kannst.  (Das liegt daran, dass je 3 der Teile linear
unabhängig sind, das ist einfache lineare Algebra, darauf basieren z.
B. "Forward Error Corrections", FEC genannt.)

Zusätzlich kannst Du noch eine Encoding-Funktion definieren, die die
Teile verschlüsselt und Signiert, also E(x,y,D[x,y],K), wobei K Dein
"Private Key" ist und P[K] Dein privater Schlüssel.  Die
Originaldaten bekommst Du wieder durch
D[x,y]=F(x,y,E(x,y,D[x,y],K),P[K]).  Dazu veröffentlichst Du dann
P[K] noch im Forum.

Jetzt wird's noch abstruser:

Definiere einen Zufallsdatenstrom Z[U] mit der Länge von diesen A B
und C. Auf Z hast *Du* Dein Copyright.  Du kannst nun festlegen, wer
Z verwenden darf!  Definiere G wie folgt (^ ist dabei der EXOR, dies
kann je nach Programmierung durchaus dem Operator + entsprechen):
G[x,y]=E(x,y,D[x,y],K)^Z[U]
Veröffentliche nun Z[U],P[K] und die G[x,y].
Wichtig ist:  Jeder Tauschbörsenteilnehmer U hat sein eigenes Z[U]!

Nun sorgst Du dafür, dass Du z. B. immer nur zwei Teile verbreitest,
aber niemals einen Dritten, so dass Du sogar beweisen kannst, dass Du
M niemals, nicht einmal in Teilen, verbreitet hast (mit den 2 Teilen
kann nämlich niemand etwas anfangen).  Aber klar ist, dass ein
Copyright-Verstoß auf Seiten der MI vorliegt, denn Du kannst bei der
Verwendung von Z[U] bestimmen, zu welchem Zweck dieser verwendet
werden darf!

Stimmt, letzteres werden Gerichte sicher schnell nicht mehr zulassen,
aber jetzt kommt der nächste Schlag:

Z[U] kannst Du frei wählen.  Wähle Z[U] nun so, dass Z[U]+D[x,y] eine
Datei ergibt, die *legal* ist, einen sinnvollen Inhalt hat und an Der
Du das Copyright besitzt (unzweifelhaft).  Veröffentliche nun Z[U]
und die legale Datei.  Du hast nicht einmal D[x,y] veröffentlicht,
aber trotzdem dieses Teilstück verbreitet. 

Die Frage, die wirklich zu klären wäre, ist, in wiefern der Originale
Copyrightinhaber an Z[U] noch ein Copyright haben kann.  In Z[U]
steckt eindeutig die legale Datei, die Du besitzt, drinnen.  Von dem
Originalwerk aber befindet sich aufgrund der Zerlegung in Teile und
die anschließende Verschlüsselung, mit *Sicherheit* keine Information
mehr, die man mit diesem gleichsetzen kann.  Da Dein Copyrigth
eindeutig näher an dieser Datei liegt als an dem Copyright der
Verbreiteten Werks, müsste eigentlich Dein Copyright überwiegen. 
Nochmals:  Deine Datei macht genauso viel Sinn wie die vom
Originalautor.

Das Problem ist nun, was das Gericht beschließt.  Abhängig davon
definierst Du die "Tauschbörse" weiter.  Beschließt das Gericht, dass
jeder Copyrightinhaber dieses Planeten an dem Dateiinhalt ein Recht
hat, dann führst Du das ad absurdum, indem Du folgendes machst:

Erzeuge Teilstücke D wie oben beschrieben mit nur 8 Byte Länge. 
Zerlege hinreichend viele Dateien in diese 8-Byte-Stücke.  Sortiere
die Stücke.  Finde Stücke, die mehrfach vorkommen in verschiedenen
Dateien.

Beweise dem Gericht so, dass es nicht möglich ist, dass hier kein
Copyright vorliegen kann.

Wenn das Gericht diesem nicht zustimmt hast Du eine
Gelddruckmaschine, indem Du jeden Verklagen kannst, der ohne ein
Copyright dafür zu haben, einen 8 Byte-Block verbreitet, der Teil
Deines Werkes ist.  Hierbei ist natürlich unerheblich, wo sich dieser
Code befindet. Gewonnen haben insbesondere Leute, die Byte-Sequenzen
wie "HTTP/1.1" mit einem ihrer Werke erzeugen können.

Wenn das Gericht zustimmt dass diese 8-Byte-Blöcke keinem Copyright
unterliegen, baue die Tauschbörse auf den 8-Byte-Blöcken auf (diese
zerlegt eine Datei eben in Millionen von Stücken).  Das hört sich
irre an, ist es auch, aber wenn die Gerichte so einen Mist verlangen,
warum sollen wir ihn nicht tun ;)

Beschließt das Gericht, dass Dein Copyright näher liegt, haben wir
eine Tauschbörse, die niemand anfechten kann.

Noch etwas:  Die Schöpfungshöhe für das Erstellen einer solchen
Tauschbörse dürfte die Schöpfungshöhe von allgemeinen Dingen wie
Filmen etc. durchaus übersteigen.  Somit kann niemand behaupten, das
ganze wäre irgendwie eine "Umgehung", sondern so etwas ist deutlich
eine wissenschaftlich fundierte Arbeit.

Weites Mittel, ein Mittel das noch hinterhältiger ist: Zero
Knowledge

Baue eine Tauschbörse, die auf Zero Knowlege basiert.  Zero Knowledge
ist ein wissenschftlich anerkanntes Verfahren, bei dem bewiesen
wurde, dass keine Informationen über die Leitung gehen.

Die Frage lautet in etwa so:

"Wenn ich [liste von 200 Blöcken] xore, was kommt dabei raus?"
Deine Kiste antwortet dann beispielsweise mit 1 KByte an Daten (dies
entspricht 8192 unabhängigen Zero-Knowledge-Ereignissen mit der
Antwort "Ja und Nein").

Der Trick bei den Fragen ist, dass man niemals zulässt, dass
irgendwer, mit egal wie vielen Fragen, die Lineare Unabhängigkeit
erreichen kann.  Dadurch werden keinerlei Daten übertragen, dies ist
Wissenschaftlich anerkannt.  Die Idee hinter Zero Knowledge ist
nämlich genau die:

Ich kann prüfen, ob jemand eine Datei X besitzt, ohne Informationen
über die Datei zu erhalten.  Das Verfahren wird z. B. von den
Amerikanern verwendet, um selbst im unverschlüsselten Fall eine
Autorisierung übermitteln zu können, ohne dass ein Feind die
Möglichkeit hat, diese Autorisierung zu fälschen, selbst wenn er alle
Informationen mithört.

Sprich, wenn die MI behauptet, auf diese Weise würde eine Datei
übertragen, steht sie im direkten Widerspruch zur Mathematik.

So, wie kommt die Datei nun zum Empfänger, wenn er keine
Informationen hat?

Zero Knowledge überträgt zwar nicht direkt Information, aber es
schränkt die möglichen Lösungen ein.  Mit jeder Frage wird also der
Lösungsraum kleiner und kleiner.  Es wird nun sichergestellt, dass
der Lösungsraum aber immer noch so groß bleibt, dass niemand
behaupten kann, die Datei wäre übertragen worden.  Dafür reichen
durchaus 8192 Bits aus, dies ist eine Menge, die man heutzutage
niemals "knacken" kann.

Aber mittels Zero Knowledge habe ich sämtliche Dateien dieses
Planeten auf exakt  1 KB reduziert.  Sprich:

1 KB Initialvektor + Dateiname + Tauschbörse ergibt die jeweilige
Datei.

Ich habe noch etwas weiteres erreicht: Ich habe *bewiesen*, dass die
Tauschbörsenteilnehmer selber keine Informationen verteilen.  Einzig
und alleine bewiesen ist (hinreichend sicher) dass jemand eine Datei
besitzt.  Der Besitz einer Datei aber ist heute noch nicht verboten. 
Ebensowenig verboten ist es, zu sagen, dass man eine Datei besitzt,
genausowenig wie es verboten wäre, zu beweisen, dass man eine Datei
besitzt (so lange man sie dabei nicht weitergibt ist garantiert alles
in Ordnung).  Zero Knowledge ist genau solch ein Verfahren das dies
alles leistet.

Also nur derjenige, der den Initialvektor verbreitet, ist der
Übeltäter, nicht mehr die Tauschbörsenteilnehmer.  Eigentlich ist das
ja keine Tauschbörse, sondern ein P2P-System.

Nun kommt das Meta:

Man baut eine Index-Datei, die aus sagen wir mal 1024 Blöcken a 1 KB
samt Dateinamen besteht.  Diese Datei dürfte um die 2 MB haben. 
Diese wird wiederum via Zero Knowledge vorgehalten und besitzt einen
1 KB großen Initialisierungsschlüssel.

Diesen verbreitet man per 8-Byte-Häppchen nach der oben genannten
Methode, verschlüsselt anhand einer legalen Datei an der man das
Copyright besitzt.

Was haben wir also:

- Ein P2P-System, das per Zero Knowledge nur rausrückt, ob man eine
Datei hat oder nicht.

- Einen 1024 Byte Initialisierungsvektor, der mit einer Datei geXort
ist die legal ist, übertragen in vielen kleinen Häppchen.

- Dieser Initialisierungsvektor gehört zu einer Datei, die wiederum
ein Mapping von Dateiname zum Initialisierungsvektor enthält.

Der Dateiname in der Tauschbörse wird übrigens automatisch generiert
(z. B. per SHA1), so dass in der Tauschbörse keine wirklichen Namen
vorkommen, damit man nicht wegen der Namensverwendung angeklagt
werden kann.

Und das alles funktioniert vollkommen ohne ein anonymes Netz
einzuschalten. Einzig und alleine derjenige, der die
1024-Byte-Initialisierungsvektor bereithält, handelt evtl. illegal. 
Alle anderen aber - mathematisch bewiesen - legal, da sie nichts
übertragen (sie geben lediglich bekannt, dass sie eine Datei
besitzen).

Ach, dabei fällt mir noch etwas ein:

Die Illegalität vom Initialisierungsvektor aber kann man ebenfalls
noch beseitigen:  Indem man diesen so wählt, dass er ein
unzweifelhaft legale Datei ist, z. B. das erste KB der Statuten der
Vereinigen Staaten ..

(Das zu erklären dauert etwas länger.)

Hier Posting Nummer 2 das für das Forum zu lang war:

Hier aber eine andere Methode:

Nimm die Datei.
Komprimiere sie.
Nimm einen Text der frei verfügbar ist.
Komprimiere ihn.
Hänge beides, was komrimiert ist, aneinander.

Verwende dies als den Geheimcode für Zero Knowledge.  Es ist sogar
wichtig, dass der Geheimcode von Zero Knowledge (ist das, was
überprüft wird) relativ Zufällig (also nicht ratbar) ist.

Du setzt alle Bits in der Datei in Beziehung indem Du Zero-Knowledge
durchführst.  Dabei brauchst Du bei N Bit etwa 2N Tests.  Jeder Test
überträgt meinetwegen 256 Byte an Daten.  Das macht also einen 1:4KB
Overhead.

Nachdem Du *alle* Tests durchgeführt hast, hast Du immer noch
*keinerlei* Bit der Datei eruiert.  Das ist mit Zero Knowledge auch
nicht möglich. Aber Du hast alle Bits in der Datei miteinander in
Verbindung gesetzt, wobei jedes Bit, sagen wir, immer noch 2^100000
Freiheitsgrade (also unbestimmte Gleichungen) hat.  Von Übertragener
Information kann also keinerlei Rede sein.  (Das ist die Eigenschaft
von Zero Knowledge, es wird an sich keine Information übertragen.)

Jetzt erklärst Du aber, dass der Anfang von beiden Beziehungen der
Text ist, der frei verfügbar ist.

Der Empfänger nimmt den Text, komprimiert ihn, und weiss so, wie der
Anfang des geheimen Zero-Knowledge-Keys ist.  Aus den durchgeführten
Abfragen kannst Du jetzt aber die Beziehungen zu anderen Bits
berechnen.  Plopp, der zweite Teil der Datei wird plötzlich
eruierbar.  Dazu muss der erste Teil eben nur ca. 100 KB lang sein
(oder besser länger).

Das Berechnen funktioniert z. B. über ein gigantische Reduktion der
Komplexität eines Gleichungssystem das Du lösen musst. Das
Gleichungssystem ist dabei nicht unbedingt linear, sondern kann z. B.
per elliptischen Funktionen teilweise Brute-Force-Berechungen
einstreuen, die 10 Bit auf 9 Bit reduzieren (mit einem Bit das sich
aus den 9 Bit berechnen lässt) die Du anderweitig eruieren musst.

Mit einiger Mühe und Rechenleistung bekommst Du aber Bit nach Bit
immer mehr aus der Datei heraus, bis sie irgendwann im Klartext
vorliegt.  Nur noch dekomprimieren, und Du hast die Datei.

Ist doch ziemlich einfach, oder?

Ja, das Verfahren macht wenig Sinn um es wirklich zu implementieren. 
Aber es kann so funktionieren.

Wenn Du es technisch ansiehst, ist nicht Zero Knowledge dafür
verantwortlich, dass Du in der Lage bist, die Datei zu dekodieren,
sondern es ist tatsächlich die Information, dass der Anfang der Datei
der frei verfügbare Text ist.

Es ist etwas vollkommen anderes, als die Daten anhand des Textes zu
verschlüsseln, zu übertragen und dann den Text als Schlüssel zu
verwenden um die Datei zu dekodieren.  Das liegt daran, dass Zero
Knowledge wirklich keine Informationen überträgt.  Egal wie lange Du
es duchführst, Du wirst es nicht schaffen, die Datei jemals zu
dekodieren!  Alleine einen der Tests zu invertieren braucht nämlich
mehr Rechenzeit, als Du bis zum Ende des Universums zur Verfügung
hast.

Das Problem ist, dass Du einen gigantischen Teil der Datei
veröffentlichst.  Das ist der komprimierte bekannte Text.  Diese
Information und viel Spucke erlaubt es Dir, den Film zu
rekonstruieren.  Der Aufwand dabei ist vergleichbar damit, den Film
nochmals automatisch neu zu drehen.  Das zu tun wäre nicht verboten.

Eine ganz ähnlich vergleichbare abstruse Idee wäre z. B., den Film in
eine Rendering-Datei zu invertieren, die aus den Objekten (fast)
filmgetreue Szenen nachbaut, und die Szenenanweisungen anzugeben. 
Dazu kommen virtuelle Modelle der Schauspieler inklusive der
Physiognomie der Lauterzeugung mit denen Du die Sprache nachahmen
kannst.  All das wäre legal.

Das einzige wo es vielleicht ein Problem gibt sind die Dialoge
wiederherzustellen (da der Text dem Copyright unterliegt).  Aber wenn
Du es dem Computer als Rätselspiel aufträgst, bestimmte Sachen nicht
zu sagen, kann es sein, dass der Computer - rein zufällig - auf die
richtige Variante kommt.  Nochmals:  Du hast ihm nicht gesagt was er
sagen soll, sondern was er nicht sagen soll.  Den Rest kann er
aufgrund von Wissen wie Sprache funktioniert und den Szenen eruieren.
 Das ist ein vollständig automatischer Vorgang, das enthält wirklich
nicht den Dialog, denn änderst Du die Szene wird der Computer
automatisch etwas anderes sprechen.

Also, Du tust nichts verbotenes!  Aber trotzdem überträgst Du den
Film, obwohl Du den Originalfilm nicht überträgst!  Der Unterschied
zwischen dem hier genannten und Zero Knowledge ist, dass der Aufwand
bei Zero Knowledge zur Invertierung des ganzen immer exorbitant
bleibt, Du also ohne weitere Informationen nichts rendern kannst.

Zero Knowledge ist also nicht verboten.

Der verbotene Schritt ist, die öffentlich frei verfügbare Datei in
Beziehung mit dem Film zu setzen und dann noch die öffentliche Datei
zu nennen.

Worauf ich hinauswill:

Derjenige, der dann die Datei hat, ist unschuldig.  Er wurde nur in
die Lage versetzt, den Film zu eruieren, hat aber keinen
Copyrightverstoß begangen.

Derjenige, der die Datei so präpariert hat, hat die Schuld.  Aber die
Schuld ist schwer fassbar, weil es irgendwie nicht verboten sein
kann, die öffentlich frei verfügbare Datei zu nennen.  Auch das
"in-Beziehung setzen" auf dem Rechner ist in Deutschland nicht
verboten.  Bleibt also nur, dass er erzählt hat, dass die Datei und
der Film zusammenhängen!

Es ist diese wirklich simple Information, die tatsächlich *alles*
ausplaudert, so dass Du den Film rekonstruieren kannst.  Ich wage zu
bezweifeln, dass man diese einfache Sache aber per Gesetz verbieten
kann.  Wenn man solch kleine Sachen unter Strafe stellt. 
Insbesondere da man das ganze noch esoterischer gestalten kann:

Du kannst per Brute-Force-Suche herausfinden, welches der freien
Bücher es war, z. B. indem derjenige nur sagt: "Eins der tausend
da".  Das ist so vage, dass es an sich nicht verboten sein kann!

Das ganze ist so, als ob Du 1000 Filme drehst, um dann denjenigen
Film zu nehmen, der dem anderen Original am nächsten kommt. 
Natürlich "versuchst" Du Dir etwas zu bekommen, das Du eigentlich
nicht haben kannst.  Aber das Problem ist, dass die Information, die
auslöst, dass Du die Informationen eruieren kannst, legal sind.

Somit stelle ich das Konzept, dass nämlich die
Informationsübertragung Ursache für den Copyrightverstoß ist, in
Frage. Da aber der Besitz eines Films ebenfalls nicht verboten ist,
muss das "illegale beschaffen von Filmen" verboten werden.

Jetzt ist das Problem vorhanden, wie Du dieses aber feststellen
kannst.  Wenn ich jemandem meine DVD leihe und er sich die Daten auf
Platte zieht, so ist das nicht illegal.  Jetzt kriege ich die DVD
zurück, und somit hat er eine legale Kopie.  Er kann also immer
behaupten, er hat sich die Datei irgendwo legal verschaft.

Der Besitz einer Datei ist somit auch kein Beweis.  Selbst wenn
jemand 1000 DVD-Images auf Platte hat, ist das kein Beweis.  Ich habe
über 2500 DVDs.  Ja, gekauft.  Und ich habe viele DVD-Images auf
Platte.  Alles legal.

Nein, ich weiß nicht mehr, welche DVDs ich besitze.  Ich weiß auch
nicht, woher ich mir manche Images die ich besitze besorgt habe.  Ich
kann es schlicht nicht nachweisen.  Der Nachweis darf von mir auch
nicht verlangt werden.

Jetzt haben wir ein Problem:

Ich kann nachweisen, dass die Informationsübertragung keinen Beweis
darstellt - zumindest kann ich die Informationsübertragung so
insignifikant werden lassen, dass man sie nichts nachweisen kann.

Der Besitz von Images kann auch nicht unter Strafe gestellt werden. 
Es ist auch nicht zumutbar, dass jemand immer weiss, woher er das
Image (legal) hat.

Wenn Du also jemanden bei der Teilnahme im ZK-P2P erwischst, und
danach das DVD-Image auf der Platte findest, kannst Du noch lange
nicht nachweisen, dass er etwas illegales gemacht hat.

Das Gesetz funktioniert nicht. Es kann nicht funktionieren. 
Jedenfalls nicht, so lange die Unschuldsvermutung vor Gericht gilt.

Drehe das meinetwegen um.  Also jeder, der nicht nachweisen kann,
woher das DVD-Image stammt, ist schuldig.  Dann eröffnest Du eine
P2P-Börse, die DVD-Images auf dem Small-World-Phänomen verbreitet. 
Sprich, Du bekommst ein Image nur, wenn Du Leute persönlich kennst,
die ein legales Image besitzen, und die es Dir zur Verfügung stellen.
 Der Trick ist, selbst bis 2 Hops funktioniert das:  Du kannst einen
Bekannten fragen, ob er nicht seinen Bekannten fragt, ob er das Image
von einem Bekannten holt, der es legal besitzt.

Die Übertragung "findet nicht statt" wie oben beschrieben, Du
bekommst also nur über die persönlichen Beziehungen das Image zur
Verfügung.

Nun kannst Du die legale Quelle nachweisen.  Damit hast Du sogar eine
Schuldvermutung asugehebelt.

Bleibt nur das Urheberrecht.  Der Urheber muss also den Leuten
verbieten, dass sie eine DVD besitzen. Er muss verbieten, dass die
DVD weitergegeben wird.  Er muss verbieten, dass man sich die DVD
legal kopiert. All das ist in unserem Rechtssystem nicht
durchsetzbar und gleichbedeutend damit, dass die DVD nicht verkauft
wird.

Sobald ich die DVD kaufe, darf ich sie mir so oft ansehen wie ich
will.  Ich darf sie an Freunde verleihen.  Ich darf mir sie auf
Platte ziehen so oft ich will. Ich darf sie verkaufen und trotzdem
das Image behalten.

Letzteres ergibt sich dadurch, dass ich den Film ja nicht vergesse,
wenn ich die DVD verkaufe.  Es gibt Leute die haben ein eidetisches
Gedächtnis oder wie das heißt. Die können also jedes Bild der DVD
zeichnen wenn sie es jemals gesehen haben.  Ich darf nicht anders
behandelt werden, als diese Leute.  Da ich aber so gesehen behindert
bin (weil mein Gedächtnis nicht so gut funktioniert) darf ich nicht
diskriminiert werden.  Ich darf mir also ein Hilfmittel zulegen, das
mich auf dieselbe Ebene hieft wie die Leute mit Supergedächtnis.  Es
muss mir erlaubt sein, das Image zum "Refresh" meines Gedächtnisses
auf Platte ziehen.

Auch hier werden fundamentalste Grundrechte berührt wenn mir das
verboten wird.

-Tino