Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi bitte verschlüsselungsfunktion bewerten/testen (https://www.delphipraxis.net/57921-bitte-verschluesselungsfunktion-bewerten-testen.html)

Davidb 28. Nov 2005 18:45


bitte verschlüsselungsfunktion bewerten/testen
 
ich hoffe mal das ist hier die richtige stelle für meine frage/bitte.

also ich habe für ein schulprojekt eine verschlüsselungsalgo programmiert und wüsste jetzt gern was ihr dazu sagt bzw. ob ihr verbesserungsvorschläge habt oder andere anregungen.

jetzt zu der art der verschlüsselung:
die verschlüsselung arbeitet mit einem passwort das prinzipiell natürlich beliebig lang sein kann, es wird intern jedoch in einen hash mit 32 zeichen umgewandelt(mit dem DEC von hagen) weshalb ein längeres passwort eigentlich keinen sinn macht. mit diesem passwort werden dann die ersten 32 zeichen des zu verschlüsselnden textes xor verknüpft. dann wird aus dem hash wiederum ein hash gebildet mit dem die nächsten 32 zeichen xor verknüpft werden. und das immer so weiter bis der text zu ende ist.

für wie sicher haltet ihr diese verschlüsselung? habt ihr irgenwelche tipps?

natürlich könnte ich auch die verschlüsselungsfunktionen nutzen die im DEC enthalten sind, aber wie schon gesagt es ist für die schule und da zählt halt das selbermachen.

und hier noch die funktion:
Delphi-Quellcode:
procedure TForm1.codierenClick(Sender: TObject);
    var
      s: string;  //temp string des zu verschlüssenden textes
      i: Integer;
      j: Integer;
      n: Integer;
      Hpass: string;
begin
    Hpass := THash_MD5.CalcString(pass, nil, fmtHEX); //pass = das passwort das eingegeben wurde

    if length(pass) > 10 then begin
        j := 0;
        s := Inhalt.Text; //Inhalt.Text = text feld mit text der verschlüsselt werden soll
        for i := 0 to length(s) do begin
            j := i mod length(Hpass);
            n := Ord(Hpass[j]);
            n := n mod 31;
            s[i] := char(n Xor Ord(s[i]));
            if (j = 0) and (i <> 0) then begin
                Hpass := THash_MD5.CalcString(Hpass, nil, fmtHEX);
            end;
         end;
        Inhalt.Text :=s;

    end
    else
        Inhalt.Text := 'Sie müssen ein Passwort mit mehr als 10 Zeichen eingeben';
end;

supermuckl 28. Nov 2005 19:05

Re: bitte verschlüsselungsfunktion bewerten/testen
 
Zitat:

für wie sicher haltet ihr diese verschlüsselung
meiner meinung nach aus dem gefühl heraus unsicher - kann dir aber nicht genau sagen wie man es anderst machen sollte

2 sachen die mir aufgefallen sind:
dein hash hat zwar immer 32 zeichen (egal wie lang das ursprungspassword ist) und genau da ist der erste haken
ich kann da wunderbar mit bruteforce angreifen wenn das pass sehr kurz ist

das nächste ist wohl, das dir das garnix bringt, wenn du den hash mit sich selbst hashest. das ist sicherlich kein problem für einen, der deinen ersten hash bruteforced hat, ihn nochmal zu hashen *g*

Sharky 28. Nov 2005 19:22

Re: bitte verschlüsselungsfunktion bewerten/testen
 
Zitat:

Zitat von supermuckl
... dein hash hat zwar immer 32 zeichen (egal wie lang das ursprungspassword ist) und genau da ist der erste haken

Das ist eigentlich bei jedem Hash so oder? Und 32 Byte sind dann ein 256 Bit Hash. Um da eine Kollision zu bekommen wird dein Rechner einige hunder Jahre rechnen müssen.

Davidb 28. Nov 2005 19:36

Re: bitte verschlüsselungsfunktion bewerten/testen
 
Zitat:

dein hash hat zwar immer 32 zeichen (egal wie lang das ursprungspassword ist) und genau da ist der erste haken
ich kann da wunderbar mit bruteforce angreifen wenn das pass sehr kurz ist
naja das ist doch immer so, dass man wenn das pass sehr kurz ist es schnell herausbekommt

Zitat:

das nächste ist wohl, das dir das garnix bringt, wenn du den hash mit sich selbst hashest. das ist sicherlich kein problem für einen, der deinen ersten hash bruteforced hat, ihn nochmal zu hashen *g*
klar kann ihn jemand der ihn schon hat nochmal hashen, aber er bringt mir schon etwas, weil man den text jetzt nicht mehr durch häufikeitsanalyse entschlüsseln kann. es wird ja nach 32 zeichen immer mit einem "neuem" passwort verschlüsselt

supermuckl 28. Nov 2005 20:01

Re: bitte verschlüsselungsfunktion bewerten/testen
 
hmm stimmt aber irgendwie hat mich das iritiert o_O

tn249 28. Nov 2005 20:02

Re: bitte verschlüsselungsfunktion bewerten/testen
 
Naja sicher in welcher Beziehung?

-wenn der Angreifer darauf aus ist, das passwort zu entschlüsseln um dann eine umkehrfunktion deines algorithmus zu bauen, ist die methode genauso sicher/unsicher wie nur xor mit dem ganzen string und dem einen hash. Das liegt einfach daran weil alles eindeutig ab dem wissen über das pw ist. (vorrausgesetzt man kennt deine aglo, aber das dürfte mit google nicht so schwer werden)

-wenn er direkt an den text will, weiß ich nicht genau was passiert. ich habe noch keinen hash selbst gehasht und dann geschaut, was dabei rauskommt bzgl häufigkeit. den ansatz könntest du dir ja evtl. selbstweiterdenken

Gruß
Thomas

CalganX 28. Nov 2005 20:24

Re: bitte verschlüsselungsfunktion bewerten/testen
 
Hi David,
deine Verschlüsselung ist - und bleibt - eine XOR-Verschlüsselung, d.h. sie ist per se unsicher. Eine genaue Argumentation kann ich dir aber leider nicht liefern. Ich empfehle dir dafür auf Hagen zu warten. :mrgreen: Dass Xor jedoch unsicher ist, ist eine ziemlich weit verbreitete Meinung, die schon seine Richtigkeit hat. Das Hashen deines Passwortes bringt da rein gar nichts. Eher wird das ein Nachteil, wie supermuckl schon sagte. Aber der Hash alleine ändert nichts an der Sicherheit der Verschlüsselung.
Und dass du dein Passwort zweimal hasht, ändert ebenfalls nichts. Du nimmst dir die ersten 32 Byte und crackst die, nimmst die nächste 32 Byte und so weiter und so fort. Wege und Möglichkeiten gibts immer.

Also: ist und bleibt unsicher. ;)

Chris

Davidb 28. Nov 2005 20:35

Re: bitte verschlüsselungsfunktion bewerten/testen
 
Zitat:

-wenn der Angreifer darauf aus ist, das passwort zu entschlüsseln um dann eine umkehrfunktion deines algorithmus zu bauen, ist die methode genauso sicher/unsicher wie nur xor mit dem ganzen string und dem einen hash.
was meinst du damit das passwort entschlüsseln. gibt es eine möglichkeit (außer bruteforcen) das passwort herauszubekommen.

und eine umkehrfunktion braucht man nicht weil mit der verschlüsselungsfunktion auch entschlüsselt wird

und wenn man einen hash wieder hasht sollte das keine probleme ergeben schließlich arbeiten manche seiten im internet auch damit(heißt glaub ich one time password)

Zitat:

Das liegt einfach daran weil alles eindeutig ab dem wissen über das pw ist.
aber das ist doch immer so oder nicht? ich mein wenn du für einen verschlüsselten text hast und das passwort kannst du ihn auch entschlüsseln (vorausgesetzt du kennst den algo)

Davidb 28. Nov 2005 20:42

Re: bitte verschlüsselungsfunktion bewerten/testen
 
hallo chris,
das eine xor verschlüsselung grundsätzlich unsicher ist stimmt glaube ich so nicht es kommt nur darauf an wie sie eingesetzt wird und ich meine da jetzt nicht nur den OTP.

und ich glaube es ist nicht so leicht die ersten 32 zeichen zu cracken schließlich gibt es für die immerhin 2^255 möglichkeiten

ich bin aber gern berait mich eines besseren belehren zu lassen

david

Luckie 28. Nov 2005 20:47

Re: bitte verschlüsselungsfunktion bewerten/testen
 
Zitat:

Zitat von Chakotay1308
Hi David,
deine Verschlüsselung ist - und bleibt - eine XOR-Verschlüsselung, d.h. sie ist per se unsicher. Eine genaue Argumentation kann ich dir aber leider nicht liefern. Ich empfehle dir dafür auf Hagen zu warten.

Zitat:

Dass Xor jedoch unsicher ist, ist eine ziemlich weit verbreitete Meinung, die schon seine Richtigkeit hat.
Generell wäre ich mit solchen Verallgemeinerungen immer sehr vorsichtig. Wenn man XOR richtig implementiert und gewisse Bedingungen erfüllt sind, ist eine XOR Verschlüsselung sehr sicher. Näheres kann dir Hagen dazu sagen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:53 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz