Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Crypt-Algorithmus sicher?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
07.10.2005, 21:29 Uhr
~Thomy
Gast


Moin,

ich hatte vor, als "produktive Eigenleistung" meiner Facharbeit, ein Programm zur Datenverschlüsselung zu proggen.

Nun wollt ich mal fragen, ob dieser Algoruthmus sicher ist (es gibt bestimmt Leute unter euch, die sich mit sowas auskennen ) :

- Man nehme 3 jeweils 1000 Byte Lange Schlüssel
- Jetzt nimmt man den ersten Schlüssel und verknüpft ihn mit XOR mit den ersten 1000 Bytes der Nachricht
- Jedes (der 1000) der daraus erhaltenen Chiffren verknüpft man dann noch mit dem ersten Zeichen des 2.- und dem ersten Zeichen des 3. Schlüssels
- Jetzt nimmt man die nächsten 1000 Bytes der Nachricht und verschlüsselt sie wieder mit Schlüssel 1, verknüpft dann aber mit dem zweiten Zeichen des 2. Schlüssels und dem ersten Zeichen des 3. Schlüssels

- Ist nun der 2. Schlüssel durch, nimmt nun aber nicht mehr das 1., sondern das 2. Zeichen des Dritten Schlüssels.

also


Period = Period2 = 0;


C++:
fread(Nachricht, sizeof(char), 1000, InFile);

for (a = 0; a < 1000; a++)
Nachricht[a] ^= Password[a] ^ Password2[Period] ^ Password3[Period2];

if (++Period == PWLen)
{
Period = 0;
if (++Period2 == PWLen)
Period2 = 0;

fwrite (Nachricht, ....);
}

usw..



Wiederhole nun das ganze, biss eof() von InFile erreicht.

Ist dieses Verfahren sicher, oder kann man es mathematisch knacken?


MfG Thomy

Und: Danke schonmal
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.10.2005, 21:38 Uhr
BoBtheREapER
kein job für nen BoB


also so ganz spontan: man kann ales knacken
aber sonst nicht schlecht würde ich sagen
--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.10.2005, 22:33 Uhr
~Thomy
Gast


Ok stimmt schon, mir reichts aber auch, wenn man ein paar Jahre dran rechnet, bis man ihn geknackt hat

Bis jetzt taucht aller 1000*1000*1000, also aller 1GB das gleiche Schlüsselzeichen auf.
Man könnte aber doch theoretisch eine rekursive Funktion erstellen, wellche dann beliebig viele Perioden hinzu berechnet....

MfG Thomy
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.10.2005, 11:22 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Prinzipiell ist der Algo schon zu knacken, läuft auf einen Pseudozufallszahlengenerator + One Time Pad raus. Die Periode selbst ist zwar schön hoch, naive statistikbasierte Angriffe funktionieren also erst bei großen Nachrichten, aber die Schlüssel sind mit sich selbst verknüpft und damit vorhersagbar, sobald ein gewisser Teil davon z.B. per Known Plaintext Attack geknackt ist. Außerdem ist der Gesamtschlüssel fast 3KB groß, und das ist "etwas" unpraktisch... nebenbei darf ein Schlüssel immer nur für EINE Nachricht verwendet werden, sonst ist die Sicherheit auch dahin...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.10.2005, 11:23 Uhr
Bruder Leif
dances with systems
(Operator)


Nachtrag: Theoretische und praktische Sicherheit sind immer zwei paar Schuhe. Es gibt viele kommerzielle Systeme, die in der Theorie niemand mehr vom Hocker reißen, und praktisch noch lange nicht geknackt sind
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
08.10.2005, 13:46 Uhr
~Thomy
Gast


Servus,

ok, wenn der Schlüssel zu groß ist, kann man doch auch ganz bequem einen 100Byte großen Key nehmen.
Nur, dass man den nur in 50 Schlüssel je 2Byte zerlegt und dann per For() oder rekursiv nun die 50 Schlüssel miteinander verknüpft.

Ergibt imerhin ne Periode von 2^50 = 1125899907000000Bytes

Kann man das dann immernoch knacken? (Naja, die Schlüssel sind ja immernoch miteinander verknüpft )


MfG Thomy
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
08.10.2005, 13:51 Uhr
(un)wissender
Niveauwart


Gehe das mal anders an. Das Ergebnis deiner Verschlüsselung unterliegt einer Symmetrie. Daraus kann man Rückschlüsse ziehen, zumindest bei Text, wie Leif schon sagte.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
08.10.2005, 13:54 Uhr
Spacelord
Hoffnungsloser Fall


Die Frage ist eigentlich nur:Wo kommt der Schlüssel her?
Wenn der im Klartext auf dem gleichen Rechner liegt...........

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
08.10.2005, 20:54 Uhr
0xdeadbeef
Gott
(Operator)


Das Verfahren sieht auf den ersten Blick nicht schlecht aus, aber sein Anwendungsbereich ist beschränkt. XOR-Verschlüsselungen sind generell leicht zu knacken, wenn man schon eine grobe Ahnung davon hat, was man eigentlich nachher rauskriegen will. Das macht es ungeeignet für alle Datenbestände, die bestimmten Einschränkungen unterlegen sind, zum Beispiel Klartext. Wenn ich weiß, dass die Nachricht, die da gerade verschlüsselt geschickt wird, Klartext ist, kann ich davon ausgehen, dass die meisten Zeichen darin < 128 und mit gesetztem 32er bit sind. Etwas weniger als die Hälfte wird außerdem das 64er bit gesetzt haben - all das sind Angriffspunkte, die eine solche XOR-Verschlüsselung potentiell aushebeln können.

Wenn ich dann zum Beispiel noch weiß, dass es eine E-Mail ist (oder ich halt das Format der Nachricht kenne) und damit große Teile des Headers schon im Voraus kenne, erfahre ich sehr schnell große Teile des ersten Schlüssels. Im schlimmsten Fall hat die Nachricht einen bekannten Header von mehr als 1000 Byte - die Implikationen sind offensichtlich.

Für kurze Nachrichten ist der Algorithmus besonders ungeeignet, denn dann brauche ich den zweiten und dritten Schlüssel nicht mal vollständig zu kennen. Den dritten Schlüssel muss ich erst ab einem Datenvolumen von einem Gigabyte vollständig kennen, bis zu einem Megabyte reicht es, wenn ich sein erstes Byte kenne. Analog gilt das für den zweiten Schlüssel bei Nachrichten unter einem Megabyte respektive einem Kilobyte.

Dazu kommt, dass XOR assoziativ ist, die mehrfache VerXORung also so oder so nur sehr begrenzt effektiv ist.

Für ne Facharbeit wird das Verfahren wohl reichen, aber in der echten Welt würde man sowas nicht einsetzen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
09.10.2005, 11:05 Uhr
~Thomy
Gast


Danke! - Mit den 50 Schlüssel a 2Byte wär es wohl das selbe Problem...

Hab mal noch eine Frage:
Wenn man jetzt die Nachricht in Blöcke aufteilt und die Position der Zeichen in einem Block vom Schlüssel abhängig macht, dann gäbe es ja (n!) Möglichkeiten.(n = Anzahl der Bytes pro Box; Naja, das eben erzählte steht wohl auch in jedem NetLexikon unter "Blockchiffrierung")

Die Frage: Wie mache ich die Positionen der Bytes in der Box von denen des Schlüsssels ahängig, also z.B, Wenn Byte1 des Schlüssels = "a", dann kommt Byte 1 der Box ans Ende der Box..(Ich weiß, seeehr schlechtes Beispiel... )

MfG Thomy
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: