2011-01-14 16 views
6

Przechowujemy poufne dane w MySQL i chcę użyć AES_ENCRYPT (dane, "mój-tajny klucz-tutaj"), a następnie AES_DECRYPT, który działa świetnie. Moje największe pytanie brzmi: jak zabezpieczyć klucz? Wcześniej po prostu byłeś przechowywania klucza w pliku PHP internetowej, więc coś takiego:Jak bezpiecznie przechowywać dane w MySQL przy użyciu AES_ENCRYPT

define("ENCRYPTION_KEY", 'my-secret-key-here'); 

To naprawdę nie działa, choć, jak nasz serwer MySQL oraz serwer WWW jest taka sama maszyna fizyczna, więc jeśli ktoś uzyska dostęp do serwera, mogą uzyskać zarówno zaszyfrowane dane przechowywane w MySQL jak i klucz.

Wszelkie pomysły? Myślę, że muszę przenieść klucz do oddzielnego serwera i odczytać go zdalnie. Lub, co o dynamicznym generowaniu klucza szyfrowania dla każdego fragmentu danych. Na przykład pobranie customer_id i uruchomienie md5 na nim, a następnie użycie go jako klucza.

Odpowiedz

0

Umieść tajny klucz w pliku, zmień właściciela pliku na tego samego użytkownika co serwer WWW. Usuń wszystkie uprawnienia do pliku dla grupy i wszystkich pozostałych.

Jest podobne pytanie na Superuser (https://superuser.com/questions/139393/linux-file-permissions-access-control-query) - Jestem pewien, że możesz uzyskać lepszą pomoc, lub po prostu Googling, aby uzyskać więcej informacji na temat uprawnień do plików w systemie, który używasz.

+0

Czy możesz nam powiedzieć, jakie byłyby konkretne uprawnienia do pliku? – mozgras

0

kilka opcji:

  1. zapisać klucz deszyfrowania pliku z odpowiednimi uprawnieniami
  2. Jeśli naprawdę chcesz do przechowywania kluczy poza biurem, „mount” dysk z innego urządzenia. Nadal musisz jednak poprawnie skonfigurować uprawnienia.

Dolna linia to główne hasło, które musi być dostępne dla serwera - co oznacza, że ​​nie ma możliwości całkowitego zablokowania go. Najlepsze, co możesz zrobić, to ustawić uprawnienia użytkownika/grupy i upewnić się, że znajduje się poza katalogiem głównym.

Jeśli nie potrzebujesz możliwości dekodowania wartości z powrotem do zwykłego tekstu (np. Jeśli porównasz wartości takie jak hasło), rozważ użycie zamiast tego skrótu.