Publikováno dne: 23. října 2010
Po dlouhé době jsem se rozhodl napsat pokračování k článku o šifrování a dešifrování v MS SQL, ve kterém jsem zmínil první způsob šifrování a dešifrování dat pomocí asymetrického klíče. V této části  se Vám pokusím nastínit další způsob šifrování a dešifrování dat pomocí symetrického klíče.

Symetrické šifrování

Symetrický klíč obsahuje klíč, jimž se data šifrují i dešifrují a důsledkem je, že symetrické klíče jsou mnohem rychlejší  než asymetrické klíče, ale na úkor bezpečnosti. Proto jsou tyto klíče považovány za dobrou volbu pro zašifrování  většího množství dat.

Syntaxe vytvoření symetrického klíče (zjednodušeně)

CREATE SYMMETRIC KEY nazev_sym_klice
WITH ALGORITHM = { DES | TRIPLE_DES | RC2 | RC4 | DESX | AES_128 | AES_192| AES_256 }
ENCRYPTION BY PASSWORD 'heslo' | SYMMETRIC KEY nazev_jineho_sym_klice | ASYMMETRIC KEY nazev_asym_klice

nazev_sym_klice - jedná se o jedinečný název pro váš symetrický klíč, který se vytvoří nad nějakou datábází a zůstane po celou dobu.

DES | TRIPLE_DES | RC2 | RC4 | DESX | AES_128 | AES_192| AES_256 - šifrovací algoritmus, který se použije při vytvoření klíče

heslo - heslo pro zašifrování symetrického klíče

nazev_jineho_sym_klice - název symetrického klíče, který musí být vytvořen pro zašifrování jiného symetrického klíče

nazev_asym_klice - název asymetrického klíče vytvořený pro zašifrování symetrického klíče 

Syntaxe pro otevření symetrického klíče

OPEN SYMMETRIC KEY nazev_sym_klice
DECRYPTION BY ASYMMETRIC KEY nazev_asym_klice WITH PASSWORD = heslo_priv_klice | SYMMETRIC KEY nazev_sym_klice | PASSWORD 'heslo'
CLOSE SYMMETRIC KY nazev_sym_klice

nazev_sym_klice - název vytvořeného symetrického klíče, který chcete otevřít

nazev_asym_klice - pokud je symetrický klíč zašifrován pomocí asymetrického klíče, tak pro otevření je nutné zadat jeho název

heslo_priv_klice - jedná se o heslo pro privátní klíč asymetrického klíče uvedeného při vytváření asymetrického klíče

heslo - heslo, kterým je zašifrován symetrický klíč při jeho vytváření

Syntaxe šifrovací funkce EncryptByKey

EncryptByKey(Key_Guid('nazev_sym_klice'), nazev_sifrovaneho_sloupce)

nazev_sym_klice - název vytvořeného a otevřeného symetrického klíče 

nazev_sifrovaneho_sloupce - název sloupce v tabulce, který chcete zašifrovat

Nejlepší vysvětlení bude na nějakém příkladu a proto si vypujčím příklad z předchozí části a použiju ho k ukázce symetrického šifrování.

sifrovani 2

Po provedení příkazu INSERT se zašifruje vložená hodnota a po zobrazení dat v tabulce uživatelé se zašifrovaná hodnota hesla zobrazí v nečitelné podobě.

Symetrické dešifrování

Při dešifrování není zapotřebí používat jiný klíč než ten, kterým byl daný záznam zašifrován, protože při použití symetrického klíče se data šifrují a dešifrují stejným klíčem.

Syntaxe dešifrovací funkce DecryptByKey

DecryptByKey(nazev_zasifrovaneho_sloupce)

nazev_zasifrovaneho_sloupce - název zašifrovaného sloupce, který chcete dešifrovat

Stejně jako v minulé části si ukážeme jak bude vypadat příkaz pro dešifrování zašifrované hodnoty (v našem případe heslo).

Pokud si vyzkoušíme zobrazit údaje v tabulce uživatelé, kde jsme dešifrovali dříve zašifrovanou hodnotu hesla, tak jí uvidíme v čitelné podobě, tak jak jsme jí vložili do tabulky.

desifra 2 select

Tato druhá část o šifrování a dešifrování v MS SQL měla za úkol ukázat způsob použití symetrického šifrování, které se využívá v případech, kdy  databáze obsahuje velké množství údajů. Kdybychom totiž použili asymetrické šifrování, tak by z hlediska bezpečnosti byla naše databáze zabezpečena velice dobrou ochranou, ale za to její rychlost by se rapidně snížila. Proto je v této situaci lepší použít symetrické šifrování. V příští části bude řeč o třetí variantě šifrování a dešifrování a to za pomoci certifikátu.

Pozn. Šifrování dat využijete nejčastěji při ukládání uživatelských hesel, tak jako v našem ukázkovém příkladě.

Související články:

Komentáře

Žádné komentáře.
Obsah:  
Autor:  
Web:

Opiště kod: