Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jaki jest najlepszy sposób przechowywania poufnych danych w MySQL?

Poważnie, NIE UŻYWAJ funkcji aes_encrypt() w MySQL Jest to najbardziej niepewna metoda korzystania z szyfru blokowego. Używa trybu EBC i mogę podać prosty przykład demonstracji, dlaczego jest to poważny błąd.

Zwykła wiadomość tekstowa:

Ta sama wiadomość zaszyfrowana w trybie ECB (nie ma znaczenia, jakiego szyfru użyjesz):

DOKŁADNA ta sama wiadomość w trybie CBC (ponownie, nie ma znaczenia, jakiego szyfru używasz):

Jest jeszcze więcej powodów nie używaj aes_encrypt mysql, przede wszystkim każde wysłane zapytanie będzie miało również klucz aes, którego używasz. Jeśli baza danych zostanie naruszona, atakujący włączy logowanie i po prostu zdobędzie klucz aes i odszyfruje całą bazę danych .

Więc co powinien używasz? Lubię ta klasa obecnie. Używa trybu CBC z funkcją String2Key i IV. Możesz użyć klucza podstawowego jako IV, każda wiadomość musi mieć unikalną IV. W porządku, jeśli atakujący zna IV i jeśli są one sekwencyjne, o ile implementacja szyfru blokowego jest bezpieczna. Ponowne użycie IV sprawiło, że WEP był znacznie mniej bezpieczny .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak debugować procedury składowane MySQL?

  2. zamieszanie z dodaniem 2 wartości czasu

  3. Jak połączyć ciągi z podzapytania w jeden wiersz w mysql?

  4. Drugie zapytanie SELECT, jeśli pierwsze SELECT zwraca 0 wierszy

  5. MySQL:wybierz pierwszy element listy oddzielonej przecinkami