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 veDecryptByKey
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 veDecryptByAsymKey
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öntemi | Avantajlar | Dezavantajlar | Kullanı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.