Delphi-PRAXiS
Seite 4 von 12   « Erste     234 56     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   DEC 5.2 String hashen? (https://www.delphipraxis.net/192579-dec-5-2-string-hashen.html)

a.def 2. Mai 2017 19:33

AW: DEC 5.2 String hashen?
 
Mh ich habe das so realisiert (hoffe ihr haut mich nicht)
--- siehe Anhang Beitrag 34 ---

Ich habe ein kleines Programm welches nur den Code enthält um den Hash an eine Datei zu hängen. Alle anderen Dateien enthalten nur den Code um den Hash auszulesen.
Nachdem ich alles kompiliert habe, ziehe ich einfach meine Exe-Dateien in dieses kleine Tool, klicke den Button und jede Exe bekommt einen Hash verpasst.

nahpets 2. Mai 2017 20:05

AW: DEC 5.2 String hashen?
 
Das kann man noch ausbauen:

Baue einen AfterCompile-Experten.

Der hängt nach der erfolgreichen Kompilierung den Hash direkt an die Exe, dann sparst Du die die Nutzung des Tools und kannst auch nicht mal vergessen den Hash an 'ne Exe zu hängen.

Die von Dir geschrieben Funktionen kannst Du auch in 'nem Experten verwenden.

BrightAngel 2. Mai 2017 20:08

AW: DEC 5.2 String hashen?
 
Kurzer Zwischeneinschub: Wenn dein Ziel wirklich die kryptographische Sicherheit ist, dann würde ich dir nicht empfehlen diese selbst zu basteln. Es ist wirklich "mal schön" sowas zu auszuprobieren und daran herum zu probieren, aber im Allgemeinen ist das nicht wirtschaftlich, da es wesentlich einfachere Lösungen gibt. Eine Hashfunktion so zu konstruieren, sodass sie kryptographisch nicht so einfach angreifbar ist, ist schwer! Es muss "hinreichend" schwer sein Kollisionen künstlich erzeugen zu können. Die Funktion muss zusätzlich die "normalen" Vorteile erfüllen: möglichst breit "streuen", Berechenbarkeitsaufwand "vorhersehbar" deterministisch, ...
Fertige Primitive stehen auch stärker im öffentlichen Fokus, sodass Schwächen auch öffentlich im Interesse stehen und man davon mitbekommt. Die Funktionen sind so komplex, dass man sich auch gegen verdeckte Manipulation schützen kann.

Eine Idee als Lösung ist zum Beispiel das Kaskadieren verschiedener Hashfunktionen, das heißt das hintereinanderausführen verschiedener oder gleicher Hashfunktionen, die vielleicht dazwischen noch mit Klartext konkateniert werden, oder oder...

Gruß :thumb:,
Brighty

a.def 2. Mai 2017 20:30

AW: DEC 5.2 String hashen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Für alle die es interessiert, hier ist meine fertige Selftest-Unit.
Sie ist Writer und Reader in einem.
Aufgerufen wird in der DPR-Datei mit
Delphi-Quellcode:
THashFunctions.doSelfTest(<Dateiname>);
Verbesserungsvorschläge gerne erwünscht! Mit dem Onlinestellen dieses Codes möchte ich euch gerne zeigen, dass ich natürlich auch versuche Dinge umzusetzen, auch wenn ich mich super-doof anstelle bei 9 von 10 Gelegenheiten.

Delphi-Quellcode:
// Selbsttest ausführen, vorzugsweise am Anfang der DPR-Datei (?)
THashFunctions.doSelfTest(<Dateiname>);

// Einer Datei einen Hash unterjubeln
THashFunctions.setFileContentHash(<Dateiname>);

// Hash einer Datei manuell auslesen (warum auch immer)
THashFunctions.getFileAddedHash(<Dateiname>);
Zitat:

Wenn dein Ziel wirklich die kryptographische Sicherheit ist, dann würde ich dir nicht empfehlen diese selbst zu basteln. Es ist wirklich "mal schön" sowas zu auszuprobieren und daran herum zu probieren, aber im Allgemeinen ist das nicht wirtschaftlich, da es wesentlich einfachere Lösungen gibt.
Ist eher eine Spielerei, welche ich trotzdem anwenden werde. Ich biete Freeware an und verdiene kein Geld damit. Ob ich an einer Lösung 1 Stunde oder 1 Tag sitze, ist mir im Prinzip egal.

Michael II 2. Mai 2017 21:27

AW: DEC 5.2 String hashen?
 
Hallo a.def

nur kurz: Am Ende des Files fällt dein md5Hash auf wie ein bunter Hund.

In einem weiteren Schritt wirst du nun den Hash Code direkt irgendwo in deine Programm Exe schreiben ;-).

Eine Frage nebenbei: Wie vertreibst du deine Freeware? Wenn via Download von einer Webseite, dann musst du diese doch sicher irgendwann auch digital signieren - oder hast du derart hohe Downloadzahlen, dass Edge und Co den Download auch so zulassen?


Gruss
M

a.def 2. Mai 2017 21:34

AW: DEC 5.2 String hashen?
 
Zitat:

nur kurz: Am Ende des Files fällt dein md5Hash auf wie ein bunter Hund.
Ja, leider. Ich hätte sonst keine Idee wo man ihn verstecken könnte.

Zitat:

In einem weiteren Schritt wirst du nun den Hash Code direkt irgendwo in deine Programm Exe schreiben.
Ok das verstehe ich nicht. Was genau meinst du?
Wenn glaube zu verstehen was du meinst, dann schreibe ich dir das jetzt mal per PN :P

Zitat:

Wenn via Download von einer Webseite, dann musst du diese doch sicher irgendwann auch digital signieren - oder hast du derart hohe Downloadzahlen, dass Edge und Co den Download auch so zulassen?
Hatte bisher keinelei Probleme. VirusTotal hat bei meiner Exe auch nicht gemeckert (Detection ratio: 0 / 61).

Digital signieren wäre echt schön, ist mir aber zu teuer. Muss ich dafür nicht sogar meinen Sourcecode preisgeben?
Was würde ein digitales Zertifikat denn im günstigsten Falle kosten? Und wäre das dann auch alles seriös?

Was die Downloadzahlen angeht. Wenn ich ein Update veröffentliche dann schnellt mein Traffic mal gerne auf 10GB und mehr pro Monat.

Michael II 2. Mai 2017 22:00

AW: DEC 5.2 String hashen?
 
Dann hast du sicher riesige Downloadzahlen und deine User sehen nie "..diese Datei wird selten...".."...könnte schaden...trotzdem?"


Zur Zertifikatsfrage:
Du musst den Code selbstverständlich nicht preisgeben. Du signierst deine exe-Files auf deiner Kiste.

Die Preise für Zertifikate sind ziemlich verschieden. Ich habe meines von einem Reseller von comodo. Das Zertifikat selbst wird in meinem Fall (wie wenn ich es von comodo gekauft hätte) direkt von comodo ausgestellt.

Ich musste nach meinem Antrag eine Stromrechnung oder eine Telefonrechnung und eine Kreditkartenrechnung via eMail oder Fax einreichen. Auf diesen Rechnungen musste natürlich meine Adresse [die gleiche wie beim Zertifikatsantrag] stehen. Dann ging's ab zum Notar. Dieser beglaubigte meinen Ausweis (in CH Identitätskarte). Das beglaubigte Dokument musste ich danach irgendwo in die USA senden. Bei der Beglaubigung empfehle ich dir den Notar zu bitten, dass er es genau so macht wie vom Aussteller verlangt wird, sonst drehst du eventuell eine "Ehrenrunde Notar II" [Beglaubigungen werden nicht überall auf dieser Welt gleich ausgestellt. Eigentlich sollte die Beglaubigung natürlich so ausgeführt werden wie es bei dir oder mir üblich ist, aber... ;-)].

Wenn du als Firma eingetragen bist, dann sind gewisse dieser Schritte nicht nötig.

Darauf rief comodo bei mir an und fragte, ob ich ein Zertifikat beantragt hätte - und rief beim Notar an und fragte, ob er meine ID beglaubigt hätte.

Kurz nach diesem Anruf erhielt ich mein Zertifikat.

Falls du eins kaufst, dann entscheide dich für eines für mehrere Jahre, weil du je nach Aussteller beim nächsten Mal wieder durch die gleiche Mühle durch musst. [In der CH sind die Notarkosten kantonal geregelt - im Kanton Bern sind sie hoch - ich bezahlte mehr für die Beglaubigung als ich für 1 Jahr Zertifikat bezahlt hätte...]

Dort wo ich meins kaufe, kosten vier Jahre US$268. Du hast eventuell in Deutschland günstigere Reseller.

a.def 2. Mai 2017 22:05

AW: DEC 5.2 String hashen?
 
Ok das ist mir dann doch etwas zu teuer und für eine Freeware absolut nicht nötig.
Zur Edge-Meldung. Ich habe gerade meine Datei, die schon seit Dezember auf dem Server liegt, selber runtergeladen und diese Meldung nicht erhalten. Es war eine Exe-Datei.

Was den Hash angeht. Wo könnte man ihn denn sonst verstecken? Denn sobald ich den Inhalt meiner Exe mit notepad++ ändere, und auch wenn es nur 1 Byte ist, ist die Exe wohl "kaputt".

p80286 2. Mai 2017 23:26

AW: DEC 5.2 String hashen?
 
Zitat:

Zitat von a.def (Beitrag 1369933)
Ok das ist mir dann doch etwas zu teuer und für eine Freeware absolut nicht nötig.
Zur Edge-Meldung. Ich habe gerade meine Datei, die schon seit Dezember auf dem Server liegt, selber runtergeladen und diese Meldung nicht erhalten. Es war eine Exe-Datei.

Was den Hash angeht. Wo könnte man ihn denn sonst verstecken? Denn sobald ich den Inhalt meiner Exe mit notepad++ ändere, und auch wenn es nur 1 Byte ist, ist die Exe wohl "kaputt".

So ist das vgl.


Was u.U eine Möglichkeit wäre, Platz für den Hash und sein "Spiegelbild" vorbelegen, damit die Prüfsummenprüfung nicht zuschlägt.

Gruß
K-H

nahpets 3. Mai 2017 00:07

AW: DEC 5.2 String hashen?
 
Eigentlich "gaaaaanz" einfach ;-)

Definiere eine Stringkonstante im Quelltext.

Delphi-Quellcode:
csMD5 = '@@@@HashwertHashwertHashwertHashwert@@@@'


Dann berechnest Du den Hashwert unter Auslassung des Bereiches in der Exe, der von der Konstanten belegt wird. (Das zwischen den beiden @@@@.)

Den Wert der Konstanten ersetzt Du anschließend durch den Hashwert.

Beim Prüfen berechnest Du den Hashwert unter Auslassung des Bereiches zwischen den @@@@ und vergleichst ihn mit dem Wert zwischen den @@@@.

Soweit, so theoretisch.

Ich bleib lieber bei der Checksumme am Ende der Exe. Wer die Checksumme am Ende synchron zur Exe so manipulieren kann, dass Deine Prüfung nicht fehlschlägt, ändert sie auch irgendwo mitten in der Exe.

Wenn die Checksumme am Ende steht, so steht da ja noch nicht drin, über welchen Bereich der Exe sie gemacht wurde. Muss ja nicht die ganze Exe sein, könnten ja auch nur die ersten X Byte sein. Oder MD5-Checksumme einer MD5-Checksumme oder die Checksumme wird vorm Speichern noch mit irgend 'nem Wert gexodert ...

Oder anders:

Man kann's auch übertreiben.
Konsequent zuende gedacht kommt man hier dann zum klassischen Wettrüsten.

Code:
While Universum besteht do begin
  Krieg ich's noch sicherer?
  Die Sicherung kann ich knacken!
end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:26 Uhr.
Seite 4 von 12   « Erste     234 56     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