Autor |
Beitrag |
JRegier
      
Beiträge: 1268
Win XP Home, Prof, 2003 Server
D6 Enterprise
|
Verfasst: Mo 29.08.05 07:50
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| MOV EAX, [ESP] OR byte ptr [OFFSET CodeBuf], AL MOV EAX, [EBP+EDI] MOV byte ptr [EDX+OFFSET CodeBuf], AL INC EDX JMP @Encode9 |
Das hier ist ein CodeAusschnitt aus nem Encrypter Descrypter und ist von einer CD mit 500 Delphi Tools
die ich bei eBay erworben habe! Ich will damit Passwörter verschlüßeln und entschlüßeln! Was kann
man da ändern damit's läuft?
Oder kennt Ihr eine andere Componente die Verschlüßeln und Entschlüßeln kann?
|
|
MrSaint
      
Beiträge: 1033
Erhaltene Danke: 1
WinXP Pro SP2
Delphi 6 Prof.
|
Verfasst: Mo 29.08.05 09:02
Also wenn es um Passwörter verschlüsseln geht sollte man die Hashes (z.B. MD5) von den Passwörtern speichern und die dann vergleichen. Such mal im Forum, wurde schon oft genug diskutiert
MrSaint
EDIT: bei meinem D6Pro funktioniert die Assembler-Zeile übrigens! Was hast du für ein Delphi?
_________________ "people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
|
|
JRegier 
      
Beiträge: 1268
Win XP Home, Prof, 2003 Server
D6 Enterprise
|
Verfasst: Mo 29.08.05 09:32
MrSaint hat folgendes geschrieben: | Also wenn es um Passwörter verschlüsseln geht sollte man die Hashes (z.B. MD5) von den Passwörtern speichern und die dann vergleichen. Such mal im Forum, wurde schon oft genug diskutiert
MrSaint
EDIT: bei meinem D6Pro funktioniert die Assembler-Zeile übrigens! Was hast du für ein Delphi? |
Ja aber wie ich es verstanden habe kann man die nicht entschlüsseln und das brauche ich!
|
|
MrSaint
      
Beiträge: 1033
Erhaltene Danke: 1
WinXP Pro SP2
Delphi 6 Prof.
|
Verfasst: Mo 29.08.05 09:35
Nein die kann man dann nicht mehr "entschlüsseln" und das ist normalerweise auch ganz gut so. Dann kann ein potenzieller Angreifer die Passwörter nicht entschlüsseln und muss per BruteForce versuchen das Passwort rauszubekommen und das kann ja bekanntlicher weise sehr lang dauern...
Warum musst du die Passwlrter wieder entschlüsseln?!?
MrSaint
EDIT: Buchstabendrher rausgemacht 
_________________ "people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
|
|
JRegier 
      
Beiträge: 1268
Win XP Home, Prof, 2003 Server
D6 Enterprise
|
Verfasst: Mo 29.08.05 09:51
MrSaint hat folgendes geschrieben: | Nein die kann man dann nicht mehr "entschlüsseln" und das ist normalerweise auch ganz gut so. Dann kann ein potenzieller Angreifer die Passwörter nicht entschlüsseln und muss per BruteForce versuchen das Passwort rauszubekommen und das kann ja bekanntlicher weise sehr lang dauern...
Warum musst du die Passwlrter wieder entschlüsseln?!?
MrSaint
EDIT: Buchstabendrher rausgemacht  |
Eine Anwendung in der man Gruppen einrichtet mit Passwörter und dann z.B. hat ein Benutzer das Passwort vergessen soll der Administrator nach eingabe
seines Passwortes das Passwort dieses Benutzers einsehen kann und dem mitteilen kann! Oder z.B. ich speichere das Passwort für den Zugriff
auf eine MySQL Datenbank und wenn ich es verschlüßele zum Speichern dann muß ich ja später entschlüsseln um auf die MySQL DB wieder mit dem
richtigen Passwort zugreifen zu können! Oder muß da zur DB die Transaktion dieser Passwörter auch verschlüßelt sein?
|
|
MrSaint
      
Beiträge: 1033
Erhaltene Danke: 1
WinXP Pro SP2
Delphi 6 Prof.
|
Verfasst: Mo 29.08.05 09:57
Also der Sicherheit wegen würd ich das dann halt so machen, dass bei Vergessen des Passworts eben vom Admin ein neues Passwort gesetzt wird. Der Admin muss das natürlich können.. So wie's in den phpBBs auch gemacht wird! Ist meiner meinung nach die sicherste Möglichkeit, ansonsten geht man immer Gefahr, dass ein unbefugter "einfach" das Passwort entschlüsselt und schon hat er Zugriff..
MrSaint
_________________ "people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
|
|
JRegier 
      
Beiträge: 1268
Win XP Home, Prof, 2003 Server
D6 Enterprise
|
Verfasst: Mo 29.08.05 10:16
MrSaint hat folgendes geschrieben: | Also der Sicherheit wegen würd ich das dann halt so machen, dass bei Vergessen des Passworts eben vom Admin ein neues Passwort gesetzt wird. Der Admin muss das natürlich können.. So wie's in den phpBBs auch gemacht wird! Ist meiner meinung nach die sicherste Möglichkeit, ansonsten geht man immer Gefahr, dass ein unbefugter "einfach" das Passwort entschlüsselt und schon hat er Zugriff..
MrSaint |
Und was ist mit dem Passwort für den Zugriff auf die MySQL Datenbank? Ich verstehe ja also wenn seitens des Benutzers ein Passwort eingegeben
wird und es wird verschlüsselt und mit dem gespeicherten verglichen! Aber wie willst du das für den Zugriff auf die MySQL DB machen?
Also du must ja schon verschlüßeln zum Speichern und wenn du dann nicht entschlüsseln kannst, wie greifst du auf die MySQL DB mit dem richtigen
Passwort zu`?
Weil bei mir ist das PW für die Anwendung <> PW für die MySQL DB!
Wenn der Benutzer ja gleich das PW für die MySQL DB bekommt kann der auf anderem Wege außerhalb der Arbeitszeit auf die DB zugreifen und
unfug machen!
|
|
MrSaint
      
Beiträge: 1033
Erhaltene Danke: 1
WinXP Pro SP2
Delphi 6 Prof.
|
Verfasst: Mo 29.08.05 10:25
ah, jetzt hab ich dich verstanden!  Naja, in dem Fall würde wohl nur helfen, den User das Passwort für die MySQL DB eingeben zu lassen! Oder das MySQL-DB-Passwort dem User-Passwort gleichsetzen. Weil das Userpasswort gibt er ja klartext ein. Sollte das stimmen (nach ner Überprüfung mit dem irgendwo gespeicherten Hash) benutzt du dieses Passwort auch für die MySQL DB!
MrSaint
_________________ "people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
|
|
JRegier 
      
Beiträge: 1268
Win XP Home, Prof, 2003 Server
D6 Enterprise
|
Verfasst: Mo 29.08.05 10:35
MrSaint hat folgendes geschrieben: | ah, jetzt hab ich dich verstanden! Naja, in dem Fall würde wohl nur helfen, den User das Passwort für die MySQL DB eingeben zu lassen! Oder das MySQL-DB-Passwort dem User-Passwort gleichsetzen. Weil das Userpasswort gibt er ja klartext ein. Sollte das stimmen (nach ner Überprüfung mit dem irgendwo gespeicherten Hash) benutzt du dieses Passwort auch für die MySQL DB!
MrSaint |
Verstanden? Und weiter geht's
Wenn aber z.B Benutzer aus Verschiedenen Abteilungen auf die eine DB zugreifen! Die einen in der Qualitätssicherung die anderen in der Personalabteilung usw. vieleicht ein blödes Beispiel da ja PA und QS nichts miteinander zu tun haben, verstehste,
die müßten ja nicht alle das gleiche Passwort haben! Du verstehst?
|
|
MrSaint
      
Beiträge: 1033
Erhaltene Danke: 1
WinXP Pro SP2
Delphi 6 Prof.
|
Verfasst: Mo 29.08.05 10:47
Nee, ich meinte, dass du dann für jeden User (also wohl für jeden Mitarbeiter in der Firma) einen separaten User in MySQL anlegst. Und dieser User hat dann halt Zugriffsrechte je nach Abteilung und sein eigenes Passwort (das mit dem aus deinem Programm übereinstimmt).
BTW: du weißt schon dass wenn man MySQL kommerziell benutzen will, man da ne Lizenz kaufen muss? Musst mal genau nachschauen ob das auch so ist, wenn man es in der eigenen Firma benutzt, aber wenn man es mit seinem Programm dann verkauft kostet das! Außer ich hab das falsch in Erinnerung  Ich würd das aber zur Sicherheit mal checken!
MrSaint
_________________ "people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
|
|
noidic
      
Beiträge: 851
Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
|
Verfasst: Mo 29.08.05 10:49
Also Benutzer-Anmeldenamen und Datenbanknamen gleich zu setzen halte ich für ungünstig, wie der OP bereits gesagt hat wäre es so jedem Mitarbeiter möglich, an der Anwendung vorbei auf die Datenbank zuzugreifen.
Für die Verschlüsselung gibt es verschiedene Algorithmen wie z.B. AES. Da müsste es auch Delphi-Units für geben, vllt. mal bei Torry oder google nach schaun.
_________________ Bravery calls my name in the sound of the wind in the night...
|
|
JRegier 
      
Beiträge: 1268
Win XP Home, Prof, 2003 Server
D6 Enterprise
|
Verfasst: Mo 29.08.05 11:00
MrSaint hat folgendes geschrieben: | Nee, ich meinte, dass du dann für jeden User (also wohl für jeden Mitarbeiter in der Firma) einen separaten User in MySQL anlegst. Und dieser User hat dann halt Zugriffsrechte je nach Abteilung und sein eigenes Passwort (das mit dem aus deinem Programm übereinstimmt).
BTW: du weißt schon dass wenn man MySQL kommerziell benutzen will, man da ne Lizenz kaufen muss? Musst mal genau nachschauen ob das auch so ist, wenn man es in der eigenen Firma benutzt, aber wenn man es mit seinem Programm dann verkauft kostet das! Außer ich hab das falsch in Erinnerung Ich würd das aber zur Sicherheit mal checken!
MrSaint |
Nein meine Anwendung soll nur auf DB zugreifen! Was MySQL angeht hab ich dann nichts am Hut!
|
|