Pogledaj jedan post
Old 26.04.2012., 07:32   #6
Enkripcija podataka u bazi podataka postavlja određena ograničenja na pristup podacima u bazi podataka. Npr. nije moguće indeksirati i pretraživati enkriptirane podatke, a to može biti ozbiljni nedostatak.

Kad bi mene pitali, podatke bi enkriptirao sa AES koji je simetrični algoritam, a to znači i brži. AES ključeve nekamo treba spremiti, idealno bi bilo u bazu podataka jer u nju pristup imaju svi, ali ako ih se spremi u nekriptiranom obliku, onda opet nikakva korist od toga, jer će ih moći koristiti svi. Kao rješenje tog problema koristio bih i RSA koji je asimetrični algoritam za kriptiranje AES ključeva koji bi se onda spremali u bazu podataka. Korisnik ako želi vidjeti podatke, mora imati privatni RSA ključ kako bi dešifrirao AES ključ. To je cijela filozofija. Java i .NET imaju podršku za AES128, AES192, AES256, te za RSA do 4096 bita veličinu ključa, a to bi se prema današnjim standardima moglo zvati sigurnim.

Drugi dio priče o kojoj bi se moglo govoriti je korištenje više različitih AES ključeva u bazi podataka. Primjer, ako se sve podatke u bazi podataka enkriptira samo jednim AES ključem, onda svatko tko zna taj ključ može čitati sve podatke. Ponekad to nije dobro, pa je potrebno definirati AES ključ za svakog korisnika pojedinačno ili ako se radi o nekakvim timovima/grupama, zajednički AES ključ za tim/grupu. Posebna priča je hijerarhijski pristup podacima na više hijerarhijskih razina. Sve to komplicira bazu podataka jer pravo na jedan podatak ima više korisnika s različitim AES ključevima, pa će često zbog toga u pitanje doći i normalizacija podataka, jer više ne mora vrijediti pravilo da je jedan podatak zapisan samo na jednom mjestu.

Sve u svemu jedno jako komplicirano područje koje je danas prilično neistraženo.
GemsBond is offline  
Odgovori s citatom