Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

.

Werbeanzeige

ext

Treue Seele

  • Private Nachricht senden

31

26.05.2006, 22:17

Zitat von »"Osram"«

Zitat von »"ext"«


Ein One-Time Pad in der Praxis ist doch unsinnig, wenn ich den Schlüssel übertragen kann über einen sicheren Weg, dann kann ich auch gleich darüber direkt mit dem Empfänger kommunizieren (spart mir dann ja auch noch 50% der Datenmenge ein im Vergleich zum One-Time Pad).


Es kommt halt wie immer auf die Anwendung drauf an. Wenn entweder die Nachricht oder Nachricht + Pad auf dem selben Weg übertragen werden, macht natürlich letzteres keinen Sinn, da die Chance auf dem Weg abgehört zu werden die selbe ist.

One Time Pad macht Sinn wenn es einen seltenen / langsamen Weg gibt es etwas zu übermitteln und einen (vergleichsweise) schnellen. Z.B. ich treff meinen Kollegen einmal pro Jahr auf einer Messe und geb Ihm eine CD oder ein Buch, Ich schicke den Pad per Post, die Regierung gibt dem UBoot Kapitän Schlüssel beim Auslaufen mit, oder ich schicke einen Kurier. Die Nachrichten können dann z.B. offen per Funk, Telefon, Internet etc übertragen werden.


Er kann mit der verschlüsselten Nachricht aber nichts anfangen bis er den Schlüssel hat. Somit kann man die Nachricht ja gleich über den langsamen und sicheren Weg versenden. Oder hab ich dich jetzt falsch verstanden?

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

32

27.05.2006, 00:56

Ich glaube es geht darum, einmalig eine Liste mit mehreren Schlüsseln sicher zu übermitteln (per Hand,...) und dann später bei jeder abfangbaren Nachricht einen der Schlüssel zu verwenden.

33

27.05.2006, 20:09

Zitat von »"ext"«

@Thunder Storm bei keinem heutigen Verschlüsselungsverfahren kommst du mit BruteForce zum Ziel auch da sind die Möglichkeiten bereits viel zu groß, als dass man ne Chance hätte das zu errechnen.



Spekulativ habe ich gehört, dass die aktuellen Verschlüsselungen mit den Quantencomputern fallen werden. Genaues dazu kann ich aber nicht sagen.


Zitat von »"ext"«

Die Übertragung eines symmetrischen Schlüssels ist kinderleicht sicher zu machen. Computer A schickt den öffentlichen Schlüssel für ein asymmetrisches Verfahren an Computer B, Computer B verschlüsselt damit den symmetrischen Schlüssel und schickt den an Computer A, Computer A nimmt den privaten Schlüssel und entschlüsselt den symmetrischen Schlüssel.
Jetzt besitzen nur Computer A und Computer B den Schlüssel und können miteinander über eine sichere Leitung kommunizieren.


Hier würde sich RSA anbieten. Kann man mit ein "wenig" Mathekentnisse recht gut selber implementieren. PGP nutzte dieses Verfahren in seiner Anfangszeit z.B.

Zitat von »"grek40"«

Ich glaube es geht darum, einmalig eine Liste mit mehreren Schlüsseln sicher zu übermitteln (per Hand,...) und dann später bei jeder abfangbaren Nachricht einen der Schlüssel zu verwenden.


Ja, genau so ist es gedacht. Wie gesagt, man muss sich z.B. nur auf ein Buch einigen und schon hat man schnell 800 Seiten voll Schlüssel. Da es Bücher mitlerweile auch digital gibt, ist die Entschlüsselung recht schnell erledigt.

34

06.03.2007, 17:43

Wie wäre es mit linearen/nichtlinearen Schieberegistern?

Hi, jetzt schalte ich mich hier auch mal ein. In dem Buch "Kryptographie" von Albrecht Beutelspacher gibt es eine gute Möglichkeit, One-Time Pads sicher zu verwenden: Schieberegister. Dies sind Zahlenreihen, die normalerweise ihre Stellen immer pro neuem Klartext um eins verschoben werden. Diese können aber auch rückgekoppelt werden, das heißt, dass mehrere/alle Zellen durch einen Operatoren verknüpft werden. Das Ergebnis wird in die erste Zelle eingespeist. Meist geschieht dies Binär.

und für alle, die's nicht verstanden haben:
erster Zustand ohne Rückkopplung: 1 0 0 0
2.: 0 1 0 0 usw.
mit Rückkopplung(2. und letzte Zelle werden addiert(xor) und in die erste eingespeist):
1.: 1 0 0 0
2.: 0 1 0 0
3.: 1 0 1 0 usw.
Die Zellen werden ausgelesen und als Schlüssel verwendet. Man kann auch anfangs einen Ursprungszustand auswählen, der dann der eigentliche Schlüssel ist. Ich hoffe, alle haben es verstanden. wenn nicht: googeln

35

14.03.2007, 14:33

XOR-Codierverfahren

Hi,
eine ganz einfache Verschüsselung geht natürlich auch mit XOR:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
pseudocode:
byte a;
byte b;
a = <zuverschlüsseln>;;
b = <schlüssel>;

a ^=  b;//a verschüsseln


a ^= b;//a entschlüsseln


edit: oh sorry - ich hatte das Ende dieser Posts nicht gelesen - jetzt ist's halt doppelt...

36

15.03.2007, 15:09

XOR ist definitiv kein sicheres Verschlüsselungsverfahren, es kann sehr schnell geknackt werden indem man einem Benutzer einen manipulierten Schlüssel sendet.

mfg
http://www.pennergame.de/functions/generate_signature_114955.jpg

Wo die Fähigkeiten aufhören ... fängt der Optimismus an

"Unendlichkeit ist der Mangel an Grenzen" Aristoteles

37

15.03.2007, 19:23

Codierverfahren::Gödelzahlen und transzendete Zahlen

zwei weitere Codier-Verfahren sind:

:arrow: Gödelzahlen
Idee: Primfaktorzerlegung ganzer Zahlen ist eindeutig
Algorithmus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
(Pseudo-Code)

int[] a = (Zahlen-Array);
int code;//die Gödel-Zahl


int Primzahl(int n)//die n-te Primzahl

{
  return (n-te Primzahl);
}


int GödelCodierung(int[] a)//Codiere a in die Gödelzahl

{
  int code = 1;

  for(i = 0,..,Länge(a))
  {
    code *= Pow( Primzahl(i), a[i]);
  }

  return code;
}

int[] GödelDekodierung(int code)//Dekodiere aus der Gödelzahl code den int-Array

{
  int[] a;
  
  int i = 0;//Zähler Primfaktoren

  int k = 0;//Zähler Ergebnis-Array a


  while(code != 1)
  {
    i=0;
    
    while( Teilbar(code, Primzahl(n) ) 
    {
       i++; 
       code /= Primzahl(n);
    }
  
    a[k] = i;
    k++
  }

  return a; 
}


Diese Methode ist eindeutig, da die Primfaktorzerlegung ganzer Zahlen eindeutig ist.

Bedeutung: Wissenschaftlich sehr wichtig(!), praktisch wohl eher ohne Bedeutung, da die
Gödel-Zahlen viel zu groß werden. Aber es ist doch gut zu wissen, daß man mit diesem
simplen Verfahren zum Beispiel Goethes Faust in eine einzige natürliche Zahl codieren kann!?

:arrow: transzendente Zahlen
Idee: transzendente Zahlen sind so gut wie Variablen, aber eben doch Zahlen
Algorithmus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
irat PI = 3,1415926...//eine über den rationalen Zahlen transzendente Zahl (e=2,718281... ginge z.B. auch)


irat CodeErzeugen(rat[] a)
{
  irat code = 0;

  for(i=0,..,Länge(a))
  {
    code += a[i] * Pow( PI, i );
  }

  return code;
}


Da transzendente Zahlen sich wie Variablen verhalten ist diese Codierung eindeutig.
Was man dabei macht ist: Man interpretiert rationale Zahlen (PI ist transzendent über
den rat. Zahlen!), die man codieren möchte, als Koeffizienten eines Polynoms über PI
und rechnet dieses Polynom dann aus.

Dieses Verfahren scheint für heutige Rechenmaschinen aber eher nicht praktikabel
(jedenfalls nicht auf einem PC, da man dort wegen des endlichen Speichers keine
Irrationalzahlen und somit keine über Q transzendenten Zahlen darstellen kann).
Mit einem Quantencomputer sähe die Sache wohl schon anders aus, da er unendlich
viele Zustände annehmen kann.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

38

15.03.2007, 20:11

Re: Codierverfahren::Gödelzahlen und transzendete Zahlen

Zitat von »"Passwort:"«

Aber es ist doch gut zu wissen, daß man mit diesem
simplen Verfahren zum Beispiel Goethes Faust in eine einzige natürliche Zahl codieren kann!?

Das geht auch viel einfacher. Schreibe den Text in eine Datei und interpretiere die Bitfolge dieser Datei als eine einzige binäre Zahl => fertig.

Und wie willst du das mit den transzendenten Zahlen hinkriegen?
Wie willst du die unendlich langen Ziffernfolgen speichern, die sich nie wiederholen? Doch wohl nicht in einem float ;)

Werbeanzeige