![]() |
Wie sicher ist das Verschlüsselt?
Liste der Anhänge anzeigen (Anzahl: 1)
Hi.
Ich habe eben aus eigenbedarf eine Klasse geschrieben, mit der ich Passwörter aus eine Ini-Datei schreiben, und später wieder auslesen kann. Das ganze natürlich verschlüsselt. Da ich überhaupt nicht einschätzen kann wie sicher das ganze ist, würde ich euch einfach mal bitten, zu versuchen das Passwort rauszukriegen. Also in der Ini steht ein Username (DelphiPraxis) und ein Passwort welches von mir mit einem euch unbekannten Algorithmus verschlüsselt wurde. Da diese Klasse in einem Programm für meine Schule zum Einsatz kommen soll, wäre es ziemlich wichtig die Sicherheit in etwa abschätzen zu können. Edit: Wer mir das richtige Passwort per PN sendet kriegt auch den Quelltext der Klasse wenn er will :) (und darf direkt Verbesserungen vorschlagen :stupid: ) |
Re: Wie sicher ist das Verschlüsselt?
Ich würde mal sagen, ohne das zugehörige Programm ist es fast unmöglich. Außer man Bruteforcet und sieht sich sämtliche Ergebnisse an.
|
Re: Wie sicher ist das Verschlüsselt?
Zitat:
wir hatten es afaik schon ein paar mal das allein die verschlüsselten Daten ausreichen :gruebel: Wobei du irgendwie recht hast. Oder? |
Re: Wie sicher ist das Verschlüsselt?
Zitat:
Entschlüsseln wird total erleichtert, wenn jmd. selbst Information hinzufügen kann. Dann kann er gucken wie diese abgelegt wird und bei unsicheren Methoden wahrscheinlich irgendwann zurückrechnen. Natürlich ist auch einfach Disassemblieren der Datei, die verschlüsselt eine einfache Möglichkeit auf den Algorithmus zu kommen. Ich denke nicht, dass es jmd. einfach nur durch die Ini-Datei glücken würde (obwohl, ne Ini hat ja wiederum eine Struktur...) Gruß Der Unwissende |
Re: Wie sicher ist das Verschlüsselt?
Hai glkgereon,
ich versuche mal mit meinen Worten zu sagen was Hagen an einigen Stellen geschrieben hat: Zitat:
|
Re: Wie sicher ist das Verschlüsselt?
Zitat:
Nenne mir bitte genau eine (die richtige) Summe mit einer unbekannten Anzahl an Summanden, die auf dieses Ergebnis führt (Hinweis: es ist nicht 40 + 2). Zitat:
|
Re: Wie sicher ist das Verschlüsselt?
Ach ja, wofür genau sind denn die Passwörter gedacht? Sind das Passwörter für dein Programm? Oder sind die für andere Programme und müssen dort eingefügt werden?
Wenn nur du eine Authentifizierung für dein Programm haben möchtest, ist es schon vollkommen ausreichend einen Hash (z.B. Md5) zu berechnen und abzuspeichern. Den kannst du ja noch zusätzlich verschlüsseln oder ähnliches (bräuchtest du aber denke ich nicht mal). Der ist halt einweg, den kannst du einfach aus einem Passwort berechnen (Achtung, Mindestlänge einhalten), aber es gibt keinen bekannten Weg das Passwort zurück zu rechnen. Also kannst du dann in deinem Programm einfach den Hash aus dem eingegebenen Passwort berechnen und mit dem Gespeicherten abgleichen. Dürfte recht sicher sein. |
Re: Wie sicher ist das Verschlüsselt?
OK, OK, überzeugt.
Die Daten sollen Zugangsdaten für einen MySQL-Server werden. also, der Verschlüsselungs-Algo sieht wie folgt aus:
Delphi-Quellcode:
und danach wird das ganze noch durch den Base64-Algo aus der CodeLib gejagt.
function TCryptedIniFile.Crypt(Value, Key: String): String;
var a,b: integer; begin b:=1; for a := 1 to Length(Value) do begin Value[a]:=Chr(Ord(Value[a]) xor Ord(Key[b])); inc(b); if b > length(Key) then b:=1; end; Result:=Value; end; Reicht das? PS: Wobei ein normaler "Hacker" diesen QT ja nicht zur Verfügung hat... |
Re: Wie sicher ist das Verschlüsselt?
Zitat:
Aber in der Regel würde man denke ich eher versuchen die Entschlüsselung aus deiner exe heraus zu bekommen, als dass man wahllos alles durchgeht, was prinzipiell möglich wäre. Denn gerade gegen Brute-Force gibt es doch sehr viele Ansätze (überleg dir einfach mal für Passwörter mit sagen wir mal 8 Zeichen, wieviele Möglichkeiten du pro zeichen hast, dass ganze hoch 8, schon mal verdammt große Zahl). Ok, jetzt kann dein super toller mega schneller Rechner auch ganz viele pro Sekunde abschicken, aber was wenn der Server nur eins pro Sekunde annimmt. Für jeden Menschen schnell genug, aber für eine Attacke? Und wenn du nun nach drei Falscheingaben ein Zwangspause einlegst, sagen wir mal 3 Sek. ... Dürfte keiner mehr miterleben, das der Rechner alles durchgegangen ist. Deshalb nutzt man eher Lücken im Programm (also deinem oder MySQL) die sind nicht unwahrscheinlich und senken die benötigte Zeit doch immens ab. Sicherheit gehört eindeutig zur Quantenphysik (nicht wegen Quantenrechner-Quatsch). In dieser hat alles nur eine gewisse Wahrscheinlichkeit (sogar die Vergangenheit). Absolute Sicherheit gibt es einfach nicht. Nur eine gewisse Wahrscheinlichkeit in welcher Zeit dein Code geknackt werden kann. Und wenn die dafür benötigte Zeit nur groß genug ist, wird wahrscheinlich keiner schaffen. Aber es könnte auch jmd. durch raten mit dem ersten Versuch dein Passwort erraten (da hilft keine Verschlüsselung). Kurz um, Verschlüsselung ist nicht die Schwachstelle die genutzt werden würde. Gruß Der Unwissende |
Re: Wie sicher ist das Verschlüsselt?
Versuche mal als Value einen String aus lauter #0 Zeichen zu verschlüsseln. Du wirst sehen das im CipherText 1 zu 1 dein Verschlüsselungskey drinnen steht. Ein möglicher Angriff ist also die "Known Plain Text Attack" bei dem ich dir eben einen Value aus lauter #0 Zeichen unterjubel. Dein verschlüsselter Wert liefert mir dann frei Haus deinen Schlüssel. Ich muß dir aber garnicht einen Value aus #0 zeichen unterjubeln, JEDER beliebige Wert reicht aus.
Es gilt: nehme zur Verschlüsselung niemals direkt das Passwort ! Weiter gilt: eine compilierte Softare ist genauso gut wie ein lesbarer Source ! Heist auch wenn du deinen Algo. nicht als Source oder Dokumentation veröffentlichst, so ist eine veröffentlichte Software genauso gut wie ein Source zu analysieren. Ergo: einen Algorithmus geheim zu halten reduziert die Sicherheit auf -X Prozent. Man muß dann davon ausgehen das ein Angreifer denoch den Algo. kennt und diesen schon längst gebrochen hat. Desweiteren gilt aber auch das der Benutzer des Algos irrtümlicher Weise annimmt das keiner diesen Algo kennt, er verlässt sich also darauf und verschlüsselt munter weiter OHNE Mißtrauen. Die Sicherheit verkehrt sich in das Gegenteil und deshalb diese -X Prozent ! Es wäre dann nämlich viel sicherer garnicht zu verschlüsseln da dann der Benutzer davon ausgehen muß das dies unsicher ist und demzufolge sein Handeln im Umgang mit seinen Daten entsprechend anpassen wird. Zitat:
Aber! der feine Unterschied zwischen dem einem Verfahren und dem anderen liegt in deren mathematisch BEWEISBAREN Komplexität des Aufwandes diesen zu knacken. Während bei deinem Verfahren es 1.) geheim ist 2.) kein mathematischer Beweis deinerseits vorliegt das es sicher sein muß gibt es andere Verfahren die 1.) öffentlich bekannt und analysiert wurden 2.) mathematisch bewiesen und berechnbare Komplextität besitzen 3.) die Komplexität so hoch ist das es praktisch defakto unmöglich zu knacken ist 4.) vielfach standardisiert und breitbandig benutzt werden Streng genommen muß also jeder Laie in jedem Falle immer irgend jemandem vertrauen. Vertrauen heist nun das besonders derjenige dem man sein Vertrauen schenken muß dieses Vertrauen jederzeit brechnen kann (zu ungunsten des Laien natürlich). Es gibt KEINEN Weg, und wird es auch nicht geben, der technisch mathematischen Kontrolle dieses Vertrauens. Das Einzigste was man dagegen tuen kann ist die kollektive Kontrolle des Vertrauens in denjenigen der das Vertrauen geschenkt bekommen hat. Somit schließt sich der Kreis zur Behauptung "Sicherheit muß öffentlich sein" und ergo musst du deinen Algorithmus veröffentlichen damit er als wirklich sicher verifiziert werden kann. Politisch gesehen ist diese krypt-mathematisch bewiesene Aussage sehr interessant, da sie nämlich einen Geheimdienst ansich als was nicht kontrollierbares beweist. Gruß Hagen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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