Veritabanında Şifreleme Teknikleriyle Güvenlik Kontrolleri


Veritabanında hassas verilerin korunması için kullanılan başlıca şifreleme teknikleri, örnek sorgular ile birlikte açıklanmıştır.


1. Şifreleme Yöntemleri

a. Tek Yönlü Şifreleme (Hashing)

Tek yönlü şifreleme algoritmaları (örn., SHA-256) veriyi geri döndürülemez bir şekilde şifreler. Bu yöntemi özellikle şifre saklama işlemlerinde kullanabilirsiniz.

  • Örnek: SHA-256 ile Şifre Saklama ve Doğrulama
  -- 1. Kullanıcı şifresini SHA-256 hash'leyerek saklama
  CREATE TABLE Users (
      UserID INT PRIMARY KEY,
      Username NVARCHAR(50),
      PasswordHash VARBINARY(64)
  );

  -- Kullanıcı şifresini kaydederken SHA-256 ile hash'leme
  DECLARE @Password NVARCHAR(50) = 'GizliSifre';
  INSERT INTO Users (UserID, Username, PasswordHash)
  VALUES (1, 'user1', HASHBYTES('SHA2_256', @Password));

  -- 2. Giriş sırasında kullanıcı şifresini doğrulama
  DECLARE @LoginPassword NVARCHAR(50) = 'GizliSifre';
  SELECT CASE 
            WHEN PasswordHash = HASHBYTES('SHA2_256', @LoginPassword)
            THEN 'Giriş Başarılı' 
            ELSE 'Giriş Başarısız'
         END AS LoginStatus
  FROM Users
  WHERE Username = 'user1';
  • Açıklama: Kullanıcının şifresi HASHBYTES fonksiyonu ile SHA-256 kullanılarak hash’lenir. Giriş işlemi sırasında, girilen şifre aynı hash fonksiyonuna tabi tutulur ve saklanan hash ile karşılaştırılır.

b. Simetrik Şifreleme (AES)

Simetrik şifreleme ile şifrelenmiş verileri gerektiğinde çözerek kullanabilirsiniz. SQL Server’da AES şifreleme için SYMMETRIC KEY yapısını kullanabilirsiniz.

  • Örnek: AES ile Kredi Kartı Bilgilerini Şifreleme ve Çözme
  -- 1. AES Anahtarı Oluşturma
  CREATE SYMMETRIC KEY CreditCardKey
  WITH ALGORITHM = AES_256
  ENCRYPTION BY PASSWORD = 'GizliAnahtar123';

  -- 2. Tablo oluşturma
  CREATE TABLE Customers (
      CustomerID INT PRIMARY KEY,
      Name NVARCHAR(50),
      EncryptedCreditCard VARBINARY(MAX)
  );

  -- 3. Kredi kartı bilgisini AES ile şifreleyerek kaydetme
  DECLARE @CreditCard NVARCHAR(50) = '1234-5678-9012-3456';
  OPEN SYMMETRIC KEY CreditCardKey DECRYPTION BY PASSWORD = 'GizliAnahtar123';
  INSERT INTO Customers (CustomerID, Name, EncryptedCreditCard)
  VALUES (1, 'Ahmet Yılmaz', EncryptByKey(Key_GUID('CreditCardKey'), @CreditCard));
  CLOSE SYMMETRIC KEY CreditCardKey;

  -- 4. Kayıtlı kredi kartı bilgisini AES ile çözerek görüntüleme
  OPEN SYMMETRIC KEY CreditCardKey DECRYPTION BY PASSWORD = 'GizliAnahtar123';
  SELECT 
      CustomerID,
      Name,
      CONVERT(NVARCHAR(50), DecryptByKey(EncryptedCreditCard)) AS DecryptedCreditCard
  FROM Customers;
  CLOSE SYMMETRIC KEY CreditCardKey;
  • Açıklama: EncryptByKey fonksiyonu, kredi kartı bilgisini AES ile şifreler ve DecryptByKey fonksiyonu ile şifre çözülerek veri orijinal haliyle erişime sunulur.

c. Asimetrik Şifreleme (RSA)

Asimetrik şifreleme, genel ve özel anahtar çiftleri kullanır. SQL Server’da RSA ile şifrelemek için ASYMMETRIC KEY yapısını kullanabilirsiniz. Genellikle hassas veri iletiminde ve kimlik doğrulama işlemlerinde kullanılır.

  • Örnek: RSA ile Hassas Veriyi Şifreleme ve Çözme
  -- 1. Asimetrik Anahtar Oluşturma
  CREATE ASYMMETRIC KEY PersonalInfoKey
  WITH ALGORITHM = RSA_2048
  ENCRYPTION BY PASSWORD = 'GizliAsimetrikAnahtar';

  -- 2. Tablo oluşturma
  CREATE TABLE SensitiveData (
      DataID INT PRIMARY KEY,
      SensitiveInfo VARBINARY(MAX)
  );

  -- 3. Hassas veriyi RSA ile şifreleme
  DECLARE @Info NVARCHAR(50) = 'Gizli Bilgi';
  INSERT INTO SensitiveData (DataID, SensitiveInfo)
  VALUES (1, EncryptByAsymKey(AsymKey_ID('PersonalInfoKey'), @Info));

  -- 4. Şifrelenmiş hassas veriyi RSA ile çözme
  DECLARE @DecryptedInfo NVARCHAR(50);
  SELECT @DecryptedInfo = CONVERT(NVARCHAR(50), DecryptByAsymKey(AsymKey_ID('PersonalInfoKey'), SensitiveInfo, N'GizliAsimetrikAnahtar'))
  FROM SensitiveData
  WHERE DataID = 1;

  SELECT @DecryptedInfo AS DecryptedSensitiveInfo;
  • Açıklama: EncryptByAsymKey fonksiyonu, hassas veriyi RSA kullanarak şifreler ve DecryptByAsymKey ile çözülen bilgi orijinal haliyle erişime sunulur.

2. Güvenlik Kontrolleri İçin Şifreleme Yöntemleri

a. Veri Gizliliği Sağlama (Simetrik Şifreleme)

Simetrik şifreleme ile kişisel verilerin gizliliğini sağlamak için veriyi şifreleyebilir ve yalnızca anahtara erişimi olan kullanıcıların çözebilmesini sağlayabilirsiniz.

  • Örnek: AES ile e-posta adresini şifreleme
  DECLARE @Email NVARCHAR(50) = 'email@example.com';
  OPEN SYMMETRIC KEY CreditCardKey DECRYPTION BY PASSWORD = 'GizliAnahtar123';
  INSERT INTO Customers (CustomerID, Name, EncryptedCreditCard)
  VALUES (2, 'Mehmet Kaya', EncryptByKey(Key_GUID('CreditCardKey'), @Email));
  CLOSE SYMMETRIC KEY CreditCardKey;

b. Veri Bütünlüğü Sağlama (Tek Yönlü Şifreleme)

Veri bütünlüğünü doğrulamak için hash algoritmalarını kullanabilirsiniz. Hash’lenmiş veriyi saklayarak, herhangi bir değişiklik olup olmadığını doğrulayabilirsiniz.

  • Örnek: SHA-256 ile dosya bütünlüğü doğrulama
  DECLARE @FileContent NVARCHAR(100) = 'Dosya İçeriği';
  DECLARE @FileHash VARBINARY(64) = HASHBYTES('SHA2_256', @FileContent);

  -- Dosya verisi değiştiğinde yeniden hash hesaplayarak bütünlüğü kontrol et
  DECLARE @NewFileContent NVARCHAR(100) = 'Dosya İçeriği';
  DECLARE @NewFileHash VARBINARY(64) = HASHBYTES('SHA2_256', @NewFileContent);

  IF @FileHash = @NewFileHash
      PRINT 'Dosya bütünlüğü korundu.'
  ELSE
      PRINT 'Dosyada değişiklik yapıldı.';

c. Erişim Kontrolleri ve Kimlik Doğrulama (Asimetrik Şifreleme)

Kullanıcı kimliğini doğrulamak için asimetrik şifrelemeyi kullanarak dijital imza veya token doğrulaması yapabilirsiniz.

  • Örnek: RSA ile kimlik doğrulama
  -- Özel anahtar ile mesajı şifreleme (Dijital imza gibi düşünülebilir)
  DECLARE @Message NVARCHAR(100) = 'Kullanıcı Kimlik Bilgisi';
  DECLARE @EncryptedMessage VARBINARY(MAX);
  SET @EncryptedMessage = EncryptByAsymKey(AsymKey_ID('PersonalInfoKey'), @Message);

  -- Genel anahtar ile mesajı doğrulama
  DECLARE @DecryptedMessage NVARCHAR(100);
  SELECT @DecryptedMessage = CONVERT(NVARCHAR(100), DecryptByAsymKey(AsymKey_ID('PersonalInfoKey'), @EncryptedMessage, N'GizliAsimetrikAnahtar'));

  IF @DecryptedMessage = @Message
      PRINT 'Kimlik doğrulandı.'
  ELSE
      PRINT 'Kimlik doğrulama başarısız.';

Şifreleme Yöntemlerinin Avantajları ve Dezavantajları Özet Tablosu

Şifreleme YöntemiAvantajlarDezavantajlarKullanım Alanları
Tek Yönlü Şifreleme (Hashing)– Veri geri çözülemez, yüksek güvenlik sağlar.
– Basit ve hızlıdır.
– Orijinal veri geri döndürülemez.
– Zayıf hash algoritmaları saldırılara açıktır.
– Şifre saklama, veri bütünlüğü doğrulama
Simetrik Şifreleme (AES)– Veriyi şifreleyip çözebilirsiniz.
– Yüksek hız sağlar ve güçlüdür (örn., AES-256).
– Anahtar yönetimi karmaşıktır.
– Ağ üzerinden paylaşılan anahtarlar güvenlik açığı oluşturabilir.
– Kredi kartı bilgileri, kişisel veriler
Asimetrik Şifreleme (RSA)– Genel ve özel anahtarlarla veri güvenliği sağlar.
– Dijital imza ve kimlik doğrulamada kullanılır.
– Yavaş çalışır, büyük verilerde performansı düşüktür.
– Anahtar boyutları nedeniyle kaynak tüketimi fazladır.
– Dijital imza, SSL/TLS protokolleri

3. Sonuç

Veritabanında şifreleme teknikleri ile veri güvenliğini sağlamak mümkündür

. Ancak, her yöntem farklı güvenlik ihtiyaçlarına cevap vermektedir:

  • Tek Yönlü Şifreleme (Hashing) şifre saklama ve veri bütünlüğü doğrulamada güçlüdür.
  • Simetrik Şifreleme (AES) hassas verilerin gizliliğini sağlar.
  • Asimetrik Şifreleme (RSA), kimlik doğrulama ve güvenli veri iletiminde avantaj sunar.

Bu örnekler, her şifreleme tekniğinin SQL Server üzerinde nasıl kullanılabileceğini göstermekte olup, her bir yöntemin avantajlarını ve dezavantajlarını göz önünde bulundurarak veri güvenliği stratejisi oluşturulabilir.

Loading