![]() |
Re: Schneller Code - Von Delete und Insert -> Copy ->
Zum Thema UPX und Co.:
Als Schutz bringt das nichts, da man dieses leicht wieder entpacken/entschlüsseln kann. Abgesehn davon, daß selbst bei gepackter/verschlüsselter EXE der Code(Algo) ungeschützt, ungepackt, unverschlüsselt im RAM liegt, denn sonst könnte Windows ja dein Programm nicht ausführen. :stupid: Und dazu liegt auch noch alles Nötige für die Entschlüsselung und/oder das Entpacken direkt in der EXE (sie muß sich ja selbst entpacken/entschlüsseln können). PS: such mal im Forum nach Beiträgen des Users "negah" (Hagen) ... ist einer der größten Verschlüsselungsexperten ... also gibt's viel guten Stoff zum lesen, aber nach den Beschreibungen hier, würd ich jetzt einfach mal vermuten, daß er deinen Algo in der Luft zerreißt und dirleicht beweißt, daß er unsicher ist ... sind halt, selbst wenn in guter und sicherer Kern dahinterstecken könnte, zuviele Schwachstellen drin, welche das Ganze wieder insgesammt unsicher machen ... jedenfalls scheint es mir so, denn wozu sollte es sonst nötig sein den Algo mit "billigen" Tricks zu verschleiern? |
Re: Schneller Code - Von Delete und Insert -> Copy ->
Zitat:
Theoretisch könnte ich den Algorithmus ja dann doch ins Forum schreiben. Ich werd drüber nachdenken. Was das copy angeht:
Delphi-Quellcode:
Dauer: 37 Sekunden
procedure TForm1.Button2Click(Sender: TObject);
var text1,text2: string; i,x: integer; begin text1 := FileToString('abc.xyz'); // datei hat nix zu sagen, dient als temp. Datenquelle x := length(text1); ShowMessage('Messung starten'); for i := 1 to 1000 do begin text2 := copy(text1,20000,500000 - 19999) + copy(text1,1,19999) + copy(text1,500001,x - 500000); end; ShowMessage('Fertig'); end;
Delphi-Quellcode:
Dauer: 11 Sekunden
procedure TForm1.Button5Click(Sender: TObject);
var text1,text2: string; i,x: integer; begin text1 := FileToString('abc.xyz'); // datei hat nix zu sagen, dient als temp. Datenquelle x := length(text1); ShowMessage('Messung starten'); for i := 1 to 1000 do begin SetLength(text2, x); // Speicher reservieren Move(text1[20000], text2[1], 500000 - 19999); Move(text1[1], text2[500001 - 20000], 19999); Move(text1[500001],text2[500001], x - 500001); end; ShowMessage('Fertig'); end;
Delphi-Quellcode:
Dauer: 47 Sekunden
procedure TForm1.Button7Click(Sender: TObject);
var text1,text2: string; i,x: integer; begin text1 := FileToString('abc.xyz'); // datei hat nix zu sagen, dient als temp. Datenquelle x := length(text1); ShowMessage('Messung starten'); for i := 1 to 1000 do begin SetLength(text2, x); // Speicher reservieren text2 := copy(text1,20000,500000 - 19999) + copy(text1,1,19999) + copy(text1,500001,length(text1) - 500000); SetLength(text2, x); MoveMemory(@text2[1], @text1[20000], 500000 - 19999); MoveMemory(@text2[500000 -19999 + 1], @text1[1], 19999); MoveMemory(@text2[500001], @text1[500001], x-500001); end; ShowMessage('Fertig'); end; Damit wäre diese Frage auch beantwortet. Mit Move kann man die Meiste Zeit einsparen, dann geht das ganze 3 mal so schnell :wink: Werd dies auch auf alle anderen Stellen übertragen, wo Zeichenketten zusammengefügt werden. Wieder etwas neues dazu gelernt :zwinker: Aber eine Frage habe ich jetzt noch: :gruebel: Wenn ich hier in Deutschland dieses Programm nun kostenlos zur Verfügung stelle, könnte ich dann von den anderen Ländern aus Ärger bekommen? Es liegt ja nahe, dass auch in diesen Ländern das Programm genutzt werden "könnte". Oder ist dann der Anwender schuld, der es benutzt? Ich bin gerade dabei das Programm ins Englische zu übersetzen. Kann ich da Probleme bekommen wenn ich das Online stelle, und auch Englisch unterstützt wird? Weil damit fördere ich ja quasi die Verbreitung auf den anderen Kontinenten. Kennt sich da jemand aus? Zitat:
|
Re: Schneller Code - Von Delete und Insert -> Copy ->
Hallo Lucky,
Ich weiß ja nicht warum Du gerne ein Patent auf deinen Algoritmus haben möchtest, vermute aber Du hast falsche Vorstellungen von den Möglichkeiten eines Patentes. 1) Wie schon oben angemerkt, gibt es in Europa keine Softwarepatente! Wenn es sich allerdings um die Steuerung eines bestimmten Gerätes handelt, sind die Chancen schon größer. 2) Gesetzt der Fall Du hast ein (erteiltes) Patent, dann hast Du zunächst nur ein Stück Papier auf dem Patent steht. Weiterhin wird in diesem Patent die Vorgehensweise Deines Programms veröffentlicht! Jeder kann also Lesen was Du Dir ausgedacht hast, und jeder weiß, da? es sich hierbei um Deine Idee handelt. 3) Geld kannst Du mit dem Patent nur verdienen, wenn Du eine oder mehrere Lizenzen verkaufen kannst. Damit vergist Du an Deine Lizenznehmer das Recht, deine Idee zu nutzen. Die andere Möglichkeit ist es einem Wettbewerber/Konkurrenten nachzuweisen, daß er Dein Patent nutzt, dann kannst Du per Gerichtsbeschluß eine Zwangslizenz oder einen Schadenersatz erzwingen. Du mußt nur nachweisen, daß er Dein Patent nutzt. 4) Mach bitte nicht den Fehler Patent=Idee zu setzen. Letztendlich wird durch das Patent das geschützt was Du beschrieben hast. Im pratischen Beispiel hast Du den Code durch die Verwendung von MOVE optimiert. Wenn ich stattdessen copy nutzen würde, müßte letztendlich ein Gericht entscheiden, ob ich Dein Patent verletze. Und ohne Urteil gibt's kein Geld. 5) Wenn Du denn ein Patent in den USA hättest, dann wäre die Nutzung auch nur in den USA geschützt und überall sonst auf der Welt könnte Dir jeder eine lange Nase drehen. Gruß K-H |
Re: Schneller Code - Von Delete und Insert -> Copy ->
Zitat:
|
Re: Schneller Code - Von Delete und Insert -> Copy ->
Zitat:
aber "Ideen sind wie Zahnpasta, man kann sie nicht wieder in die Tube zurück drücken". (ist leider nicht von mir!) Auf der anderen Seite wenn Du deine Idee nicht veröffentlichst, bekommt auch keiner mit wie gut Du bist! Gruß K-H |
Re: Schneller Code - Von Delete und Insert -> Copy ->
Zum Thema Patent...
Kannst Du mathematisch beweisen wieviele Möglichkeiten es braucht um den richtigen Schlüssel zu finden? Kannst Du mathematisch die Warscheinlichkeit des Auftretens von Mustern zur verkürzten Suche berechnen? Ich will dich nicht entmutigen, aber wenn nicht, kannst Du den Gedanken abschreiben das jemals Jemand Interesse an deinem Verfahren hat! "Glauben" ist halt nicht "Wissen" und wer heute hochsensible Daten verschlüsselt (und Gebühren für das Verfahren zahlt) der will halt "Wissen" wie sicher es ist. Schon oft haben sich scheinbar sichere Verfahren als einfach zu knacken herausgestellt, wenn erstmal ein Angriffspunkt gefunden ist. Wenn Du hunderte von Misch- und Umstellverfahren in einer Geheimen Reihenfolge anwendest mußt Du sicherstellen das keine Vereinfachung existiert: x*10/2 und x*5 sind unterschiedliche Operationen die zum gleichen Ergebnis führen. Wenn Du einen Rubik-Würfel verdrehst indem Du immer den gleichen Zug machst kommst Du irgendwann wieder zum Ausgangspunkt zurück, sagen wir mal nach 128 Zügen. Wenn Du jetzt drei verschiedene Züge mit je 128er Zyklus kombinierst (1,2,3,1,2,3,...) erwartest Du sicher einen Gesamt-Zyklus von 128*128*128=2097152 Zügen. Das wird selten der fall sein! Es wird Dir fast immer passieren, daß während dieser 2097152 Züge der Würfel mehrmals die Ausgangsposition durchläuft und in diesen Fällen sinkt die Anzahl der Möglichkeiten dann auf 2097152 geteilt durch die Anzahl der passagen der Ausgangsposition. Das Große Ziel der Kryptologie ist es also ein Verfahren mir einem möglichst großen und vor allem perfekten Zyklus ohne Wiederholungen zu finden. Da kommen die HASH-Funktionen wieder ins Spiel: Eine HASH-Funktion liefert zu einem Wert "A" einem Wert "B". Allerdings können mehrere verschiedene Werte "A" zum gleichen Wert "B" führen (der umgekehrte Weg ist also nicht eindeutig). HASH-Funktionen werden heutzutage von Mathe-Genies und Supercomputern Tag und Nacht analysiert um herauszufinden welche "A"s zum gleichen "B" führen. Es gibt bekannte HASH-Funktionen die lange als sicher galten bis man einen Weg fand mit relativ geringem Rechenaufwand zu einem bestimmten "A" alle Gegenstücke zu finden. Soviel ich weiß gibt es nur wenige HASH-Funktionen bei denen bis zum heutigen Tage keine Pärchen gefunden werden konnten. Ein Verschlüsselungsverfahren wird heute nur noch akzeptiert, wenn das Verfahren bekannt und für Jedermann zugänglich ist. Die Sicherheit darf nur von dem Schlüssel (oder den Schlüsseln) abhängen; nicht aber von dem Verfahren an sich. Darum wird auch bei jeder Verschlüsselung immer der Name angegeben (z.B. PGP). Es ist halt kein Geheimnis wie es funktioniert...das kann man im Internet nachlesen! Da Du uns aber nicht sagen möchtest wie Dein Verfahren funktioniert, folgere ich daraus, daß Niemand den verschlüsselungsvorgang kennen darf, weil er sonst in der Lage wäre deinen Code zu knacken. Daraus ergibt sich ein gewaltiges Sicherheitsloch: Du must dem Anwender ja eine Software geben, damit er die Daten wieder entschlüsseln kann. Ein Hacker wird den Binärcode deiner Software reassemblieren und sehen was dein Programm macht. Dagegen kann man nichts unternehmen. Ein Programm das ein Computer abarbeiten kann, kann auch ein Programmierer interpretieren. Und schon ist das Geheimnis kein Geheimnis mehr. Also wie willst Du mich von der Sicherheit deines Verfahren überzeugen damit ich es kaufe? Du kannst mir ja nicht sagen wie es funktioniert damit ich einschätzen kann ob es sicher ist. Jeder der was verkaufen will erzählt mir doch heute das blaue vom Himmel und sein Produkt sei das beste. Da verlange ich schon ein paar Expertiesen von namhaften Forschungsinstitutionen. Hast Du das Geld eine Solche Expertiese anfertigen zu lassen? Was wenn sich herausstellt, das eine Vereinfachung existiert oder dein Programm analysiert wurde? Die vertraulichen Daten all meiner Kunden können von jedermann im Internet gelesen werden. Meine Kunden verklagen mich auf Schadensersatz und ich bin pleite! Ich wiederum verklage dich auf mehrere Millionen! Wenn Du jetzt nicht nachdenklich geworden bist und Dir immer noch sicher bist dann wünsche ich Dir auf jeden Fall viel Erfolg (vielleicht kannst Du ja wirklich früher mit dem Arbeiten aufhören)! |
Re: Schneller Code - Von Delete und Insert -> Copy ->
Zitat:
Macht mindestens!!! 256^10 Möglichkeiten = 1208925819614629174706176 Möglichkeiten. Im Durchschnitt braucht man jedoch nur 604462909807314587353088 Versuche. Noch einmal möchte ich anmerken, für den Fall dass das Passwort minimal ist, also 10 Zeichen. Es wird länger sein, darum gibt es nahezu unmöglich viele Möglichkeiten. Gehen wir mal von einem Rechner aus, der knapp 4 mal so schnell wie der schnellste Rechner der Welt ist - also wir denken schon mal in die Zukunft vorraus. das wären 10^15 Befehle die er in einer Sekunde ausführen kann. Grob gerechnet, 1.000.000 mal so schnell wie nen durchschnitts PC. Wenn der Algorithmus exakt 5 Sekunden benötigt, und irgend jemand das irgendwie auf 1 Sekunde reduzieren könnte, dann bräuchte man zum Knacken durchschnittlich 19167393131891000 Jahre auf einem Handelsüblichen PC. Zweiter Fall: Der Super Rechner. Benötigt immer noch 19167393131 Jahre. :cheer: Zitat:
Zitat:
Zitat:
So etwas wie Hash Funktion gibts bei mir gar nicht. Einfach aber Sicher - davon bin ich überzeugt. Als ich mein Projekt im Infounterricht in 90 Minuten präsentiert habe, da hat mein Info Lehrer einfach nur "krass" gesagt, mehr nicht. Dort habe ich das Verfahren auf einfache Art und Weise erklärt. Zitat:
Zitat:
Wie gesagt, da gebe ich dir Recht. Darum werde ich den Algorithmus offen legen, wenn das Programm öffentlich ist. Dies wird anfang November sein. Ich verspreche, dass dieses Forum das erste sein wird, welches den Code einsehen kann. Dann dürft ihrs auseinander schlachten und negative Kritik äußern. Zitat:
Zitat:
Noch mal zu dem Post davor: Zitat:
Wie kann ich das machen? Das Programm ist eine normale Exe Datei. Da wird nichts installiert. Es wird zwar eine Readme.txt erzeugt und geöffnet, aber erst nach dem Programmstart. Wo kann ich eine solche Beschränkung also bekannt geben? Könnte ich so etwas schreiben wie: Falls sie nicht aus Deutschland sind, dann informieren Sie sich bitte, ob das Programm in Ihrem Land zugelassen ist. Es handelt sich hierbei um ein Verschlüsselungsverfahren, welches wohl sehr schwer zu knacken sein wird. Geht das? |
Re: Schneller Code - Von Delete und Insert -> Copy ->
Zitat:
ausserdem weigerst dich auch behaarlich, den code offen zu legen. spätestens beim wettbewerb werden sie deinen code auseinandernehmen und dir die schwachstellen auflisten. falls es das doch überleben sollte, solltest du vor einer veröffentlichung erst mal deinen quälcode hier prüfen lassen. ansonsten würd ich gleich auf eine veröffnetlichung verzichten. dann hast du das problem nicht, mit den unterschiedlichen rechtsvorschriften ... und schadensersatzforderungen ... für die lizinzfrage, musst du dir vor dem herunterladen und vor dem programmstart bestätigen lassen (am besten mit rückmeldung), dass das programm vom kunden nur im definierten rahmen (z. b. land) eingesetzt werden darf. z.b. über freischaltcode und registrierung. den code könntest dann direkt an die ECHSE ran hängen... dann kann er das progry auch auf 'n USB stick verwenden... |
Re: Schneller Code - Von Delete und Insert -> Copy ->
Zitat:
Dann hätte man den Spielraum von 0 bis 255. Grüße Klaus |
Re: Schneller Code - Von Delete und Insert -> Copy ->
Zitat:
guten Programmierer halbwegs gelesen werden. Zurück in einen Hochsprachen-Quelltext (Basic/Delphi/C++) kommt man nicht wirklich (Die meisten Strukturen und Variablennamen gehen beim Compilieren verloren). Zitat:
von uns weiß schließlich wieviel Du über die Mathematik weißt oder wie lange Du Dich schon mit dem Thema beschäftigt hast. Wir wollen nur das Du deinen Code selber kritisch betrachtest ob er unseren Bedenken standhält. Man will hier nur sicherstellen, daß Du kein Träumer bist den man auf dem Boden der Tatsachen zurückholen muß damit er sich nicht eventuell fürchterlich blamiert. Wie oft liest man nicht im Forum: "Ich habe seit gestern Delphi! Wie schreibe ich einen unknackbaren Code?" :stupid: :thumb: Ich drücke Dir jedenfalls die Daumen für den Wettbewerb! :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:35 Uhr. |
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