Microsoft SQL Server
Cryptage
Recherche…
Paramètres
Paramètres facultatifs | Détails |
---|---|
WITH PRIVATE KEY | Pour CREATE CERTIFICATE, une clé privée peut être spécifiée: (FILE='D:\Temp\CertTest\private.pvk', DECRYPTION BY PASSWORD = 'password'); |
Remarques
La création d'un certificat DER fonctionnera correctement. Cependant, lorsqu'un certificat Base64 est utilisé, le serveur SQL se plaint du message crypté:
Msg 15468, Level 16, State 6, Line 1
An error occurred during the generation of the certificate.
Importez votre certificat Base64 dans le magasin de certificats de votre système d'exploitation pour pouvoir le réexporter au format binaire DER.
Une autre chose importante à faire est d’avoir une hiérarchie de chiffrement afin de protéger l’autre, jusqu’au niveau du système d’exploitation. Voir l'article sur 'Encryption of database / TDE'
Pour plus d'informations sur la création de certificats, rendez-vous sur: https://msdn.microsoft.com/en-us/library/ms187798.aspx
Pour plus d'informations sur le chiffrement de la base de données / TDE, rendez-vous sur: https://msdn.microsoft.com/en-us/library/bb934049.aspx
Pour plus d'informations sur le chiffrement des données, rendez-vous sur: https://msdn.microsoft.com/en-us/library/ms188061.aspx
Chiffrement par certificat
CREATE CERTIFICATE My_New_Cert
FROM FILE = 'D:\Temp\CertTest\certificateDER.cer'
GO
Créer le certificat
SELECT EncryptByCert(Cert_ID('My_New_Cert'),
'This text will get encrypted') encryption_test
En général, vous cryptez avec une clé symétrique, cette clé serait chiffrée par la clé asymétrique (clé publique) de votre certificat.
Notez également que le chiffrement est limité à certaines longueurs en fonction de la longueur de la clé et renvoie NULL dans le cas contraire. Microsoft écrit: "Les limites sont les suivantes: une clé RSA 512 bits peut chiffrer jusqu'à 53 octets, une clé 1024 bits peut chiffrer jusqu'à 117 octets, et une clé 2048 bits peut chiffrer jusqu'à 245 octets."
EncryptByAsymKey a les mêmes limites. Pour UNICODE, cela serait divisé par 2 (16 bits par caractère), soit 58 caractères pour une clé de 1024 bits.
Cryptage de la base de données
USE TDE
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE My_New_Cert
GO
ALTER DATABASE TDE
SET ENCRYPTION ON
GO
Cela utilise le «chiffrement de données transparent» (TDE)
Chiffrement par clé symétrique
-- Create the key and protect it with the cert
CREATE SYMMETRIC KEY My_Sym_Key
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE My_New_Cert;
GO
-- open the key
OPEN SYMMETRIC KEY My_Sym_Key
DECRYPTION BY CERTIFICATE My_New_Cert;
-- Encrypt
SELECT EncryptByKey(Key_GUID('SSN_Key_01'), 'This text will get encrypted');
Chiffrement par mot de passe
SELECT EncryptByPassphrase('MyPassPhrase', 'This text will get encrypted')
Cela va également chiffrer, mais ensuite par phrase secrète au lieu de la clé asymétrique (certificat) ou par une clé symétrique explicite.