@Jelly, wenn dies so ist dann hast du schon einen guten Ansatzpunkt. Denn die Datenbank IST als sicher einzustufen. Dies ist gut denn nun kannst du auf Grund dieser Annahme darauf deine Sicherheit aufbauen.
Also: auf dem Server liegen zwei
SQL Datenbanken mit unterschiedlichem Passwort geschützt. Die eine
DB nennen wir mal User-
DB und die andere Daten-
DB.
In der User-
DB stehen alle registrierten Benutzer U, deren gehashtes Password Ph = H(P), und das mit diesem gehashten Ph verschlüsselte Passwort für Daten-
DB -> Pd = C(D, Ph) !
Beim Login muß der User seinen Name und Password P eingeben. Deine Anwendung greift mit Passwort User-
DB auf die User-
DB zu. Dieses Passwort steht hardcoded in deiner Anwendung und muß irgendwie schwer zu finden sein. Nun berechnet deine Anwendung Ph = H(P) und vergleicht es mit dem in der User-
DB gespeicherten Werten zum User U. Falls es korrekt ist wird Ph als Schlüssel benutzt um D = E(Pd, Ph) zu berechnen. D ist das Passwort zum Zugriff auf die Daten-
DB. H() ist eine Hashfunktion, C() eine Verschlüsselungsfunktion und E() die passende Entschlüsselungsfunktion. Nur mit richtigem Passwort P kann also der Schlüssel D berechnet werden. Die User-
DB sollte mit unterschiedlichen Zugriffsrechten versehen werden, d.h. nur der Administrator kann Datensätze ändern, anlegen und löschen. Der Administrator selber kann in dieser user-
DB gespeichert werden. Aber statt Passwort D wie die anderen User hat er ein eigenes Passwort A das diese Zugriffsrechte in der
SQL bekommen hat. Somit ist selbst wenn ein Angreifer auf die User-
DB zugreifen kann sichergestellt das er
1.) nicht auf die Daten-
DB zugreifen kann
2.) nicht die User-
DB ändern kann
Solltest du Kontrolle über die auf dem Server lauffähige Software haben dann könntest du natürlich auch viel sicherer Protokolle verwenden, z.B. SRP. Dies würde es absolut sicher machen, da SRP z.B. auf die Abwehr aller heutigen Angriffe konstruiert wurde. Allerdings SRP benötigt math. Funktionen wie in Public Key Verfahren üblich.
Aber eines dürfte klar sein, jeder Benutzer der Datenbank muß sich per Login mit seinem registrierten Passwort anmelden. Dieses Passwort des Benutzers MUSS in dessen Kopf gespeichert werden. Es sein denn am Clientrechner existiert zusätzliche Hardware wie SmartCards oder USB-Crypto-Tokens. Dann würde der Firmeneigner diese Schlüsselhardware an seine Mitarbeiter verteilen.
Gruß Hagen