sql >> Database teknologi >  >> RDS >> Mysql

Hvad er den bedste måde at gemme følsomme data i MySQL?

Seriøst, BRUG IKKE MySQL's aes_encrypt() Det er den mest usikre metode til at bruge en blokcifre. Den bruger ECB-tilstand, og jeg kan give et simpelt eksempel på, hvorfor dette er en alvorlig fejl.

Almindelig tekstbesked:

Den samme meddelelse krypteret med ECB-tilstand (uanset hvilken kode du bruger):

Den PRÆCIS samme besked ved hjælp af CBC-tilstand (igen, det er ligegyldigt, hvilken chiffer du bruger):

Der er endnu flere grunde for ikke at bruge mysqls aes_encrypt, vil især hver eneste forespørgsel, du sender, også have den aes-nøgle, du bruger. Hvis databasen er kompromitteret, vil angriberen aktivere logning og bare hente din aes-nøgle og dekryptere hele databasen .

Så hvad skal du bruger? Jeg kan godt lide denne klasse indtil videre. Den bruger CBC-tilstand med en String2Key-funktion og en IV. Du kan bruge den primære nøgle som din IV, hver besked skal have en unik IV. Det er okay, hvis angriberen kender IV, og hvis de er sekventielle, så længe blokchifferimplementeringen er sikker. Genbrug af en IV gjorde WEP meget mindre sikker .



  1. Sådan opnår du PCI-overensstemmelse for MySQL &MariaDB med ClusterControl - The Replay

  2. VENSTRE JOIN i ZF2 ved hjælp af TableGateway

  3. Et kig på DBCC CHECKCONSTRAINTS og I/O

  4. Hvorfor foreslår Eclipse Objekt som standardtilknytningstype for datatype Tekst?