Başlarken çok bişey yazmaya gerek yok. SQL 2005 ile gelen veri şifreleme işlem basamaklarını anlatacağım.
Not: Şifreleme deyip geçmeyin geri dönüşü olmayan yola girmeyin. Aman dikkat, yedekli çalışın.
. Database Alan Şifreleme işlem basamakları
a. Şifrelencek alan VARBINARY(256) veri tipinde oluşturulur.
Örn:
CreateTable MusteriTest
(
MusId INTPrimaryKeyIDENTITY,
TelNo VARBINARY(256)
)
b. Database seviyesinde sertifika oluşturulur.
create master key encryption by password ='password';
c. Master key kullanılmak üzere açılır.
OPEN MASTER KEY DECRYPTION BY PASSWORD ='password’
d. Sertifika create edilir.
CREATECERTIFICATE Sertifika_Test
WITH SUBJECT ='Ozel Sifreleme Algoritmasi.',
START_DATE ='07/07/2009'
e. Simetrik Key create edilir.
CREATESYMMETRICKEY Key_Test
WITH ALGORITHM = triple_des,
identity_value ='password',
key_source ='password'
ENCRYPTION BYCERTIFICATE Sertifika_Test
go
f. Sertifikaların backupları alınabilmektedir. Sertifika backup alınırken bir şifre ile alınır. Aynı şifre sertifikayı create edilirken kullanılacaktır.
Örn:
backupcertificate Sertifika_Test tofile='\\ortak\CertificatesBackup.cer'
with private key(file='\\ortak\CertificatesBackup.pvk',
encryption by password ='password')
g. Her işlem öncesi (insert, update , select)opensymmetrickey deyimi ile key açılır.
opensymmetrickey Key_Test decryption byCERTIFICATE [Sertifika_Test]
h. Her işlem sonrası (insert, update , select) CLOSESYMMETRICKEYdeyimi ile key kapatılır.
CLOSESYMMETRICKEY [Key_Test]
i. Her insertlerde ve updatelerde şifreleme aşağıdaki örnekte olduğu gibi kullanılmaktadır.
INSERTINTO [MusteriTest] VALUES(encryptbykey(key_guid('Key_Test'), N'05331234567'))
--Açılır
opensymmetrickey Key_Test decryption byCERTIFICATE [Sertifika_Test]
--İlgili kayıtlar çekilir...
SELECT TelNo,
convert(NVARCHAR(100), decryptbykey( TelNo ))as'TelNo'
FROM [Musteri]
--kapatılır..
CLOSESYMMETRICKEY [Key_Test]
Copy , paste, F5 (Yani SQL'de New Query açılır, alttaki blok kopyalanır yapıştırılır sonra F5'e basılır.)
--Database seviyesinde master key üretilir.
create master key encryption by password ='TEST1234567#TEST12345789';
--Sertifika oluşturmadan önce master key open işlemi ile hazır konuma getirilir.
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'TEST1234567#TEST12345789'
CREATE CERTIFICATE New_Sertifika_Deneme
WITH SUBJECT ='Ozel Sifreleme Algoritmasi.',
START_DATE = '01/22/2010'
CREATE SYMMETRIC KEY New_Key_Deneme
WITH ALGORITHM = triple_des,
identity_value = 'TEST1234567#TEST12345789',
key_source = 'TEST1234567#TEST12345789'
ENCRYPTION BY CERTIFICATE New_Sertifika_Deneme
go
|