UniDAC kullanılarak yapılacak şifreleme birden faklı yöntemler ile olabiliyor. Bu yöntemler kullanılan database sistemine göre değişebilir. Her database sistemi tüm database dosyasına şifreleme uygulamayabilir. Database dosyasının tamamını şifreleyebilen bilgim dahilinde SQLite ve FirebirdSQL database'leri mevcut. SQLite database dosyasının tamamı sadece UniDAC kullanılarak şifrelenebilir. FirebirdSQL ise ücretli edinilebilecek ek bir plug-in gerektirmektedir.
Bunlar dışında kalan ve genellikle büyük ölçekli (birkaç TB veya daha fazla veri barındıran) kullanılan database sistemleri şifreleme yerine sorgu planlayıcısı, tablo bölümleme, database senkronizasyonu vb konulara yoğunlaşırlar. Şifreleme isteyenlerin ise dosya sistemi üzerinde şifreleme işlemini gerçekleştirmesini önerirler.
UniDAC şifreleme yapamayan database sistemlerinde kullanılabilmesi için TUniEncryptor bileşenini geliştirmiştir. Bu bileşen şifreleme desteği olmayan her türlü database sisteminde kullanılabilir. Sadece kolon şifrelemesi yapmaktadır. Şifrelenecek kolon ile ilişkilendirilerek ilgili kolon verilerini şifreleme işlemini gerçekleştirir. Okuma zamanında da otomatik olarak şifrelenmiş veriyi okunabilir veri haline geri çevirir. Birden fazla TUniEncryptor bileşeni kullanılarak farklı kolonların farklı şifreleme yöntemleri kullanılarak şifrelenmesine de olanak tanımaktadır.
Database bazında veya kolon bazında şifrelemenin olası avantajları;
- Güvenlik avantajı vardır.
Database bazında şifrelemenin olası dezavantajları:
- Genel olarak güvenlik arttıkça kullanım kolaylığı azalmaktadır. Şifrelenmiş database dosyaları standart "database management" uygulamaları tarafından kullanılamaz hale gelebilir. Ya da şifreli alanlar üzerinde sorgu çalıştırmak uygulama dışında mümkün olmayabilir.
- Şifreleme ve geri okunabilir hale getirmek için işlemci ekstra çalışmak durumunda kalacaktır. Duruma göre büyük veriler için Query cevap süreleri ciddi derecede uzamaya başlayabilir.
- Şifrelenmiş veriler için kolon büyüklüğünü artırmak gerekebilir. Bazı şifreleme yöntemleri blok olarak şifreleme yaparlar. Blok boyutu kadar karakter şifrelenmiş olarak kaydedilebilir olması gerekmektedir.
- Database dosyalarının elektrik kesilmesi, sistem kilitlenmesi, vb durumlarda oluşabilecek fiziki bozulma durumlarında kurtarılması mümkün olmayabilir ki çoğu zaman mümkün olmamaktadır.
- Standart database yedekleme uygulamaları şifrelenmiş database üzerinde çalışmayabilir veya şifreyi açmak için gerekli bilgi (KEY) okunabilir parametre olarak verilerek güvenlik açığına sebep olunabilir.
UniDAC kullanarak SQLite database dosyasını şifrelemek için aşağıdaki gibi bir kod kullanılabilir veya çalışma zamanında ilgili TUniConnection parametreleri ayarlanarak kullanılabilir.
Kod: Tümünü seç
uses
Uni;
begin
// Aşağıdaki DB bir TUniConnection bileşenidir
DB.Close();
DB.ProviderName := 'SQLite';
DB.Database := 'sifreli.db';
DB.SpecificOptions.Values['ClientLibrary'] := EmptyStr;
DB.SpecificOptions.Values['ForceCreateDatabase'] := 'True';
DB.SpecificOptions.Values['Direct'] := 'True';
DB.SpecificOptions.Values['EncryptionAlgorithm'] := 'leAES256'; // Son sürümlerde leDefault olarakta kullanılabilir.
DB.SpecificOptions.Values['EncryptionKey'] := 'database şifreleme kelimesi'; // KEY olarakta adlandırılır
DB.Open();
TUniEncryptor kullanılarak şifrelenmiş bir kolon her defasında bit TUniEncryptor kullanılarak okunmalıdır. Dolayısıyla kullanılacak her bir TUniQuery veya TUniTable bileşeni ile ilişkilendirilmelidir. Şifrelenmiş bir kolonu bir TUniEncryptor ile ilişkilendirmeden okumaya çalışır iseniz şifreli şekilde bilgiler karşınıza gelecektir.
Bunlar dışında;
MySQL: MySQL Enterprise Encryption mevcuttur ancak bu ücretli MySQL sürümlerinde (hepsinde değil belirli ücretli sürümlerde) bulunmaktadır.
PostgreSQL: Bilgim dahilinde database bazında şifreleme desteklemez. Ancak "pgcrypto" gibi plug-in yardımı ile belirlenen kolonların şifrelenmesini sağlamak mümkündür. Bununla birlikte PostgreSQL şifreli bağlantı kullanılarak TCP/IP üzerinden gerçekleşen iletişimin şifreli olmasını sağlayabilir. Disk üzerinde şifrelenmiş dosyalar için dosya sistemi şifreleme kullanımı önerilmektedir.
SQL Server: Transparent Data Encryption (TDE) kullanılabilir. Ancak Microsoft TCP/IP üzerinden gerçekleşen iletişimin okunabilir bilgi olacağı konusunda uyarmakdatır. Bunun önüne geçmek için sertifika yardımı ile şifreli iletişim yapılması gerekmektedir.