Algorithmus für Verschlüsselung von Texten
-
- Beiträge: 5
- Registriert: Fr 28. Feb 2014, 23:08
- OS, Lazarus, FPC: Windows8.1 64bit (L 1.4.0 FPC 2.6.4)
- CPU-Target: x86
- Wohnort: Krefeld
Re: könntest du mit XOR-Verschlüsselung erledigen...
monta hat geschrieben:könntest du mit XOR-Verschlüsselung erledigen...
ist aber wirklich nur, um mal eben ein schnelles lesen zu verhindernCode: Alles auswählen
function Xor_Crypt(s: string; passzahl: Integer; decode: Boolean):string; var i, c, x: Integer; begin if decode then x := -1 else x := 1; RandSeed := passzahl; Result := ''; for i := 1 to length(s) do begin c := ord(s[i]); if c in [32..122] then begin c := c+(x*Random(90)); if (c<32) or (c>122) then c := c-(x*90); end; Result := Result + chr(c); end; end;
Hallo monte,
ich habe mir dein Beispiel mal angesehen und ich denke ich kann es im wesentlichen nach vollziehen.
Was ich allerdings nicht verstehe ist, warum, obwohl du ja tatsächlich bei chr (32) = SPACE beginnst, ein entspr. SPACE beim entschlüsseln verschluckt wird.
Ich kann's mir nicht erklären.
Hast du eine Erklärung?
LG Ullman
"When a man speaks in a forest, and no woman is there to hear him, is he still wrong?"
-
- Lazarusforum e. V.
- Beiträge: 395
- Registriert: Sa 15. Mai 2010, 13:46
- CPU-Target: 64 bit
- Kontaktdaten:
Re: Algorhytmus für Verschlüsselung von Texten
Nun, ich habe auch mal ein System geschrieben, das mit RSA gearbeitet hat. Ich habe es damals nach umfangreicher Recherche einfach nicht geschafft, eine Library dafür zu verwenden. Ja, der Wiki-Artikel zu RSA ist durchaus empfehlenswert. Die Herausforderung dabei besteht darin, zwei große Primzahlen zu finden, die modular Inverse und die schnelle modulare Exponentation zu berechnen. Aber in vielen Bibliotheken zum Rechnen mit großen Zahlen sind Funktionen dafür schon drinn'.
Zu symmetrischen Verschlüsselungen habe ich damals viel weniger brauchbares gefunden, obwohl die Anforderung eigentlich geringer ist. Im Prinzip benutzt man als Grundlage immer einen einfachen Algorithmus zum "mischen" von Informationen. Also XOR, oder eine Cäsar-erschiebung, also man verschiebt jeden Buchstaben um einen gegebenen Abstand im Alphabet. Wenn die verwendeten Abstände jedes Mal andere (zufällige) sind, ist es unmöglich, das zu knacken. Aber der Schlüssel muss dafür, wie schon mehrfach hier erklärt, genau so lang sein, wie der zu verschlüsselnde Text.
Alternativ kann man auch einen Pseudo-Zufallsgenerator verwenden, um aus einem kurzen Passwort einen beliebig langen Schlüssel zu berechnen. Aber um einiger Maßen unvorhersagbare Zufallszahlen zu berechnen, braucht man wieder große Primzahlen und modulare Operationen... Deswegen verschlüsseln Verfahren, wie AES, immer mehrmals, damit es auch, wenn man ein Stück des Geheimtextes kennt, möglichst schwer ist, das nächste Stück zu berechnen.
Aber mal im Ernst: Nach allem, was ich mit openSSL erlebt habe, seit ich das verwende, frage ich mich schon manchmal, ob ein selbst ausgedachter Algorithmus nicht doch sicherer ist. Immerhin hat ein Hacker dann kein fertigen Baukasten voll Tools, die alle möglichen Sicherheitslücken abtasten und wehe, man hat einen Fehler gemacht... Vielleicht kann ein Experte auf dem Gebiet die Verschlüsselung knacken, aber so ein Experte ist teuer und es muss sich schon lohnen, die Verschlüsselung zu brechen.
Zu symmetrischen Verschlüsselungen habe ich damals viel weniger brauchbares gefunden, obwohl die Anforderung eigentlich geringer ist. Im Prinzip benutzt man als Grundlage immer einen einfachen Algorithmus zum "mischen" von Informationen. Also XOR, oder eine Cäsar-erschiebung, also man verschiebt jeden Buchstaben um einen gegebenen Abstand im Alphabet. Wenn die verwendeten Abstände jedes Mal andere (zufällige) sind, ist es unmöglich, das zu knacken. Aber der Schlüssel muss dafür, wie schon mehrfach hier erklärt, genau so lang sein, wie der zu verschlüsselnde Text.
Alternativ kann man auch einen Pseudo-Zufallsgenerator verwenden, um aus einem kurzen Passwort einen beliebig langen Schlüssel zu berechnen. Aber um einiger Maßen unvorhersagbare Zufallszahlen zu berechnen, braucht man wieder große Primzahlen und modulare Operationen... Deswegen verschlüsseln Verfahren, wie AES, immer mehrmals, damit es auch, wenn man ein Stück des Geheimtextes kennt, möglichst schwer ist, das nächste Stück zu berechnen.
Aber mal im Ernst: Nach allem, was ich mit openSSL erlebt habe, seit ich das verwende, frage ich mich schon manchmal, ob ein selbst ausgedachter Algorithmus nicht doch sicherer ist. Immerhin hat ein Hacker dann kein fertigen Baukasten voll Tools, die alle möglichen Sicherheitslücken abtasten und wehe, man hat einen Fehler gemacht... Vielleicht kann ein Experte auf dem Gebiet die Verschlüsselung knacken, aber so ein Experte ist teuer und es muss sich schon lohnen, die Verschlüsselung zu brechen.
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: Algorhytmus für Verschlüsselung von Texten
Eine eigene Verschlüsselung geheim zu halten, ist das dümmste, was du tun kannst. Was ist, wenn du irgendwelche Operationen in der Verschlüsselung verwendest, für die es einen alternativen Weg gibt, den Text zu entschlüsseln? Wenn du weißt, dass niemand jemals deine verschlüsselten Texte sehen wird, kannst du ruhig deine eigene Verschlüsselung erfinden. Damit kann man den Klartext aber lediglich verschleiern. Solltest du tatsächlich Geheimnisse haben, solltest du lieber auf das Wissen von hunderten Kryptographen weltweit setzen und einen der standardisierten Algorithmen (AES, ECDSA etc.) umsetzen. Diese sind geprüft, begutachtet und selbst Banktransfers laufen damit ab und es hat noch niemand geknackt.MitjaStachowiak hat geschrieben:Aber mal im Ernst: Nach allem, was ich mit openSSL erlebt habe, seit ich das verwende, frage ich mich schon manchmal, ob ein selbst ausgedachter Algorithmus nicht doch sicherer ist. Immerhin hat ein Hacker dann kein fertigen Baukasten voll Tools, die alle möglichen Sicherheitslücken abtasten und wehe, man hat einen Fehler gemacht... Vielleicht kann ein Experte auf dem Gebiet die Verschlüsselung knacken, aber so ein Experte ist teuer und es muss sich schon lohnen, die Verschlüsselung zu brechen.
Wenn du nicht das Zeug hast, AES selbst zu implementieren, kannst du auch OpenSSL benutzen, da ist es bereits fehlerfrei implementiert. Wenn du allerdings deine eigene Verschlüsselung implementierst, weil du nicht in der Lage bist, AES korrekt zu implementieren, wirst du wohl kaum in der Lage sein, deine selbst erfundene Verschlüsselung analysieren zu können.
-
- Lazarusforum e. V.
- Beiträge: 395
- Registriert: Sa 15. Mai 2010, 13:46
- CPU-Target: 64 bit
- Kontaktdaten:
Re: Algorhytmus für Verschlüsselung von Texten
Nun, Hartblead beweist, dass auch OpenSSL nicht unfehlbar ist. Vor allem gibt es gewisse Fettnäpfchen, in die man da tappen kann. Zumindest bei den asymetrischen Verschlüsselungen. Identitätsprüfung des Zertifikates vergessen? Zertifikat abgelaufen? Private-Key bei einem Angriff auf den Server durch eine Sicherheitslücke in einer anderen Software gestohlen? Zufallsgenerator für Erstellen des Zertifikates korrumpiert?
Wenn man sich aber wirklich selber Gedanken um die Verschlüsselung macht, fallen einem viele Möglichkeiten für einen Angriff auf. Dann muss man entscheiden, ob man eine Lösung dafür einprogrammiert, oder ob die Daten doch nicht so geheim sind, als dass sich das lohnen würde. Aber wenn man mögliche Sicherheitslücken seiner Software kennt, wird man auch nicht leichtsinnig beliebig vertrauliche Informationen damit übertragen...
Natürlich setze ich mal vorraus, dass man für die eigene Verschlüsselung auch einen sicheren Zufallsgenerator verwendet, so, wie ich das oben beschrieben habe.
Wenn man sich aber wirklich selber Gedanken um die Verschlüsselung macht, fallen einem viele Möglichkeiten für einen Angriff auf. Dann muss man entscheiden, ob man eine Lösung dafür einprogrammiert, oder ob die Daten doch nicht so geheim sind, als dass sich das lohnen würde. Aber wenn man mögliche Sicherheitslücken seiner Software kennt, wird man auch nicht leichtsinnig beliebig vertrauliche Informationen damit übertragen...
Natürlich setze ich mal vorraus, dass man für die eigene Verschlüsselung auch einen sicheren Zufallsgenerator verwendet, so, wie ich das oben beschrieben habe.
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: Algorhytmus für Verschlüsselung von Texten
Meine Erfahrung zeigt das man in dem Bereich oft Betriebsblind ist. Du fühlst dich extrem sicher weil du aus deiner sicht ne supertolle Verschlüsselung gebaut hast. Und aushebeln kann man das ganze dann weil du vergessen hast auf irgend ne API deine Verschlüsselung anzuwenden. Da gibts so viel was man falschmachen kann. Bewirf dein Programm doch einafch mal mit Zuffalsdaten in dei Eingabefelder. Allein das brint schon 95% aller Programme zum aufgeben. Obwohl das eines der ersten Dinge ist die man beim Programmieren lernt.
Es ist definitiv ne gute idee Code so offen wie möglich zu halten. Das heisst nicht das nicht alle die sich das anschaun betriebsblind sind. Die Warscheinlichkeit das man aber als einzelner bei Closed Source was übersieht ist um ein vielfaches größer.
Es ist definitiv ne gute idee Code so offen wie möglich zu halten. Das heisst nicht das nicht alle die sich das anschaun betriebsblind sind. Die Warscheinlichkeit das man aber als einzelner bei Closed Source was übersieht ist um ein vielfaches größer.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Lazarusforum e. V.
- Beiträge: 395
- Registriert: Sa 15. Mai 2010, 13:46
- CPU-Target: 64 bit
- Kontaktdaten:
Re: Algorhytmus für Verschlüsselung von Texten
Naja, aber wenn die Struktur des Programmes nicht sicher ist, weil ich die Vertschlüsselung gar nicht auf alles angewendet wird, dann hilft auch eine Profi-Krypto-Komponente nicht.
Und offene Codes sind durchaus ein Risiko. Dann kann ein Angreifer ja in aller Ruhe meinen Code auf Fehler untersuchen. Ich habe seit ich programmiere noch NIE ein Bugreport erhalten. Und ich würde nicht sagen, dass meine Programme immer bugfrei sind
Die einzigen, die von offenen Codes profitieren, sind meiner Meinung nach die Hacker. Deswegen veröffentliche ich den sicherheitsrelevanten Kern meiner Codes nicht mehr.
Und offene Codes sind durchaus ein Risiko. Dann kann ein Angreifer ja in aller Ruhe meinen Code auf Fehler untersuchen. Ich habe seit ich programmiere noch NIE ein Bugreport erhalten. Und ich würde nicht sagen, dass meine Programme immer bugfrei sind

-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: Algorhytmus für Verschlüsselung von Texten
Naja bist ja nun auch nicht der grösste OSS Author
Bei Programmen mit Relevanz schauen schon ab und an mal Leute in den Code. Bei Delphi hätt ich nie die Möglichkeit. Bei Lazarus fällt zwar von meiner Siete auch nur ein patch pro Jahr raus aber ...
Ich weiss nicht wie ich das am anschaulichten erklären soll. Es ist oft erstaunlich einfach Systeme zu brechen. Und das wird umso einfacher umso weniger Leute sich gedanken drum gemacht haben. Nimm mal Fenster. Geh einfach mal zur Polizei und lass dir zeigen wie einfach es ist ein Standrdfenster aufzumachen. Mit Schlössern das selbe. Sicherheitsmaßnahmen können nur gut sein wenn möglichst viele Leute sie geprüft haben. Bei Kryptografie wird genau das gemacht. Jeder aktuelle Verschlüsselungsalgorythmus der etas relevanz hat ist offen.
Wenn an deiner Aussage irgendwas sinnvolles wäre, würden nicht alle aber auch alle Sicherheitsforscher das selbe machen und ihre algorythmen breit streuen.

Bei Programmen mit Relevanz schauen schon ab und an mal Leute in den Code. Bei Delphi hätt ich nie die Möglichkeit. Bei Lazarus fällt zwar von meiner Siete auch nur ein patch pro Jahr raus aber ...
Ich weiss nicht wie ich das am anschaulichten erklären soll. Es ist oft erstaunlich einfach Systeme zu brechen. Und das wird umso einfacher umso weniger Leute sich gedanken drum gemacht haben. Nimm mal Fenster. Geh einfach mal zur Polizei und lass dir zeigen wie einfach es ist ein Standrdfenster aufzumachen. Mit Schlössern das selbe. Sicherheitsmaßnahmen können nur gut sein wenn möglichst viele Leute sie geprüft haben. Bei Kryptografie wird genau das gemacht. Jeder aktuelle Verschlüsselungsalgorythmus der etas relevanz hat ist offen.
Wenn an deiner Aussage irgendwas sinnvolles wäre, würden nicht alle aber auch alle Sicherheitsforscher das selbe machen und ihre algorythmen breit streuen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Lazarusforum e. V.
- Beiträge: 395
- Registriert: Sa 15. Mai 2010, 13:46
- CPU-Target: 64 bit
- Kontaktdaten:
Re: Algorhytmus für Verschlüsselung von Texten
Bei Projekten ab einer gewissen Größe ist es sicher weise, die Codes zu veröffentlichen.
Bei meinem aktuellen Projekt geht es auch weniger um die Verschlüsselung selbst - denn das ist online und wenn es verschlüsselt sein soll, bleibt mir nichts anderes übrig, als HTTPS zu verwenden, aber das erzeugt laufende Unkosten bei meinen Kunden. Deswegen beobachtet man selbst bei Webauftritten mit professionellen CMSs oft ein Login über normales HTTP. Und die Benutzer davon haben keine Ahnung von dieser Sicherheitslücke und loggen sich auch mal auswärts über offene WLAN ein und schon isses gehackt
Jedenfalls ist mein Projekt nicht groß genug, als dass ich mit sicherheitsrelevanten Bugreports rechnen könnte. Daher lieber "geheime" Codes.
Bei meinem aktuellen Projekt geht es auch weniger um die Verschlüsselung selbst - denn das ist online und wenn es verschlüsselt sein soll, bleibt mir nichts anderes übrig, als HTTPS zu verwenden, aber das erzeugt laufende Unkosten bei meinen Kunden. Deswegen beobachtet man selbst bei Webauftritten mit professionellen CMSs oft ein Login über normales HTTP. Und die Benutzer davon haben keine Ahnung von dieser Sicherheitslücke und loggen sich auch mal auswärts über offene WLAN ein und schon isses gehackt

Jedenfalls ist mein Projekt nicht groß genug, als dass ich mit sicherheitsrelevanten Bugreports rechnen könnte. Daher lieber "geheime" Codes.
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: Algorhytmus für Verschlüsselung von Texten
Ne genau deswegen sollte man einfach gut abgehangene Algorythmen zur Verschlüsselung benutzen. Was für Umkosten soll den HTTPS erzeugen ? Und um welches projekt gehts ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Lazarusforum e. V.
- Beiträge: 395
- Registriert: Sa 15. Mai 2010, 13:46
- CPU-Target: 64 bit
- Kontaktdaten:
Re: Algorhytmus für Verschlüsselung von Texten
Nun, ich arbeite aktuell an meinem eigenen CMS (http://www.mitjastachowiak.de/?/Projects/Backend/). Ist im Moment ohne Lazarus. Aber wenn man auf einer Website einen halbwegs sicheren Login will, muss man HTTPS benutzen. Okok, inzwischen kann man auch mit JavaScript RSA-Verschlüsselung betreiben, aber ... nee, das ist echt ätzend. Vor allem, weil das JS ja vorher vom Server geladen wird - zumindest wer den Datenverkehr manipulieren kann, kann so ganz leicht ein korrumpiertes Script einschleusen. Da gibt es wie gesagt nur HTTPS.
Und ein Zertifikat kostet nun mal mindestens 1€/Monat. Meine Kunden zahlen ganz bestimmt kein Hostingangebot, wo ein Wildcard-Zertifikat dabei ist oder man ein eigenes Zertifikat benutzen kann
Die Sicherheit dieses Systems hängt bei mir von ... naja, vielleicht 400 Zeilen Perl-Code ab. Es gibt dann noch die Möglichkeit, den verschiedenen Benutzern unterschiedliche Berechtigungen zu geben. Ob diese umgangen werden können, ist noch mal eine andere Frage.
Und ein Zertifikat kostet nun mal mindestens 1€/Monat. Meine Kunden zahlen ganz bestimmt kein Hostingangebot, wo ein Wildcard-Zertifikat dabei ist oder man ein eigenes Zertifikat benutzen kann

Die Sicherheit dieses Systems hängt bei mir von ... naja, vielleicht 400 Zeilen Perl-Code ab. Es gibt dann noch die Möglichkeit, den verschiedenen Benutzern unterschiedliche Berechtigungen zu geben. Ob diese umgangen werden können, ist noch mal eine andere Frage.
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: Algorhytmus für Verschlüsselung von Texten
Zertifikate kosten nix, nur wenn man unbedingt ne ca braucht kostets was. Und CAś haben sich in der Vergangenheit nicht unbedingt als Sicherheitsvorteil erwiesen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Algorhytmus für Verschlüsselung von Texten
Du brauchst doch nicht unbedingt einen externen Zertifizierungs-Server-Dienst.MitjaStachowiak hat geschrieben:Und ein Zertifikat kostet nun mal mindestens 1€/Monat. Meine Kunden zahlen ganz bestimmt kein Hostingangebot, wo ein Wildcard-Zertifikat dabei ist oder man ein eigenes Zertifikat benutzen kann
Ich verwende z.B. "Dirvish" (also im End-Effekt den Standard-Linux-Befehl "rsync"), um täglich ein differenzielles Backup der Daten auf einem gemieteten Server auf meinen lokalen Server zu ziehen. Dazu macht mein Server Script-gesteuert automatisch ein SSH-Login (unter Verwendung der Verschlüsselung als "Passwort") und baut eine verschlüsselte Verbindung auf. Über diesen SSH-Tunnel läuft dann der Daten-Transfer.
Dazu musste ich nur mit ssh-keygen ein Schlüssel-Paar erzeugen und den "public"- und "privat" Key an den richtigen Stellen auf den beiden Rechnern ablegen. Das ist im Linux Standard. (-> z.B. http://www.schlittermann.de/doc/ssh.html )
Vermutlich kannst Du auch einen (kostenlosen) Zertifizierungs-Dienst auf einem eigenen Server anbieten. Ich vermute die Software dazu ist für Linux auch frei verfügbar.
-Michael