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

Hvad er den bedste metode til at bruge / gemme krypteringsnøgler i MySQL

Jeg er ikke sikker på, om brug af MySQL indbygget kryptering ville være den bedste løsning på dit problem.

PHP's M_CRYPT pakken menes at være ganske god, og den giver dig fleksibiliteten til at vælge den algoritme, der passer bedst til dine behov.

At gemme din nøgle på en anden server har én stor fordel:nøglen er ikke på samme maskine som de krypterede data. Så så længe angriberen ikke har nok kontrol over den kompromitterede maskine, kan de ikke komme til nøglen.
Hvis angriberen får fuld kontrol over den maskine, dataene er lagret på, vil de højst sandsynligt være i stand til at forespørge web-servicen til nøglen.

Men at overføre nøglen fra en maskine til en anden åbner et helt nyt område, der skal sikres. Sandsynligvis involverer flere nøgler og flere krypteringslag, hvilket øger chancen for at der begås fejl.

Den anden mulighed er at indtaste adgangskoden ved opstart af webserveren og kun gemme den i hukommelsen.

Mulig løsning
Hvis du ser en løsning, der brugte følgende metode til at kryptere filer for brugere med webadgang (jeg er ikke sikker på dit miljø, men det kan være nyttigt):

  • Ved brugeroprettelse tildeles en lang tilfældig nøgle til den nye bruger.
  • Denne tilfældige nøgle er gemt i en krypteret kolonne i brugerposten.
    (kun denne kolonne er krypteret for ikke at påvirke ydeevnen af ​​resten af ​​posten! )
  • Krypteringen af ​​kolonnen med tilfældig nøgle udføres med 1 hovedadgangskode, gemt i en fil eller i hukommelsen.
    (Den bedre mulighed er at indtaste adgangskoden, når du stirrer på din webserver og kun gemme den i hukommelsen. )
    (En anden fremgangsmåde ville være at lade brugeren indtaste en adgangskode og bruge den til at kryptere/dekryptere kolonnen med tilfældig nøgle, men jeg er ikke sikker på, om det ville øge eller mindske sikkerheden )
  • Hvert dokument, der skal krypteres, krypteres med den tilfældige nøgle for den pågældende bruger og gemmes derefter på disken.
  • Dokumenter gemmes med minimale tilladelser i filsystemet.

Fordelene ved denne tilgang er:
1. Den tilfældige nøgle er krypteret i databasen. Så du har stadig den ekstra sikkerhed for database-serveren, i kombination med den krypterede kolonne.2. Dokumenter gemmes med forskellige nøgler, hvis angriberen får fat i en nøgle, er kun en del af dokumenterne kompromitteret.

Men:
Hvis angriberen får fat i hovedadgangskoden og har læseadgang til brugertabellen, er hele systemet endnu en gang ødelagt.



  1. Indsæt filindhold i MySQL-tabellens kolonne

  2. Hvordan Trunc() virker i PostgreSQL

  3. PHP PDO forberedt erklæring -- MySQL LIKE forespørgsel

  4. Hvordan kan jeg importere en JSON-fil til PostgreSQL?