sql >> Databasteknik >  >> RDS >> Mysql

Vilken är den bästa metoden att använda / lagra krypteringsnycklar i MySQL

Jag är inte säker på om att använda MySQL inbyggd kryptering skulle vara den bästa lösningen på ditt problem.

PHPs M_CRYPT paketet anses vara ganska bra och det ger dig flexibiliteten att välja den algoritm som är bäst lämpad för dina behov.

Att lagra din nyckel på någon annan server har en stor fördel:nyckeln finns inte på samma maskin som den krypterade datan. Så länge som angriparen inte har tillräckligt med kontroll över den komprometterade maskinen kan de inte komma till nyckeln.
Om angriparen får full kontroll över maskinen som data lagras på, kommer de med största sannolikhet att kunna fråga webbtjänsten för nyckeln.

Men att överföra nyckeln från en maskin till en annan öppnar upp ett helt nytt område som behöver säkras. Antagligen involverar fler nycklar och fler krypteringslager, vilket ökar risken för att misstag görs.

Det andra alternativet är att ange lösenordet när webbservern startar och bara behålla det i minnet.

Möjlig lösning
Om en lösning har använts som använde följande metod för att kryptera filer för användare med webbåtkomst (jag är inte säker på din miljö, men det kan vara till hjälp):

  • När användaren skapas tilldelas en lång slumpmässig nyckel till den nya användaren.
  • Denna slumpmässiga nyckel lagras i en krypterad kolumn i användarposten.
    (endast denna kolumn är krypterad för att inte påverka prestandan för resten av posten! )
  • Krypteringen av slumpnyckelkolumnen görs med ett huvudlösenord, lagrat i en fil eller i minnet.
    (Det bättre alternativet är att ange lösenordet när du stirrar på din webbserver och bara lagra det i minnet. )
    (Ett annat tillvägagångssätt skulle vara att låta användaren ange ett lösenord och använda det för att kryptera/dekryptera kolumnen med slumpmässig nyckel, men jag är inte säker på om det skulle öka eller minska säkerheten )
  • Varje dokument som behöver krypteras krypteras med slumpnyckeln för den användaren och lagras sedan på disken.
  • Dokument lagras med minimala behörigheter i filsystemet.

Fördelarna med detta tillvägagångssätt är:
1. Slumpnyckeln är krypterad i databasen. Så du har fortfarande den extra säkerheten för databasservern, i kombination med den krypterade kolumnen.2. Dokument lagras med olika nycklar, om angriparen får tag i en nyckel är det bara en del av dokumenten som äventyras.

Men:
Om angriparen får tag i huvudlösenordet och har läsbehörighet till användartabellen är hela systemet återigen trasigt.



  1. ERROR 1064 (42000):Du har ett fel i din SQL-syntax; kontrollera manualen som motsvarar din MySQL-serverversion för rätt syntax att använda

  2. Postgres slutade precis slumpmässigt att fungera (Rails, PGSQL.5432)

  3. Ska jag använda datatypen datetime eller timestamp i MySQL?

  4. De bästa sätten att öka databaseffektiviteten