AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SelectWhereQuery auf verschlüsselten Spalten durch Methodik beschleunigen
Thema durchsuchen
Ansicht
Themen-Optionen

SelectWhereQuery auf verschlüsselten Spalten durch Methodik beschleunigen

Ein Thema von UntoterGeist · begonnen am 13. Sep 2021 · letzter Beitrag vom 16. Okt 2021
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#1

AW: SelectWhereQuery auf verschlüsselten Spalten durch Methodik beschleunigen

  Alt 16. Sep 2021, 10:21
Ich konnte jetzt keine Aussage dazu finden, aber das hast du sicher schon versucht?
SQL-Code:

SELECT "id","name","vorname" FROM "schema"."personen" WHERE "name" ILIKE 'Albert%';
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
UntoterGeist

Registriert seit: 18. Sep 2019
25 Beiträge
 
#2

AW: SelectWhereQuery auf verschlüsselten Spalten durch Methodik beschleunigen

  Alt 16. Sep 2021, 12:28
@Blup
Achso war das gemeint, jetzt versteh ich deinen Ansatz.

@Uwe
Die relevanten Spalten haben den Datentyp bytea und sind durch die DB verschlüsselt worden. Man kann also nicht direkt auf die Spalten ILike anwenden. Man muss die Spalte schon vor dem Vergleich entschlüsseln lassen. Sonst sucht man (wenn man das in Text umcastet) nur in Datensalat herum. Die Datenbank macht das also nicht automatisch, kann sie auch garnicht, weil sie den Schlüssel dann nicht hat. Bei Oracle ist der Masterkey z.B. in der Datenbank hinterlegt. An dem Rechenaufwand ändert sich für Oracle dadurch aber auch nichts.

Da AES nicht homomorph ist kann man keine Suchoperationen auf den Verschlüsselten Text durchführen. Homomorphe Verschlüsselung ist aber glaube auch weniger sicher, weil die Strukturen erhalten bleiben. So wird das jedenfalls beschrieben. Bei diesen Verschlüsselungen könnte man den Suchtext verschlüsseln und das Ergebnis direktin den Spalten suchen.

Deshalb muss man das so schreiben:
Code:
SELECT
"id",
pgp_sym_decrypt("name",'geheimerSchlüssel') AS name,
pgp_sym_decrypt("vorname",'geheimerSchlüssel') AS vorname

FROM "schema"."personen"

WHERE pgp_sym_decrypt("name",'geheimerSchlüssel') ILIKE 'Albert%';
Postgres ist übrigens so schlau, das Ergebnis einer Spalte die schon entschlüsselt wurde zwischen zu speichern. Deshalb kostet der folgende Query nicht wirklich mehr Zeit als der vorige.
Code:
SELECT
"id",
pgp_sym_decrypt("name",'geheimerSchlüssel') AS name,
pgp_sym_decrypt("vorname",'geheimerSchlüssel') AS vorname

FROM "schema"."personen" WHERE pgp_sym_decrypt("name",'geheimerSchlüssel') ILIKE 'Albert%'
OR "schema"."personen" WHERE pgp_sym_decrypt("name",'geheimerSchlüssel') ILIKE 'Peter%'
OR "schema"."personen" WHERE pgp_sym_decrypt("name",'geheimerSchlüssel') ILIKE 'Daniel%';
  Mit Zitat antworten Zitat
UntoterGeist

Registriert seit: 18. Sep 2019
25 Beiträge
 
#3

AW: SelectWhereQuery auf verschlüsselten Spalten durch Methodik beschleunigen

  Alt 16. Okt 2021, 04:04
Hab eine Lösung gefunden =D

Auch wenn ich das vorher doof fand. Das Hashen von Teilstrings, was ich erwähnt hatte, nennt sich BlindIndexing. So an sich ist das immer noch doof. Man muss den Strings schon ein Salt mitgeben. Sonst ist "abc" leicht raus zu finden. Das ermitteln geht ganz automatisch mit Rainbowtables. Und dann wüsste jeder zumindest die ersten Buchstaben. Mit Salt wird aber "blablablubabc" daraus. Das kann man bis zu den ersten 3, 4 Buchstaben machen. Zwar gibts dann in der DB noch viele Übereinstimmungen an Hashs, aber was sie bedeuten lässt sich nicht mehr erraten. Suchen tut man dann über eine Vorslektion auf die Hashs. In Kombi mit der Suchspalte, die alles enthält wonach gesucht werden kann, erhält man ein gutes Ergebnis.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: SelectWhereQuery auf verschlüsselten Spalten durch Methodik beschleunigen

  Alt 16. Okt 2021, 11:20
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:31 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