Citat:
franjo_tahi: Možda temp tablica (budući da se iz nje ne mogu učitati podaci iz druge transakcije) u koju program upisuje ključ, a funkcija čita podatak i njime kriptira/dekriptira podatke?
Mozda je ovo tvoje dobar pristup. Mozda bi mogao neki kljuc da postavis iz programa u context variable sa RDB$SET_CONTEXT('USER_SESSION', 'MojKljuc', 'vrednost kljuca bla bla...') i onda da imas UDFe recimo Encode/Decode(AVrednostPolja, AKljuc).
U praksi, iz programa postavis kljuc kroz query sa sledecim kodom:
Code:
execute block as
begin
RDB$SET_CONTEXT('USER_SESSION', 'MojKljuc', 'vrednost kljuca bla bla...');
end
I onda upite mozes raditi sa
Code:
select x.* from
( select obicno_polje1, decode(enc_polje1, RDB$GET_CONTEXT('USER_SESSION', 'MojKljuc')) enc_polje1
from tabela1
) x
order by x.enc_polje1 -- ovako bi imao i sortiranje, bez da pozivas udf 2x
-- a upis
insert into tabela1(obicno_polje1, enc_polje1)
values ('vrednost1', encode('vrednost2', RDB$GET_CONTEXT('USER_SESSION', 'MojKljuc')))
Cak bi modao napraviti updatable view koji bi ti u hodu radio enc/dec....
Code:
create view ve_tabela1
(obicno_polje1, enc_polje1)
as
select obicno_polje1, decode(enc_polje1, RDB$GET_CONTEXT('USER_SESSION', 'MojKljuc')) enc_polje1
from tabela1;
-- i onda trigger
CREATE OR ALTER trigger ve_tabela1_bi0 for ve_tabela1
active before insert or update position 0
as begin
update or insert into tabela1 (obicno_polje1, enc_polje1)
values (new.obicno_polje1, encode(new.enc_polje1, RDB$GET_CONTEXT('USER_SESSION', 'MojKljuc')));
end
I onda normalno radis sa ve_tabela1, a podaci su u tabeli uvek zasticeni.
Enkripcija diska je dobro resenje za zastitu od kradje racunara/diska. ALI ako neko ima pristup racunaru sa bazom u toku rada racunara i baze, onda ga nista ne sprecava da kopira bazu - koliko sam ja shvatio, programi za enkripciju diska rade tako sto se disk montira kao novi drajv na recimo slovo X:, i onda imas full pristup tim podacima dok god je disk montiran. Znaci copy/paste bez problema. Ovo sve mislim na tipicnu windows xp klient instalaciju. Uz malo podesavanja privilegija pristupa, jos bolje linux server, moze biti dobro resenje.