İçeriğe atla
0 XP 0
14 dkderinleşmeyle 15 dk60 XP8 etkinlik

KVKK, TCKN ve maskeleme

Bu derste
  • KVKK'nın LLM uygulamasına nasıl uygulandığını, TCKN'yi yakalayıp maskelemeyi ve yurt dışındaki model sağlayıcısına aktarım kuralını öğrenirsin.
  • Kişisel veri ile özel nitelikli veriyi ayırır, verinin istemde, araç çıktısında ve günlükte nerede biriktiğini görürsün.
  • Sonunda TCKN adaylarını desenle yakalar, doğrulama basamaklarıyla eler ve maskelenmiş veriyi yetkiye göre geri koyarsın.

Puan bütün etkinlikleri cevaplayınca hesaba yazılır. Bu dersi tamamlayınca +60 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.

Türkiye'de bir LLM uygulaması kişisel veri işliyorsa 6698 sayılı Kişisel Verilerin Korunması Kanunu (KVKK) kapsamındadır. Sohbet kaydı tutmak, istemi bir modele göndermek ve yanıtı günlüğe yazmak da veri işlemedir. Kanun işlemeyi geniş tanımlar: elde etme, kaydetme, depolama, aktarma ve sınıflandırma dahil her işlem bu kapsama girer.

Kişisel Verileri Koruma Kurumu, Kasım 2025'te üretken yapay zekâ için 15 soruluk bir rehber yayımladı. Rehber aynı kuralların bu sistemlere de uygulandığını açıkça yazar. Bu derste hukuku mühendislik kararına çevirirsin. Verinin nerede biriktiğini, sınırı nerede aştığını ve TCKN'yi nasıl yakalayıp maskeleyeceğini görürsün.

Kişisel veri ve LLM'de biriktiği yerler

Kanunun 3. maddesine göre kişisel veri, kimliği belirli ya da belirlenebilir gerçek kişiye ilişkin her türlü bilgidir. Ad soyad, telefon, e-posta, adres, IP, müşteri numarası buraya girer. TCKN tek başına kişiyi bulmaya yeter, o yüzden en dikkatli tutulan alandır.

Kanunun 6. maddesi ayrı bir sınıf tanımlar: özel nitelikli kişisel veri. Sağlık, biyometrik ve genetik veri, din, siyasi düşünce, sendika üyeliği, cinsel hayat ve ceza mahkûmiyeti bu sınıfa girer. Bu sınıf daha sıkı kural ister, çünkü sızması hâlinde zarar geri alınamaz.

2024 değişikliği bu verinin işlenme şartlarını yeniden yazdı; Kurulun belirlediği yeterli önlemler ise her durumda şarttır. Bir asistanın işlediği alanları önce bu iki gruba ayırırsın.

LLM uygulamasında veri üç noktada birikir. Birincisi kullanıcının yazdığı istemdir. İkincisi aracın döndürdüğü kayıttır: müşteri kartı, sipariş satırı, destek bileti. Üçüncüsü sistemin tuttuğu günlüktür ve en çok atlanan da budur.

Ekipler istemi maskeler, ama aynı istem ham hâliyle uygulama günlüğüne ya da gözlem aracına düşer. OWASP'ın 2026 metni bu noktanın altını çizer: LLM gözlem platformları istemi, yanıtı ve araç izini varsayılan olarak tam kaydeder. Maskelemeyi tek noktaya koyarsan diğer ikisi açık kalır.

KullanıcıgirdiSistem promptutalimatModeltek kanalAraçlardosya, APIDış belgeDış belgedeki metin de modelin okuduğu aynı kanala girer.
Kullanıcı girdisi, sistem promptu, model ve araçlar. Kişisel veri maskelenmeden model çağrısına girerse, dış sağlayıcıya aktarım da o durakta olur.

Şemadaki akışı veri gözüyle izle. Kullanıcı girdisi uygulamaya gelir, sistem promptu ve araç çıktısıyla birleşir, sonra model çağrısıyla sağlayıcıya gider. Model şirketin kendi sunucusunda çalışıyorsa veri kurumun içinde kalır. Model bir bulut sağlayıcısındaysa, çağrı anında veri kurumun dışına çıkar.

Sağlayıcı yurt dışındaysa bu çıkış hukuken yurt dışına aktarımdır. Kurumun 2025 rehberi bunu açıkça yazar. Maskelemenin yeri de buradan çıkar: veri sınırı aşmadan önce.

Etkinlik 1 / 8

Maskeleme yapılmadan kişisel veri hangi durakta dış model sağlayıcısına aktarılır?

Diyagramda doğru kutuyu tıkla.

KullanıcıgirdiSistem promptutalimatModeltek kanalAraçlardosya, APIDış belgeDış belgedeki metin de modelin okuduğu aynı kanala girer.

Yurt dışına aktarım: 2024 değişikliği

7499 sayılı Kanun 12 Mart 2024'te Resmî Gazete'de yayımlandı. KVKK'nın 6., 9. ve 18. maddelerindeki değişiklikler 1 Haziran 2024'te yürürlüğe girdi.

En büyük değişiklik yurt dışına aktarımdadır. Eski düzende şirketlerin çoğu aktarımı ilgili kişinin açık rızasına dayandırıyordu. Yeni 9. madde yolu üç kademeye ayırır.

Birinci kademe yeterlilik kararıdır: Kurul bir ülke, sektör ya da uluslararası kuruluş için karar verir ve karar Resmî Gazete'de yayımlanır. Karar yoksa ikinci kademe uygun güvencelerdir. Özel sektör için en pratik güvence, Kurulun ilan ettiği standart sözleşmedir. Sözleşme imzalar tamamlandıktan sonra beş iş günü içinde Kuruma bildirilir.

Aktarımın mühendislik karşılığı üç sorudur. Model hangi ülkede çalışıyor ve sağlayıcının alt işleyenleri kim? Sözleşme verinin eğitimde kullanılmayacağını, ne kadar saklanacağını ve nasıl silineceğini yazıyor mu? Sınırı aşan veriyi azaltabilir misin?

Üçüncü soru maskelemeyi hukuki bir araca çevirir. Model çağrısına TCKN yerine {TCKN_1} giderse, sağlayıcıya o alan hiç aktarılmaz. Maskeleme aktarım dayanağı ihtiyacını ortadan kaldırmaz, çünkü metnin geri kalanı hâlâ kişiye bağlanabilir. Ama aktarılan veriyi küçültür ve bir sızıntıda etkiyi daraltır.

Derinleş:Dört uygun güvence ve geçiş dönemi

Yeni 9. madde dört uygun güvence sayar. Birincisi kamu kurumları arasında, uluslararası sözleşme niteliğinde olmayan bir anlaşmadır ve Kurul izni ister. İkincisi, bir şirket grubunun uymakla yükümlü olduğu ve Kurulun onayladığı bağlayıcı şirket kurallarıdır.

Üçüncüsü, Kurulun ilan ettiği standart sözleşmedir. Dördüncüsü, yeterli korumayı yazılı olarak taahhüt eden bir belgedir ve o da Kurul izni ister. Hepsinin ortak şartı, ilgili kişinin aktarım yapılan ülkede de haklarını kullanabilmesi ve etkili kanun yollarına başvurabilmesidir.

Usul, 10 Temmuz 2024'te yayımlanan aktarım yönetmeliğiyle ayrıntılandı. Yönetmelik standart sözleşme metninin hiçbir değişiklik yapılmadan kullanılmasını zorunlu tutar. Bildirimi kimin yapacağı sözleşmede belirlenebilir; belirlenmezse veri aktaran taraf yapar. Geçiş de bir gecede olmadı.

Kanuna eklenen geçici 3. madde, eski 9. maddenin birinci fıkrasını 1 Eylül 2024'e kadar yeni hükümle birlikte uygulattı. Aynı değişiklikle idari para cezalarına itiraz yolu da sulh ceza hâkimliğinden idare mahkemesine geçti.

Etkinlik 2 / 8

Doğru mu, yanlış mı?

Yurt dışındaki bir model sağlayıcısına kişisel veri göndermek KVKK'ya göre yurt dışına aktarımdır ve ayrı bir hukuki dayanak ister.

Hangi alan kişisel veridir

Maskelemeye başlamadan önce hangi alanların kişisel veri olduğunu bilmen gerekir. Kilit kelime 'belirlenebilir'dir. Bir alan tek başına kişiyi göstermese de başka bir veriyle birleşince gösteriyorsa kişisel veridir.

Müşteri numarası tek başına bir sayıdır, ama şirketin veritabanıyla eşleşince kişiye döner. IP adresi de erişim sağlayıcının kayıtlarıyla bir aboneye bağlanır. Buna karşılık şirketin genel santral numarası ya da bir ürün kategorisi kimseyi belirlemez.

Kapsam dışı alanı gereksiz yere kısıtlamak işi yavaşlatır, kapsamdaki alanı atlamak ise ihlal doğurur. O yüzden önce alanları ikiye ayır: kişiye bağlanan ve bağlanmayan.

LLM sistemlerinde belirlenebilirlik iki yeni biçim alır. Birincisi birleşimdir. Yaş aralığı, ilçe ve meslek ayrı ayrı zararsız görünür. Model üçünü aynı yanıtta birleştirirse küçük bir ilçede tek bir kişiyi işaret edebilir.

İkincisi gömülerdir (embeddings). Vektör deposundaki sayı dizileri okunamaz görünür, ama OWASP'ın 2026 metni ters çevirme saldırılarının gömüden düz metni yeniden kurabildiğini not eder. Bu yüzden 'yalnız gömü sakladık' demek, kaynak belgeyi saklamaktan çok farklı değildir. Kurumun 2025 rehberi de ilgili kişi haklarını eğitim verisine, model çıktısına ve kullanıcı sorgusuna kadar uzatır.

Etkinlik 3 / 8

KVKK kapsamında kişisel veri sayılan alanlar hangileridir?

Birden fazla doğru var.

Etkinlik 4 / 8

Altay Kargo asistanının gördüğü her alanı doğru sınıfa koy.

Önce bir seçeneğe, sonra aşağıdaki uygun kutuya bas. İstersen seçeneği kutuya sürükleyip bırak. Yerini değiştirmek için aynı işlemi tekrarla.

0/6 seçenek yerleşti.

TCKN'yi yakalamak: desen ve doğrulama basamakları

Yakalama tarafında desen işini görür ama tek başına yetmez. TCKN on bir hanedir ve basamak kuralları vardır. Yalnız on bir haneyi arayan desen, on bir haneli sipariş numarasını da yakalar.

İlk kural basittir: ilk hane sıfır olamaz. Sonraki iki kural doğrulama basamaklarıdır (checksum). Onuncu hane için tek sıradaki ilk beş hanenin toplamını yediyle çarpar, çift sıradaki dört hanenin toplamını çıkarır ve ona bölümünden kalanı alırsın.

On birinci hane, ilk on hanenin toplamının ona bölümünden kalanıdır. Rastgele on bir haneli bir sayının iki kuralı birden tutturma olasılığı yüzde birdir. Doğrulama adımı eklersen yanlış pozitiflerin büyük kısmı düşer.

def tckn_gecerli(s):
    if len(s) != 11 or not s.isdigit() or s[0] == "0":
        return False
    d = [int(c) for c in s]
    onuncu = ((d[0] + d[2] + d[4] + d[6] + d[8]) * 7 - (d[1] + d[3] + d[5] + d[7])) % 10
    on_birinci = sum(d[:10]) % 10
    return d[9] == onuncu and d[10] == on_birinci

print(tckn_gecerli("10000000146"))  # True
print(tckn_gecerli("20260919123"))  # False
Doğrulama basamakları. Python'da dizin sıfırdan başlar; d[0] birinci hanedir.

Bu kontrolü elle yazmak zorunda değilsin. Açık kaynaklı Presidio kütüphanesi, 2.2.363 sürümünden beri TR_NATIONAL_ID adlı bir TCKN tanıyıcısı taşır. Tanıyıcı deseni, bağlam kelimelerini ve doğrulama basamaklarını birlikte kullanır.

Varsayılan olarak kapalı gelir, bu yüzden onu çözümleyiciye (analyzer) elle eklersin. Aşağıdaki örnekte tanıyıcı yalnız desen ve doğrulamayla çalışır, bu yüzden varsayılan dil anahtarıyla kaydedilir. Anonimleştirici (anonymizer) bulunan aralığı senin verdiğin yer tutucuyla değiştirir.

from presidio_analyzer import AnalyzerEngine
from presidio_analyzer.predefined_recognizers import TrNationalIdRecognizer
from presidio_anonymizer import AnonymizerEngine
from presidio_anonymizer.entities import OperatorConfig

analyzer = AnalyzerEngine()
analyzer.registry.add_recognizer(TrNationalIdRecognizer(supported_language="en"))

metin = "Musteri 10000000146 ile aradi, siparis 20260919123"
bulgu = analyzer.analyze(text=metin, language="en", entities=["TR_NATIONAL_ID"])
print(bulgu)
maske = AnonymizerEngine().anonymize(text=metin, analyzer_results=bulgu,
    operators={"TR_NATIONAL_ID": OperatorConfig("replace", {"new_value": "{TCKN_1}"})})
print(maske.text)

# Cikti
[type: TR_NATIONAL_ID, start: 8, end: 19, score: 1.0]
Musteri {TCKN_1} ile aradi, siparis 20260919123
Presidio ile TCKN yakalama ve yer tutucuyla değiştirme. Sipariş numarası doğrulamadan geçemediği için dokunulmadan kalır.

Çıktıyı satır satır oku. İlk dört satır çözümleyiciyi ve anonimleştiriciyi içe aktarır. Kayıt satırı, kapalı gelen TCKN tanıyıcısını devreye alır.

analyze çağrısı metni tarar ve yalnız TR_NATIONAL_ID türünü ister. Sonuç tek bir bulgudur: 8. ile 19. karakter arası, puan 1,0.

Puan tavan değerdedir, çünkü aday doğrulama basamaklarından geçti. Sipariş numarası da on bir hanedir, ama basamaklar tutmadığı için listede yoktur. Düz bir on bir hane deseni ikisini birden yakalardı.

Son satırda anonimleştirici TCKN'yi {TCKN_1} yer tutucusuyla değiştirdi. Model yalnız bu hâli görür.

Etkinlik 5 / 8

On bir haneli TCKN adaylarını taşıyan satırları seç.

Yazdıkça eşleşen satırlar işaretlenir. Hedef: yalnız doğru satırlar eşleşsin.

musteri no: 4021 eşleşmedi
tckn 10000000146 kayitli eşleşmedi
siparis 20260919 tamam eşleşmedi
kimlik: 29876543210 eşleşmedi

Etkinlik 6 / 8

Yukarıdaki tckn_gecerli işlevi bu çağrıda ne döndürür?

Önce kodu oku, sonra çıktıyı seç.

tckn_gecerli("29876543210")

Maskeleme, geri koyma ve ilgili kişi hakları

Maskeleme iki biçimde yapılır. Takma adlandırma (pseudonymization) alanı geri döndürülebilir bir işaretle değiştirir: TCKN yerine KISI_7 yazarsın, eşleşmeyi ayrı bir kasada tutarsın. Anonim hâle getirme ise geri dönüşü bitirir. Kanunun tanımıyla veri, başka verilerle eşleştirilse bile kişiye bağlanamaz hâle gelir.

Kanun anonim veriyi kapsam dışında tutar, takma adlı veriyi ise kapsamda sayar, çünkü kasayı açan kişiye geri döner. Bir de biçim koruyan şifreleme (format-preserving encryption) vardır: on bir haneli alan yine on bir haneli kalır ama değer değişir. Eski sistemler alan biçimini doğruluyorsa bu yöntem işe yarar.

Pratikte akış şöyle kurulur. İstem modele gitmeden önce alanları yakala ve yer tutucuya çevir. Model yer tutucuyla çalışsın.

Yanıt döndükten sonra, yalnız kullanıcı görmeye yetkiliyse gerçek değeri geri koy. Böylece sağlayıcıya hiç TCKN gitmez.

Eşleşme tablosunu oturuma bağla ve oturum bitince sil; kalıcı bir kasa ikinci bir hassas veri deposu demektir. Aynı kişi istemde iki kez geçiyorsa iki yerde de {TCKN_1} yazılır. Yoksa model iki farklı kişi varsayar ve yanıtı bozulur.

girdi  = "10000000146 numarali musterinin adresini guncelle"
maske  = "{TCKN_1} numarali musterinin adresini guncelle"
yanit  = model(maske)
cikti  = geri_koy(yanit, {"TCKN_1": girdi_tckn}, yetki=kullanici.rol)
Maskele, modele gönder, yetkiye göre geri koy.

Geri koyma kararı da güvenlik işidir. Maskelenmiş veriyi gerçek değere çevirmek bir yetki kararıdır ve saldırganın erişemeyeceği bir yerde verilir. Model ve tarayıcı, saldırganın etkileyebildiği katmanlardır.

Bir istem enjeksiyonu modele 'yanıta gerçek TCKN'yi yaz' dedirtebilir; tarayıcıdaki kod da kullanıcının elindedir. O yüzden kararı sunucudaki yetki kontrolünde verir ve kullanıcının rolüne bakarsın. Geri koyma işlevi yer tutucunun hangi oturuma ait olduğunu ve isteyenin o kaydı görmeye yetkisi olup olmadığını denetler. Başka oturumun yer tutucusu gelirse değeri koymaz ve olayı günlüğe yazar.

Kullanıcı haklarını da unutma. Kanunun 11. maddesi kişiye verisinin işlenip işlenmediğini öğrenme, düzeltilmesini ve silinmesini isteme hakkı verir.

Aynı kanunun 13. maddesine göre veri sorumlusu başvuruyu en geç otuz gün içinde sonuçlandırır. Bir LLM ürününde bu hak somut bir mühendislik işine döner. Kaydı hangi tabloda tuttuğunu, hangi indekste kopyası olduğunu ve hangi yedekte durduğunu bilmen gerekir.

Silme isteği geldiğinde vektör deposundaki gömüyü, önbellekteki yanıtı ve gözlem aracındaki izi de kaldırırsın. Veri bir modelin ince ayarına girdiyse silmek çok zorlaşır. Bu yüzden ince ayar setine kişisel veri koymamak en ucuz yoldur.

Saklama süresi de teknik bir karardır. Kanunun 4. maddesi veriyi amacın gerektirdiği süre kadar tutmayı ilke yapar. Sohbet kaydını süresiz tutmak hem risk hem yük biriktirir.

Süre dolunca sil ve silmeyi kanıtlanabilir yap: hangi kaydın ne zaman silindiği günlüğe düşsün. Sağlayıcı sözleşmesinde verinin eğitimde kullanılıp kullanılmadığını, ne kadar saklandığını ve hangi ülkede işlendiğini yazılı iste. Kurumun 2025 rehberi bir adım daha önerir: sistemi devreye almadan önce veri koruma etki değerlendirmesi yap ve riskleri yaşam döngüsü boyunca gözden geçir.

Etkinlik 7 / 8

Maskelenmiş veriyi tekrar gerçek değere çevirme kararı nerede verilmeli?

Etkinlik 8 / 8

Kişisel alanı geri döndürülebilir bir işaretle değiştirme yöntemine ____ adlandırma denir.

Bu derste bir hata mı gördün? Bildir