Hoppa till innehåll

47-dagarscertifikaten är på väg. Är du redo?

Agera nu →

Hur görs kryptering och dekryptering i en SQL Server?

Kryptering och dekryptering

I SQL Server skyddar kryptering på kolumnnivå (cellnivå) data med hjälp av symmetrisk kryptering. Du skapar en huvudnyckel för databasen, sedan ett certifikat som skyddas av den, och sedan en symmetrisk nyckel som skyddas av det certifikatet. Data krypteras med funktionen EncryptByKey och dekrypteras med DecryptByKey, var och en med den symmetriska nyckeln och certifikatet.

SQL Server krypterar tabelldata på kolumnnivå med symmetrisk kryptering , skyddad av en lagerbaserad nyckelhierarki. Du skapar först en databashuvudnyckel, sedan ett självsignerat certifikat som skyddas av den huvudnyckeln, och sedan en symmetrisk nyckel som skyddas av certifikatet. Data krypteras med funktionen EncryptByKey och dekrypteras med DecryptByKey, där båda refererar till den symmetriska nyckeln och certifikatet. SQL Server erbjuder även TDE och Always Encrypted.

Key Takeaways

  • Kryptering på kolumnnivå (cellnivå) i SQL Server använder symmetrisk kryptering, skyddad av en hierarki av nycklar och ett certifikat.
  • Nyckelhierarkin är: databasens huvudnyckel skyddar ett certifikat, vilket skyddar den symmetriska nyckel som faktiskt krypterar informationen.
  • Data krypteras med EncryptByKey och dekrypteras med DecryptByKey, var och en med hjälp av den symmetriska nyckeln och certifikatnamnet.
  • SQL Server erbjuder tre huvudsakliga krypteringsalternativ: kryptering på cellnivå, Transparent Data Encryption (TDE) och Always Encrypted.
  • TDE krypterar hela databasen i vila transparent; Always Encrypted skyddar data från början till slut så att inte ens servern ser klartext.

Hur kryptering på kolumnnivå fungerar i SQL Server

Datakryptering av en tabell i SQL Server görs på kolumnnivå, kolumn för kolumn, med hjälp av symmetrisk kryptering (samma nyckel krypterar och dekrypterar). Detta kallas ofta cellnivåkryptering . Det bygger på en lager-på-lager-nyckelhierarki, där varje nyckel skyddas av den ovanför. Processen:

  1. Skapa en databashuvudnyckel: En databashuvudnyckel skapas för att förankra hierarkin. Den skyddas i sig av ett lösenord och av tjänstens huvudnyckel på servernivå.
  2. Skapa ett certifikat: En självsignerad certifikat skapas, skyddad av databasens huvudnyckel.
  3. Skapa en symmetrisk nyckel: En symmetrisk nyckel, som används för själva kolumnnivåkrypteringen, skapas och skyddas av certifikatet.
  4. Kryptera informationen: Kolumnen krypteras med funktionen EncryptByKey, som anger den symmetriska nyckeln och namnet på certifikatet.

För att dekryptera anropas funktionen DecryptByKey , som också kräver den symmetriska nyckeln och certifikatet. Eftersom krypteringen är symmetrisk, både krypterar och dekrypterar samma nyckel, och den nyckeln hålls säker av certifikatet och huvudnyckeln ovanför.

SQL Server-krypteringsnyckelhierarkin

Varje lager skyddar det underliggande, så att kompromettera data kräver att man arbetar bakåt uppåt i kedjan:

  • Service Master Key (SMK): skapas på servernivå när SQL Server installeras; skyddar databasens huvudnyckel.
  • Databashuvudnyckel (DMK): skyddar certifikat och asymmetriska nycklar i en databas.
  • Certifikat: skyddar den symmetriska nyckeln.
  • Symmetrisk nyckel: krypterar och dekrypterar de faktiska kolumndata.

Skräddarsydda krypteringstjänster

Vi utvärderar, strategiserar och implementerar krypteringsstrategier och lösningar.

De tre krypteringsalternativen i SQL Server

Kryptering på cellnivå är ett av tre huvudsakliga sätt som SQL Server kan kryptera data. Vilket som passar beror på om du behöver skydda specifika kolumner, hela databasen i vila eller data hela vägen till klienten:

AlternativetVad den krypterarBäst för
Kryptering på cellnivå (kolumn)Specifika kolumner, via EncryptByKey/DecryptByKeySkyddar ett fåtal känsliga fält med detaljerad kontroll
Transparent datakryptering (TDE)Hela databasen i vila (data och loggfiler)Skydda vilande data utan programändringar
Alltid krypteradSpecifika kolumner, krypterade och dekrypterade på klientenAtt hålla klartext dold även från själva SQL Servern

Kryptering på cellnivå (kolumn)

Metoden som beskrivs ovan. Den ger finjusterad kontroll över enskilda kolumner och använder funktionerna EncryptByKey och DecryptByKey, men applikationen måste explicit kryptera och dekryptera, och krypterade kolumner kan inte indexeras eller sökas igenom normalt.

Transparent datakryptering (TDE)

TDE krypterar hela databasen i vila, både data och loggfiler, transparent. Den använder en databaskrypteringsnyckel som skyddas av ett certifikat i huvuddatabasen och kräver inga ändringar i applikationer. TDE skyddar mot att någon stjäl de fysiska filerna eller säkerhetskopiorna, men den skyddar inte data som används eller överförs, och den ger inte granularitet på kolumnnivå. Den förlitar sig på samma typ av certifikat- och nyckelskydd som kryptering på cellnivå.

Alltid krypterad

Always Encrypted krypterar specifika kolumner på klientsidan, så data krypteras innan de når SQL Server och databasmotorn ser bara chiffertext . Detta skyddar känsliga data även från databasadministratörer och från alla med åtkomst till själva servern, vilket gör den väl lämpad för mycket känsliga data och separation av arbetsuppgifter. Nackdelen är mer begränsad frågefunktionalitet på de krypterade kolumnerna.

Hur krypteringskonsulting hjälper

Att välja rätt SQL Server-krypteringsmetod, cellnivå, TDE eller Always Encrypted, och hantera underliggande nycklar och certifikat på ett säkert sätt, är vad Encryption Consultings krypteringsrådgivningstjänster hjälper till med. Vi bedömer var känslig data finns, rekommenderar den krypteringsmodell som passar dina behov av efterlevnad och prestanda, och utformar sund nyckelhantering (inklusive HSM-baserad nyckelskydd) i linje med standarder som NIST och PCI DSS . Stöds av ISO/IEC 27001:2022 och SOC 2-certifierade metoder.

Vanliga frågor om partihandel med mat och dryck

Hur görs kryptering i SQL Server?

SQL Server krypterar oftast data på kolumnnivå med symmetrisk kryptering. Du skapar en huvudnyckel för databasen, sedan ett certifikat som skyddas av den huvudnyckeln och sedan en symmetrisk nyckel som skyddas av certifikatet. Data krypteras med funktionen EncryptByKey, som tillhandahåller den symmetriska nyckeln och certifikatet. Denna lager-fördelade nyckelhierarki innebär att varje nyckel skyddas av den ovanför. SQL Server erbjuder även Transparent Data Encryption och Always Encrypted för andra scenarier.

Hur dekrypterar man data i SQL Server?

För att dekryptera krypterade data på kolumnnivå öppnar du den symmetriska nyckeln (som kräver åtkomst till det skyddande certifikatet och huvudnyckeln) och anropar sedan funktionen DecryptByKey på den krypterade kolumnen och anger den symmetriska nyckeln och certifikatet. DecryptByKey returnerar det ursprungliga klartextvärdet, vilket vanligtvis konverteras tillbaka till sin ursprungliga datatyp. Endast sessioner med behörighet att öppna den symmetriska nyckeln kan dekryptera informationen, så den förblir skyddad från obehöriga användare.

Vad är EncryptByKey och DecryptByKey?

EncryptByKey och DecryptByKey är inbyggda SQL Server-funktioner för kryptering på cellnivå (kolumn). EncryptByKey tar en symmetrisk nyckel och ett klartextvärde och returnerar krypterade varbinära data, medan DecryptByKey vänder processen för att returnera det ursprungliga värdet. Båda kräver att den relevanta symmetriska nyckeln är öppen i sessionen, och den nyckeln är i sig skyddad av ett certifikat och databasens huvudnyckel, vilket bildar SQL Servers krypteringsnyckelhierarki.

Vad är skillnaden mellan TDE och kryptering på cellnivå i SQL Server?

Kryptering på cellnivå (kolumner) skyddar specifika kolumner med EncryptByKey och DecryptByKey, vilket ger finjusterad kontroll men kräver att applikationen krypterar och dekrypterar explicit. Transparent Data Encryption (TDE) krypterar hela databasen i vila, inklusive data och loggfiler, transparent och utan applikationsändringar. Kryptering på cellnivå passar ett fåtal mycket känsliga fält; TDE passar för att skydda hela databasen mot stulna filer eller säkerhetskopior. Många organisationer använder båda tillsammans.

Vad är alltid krypterat i SQL Server?

Always Encrypted är en SQL Server-funktion som krypterar specifika kolumner på klientsidan innan data når servern, så att databasmotorn bara ser chiffertext. Detta innebär att känsliga data är skyddade även från databasadministratörer och alla med serveråtkomst, vilket stöder separation av uppgifter och efterlevnad. Nackdelen är minskad frågefunktionalitet på krypterade kolumner. Det skiljer sig från kryptering på cellnivå, där servern utför kryptering och dekryptering.

Vilken kryptering ska jag använda i SQL Server?

Det beror på vad du behöver skydda. Använd kryptering på cellnivå för detaljerad kontroll över ett fåtal känsliga kolumner. Använd Transparent Data Encryption (TDE) för att skydda hela databasen i vila utan programändringar, vilket skyddar mot stulna filer eller säkerhetskopior. Använd Always Encrypted när klartext måste döljas även för SQL Server och dess administratörer. Många miljöer kombinerar dem, och rätt mix beror på dina datakänslighets-, prestanda- och efterlevnadskrav.

Kryptera dina databaser på rätt sätt

SQL Server ger dig flera krypteringsalternativ, och rätt val (plus sund nyckelhantering) är det som skyddar känsliga data utan att dina applikationer krånglar. Utforska Encryption Consultings krypteringsrådgivningstjänster för att designa och implementera databaskryptering som passar din miljö.