AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi verschlüsselte Felder in DB per Select auswählen?
Thema durchsuchen
Ansicht
Themen-Optionen

verschlüsselte Felder in DB per Select auswählen?

Ein Thema von Nju · begonnen am 19. Jan 2006 · letzter Beitrag vom 31. Jan 2006
Antwort Antwort
Seite 1 von 2  1 2      
Nju

Registriert seit: 16. Jun 2004
41 Beiträge
 
#1

verschlüsselte Felder in DB per Select auswählen?

  Alt 19. Jan 2006, 09:36
Datenbank: MS Access • Version: 2003 • Zugriff über: ADO
Hallo,
ich benutze MS Access als Grundlage eines Produktes und stehe nun an einem Problem. Da die Sicherheit von Access allgemein mies ist, musste ich eine Tabelle nehmen, in der sämtliche Daten, also jedes Feld einzeln, mit dem selben Schlüssel verschlüsselt worden ist.

Das Problem bei der ganzen Sache ist nun allerdings, dass eine einfache Select-Anweisung so nicht mehr greift, da die Daten ja vorher entschlüsselt werden müssen, bevor ich es als Klartext auswerten kann.

Ein vorheriges Einlesen in ein Array kommt auch nicht in Frage, da ungefähr 30000 Datensätze in der Tabelle vorhanden sind und somit die Speicherbelastung zu groß wäre. Kann mir da jemand einen pfiffigen Lösungsansatz nennen?

Gruß

Frank alias Nju
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#2

Re: verschlüsselte Felder in DB per Select auswählen?

  Alt 19. Jan 2006, 10:04
Wäre es prinzipiell machbar, die die Selektionskriterien enthaltenden Variablen ebenfalls zu verschlüsseln? Beim Aufbau eines SQL-Strings gäbe es damit sicher Probleme, aber per Parameter müsste es doch gehen? Das würde aber, wenn überhaupt, nur mit Strings und dann auch nur für die Selektion nach Gleichheit funktionieren.
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Nju

Registriert seit: 16. Jun 2004
41 Beiträge
 
#3

Re: verschlüsselte Felder in DB per Select auswählen?

  Alt 19. Jan 2006, 10:16
Inwiefern meinst du das? Es wäre sehr freundlich, wenn Du mir ein Beispiel geben würdest (in Bezug auf "Übergabeparameter").
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: verschlüsselte Felder in DB per Select auswählen?

  Alt 19. Jan 2006, 10:21
Zitat von Nju:
ich benutze MS Access als Grundlage eines Produktes und stehe nun an einem Problem. Da die Sicherheit von Access allgemein mies ist, ...
Das stimmt so nicht.
Man kann einer Access-Datenbank ein Datenbankkennwort verpassen.
Dafür gibt es im Internet Programme, die das Passwort ermitteln können.

Man kann aber auch mit einer Workgroup-Datei (*.MDW) arbeiten.
Man kann so jeder Tabelle oder View bestimmte Berechtigungen erteilen.
Die Datenbank kann nur zusammen mit der *.MDW Datei sowie User und Passwort geöffnet werden.
Wenn User und Passwort nur innerhalb deiner Anwendung bekannst sind, ist die Datenbank sicher.

Deine Idee, die Felder zu verschlüsseln kann nur für ganz wenige Felder einen Sinn machen.
Würdest du alle Felder verschlüsseln wollen, dann würde dich dies extremst einschränken.
Du kannst dann nur Stringfelder benutzen.
Du hast kein Tool, um die Datenbank zu administrieren. (MS Access zeigt dann nur Ützelbrützel an)
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#5

Re: verschlüsselte Felder in DB per Select auswählen?

  Alt 19. Jan 2006, 10:30
Beispiel mit Parametern:

Delphi-Quellcode:
...
ADOQuery.SQL.Text := 'select * from tabelle where feld = :param';
ADOQuery.ParamByName('param').asstring := Encode('Suchstring'); // Encode = Verschlüsselungsfunktion vom Typ String
ADOQuery.Open;
...
Ein solches Vorgehen ist aber auf keinen fall empfehlenswert, war nur so ne Idee, da Du deine Datenbank offensichtlich unbedingt feldweise verschlüsseln WILLST. Unklar ist auch, ob Access mit den aus der Verschlüsselung resultierenden Strings überhaupt arbeiten kann.
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Nju

Registriert seit: 16. Jun 2004
41 Beiträge
 
#6

Re: verschlüsselte Felder in DB per Select auswählen?

  Alt 19. Jan 2006, 11:27
Zitat von shmia:
Man kann aber auch mit einer Workgroup-Datei (*.MDW) arbeiten.
Man kann so jeder Tabelle oder View bestimmte Berechtigungen erteilen.
Die Datenbank kann nur zusammen mit der *.MDW Datei sowie User und Passwort geöffnet werden.
Wenn User und Passwort nur innerhalb deiner Anwendung bekannst sind, ist die Datenbank sicher.
Kannst Du mir einen Beispielquellcode geben, bei dem ich über Delphi die Workgroup-Datei einer bestehenden Datenbank hinzufüge? Da die Datenbank-Datei leider nicht ersetzt werden kann, noch per MS Access die Workgroup-Datei zugewiesen werden kann müsste ich per Quellcode die Zuweisung machen, oder sehe ich das falsch?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: verschlüsselte Felder in DB per Select auswählen?

  Alt 19. Jan 2006, 12:08
Zitat von Nju:
Kannst Du mir einen Beispielquellcode geben, bei dem ich über Delphi die Workgroup-Datei einer bestehenden Datenbank hinzufüge? Da die Datenbank-Datei leider nicht ersetzt werden kann, noch per MS Access die Workgroup-Datei zugewiesen werden kann müsste ich per Quellcode die Zuweisung machen, oder sehe ich das falsch?
Ich kann dir leider keinen Beispielcode geben.
Aber ich würde so vorgehen:
Workgroupdatei SYSTEM.MDW in ein neues leeres Verzeichnis kopieren.
An diese Workgroupdatei anschliesen (da gibt's ein extra Tool dazu)

Man kann Access auch über Parameter starten, dann braucht man sich keine Workgroupdatei anschliesen:
Code:
"C:\Programme\Microsoft Office\Office\MSACCESS.EXE" C:\database\projekt.mdb /wrkgrp C:\database\projekt.mdw
Mit Access eine Neue, leere Datenbank erstellen.
Hier wird die Datenbank untrennbar mit der Workgroupdatei verheiratet.
Wenn die Workgroupdatei verloren geht, ist auch die Datenbank nicht mehr zu öffnen.

Neue User und Arbeitsgruppen einrichten, Passwörter vergeben.
Berechtigungen vergeben. Man muss sich da etwas einfuxen.
Und immer ein Backdoor für den Admin vorsehen.

Danach deine ursprüngliche Datenbank in die neue Datenbank importieren.
Andreas
  Mit Zitat antworten Zitat
Nju

Registriert seit: 16. Jun 2004
41 Beiträge
 
#8

Re: verschlüsselte Felder in DB per Select auswählen?

  Alt 25. Jan 2006, 14:37
So, habe etwas damit rumgespielt und werde nicht ganz schlau daraus.

Ich habe einige Benutzer angelegt und mit Rechten versehen. Auf meinem eigenen Rechner bekomme ich nen Loginprompt. Wenn ich bei dem meine Logindaten korrekt eingebe erhalte ich die komplette Datenstruktur, also sprich: Alle Tabellen und deren Inhalte.

So ist es dann auch gedacht.

Der zweite Test befand sich auf meinem Zweitrechner. Dorthin habe ich die MDB- und auch die MDW-Datei geschickt. Der Klick auf die MDB-Datei quittiert das System korrekterweise mit einer "Ungenügend Benutzerrechte"-Meldung. Der Klick auf die MDW-Datei öffnet mir zwar die Datenbank, zeigt aber keine Tabellen an (zumal KEIN Loginprompt kam um sich zu identifizieren).

Der dritte Test war dann der Zugriff über Delphi über die ADOConnection, der dann aber an der Fehlermeldung, dass der Provider nicht initialisiert werden konnte, scheiterte.

Irgendwie werde ich daraus nicht wirklich schlau, zumal die Microsoft Hilfe zwar einiges zum Thema geschrieben hat, dieser Text allerdings dermaßen unübersichtlich dargestellt wird, so dass man nach kurzer Zeit keinen Durchblick mehr hat.

Kann mir da nochmal jemand helfen und evtl. eine Schritt-für-Schritt-Übersicht/Anleitung geben? Danke auf jeden Fall schonmal!
  Mit Zitat antworten Zitat
nieurig

Registriert seit: 26. Apr 2004
113 Beiträge
 
Delphi 6 Professional
 
#9

Re: verschlüsselte Felder in DB per Select auswählen?

  Alt 25. Jan 2006, 20:44
Guten Abend,
zur "Sicherheit" von Access noch ein paar Worte.

Meine Erfahrung mit den Workgroup Dateien:
Man kommt leicht daran vorbei (ist sogar mir gelungen und ich bin wirklich kein Cracker). Je nach Access-Version reicht es schon eine leere DB zu erstellen und die Daten und Tabellen als externe Daten zu importieren.

Das mit dem Datenbankpasswort scheint nach meinen alten Recherchen im Internet auch nicht viel sicherer zu sein. Auch ich hatte mit Datenbanken bei denen ein solches Passwort vergeben war immer wieder Schwierigkeiten. Die größten Probleme hat man wenn die Datenbank mal wieder "korrupt" geworden ist. Dann verhindert das Passwort meist die üblichen Rettungsversuche.

Vielleicht ist der Weg der Verschlüsselung der Inhalte doch garnicht so schlecht (wenn es denn Access sein soll). Wie schon oben gesagt geht dies wohl am leichtesten bei Strings. Zur Not könnte man auch Zahlen als verschlüsselte Strings speichern und entsprechend darauf zugreifen. Der größte Nachteil scheint mir (neben dem Speicherverbrauch) die Tatsache, dass keine vernünfigen Schlüssel erstellt werden können (alles Strings) und die die Abfragegeschwindigkeit sicherlich einschränkt.

Viel Erfolg
Niels
Erspare Dir die Gedanken über ungelegte Eier !!!
  Mit Zitat antworten Zitat
Nju

Registriert seit: 16. Jun 2004
41 Beiträge
 
#10

Re: verschlüsselte Felder in DB per Select auswählen?

  Alt 30. Jan 2006, 09:50
Hm....also so langsam komme ich mit der Rechtevergabe klar, nur das Verbinden über Delphi scheint nun ein Problem zu werden. Hat jemand Erfahrung, ob das überhaupt funkioniert?

Und mal davon abgesehen, wäre das Sicherheitssystem, vom Firebird zum Beispiel, sicherer (also DB-Kennwort vergeben und auch nicht so "leicht" knackbar wie bei Access)?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:15 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