2013-01-04 19 views
7

Jestem w trakcie budowania małej aplikacji internetowej, która będzie zawierać około 10 informacji dla każdej włożonej osoby. Ze względu na ochronę danych większość tych informacji musi być zaszyfrowana.Wyszukiwanie wieloznaczne zaszyfrowanych danych w bazie danych MySQL?

Korzystanie z frameworka CodeIgniter i klasy szyfrowania CodeIgniter Mogę zakodować informacje po stronie aplikacji przed zapisaniem jej w bazie danych. Klasa szyfrowania CodeIgniter korzysta z funkcji PHP mcrypt wraz z szyfrem AES_256.

Problem polega na tym, że muszę zezwolić użytkownikom aplikacji na wyszukiwanie informacji przechowywanych za pomocą wyszukiwania wieloznacznego, prawdopodobnie również za pomocą interfejsu API w późniejszym terminie.

Każda instytucja natrafi na rozwiązanie podobnego problemu. Czytałem o MySQL AES_ENCRYPT i AES_DECRYPT, ale nadal wymagają przekazania klucza tam iz powrotem w postaci zwykłego tekstu, którego nie chcę robić.

Obecnie jestem na etapie, że jeśli chcę kontynuować na tej trasie, to odszyfrowywanie pełnego tabeli jest moim jedynym rozwiązaniem przy każdym wyszukiwaniu (oczywiście niedobrze).

Odpowiedz

6

Cóż, to prawda, nie można wyszukiwać w odszyfrowanym tekście bez jego uprzedniej dekodowania.

Nie oznacza to jednak, że nie ma na to żadnych sposobów. Na przykład, możesz wprowadzić inverted index swoich danych i hasha (sha1, md5, crc32, wybierz) kluczy używanych do wyszukiwania. Wszystko, co musisz zrobić, to mieszać wyszukiwane hasła, wyszukiwać je w indeksie i pobierać wszystkie pasujące rekordy, które będą stanowiły niewielką część tabeli, a nie całą zawartość.

Łącząc dane (użyj soli!), Unikasz przechowywania danych w niebezpieczny sposób, a wciąż możesz wyszukiwać dane, ponieważ utworzyłeś dla nich indeks. Odtąd nie jest wymagane odszyfrowywanie, dopóki nie masz pewności, które dokumenty są zgodne.

+1

+1 za lateralne myślenie, a użycie hash do zapewnienia wrażliwych słów kluczowych jest nadal utrzymywane z wyczuciem –

+1

Cześć dzięki za odpowiedź, myślę, że rozumiem, co Pan proponuje, ale czy indeksowanie nadal nie będzie niewystarczające, gdy spróbujemy zrobić Wyszukiwanie "where_in" lub "like", na przykład: search% CHR% zwróci rekord zawierający słowo CHRIS. Może źle to czytam, jeśli tak, proszę, trochę się proszę. – user1530205

+1

Prawidłowe wyszukiwania z użyciem symboli wieloznacznych nie działają z odwróconymi indeksami, ale działają bardzo dobrze w przypadku normalnych wyszukiwań. Jedynym sposobem wykonania wyszukiwania wieloznacznego jest odszyfrowanie całej rzeczy. –

Powiązane problemy