Veľmi často potrebujeme šifrovať naše data v databáze v rámci SQL serveru. Aby sme
sa chránili pred únikom citlivých dát (heslá, firemné údaje a pod) používame šifrovacie
nástroje. Teraz sa pozrieme na dva základne typy šifrovania priamo pod SQL serverom.
Symetrický kľúč: Symetrický kľúč musí byť šifrovaný jedným z následujúcich spôsobov - certifikát, heslo, iný symetrický kľúč, aymetrický kľúč alebo provider. Šifrovací algoritmus musí byť jedna z týchto možností:
Asymetrický kľúč: Asymetrický kľúč je tvorený dvojicou súkromného a verejného kľúča. Typy šifrovania:
Najprv si vytvoríme certifikát.
Vytvoríme si testovacie tabuľky na ktorých budeme testovať výkonnosť.
- šifrovanie pomocou symetrického kľúča
- šifrovanie pomocou asymetrického kľúča
Symetrický kľúč: Symetrický kľúč musí byť šifrovaný jedným z následujúcich spôsobov - certifikát, heslo, iný symetrický kľúč, aymetrický kľúč alebo provider. Šifrovací algoritmus musí byť jedna z týchto možností:
- DES
- TRIPLE_DES
- TRIPLE_DES_3KEY
- RC2
- RC4
- RC4_128
- DESX
- AES_128
- AES_192
- AES_256
Asymetrický kľúč: Asymetrický kľúč je tvorený dvojicou súkromného a verejného kľúča. Typy šifrovania:
- RSA 512 ( max 53 znakov pre typ varchar, 21 znakov pre nvarchar )
- RSA 1024 ( max 117 znakov pre typ varchar, 53 znakov pre nvarchar )
- RSA 2048 ( max 245 znakov pre typ varchar, 117 znakov pre nvarchar )
Najprv si vytvoríme certifikát.
USE TestDBZoznam všetkých možných certifikátov získame následujúcim príkazom:
CREATE CERTIFICATE TestDB_Cert
ENCRYPTION BY PASSWORD 'password4test'
WITH SUBJECT = 'Certificate for secret data'
EXPIRY_DATE = '10/31/2015';
GO
USE TestDB;Zoznam všetkých symetrických a asymetrických kľúčov získame pomocou sql príkazu:
SELECT * FROM sys.certificates;
USE TestDB;Keďže sme zatiaľ žiaden kľúč nevytvorili využíjeme tieto príkazy neskôr. Vytvoríme 4 kľuče, 2 asymetrické a 2 symetrické a 1 certifikát
SELECT * FROM sys.symmetric_keys;
SELECT * FROM sys.asymmetric_keys;
- Asymetrický kľuč s kódovaním RSA_2048 šifrovaný heslom
- Asymetrický kľuč s kódovaním RSA_512 šifrovaný heslom
- Symetrický kľúč s kódovanim AES_256 šifrovaný heslom
- Symetrický kľúč s kódovanim AES_256 šifrovaný certifikátom
USE TestDB;Pozrime sa teraz na zoznam certifikátov a kľúčov.
print 'Asymetric key RSA 2048';
CREATE ASYMMETRIC KEY AsymmKey_RSA2048
WITH ALGORITHM = RSA_2048
ENCRYPTION BY PASSWORD ='password4test!';
GO
print 'Asymetric key RSA 512'
CREATE ASYMMETRIC KEY AsymmKey_RSA512
WITH ALGORITHM RSA_512
ENCRYPTION BY PASSWORD = 'password4test!'
GO
print 'Symetric key AES 256'
CREATE SYMMETRIC KEY SymmKey_AES256
WITH ALGORITHM = AES_256
ENCRYPTION BY PASSWORD = ''password4test!'
GO
print 'Symetric key AES 256 Cert'
CREATE SYMMETRIC KEY SymmKey_AES256Cert
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE TestDB_Cert
GO
USE TestDB;Mali by sme vidieť jeden certifikát, dva symetrické a dva asymetrické kľuče. Viď obrázok č.1
SELECT * FROM sys.certificates;
SELECT * FROM sys.symmetric_keys;
SELECT * FROM sys.asymmetric_keys;
Obrázok č.1 - Prehľad vytvorených kľúčov a certifikát |
CREATE TABLE dbo.SymmKeyTest(Pokračovanie: Symetrické kľúče vs Asymetrické kľúče - čásť 2/2
SecretColumn VARBINARY(256))
GO
CREATE TABLE dbo.SymmKeyTest_Cert(
SecretColumn VARBINARY(256))
GO
CREATE TABLE dbo.AsymmKeyTest512 (
SecretColumn VARBINARY(256))
GO
CREATE TABLE dbo.AsymmKeyTest2048(
SecretColumn VARBINARY(256))
GO
Marek toto si zabil parada :)
OdpovedaťOdstrániť