Meteen naar de inhoud

Certificaten voor 47 dagen komen eraan. Ben je er klaar voor?

Handel nu →

Hoe worden encryptie en decryptie uitgevoerd in een SQL Server?

Encryptie en decryptie

In SQL Server beschermt encryptie op kolomniveau (celniveau) gegevens met behulp van symmetrische encryptie. Je maakt een hoofdsleutel voor de database, vervolgens een certificaat dat daarmee beveiligd is, en daarna een symmetrische sleutel die door dat certificaat beveiligd is. Gegevens worden versleuteld met de functie EncryptByKey en ontsleuteld met DecryptByKey, waarbij telkens de symmetrische sleutel en het certificaat worden gebruikt.

SQL Server versleutelt tabelgegevens op kolomniveau met behulp van symmetrische versleuteling , beschermd door een gelaagde sleutelhiërarchie. Eerst maakt u een hoofdsleutel voor de database aan, vervolgens een zelfondertekend certificaat dat door die hoofdsleutel wordt beschermd, en daarna een symmetrische sleutel die door het certificaat wordt beschermd. Gegevens worden versleuteld met de functie EncryptByKey en ontsleuteld met DecryptByKey, waarbij beide verwijzen naar de symmetrische sleutel en het certificaat. SQL Server biedt ook TDE en Always Encrypted aan.

Key Takeaways

  • SQL Server-versleuteling op kolomniveau (celniveau) maakt gebruik van symmetrische versleuteling, beschermd door een sleutelhiërarchie en een certificaat.
  • De sleutelhiërarchie is als volgt: de hoofdsleutel van de database beschermt een certificaat, dat op zijn beurt de symmetrische sleutel beschermt waarmee de gegevens daadwerkelijk worden versleuteld.
  • De gegevens worden versleuteld met EncryptByKey en ontsleuteld met DecryptByKey, waarbij telkens de symmetrische sleutel en de certificaatnaam worden gebruikt.
  • SQL Server biedt drie belangrijke versleutelingsopties: versleuteling op celniveau, transparante gegevensversleuteling (TDE) en altijd versleuteld.
  • TDE versleutelt de volledige database transparant wanneer deze inactief is; Always Encrypted beschermt gegevens van begin tot eind, zodat zelfs de server nooit onversleutelde gegevens te zien krijgt.

Hoe kolomversleuteling werkt in SQL Server.

De versleuteling van een tabel in SQL Server gebeurt op kolomniveau, kolom voor kolom, met behulp van symmetrische versleuteling (dezelfde sleutel wordt gebruikt voor zowel versleuteling als ontsleuteling). Dit wordt vaak celversleuteling genoemd . Het is gebaseerd op een gelaagde sleutelhiërarchie, waarbij elke sleutel wordt beschermd door de sleutel erboven. Het proces:

  1. Een hoofdsleutel voor de database aanmaken: Er wordt een hoofdsleutel voor de database aangemaakt om de hiërarchie te verankeren. Deze sleutel is zelf beveiligd met een wachtwoord en met de hoofdsleutel van de service op serverniveau.
  2. Een certificaat aanmaken: Een zelfondertekende certificaat wordt aangemaakt en beschermd door de hoofdsleutel van de database.
  3. Maak een symmetrische sleutel aan: Een symmetrische sleutel, die gebruikt wordt voor de daadwerkelijke versleuteling op kolomniveau, wordt aangemaakt en beschermd door het certificaat.
  4. Versleutel de gegevens: De kolom wordt versleuteld met de functie EncryptByKey, waarbij de symmetrische sleutel en de naam van het certificaat worden opgegeven.

Om te decoderen wordt de functie DecryptByKey aangeroepen, waarvoor ook de symmetrische sleutel en het certificaat nodig zijn. Omdat de encryptie symmetrisch is, wordt dezelfde sleutel gebruikt voor zowel versleuteling als ontsleuteling, en die sleutel wordt veilig bewaard door het certificaat en de hoofdsleutel die erboven staan.

De sleutelhiërarchie voor SQL Server-encryptie

Elke laag beschermt de laag eronder, dus om de gegevens te compromitteren moet je teruggaan in de keten:

  • Service Master Key (SMK): wordt op serverniveau aangemaakt tijdens de installatie van SQL Server; beschermt de hoofdsleutel van de database.
  • Database Master Key (DMK): beschermt certificaten en asymmetrische sleutels binnen een database.
  • Certificaat: beschermt de symmetrische sleutel.
  • Symmetrische sleutel: versleutelt en ontsleutelt de feitelijke kolomgegevens.

Op maat gemaakte encryptiediensten

Wij beoordelen, ontwikkelen strategieën en implementeren encryptiestrategieën en -oplossingen.

De drie versleutelingsopties in SQL Server

Versleuteling op celniveau is een van de drie belangrijkste manieren waarop SQL Server gegevens kan versleutelen. Welke methode het meest geschikt is, hangt af van of u specifieke kolommen, de hele database in rust of alle gegevens tot aan de client wilt beschermen.

KeuzeWat het versleuteltBest voor
Versleuteling op celniveau (kolomniveau)Specifieke kolommen, via EncryptByKey/DecryptByKeyHet beschermen van enkele gevoelige gebieden met nauwkeurige controle.
Transparante gegevensversleuteling (TDE)De volledige database in ruststand (data- en logbestanden)Bescherming van data in rust zonder applicatiewijzigingen.
Altijd gecodeerdSpecifieke kolommen, versleuteld en ontsleuteld aan de clientzijde.Zelfs voor de SQL Server zelf blijft de platte tekst verborgen.

Versleuteling op celniveau (kolomniveau)

De hierboven beschreven aanpak biedt nauwkeurige controle over individuele kolommen en maakt gebruik van de functies EncryptByKey en DecryptByKey, maar de applicatie moet expliciet versleutelen en ontsleutelen, en versleutelde kolommen kunnen niet normaal worden geïndexeerd of doorzocht.

Transparante gegevensversleuteling (TDE)

TDE versleutelt de volledige database in rust, zowel de data als de logbestanden, op een transparante manier. Het maakt gebruik van een databasesleutel die wordt beschermd door een certificaat in de masterdatabase en vereist geen wijzigingen in applicaties. TDE beschermt tegen diefstal van fysieke bestanden of back-ups, maar beschermt geen data die in gebruik is of wordt verzonden, en biedt geen granulariteit op kolomniveau. Het is gebaseerd op hetzelfde type certificaat- en sleutelbeveiliging als versleuteling op celniveau.

Altijd gecodeerd

Always Encrypted versleutelt specifieke kolommen aan de clientzijde, waardoor de gegevens worden versleuteld voordat ze SQL Server bereiken en de database-engine alleen de versleutelde gegevens ziet . Dit beschermt gevoelige gegevens, zelfs tegen databasebeheerders en iedereen met toegang tot de server zelf, waardoor het zeer geschikt is voor zeer gevoelige gegevens en functiescheiding. Het nadeel is dat de queryfunctionaliteit op de versleutelde kolommen beperkter is.

Hoe encryptieconsultancy kan helpen

De juiste SQL Server-versleutelingsmethode kiezen – celniveau, TDE of Always Encrypted – en de onderliggende sleutels en certificaten veilig beheren, dat is waar de Encryption Advisory Services van Encryption Consulting u bij helpen. We beoordelen waar gevoelige gegevens zich bevinden, adviseren het versleutelingsmodel dat aansluit bij uw compliance- en prestatiebehoeften en ontwerpen een degelijk sleutelbeheer (inclusief HSM-ondersteunde sleutelbescherming) dat voldoet aan standaarden zoals NIST en PCI DSS . Ondersteund door ISO/IEC 27001:2022 en SOC 2-gecertificeerde werkwijzen.

Veelgestelde Vragen / FAQ

Hoe werkt encryptie in SQL Server?

SQL Server versleutelt gegevens meestal op kolomniveau met behulp van symmetrische versleuteling. U maakt een hoofdsleutel voor de database, vervolgens een certificaat dat door die hoofdsleutel wordt beschermd, en daarna een symmetrische sleutel die door het certificaat wordt beschermd. Gegevens worden versleuteld met de functie EncryptByKey, waarbij de symmetrische sleutel en het certificaat worden meegeleverd. Deze gelaagde sleutelhiërarchie betekent dat elke sleutel wordt beschermd door de sleutel erboven. SQL Server biedt ook Transparent Data Encryption en Always Encrypted voor andere scenario's.

Hoe ontsleutel je gegevens in SQL Server?

Om versleutelde gegevens op kolomniveau te decoderen, opent u de symmetrische sleutel (waarvoor toegang tot het beveiligingscertificaat en de hoofdsleutel vereist is) en roept u vervolgens de functie DecryptByKey aan op de versleutelde kolom, waarbij u de symmetrische sleutel en het certificaat opgeeft. DecryptByKey retourneert de oorspronkelijke platte tekstwaarde, die doorgaans wordt teruggezet naar het oorspronkelijke gegevenstype. Alleen sessies met de juiste machtigingen om de symmetrische sleutel te openen, kunnen de gegevens decoderen, waardoor ze beschermd blijven tegen ongeautoriseerde gebruikers.

Wat zijn EncryptByKey en DecryptByKey?

EncryptByKey en DecryptByKey zijn de ingebouwde SQL Server-functies voor versleuteling op celniveau (kolomniveau). EncryptByKey neemt een symmetrische sleutel en een platte tekstwaarde en retourneert versleutelde varbinary-gegevens, terwijl DecryptByKey het proces omkeert en de oorspronkelijke waarde teruggeeft. Beide functies vereisen dat de betreffende symmetrische sleutel geopend is in de sessie. Deze sleutel wordt zelf beschermd door een certificaat en de hoofdsleutel van de database, waarmee de versleutelingshiërarchie van SQL Server wordt gevormd.

Wat is het verschil tussen TDE en celversleuteling in SQL Server?

Versleuteling op celniveau (kolomniveau) beschermt specifieke kolommen met behulp van EncryptByKey en DecryptByKey. Dit biedt nauwkeurige controle, maar vereist wel dat de applicatie expliciet versleutelt en ontsleutelt. Transparante gegevensversleuteling (TDE) versleutelt de gehele database in rust, inclusief data- en logbestanden, op een transparante manier en zonder dat de applicatie wijzigingen hoeft aan te brengen. Versleuteling op celniveau is geschikt voor een paar zeer gevoelige velden; TDE is geschikt voor het beschermen van de gehele database tegen gestolen bestanden of back-ups. Veel organisaties gebruiken beide methoden samen.

Wat betekent 'Altijd versleuteld' in SQL Server?

Always Encrypted is een SQL Server-functie die specifieke kolommen aan de clientzijde versleutelt voordat de gegevens de server bereiken. De database-engine ziet daardoor alleen de versleutelde tekst. Dit betekent dat gevoelige gegevens beschermd zijn, zelfs tegen databasebeheerders en iedereen met servertoegang, wat de scheiding van taken en de naleving van regelgeving ondersteunt. Het nadeel is dat de queryfunctionaliteit op versleutelde kolommen beperkter is. Het verschilt van versleuteling op celniveau, waarbij de server de versleuteling en ontsleuteling uitvoert.

Welke versleuteling moet ik gebruiken in SQL Server?

Het hangt ervan af wat u wilt beschermen. Gebruik versleuteling op celniveau voor gedetailleerde controle over een paar gevoelige kolommen. Gebruik transparante gegevensversleuteling (TDE) om de volledige database in rust te beschermen zonder dat er applicatiewijzigingen plaatsvinden, en zo te voorkomen dat bestanden of back-ups worden gestolen. Gebruik 'Altijd versleuteld' wanneer de platte tekst zelfs voor de SQL Server en de beheerders verborgen moet blijven. Veel omgevingen combineren deze methoden, en de juiste mix hangt af van de gevoeligheid van uw gegevens, de prestaties en de compliance-vereisten.

Versleutel uw databases op de juiste manier.

SQL Server biedt verschillende versleutelingsopties, en de juiste keuze (in combinatie met goed sleutelbeheer) zorgt ervoor dat gevoelige gegevens beschermd blijven zonder dat uw applicaties vastlopen. Ontdek de adviesdiensten van Encryption Consulting op het gebied van versleuteling om databaseversleuteling te ontwerpen en te implementeren die perfect aansluit op uw omgeving.