1. Büyük Dil Modelleri (LLM) ve PII Sızıntısı Riski
Müşteri sözleşmeleri, çağrı merkezi dökümleri, sağlık raporları veya yazılım hata logları analiz edilmek üzere ChatGPT, Claude veya üçüncü taraf yapay zeka API'larına yapıştırıldığında, bu veriler model sağlayıcısının sunucularına iletilir. Pek çok platform bu girdileri gelecekteki modelleri eğitmek veya sistem günlüklerinde (logs) saklamak için kullanır.
Bu durum 6698 Sayılı Kişisel Verilerin Korunması Kanunu (KVKK) ve AB Genel Veri Koruma Tüzüğü (GDPR) kapsamında açık bir veri aktarımı ve güvenlik ihlalidir. Verileri yapay zekaya iletmeden önce istemci tarafında maskelemek (redaction) en güvenli çözümdür.
2. T.C. Kimlik Numarası Doğrulama ve Maskeleme Algoritması
Basit metin aramaları sahte sayı dizileriyle gerçek TCKN'leri ayırt edemez. Gelişmiş maskeleme motorları T.C. Kimlik Numarasının 11 haneli matematiksel algoritmasını doğrular:
1. Hane 0 olamaz. İlk 10 hanenin toplamının mod 10'u 11. haneyi vermelidir. Ayrıca 1, 3, 5, 7 ve 9. hanelerin toplamının 7 katından 2, 4, 6 ve 8. hanelerin toplamı çıkarılıp mod 10'u alındığında 10. haneyi vermelidir:
function isValidTCKN(tckn) {
if (!/^[1-9]\d{10}$/.test(tckn)) return false;
const digits = tckn.split('').map(Number);
const oddSum = digits[0] + digits[2] + digits[4] + digits[6] + digits[8];
const evenSum = digits[1] + digits[3] + digits[5] + digits[7];
// Kural 1: 10. basamak kontrolü
const digit10 = ((oddSum * 7) - evenSum) % 10;
if ((digit10 < 0 ? digit10 + 10 : digit10) !== digits[9]) return false;
// Kural 2: 11. basamak kontrolü (İlk 10 basamağın toplamı % 10)
const totalFirst10 = digits.slice(0, 10).reduce((a, b) => a + b, 0);
if (totalFirst10 % 10 !== digits[10]) return false;
return true;
}3. Luhn Algoritması (Mod 10) ile Kredi Kartı Maskeleme
Kredi kartı numaraları 13 ile 19 hane arasında değişir ve uluslararası ISO/IEC 7812 standardı olan Luhn algoritmasıyla üretilir. Metin içindeki rastgele sayı gruplarını yanlışlıkla maskelememek için Luhn algoritması kontrolü uygulanır:
function isValidCreditCard(numberStr) {
const sanitized = numberStr.replace(/[\s-]/g, '');
if (!/^\d{13,19}$/.test(sanitized)) return false;
let sum = 0;
let shouldDouble = false;
for (let i = sanitized.length - 1; i >= 0; i--) {
let digit = parseInt(sanitized.charAt(i), 10);
if (shouldDouble) {
digit *= 2;
if (digit > 9) digit -= 9;
}
sum += digit;
shouldDouble = !shouldDouble;
}
return (sum % 10) === 0;
}4. Tersine Çevrilebilir Maskeleme (Reversible Pseudonymization)
Veriyi tamamen silmek yerine yerine sentetik etiketler yerleştirmek (Ahmet Yılmaz -> [KİŞİ_1], 0532... -> [TELEFON_1]), yapay zeka modelinin bağlamsal analiz yapabilmesini sağlar. Model 'Ahmet Bey'in sözleşmesini özetle' yerine '[KİŞİ_1]'in sözleşmesini özetle' mantığıyla kusursuz özet çıkarır.
Yazılım Motoru PII Maskeleyici, yerel RAM belleğinde geçici bir eşleştirme tablosu (Lookup Map) tutar. Yapay zekadan dönen yanıtı aldığınızda tek tıklamayla etiketleri tekrar gerçek isimlerle eşleştirebilirsiniz (De-anonymization).
5. İstemci Taraflı Güvenlik ve Uyumluluk
Maskeleme yapmak için bile olsa metinleri başka bir üçüncü taraf web sitesinin sunucusuna göndermek yeni bir veri ihlali riskidir. Yazılım Motoru PII Maskeleyici, tüm Regex ve algoritma kontrollerini doğrudan tarayıcınızda çalıştırarak metinlerinizin bilgisayarınızdan dışarı çıkmasını engeller.