AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte File-Crypter v1.0 [BETA]
Thema durchsuchen
Ansicht
Themen-Optionen

File-Crypter v1.0 [BETA]

Ein Thema von Luckie · begonnen am 9. Dez 2002 · letzter Beitrag vom 12. Dez 2002
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Benutzerbild von Luckie
Luckie
Registriert seit: 29. Mai 2002
Bitte intensiv testen. Danke

Das Programm ermöglicht es Dateien sicher zu ver- und entschlüsseln.

Features:
  • Passwortschutz der Dateien
  • RSA-Verschlüsselung
Beta: Die Callback-Funktion ist noch nicht implementiert, deswegen fehlt die Fortschrittsanzeige und ein abbrechen ist nicht möglich. Also nicht unbedingt gleich ganze Spielfilme verschlüsseln.

Link: File-Crypter
Ein Teil meines Codes würde euch verunsichern.
 
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#11
  Alt 9. Dez 2002, 15:16
Ich kann dazu leider wenig sagen, ich habe mich damit noch nicht richtig beschäfftigt.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

 
Delphi XE2 Professional
 
#12
  Alt 9. Dez 2002, 18:53
Zitat von Chakotay1308:
Die GNU(PP)-Prjekte sind zwar sehr sicher, aber der RSA bleibt da doch noch etwas vorraus. Ich weiß zwar nicht wie die DLL aussieht, aber eines kann ich dir sagen: RSA ist sicher!

Chris
Ich kenn mich mit der Materie ziemlich gut aus (beschäftige mich schon länger recht intensiv damit -> siehe meine Fachbereichsarbeit), du kannst mir also in allen Punkten vertrauen!

Ich hab nie gesagt, dass RSA unsicher ist! Sofern man sich an alle Sicherheitsmaßnahmen hält ist RSA sicher (zumindest bis jetzt)... es kommt allerdings sehr auf die Implementierung des Algorithmus an.. der Algo kann zwar mathematisch vollkommen korrekt sein, aber wenn er nur mit den Standard-C Variablentypen mit max. 64Bit arbeitet, dann ist das definitiv nicht sicher, da 64Bit lange Zahlen sehr schnell faktorisiert werden können!

Was das GNU Projekt betrifft das ich erwähnt habe.. das ist eine Bibliothek zum Rechnen mit großen Zahlen - damit kann man sich den RSA Algorithmus selbst implementieren, und schließlich weiß man vom eigenen Code immer noch am besten was er macht!


Zitat von Luckie:
Ich kann dazu leider wenig sagen, ich habe mich damit noch nicht richtig beschäfftigt.
Macht ja nix.. dazu gibts ja das Forum!
Ab sofern du mal beabsichtigst den Algorithmus selbst zu implementieren (mit einer OpenSource Bibliothek wie zb GMP) so würd ich mich bei Bedarf gern daran beteiligen! Hatte auch schon vor sowas selbst zu machen...
Manuel Pöter
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g
 
#13
  Alt 10. Dez 2002, 14:12
Hallo Leute,

ich poste einfach mal zur Information, wie der RSA-Algo ungefähr funktioniert:

---
Man erstelle drei zufällig erzeugte (je weniger Pseudo-Zufall, umso besser) Primzahlen z1, z2 und z3, für die gilt: die Schnittmenge von T(z3) und T((z1 -1)(z2 - 1)) ist leer (T() steht für die Teilermenge). Als nächstes bilde man ein Produkt p = z1 * z2.

Jetzt kommt die Erstellung des öffentlichen Schlüssels, mit dem nur verschlüsselt werden kann. Der öffentliche Schlüssel besteht aus den Zahlen z3 und p. Für die Klarziffer K und die verschlüsselte Botschaft B gilt nun: B = (K ^ z3) mod p.

Der geheime Schlüssel, mit dem entschlüsselt wird, besteht aus z1, z2 (und damit auch p) und z3. es wird nun ein geheimer Exponent g berechnet, für den gilt: G = 1 / z3 mod (z1 - 1)(z2 - 1). Nun kann min die Klarziffer K wie folgt berechnen K = (B ^ g) mod p.

Ein Beispiel: Es sei z1 = 13, z2 = 19 und z3 = 5. Daher gilt p = 247. der geheime Exponent g ist g = 0,2 mod 216 = 173. Will man nun die Klarzffer K = 12 verschlüsseln, so erhält man B = (K ^ z3) mod p = (12 ^ 5) mod 247 = 103. Mit dem geheimen Exponenten g ann man nun wieder K berechnen: K = (B ^ g) mod P = (103 ^ 173) mod 247 = 12.
---

Normalerweise wird RSA benutzt, um nachrichten zu verschlüsseln. Der Sender besitzt den öffentlichen Schlüssel de Empfängers, verschlüsselt die Nachricht damit und übergibt sie an den Empfänger. Der kann die Nachricht dann mit dem geheimen Schlüssel wieder entschlüsseln. Ein Cracker hat dann z3 und p aus dem öffenlichen schlüssel, braucht aber für den geheimen Exponenten g noch z1 und z2. Also muss er alle Möglichkeiten für z1 und z2 durchprobieren (er kennt schließlich das Produkt der beiden, p). Da diese beiden Zahlen sich normalerweise in der Größenordnung 10^200 aufhalten, dauert das zumindest mit heutigen Systemen Jahrhunderte.

Wenn jetzt diese DLL aus ein paar Zeichen Passwort einen Schlüssel generiert, dann kann es passieren, dass mehrere Passwörter den gleichen Schlüssel erzeugen, sehr unpraktisch.

Außerdem, und das ist es was Motzi meint, kann man bei Zahlen, die gerade mal 64 Bit groß sind, sich also in der Größenordnung 10^19 befinden, in erheblich kürzerer Zeit als Jahrhunderte faktorisieren, damit tendiert die Sicherheit schon sehr gegen null.

Was mich auch verwundert, ist: wo werden die Schlüssel gespeichert? Wenn das in der verschlüsselten Datei selber geschieht, dann liefert man dem Cracker sämtliche Instrumente auf dem Silbertablett, er wird danken. Damit wäre die Sicherheit genau null.

MfG,
d3g

PS. Wenn man den Algorithmus nachbauen will, wird man über die Modulo-Operation mit Fließkommazahlen stolpern. Die Standard-C-Bibliotheken beinhalten eine Funktion fmod(), die das beherrscht, leider habe ich sowas für Pascal noch nicht gesehen .
  Mit Zitat antworten Zitat
CalganX

 
Turbo Delphi für Win32
 
#14
  Alt 10. Dez 2002, 14:26
Mal zum RSA: Ich kenne das etwas einfacher:

-----
Man braucht 2 Primzahlen p und q. Diese Multipliziert man miteinander. Das Produkt ist der "Generalschlüssel" n.
Nun braucht man einen öffentlichen und einen privaten Schlüssel: d (decrypt) und e (encrypt). Sie kann man erzeugen durch folgende Regel:
Code:
e * d = 1 mod phi(n)
(Hierbei ist das = ein = mit 3 Strichen)
Dann hat man einen Text, den man als Zahlen darstellt (m). m muss kleiner sein als n. Um einen Text zu verschlüsseln macht man:
Code:
m^d (mod n)
Das ist dann meinetwegen C das ganze dann entschlüsseln mit
Code:
c^e (mod n)
-----

Den Beweis hatte ich auch irgendwann mal.

Chris

PS: Werde auf meiner Website bald mal eine Doku zum RSA machen...
  Mit Zitat antworten Zitat
CalganX

 
Turbo Delphi für Win32
 
#15
  Alt 10. Dez 2002, 14:28
Zitat von d3g:
PS. Wenn man den Algorithmus nachbauen will, wird man über die Modulo-Operation mit Fließkommazahlen stolpern. Die Standard-C-Bibliotheken beinhalten eine Funktion fmod(), die das beherrscht, leider habe ich sowas für Pascal noch nicht gesehen .
Ähm.. modulo (in Pascal/Delphi einfach mod als Operand wie +) gibt immer einen integer Wert zurück... Kann ja auch nur (zumindest beim RSA), da ja nur mit integer (ganzen Zahlen) gerechnet wird...

Chris
  Mit Zitat antworten Zitat
m-werk

 
Delphi 2009 Architect
 
#16
  Alt 10. Dez 2002, 14:42
Hi Luckie!

Ich hab mir dein Programm mal angesehen. Find ich gut. Wie du am anfang schon geschrieben hast, kommt ja noch ein Abbrechen Button und ein Fortschrittszeiger hinzu.

Eine Sache ist mir aufgefallen.
Wenn man eine Datei verschlüsselt, dann wird quasi eine Kopie vom Original erstellt und diese dann verschlüsselt.

Wenn mann dan genau diese Datei wieder entschlüsselt, dann wird nochmals eine Kopie erstellt.

Die entschlüsselte Datei muss mann dann immer Umbenennen.

Wäre es nicht sinnvoller die Original-Datei zu überschreiben beim Verschlüsseln und auch beim Entschlüsseln, so dass nur 1e Datei existiert?
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g
 
#17
  Alt 10. Dez 2002, 14:42
Hi Chakotay,

die Modulo-Operation ist definiert als n(mod m) = m * frac(n / m) und kann sehr wohl mit Fließkommazahlen operieren und das ist auch für RSA nötig:

Zitat von d3g:
G = 1 / z3 mod (z1 - 1)(z2 - 1)
Da z3 immer ganzzahlig ist, muss 1/z3 ein Bruch sein und ist (da z3 <> 1, weil 1 keine Primzahl ist) nie ganzzahlig.

MfG,
d3g
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

 
Delphi XE2 Professional
 
#18
  Alt 10. Dez 2002, 15:24
Irgendwie is mein Link zur Fachbereichsarbeit anscheindend nicht wirklich beachtet worden (liegt vielleicht auch daran, dass der Server zur Zeit ein paar Probleme hat).

Jedenfalls.. der Delphi-Operator mod funktioniert nur mit den Delphi-Standard Typen und ist daher für eine Implementation mit Zahlen > 10^200 gänzlich ungeeignet!

Außerdem arbeitet RSA mit ganzen Zahlen! Hier die entsprechenden Kapitel aus meiner Arbeit:

5.2 Mathematik
Die Sicherheit von RSA beruht auf der Schwierigkeit, große Zahlen zu faktorisieren (siehe auch Abschnitt 3.1.2.2). Öffentlicher und privater Schlüssel hängen von einem Paar großer Primzahlen ab (100 bis 200 Stellen und mehr). Man vermutet, dass die Wiederherstellung des Klartextes aus dem öffentlichen Schlüssel und dem Chiffretext äquivalent zur Faktorisierung des Produkts der beiden Primzahlen ist.

5.2.1 Schlüsselerzeugung
Um die beiden Schlüssel zu erzeugen, wählt man zufällig zwei große Primzahlen p und q.(Es gibt einige Kriterien, die bei der Wahl der Zahlen beachtetet werden sollten ? siehe dazu 8.1) Jetzt berechnet man:
Code:
n = p*q
phi = (p-1)*(q-1)
Anschließend wählt man den zufälligen Chiffrierschlüssel e so, dass gilt:
Code:
1 < e < phi
ggT(e, phi) = 1
Mit Hilfe des erweiterten Euklidischen Algorithmus (siehe Anhang 3) berechnet man schließlich den Dechiffrierschlüssel d so, dass gilt:
Code:
1 < d < phi
e*d = 1 (mod phi)
Oder anders ausgedrückt:
Code:
d = e^-1 (mod phi)
Die beiden Zahlen e und d werden Encryption Exponent bzw. Decryption Exponent genannt, während n den Modulus bildet.
Die beiden Paare <n, e> und <n, d> bilden den öffentlichen und den privaten Schlüssel.

Das Aussehen der mathematischen Formeln musste leider ein bisschen leiden..

Der Rest wäre zu aufwendig hier in BBCode umzuformatieren, aber wer Lust hat kann sich ja meine FBA zu Gemüte führen..

Edit: ich hab jetzt die FBA im PDF Format an das Posting angehängt...
Angehängte Dateien
Dateityp: pdf FBA-V1.0.PDF (431,4 KB, 32x aufgerufen)
Manuel Pöter
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#19
  Alt 10. Dez 2002, 15:42
@m-werk: Das resultiert noch aus der Testphase, da wollte ich es tunlichst vermeiden original Dateien zu überschreiben, weder beim verschlüsseln, noch beim entschlüsseln. Ich bin noch am überlegen, wie ich das löse. Eventuell mit eine Vorsilbe, dann kann man sie normal öffnen.

Um noch mal auf die Sicherheit zu sprechen zu kommen. Auch wenn die DLL nur mit den standard C Datentypen arbeitet und die ganz ausreizt - wie lange wird es wohl mit einem privat PC dauern, die Verschlüsselung zu knacken? Alles was über 1 bis 3 Wochen liegt, dürfte für Daten, die nicht unbedingt so sicherheitsrelevant, reichen.
Michael
  Mit Zitat antworten Zitat
CalganX

 
Turbo Delphi für Win32
 
#20
  Alt 10. Dez 2002, 17:12
Hi,
@ Motzi: Vielleicht liegt das einfach nur daran, dass keine weiß, wo deine Facharbeit zu finden ist...
@ Motzi (2): Das was du da zitierst, ist ja genau das, was ich geschrieben habe...!

Chris
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz