2009-08-04 16 views
9

Mam kilka pól, które przechowują notatki i poufne informacje, które chciałbym zaszyfrować, zanim trafią do bazy danych.Zaszyfrowane pola i wyszukiwanie pełnotekstowe, najlepsze podejście?

W tej chwili używam wyszukiwania pełnotekstowego SQL do wyszukiwania tych pól. Oczywiście zaszyfrowanie tych danych spowoduje odrzucenie moich wyników wyszukiwania.

Jaki jest najlepszy sposób szyfrowania tych pól, ale nadal pozwala na wyszukiwanie?

Odpowiedz

3

Brak bazy danych obsługującej zaszyfrowany indeks, więc musisz poświęcić trochę zabezpieczeń, aby to osiągnąć.

Można indeksować częściowe dane w przejrzysty sposób i wyszukiwać prawdziwe dane z aplikacji. Na przykład, jeśli chcesz przechowywać numer karty kredytowej. Możesz mieć indeks ostatnich 4 cyfr. Liczba kart o tej samej 4 cyfr jest ograniczona, więc możesz pozwolić sobie na odszyfrowanie każdego z nich i sprawdzenie całego numeru.

9

To nie będzie łatwe. To, co opisujesz, rzadko jest implementowane w komercyjnych bazach danych, chociaż istnieją pewne teoretyczne wyniki w tej dziedzinie. Proponuję, abyś przejrzał numer google scholar i zaczął szukać dokumentów na ten temat.

Oto kilka odniesień do początek:

+0

wziąć także spojrzeć na tej prezentacji: Jak szukać na zaszyfrowanych danych - EU-Jin Goh http: // krypto .stanford.edu/~ eujin/papers/secureindex/2003nov-encsearch.pdf –

2

Inną opcją jest przechowywanie soundex zaszyfrowanych danych. Następnie możesz wyszukać wartość dźwięku i zbliżyć się bez odszyfrowywania danych.

1

Oracle 10g wydanie 2 (lub nowsze) może obsługiwać tę funkcję. Z ich strony internetowej tutaj:

http://www.oracle.com/technology/oramag/oracle/05-sep/o55security.html

„Nowością w Oracle Database 10g Release 2 pozwala nie tylko to. Można zadeklarować kolumnę jako szyfrowane bez pisania nawet jednej linii kodu Gdy użytkownicy wstawić dane , baza danych w przejrzysty sposób szyfruje ją i przechowuje w kolumnie. Podobnie, gdy użytkownicy wybiorą kolumnę, baza danych automatycznie ją odszyfrowuje, ponieważ wszystko to odbywa się w sposób przezroczysty bez zmiany kodu aplikacji, funkcja ma odpowiednią nazwę: Przezroczyste dane Szyfrowanie (TDE). "

Chodzi o to, że nikt nie widzi wyraźnego tekstu w bazie danych, ale instrukcja wyboru działałaby normalnie. Może to pomóc w wyszukiwaniu, jeśli Oracle jest opcją?

Aktualizacja: nie ma innej opcji tutaj:

http://www.critotech.com/index.htm

dla baz danych MySQL, ale wydaje się dość drogie.

0

Wiem, że jest to stara odpowiedź, ale zarówno SQL Server, jak i Oracle mają obecnie (drogie) oferty na Transparentne szyfrowanie danych, które zasadniczo umożliwiają Twojej aplikacji wyszukiwanie bez żadnych zmian, ale rzeczywiste dane w spoczynku są szyfrowane. Więcej informacji tutaj:

SQL Server: https://msdn.microsoft.com/en-us/library/bb934049%28v=sql.120%29.aspx

Oracle: http://www.oracle.com/technetwork/database/options/advanced-security/index-099011.html

Powiązane problemy