Menü

Ulusal kimlik doğrulama kuralları ülkeden ülkeye neden değişir

Ulusal kimlik numaralarında ülkelerin açıklama düzeyleri farklıdır: kimi kontrol basamağı algoritması yayımlar, kimi yalnızca biçim verir. Doğrulamayı veriye dayalı kurmanın yolunu anlatıyoruz.

Yayın tarihi

  • kimlik numarası
  • ülke kuralları
  • doğrulama

Ulusal kimlik doğrulama, tek bir kuralın uygulandığı bir alan değildir; çünkü ülkeler numaraları hakkında farklı düzeylerde bilgi yayımlar. Bu yazıda bu düzey farkının doğrulamayı nasıl şekillendirdiğini, bir numaranın birden çok ülkenin kuralına uyabildiğini ve ülke kurallarının neden koda gömülmemesi gerektiğini bulacaksınız.

Ülke kuralları neden tek bir kalıba sığmaz?

Çünkü her ülke kendi numaralandırma düzenini kendi gereksinimlerine göre kurmuştur. Nüfus yapısı, kayıt sisteminin yaşı, numaranın hangi kurum tarafından verildiği ve numaranın hangi amaçla kullanıldığı ülkeden ülkeye değişir. Bu farklar numaranın uzunluğuna, karakter kümesine ve varsa kontrol basamağına doğrudan yansır.

İkinci sebep, açıklama düzeyidir. Bazı ülkeler numaranın nasıl üretildiğini ve kontrol basamağının nasıl hesaplandığını ayrıntılı biçimde yayımlar. Bazıları yalnızca uzunluk ve karakter yapısını duyurur; hesap kuralını hiç yayımlamaz. Bazıları içinse kamuya açık ve güncel bir açıklama bulunmaz.

Açıklama düzeyi Neyi doğrulamak mümkündür Neyi doğrulamak mümkün değildir
Hesap kuralı yayımlanmış Uzunluk, karakter kümesi ve kontrol basamağı Numaranın gerçekten verilip verilmediği
Yalnızca biçim yayımlanmış Uzunluk ve karakter kümesi Kontrol basamağının varlığı veya sonucu
Kamuya açık açıklama yok Yalnızca tahmine dayanmayan gözlemler Kurala dayalı herhangi bir yargı

Bu üç düzeyin tek bir denetimden geçirilmesi mümkün değildir. Aynı kod, birinci düzeyde anlamlı bir sonuç üretirken üçüncü düzeyde anlamsız bir sonuç üretir.

Kontrol basamağı algoritması yayımlanmış düzenler

Birinci düzeyde ülke, numaranın son hanesinin nasıl hesaplandığını açıkça duyurmuştur. Bu durumda denetim üç adımı da yürütebilir: karakter kümesi, uzunluk ve kontrol basamağı hesabı.

Bu düzeyde bile dikkat edilecek iki nokta vardır. Birincisi, hesabın hangi sürüm için geçerli olduğudur; bir numaralandırma düzeni zaman içinde değişebilir ve eski numaralar eski kurala göre geçerli kalır. İkincisi, numaranın biçimsel olarak tutarlı olmasının kayıt anlamına gelmemesidir. Kontrol basamağı hesabı yalnızca numaranın kendi içinde tutarlı olduğunu gösterir.

Ailenin bu hesabı nasıl kurduğu ve modül seçiminin sonucu nasıl etkilediği ayrı bir konudur; kontrol basamağı algoritmaları yazısı bu zemini anlatır.

Yalnızca biçim yayımlayan düzenler nasıl ele alınır?

Bu düzeyde ülke, numaranın kaç haneden oluştuğunu ve hangi karakterleri içerebileceğini duyurmuş ama bir kontrol basamağı kuralı yayımlamamıştır. Denetim bu durumda yalnızca iki adımı yürütebilir.

Buradaki kritik nokta, sonucun nasıl adlandırıldığıdır. Doğru etiket “yalnızca biçim”dir. Bu etiket, numaranın doğru olduğunu değil, bu aracın elindeki bilgiyle yalnızca biçimi doğrulayabildiğini söyler. Aynı sonucu “geçerli” diye göstermek, olmayan bir kontrolü varmış gibi sunmak olur.

İkinci kritik nokta, bu numaraların geçersiz sayılmamasıdır. Kontrol basamağı bulunmadığı için bir numarayı reddetmek, sistemin bilgisizliğini kullanıcının hatası gibi göstermek demektir. Biçime uyan bir numara biçimsel olarak kabul edilmeli, geri kalan yargı askıya alınmalıdır.

Bu durumun ayrıntıları kontrol basamağı olmayan numaralar yazısında ayrıca ele alınmıştır.

Aynı numara birden çok ülkenin kuralına uyarsa ne olur?

Bu durumda hiçbir şey yapılmaz; yani numara için bir ülke seçilmez. Aynı uzunlukta ve aynı karakter kümesinde iki farklı ülkenin numarası varsa, tek bir dizi her ikisinin de biçimsel beklentisini karşılayabilir. Kontrol basamağı hesabı bile her iki düzende tutabilir.

Burada araç için doğru davranış, uyan bütün düzenleri yan yana listelemektir. Her satırda o düzenin ne kadarını doğrulayabildiği ayrıca belirtilmelidir; bir düzen için kontrol basamağı çalıştırılmış, bir diğeri için yalnızca biçim onaylanmış olabilir.

Kullanıcıya tek bir sonuç dayatmanın iki zararı vardır. Birincisi, yanlış bağlam verilir: kullanıcı numaranın hangi ülkeye ait olduğunu biliyorsa, aracın tahmini onu yanıltır. İkincisi, doğru açıklama gizlenir: uyan ikinci düzen listede görünmediği için kullanıcı elindeki numaranın başka bir düzene de uyduğunu hiç öğrenemez.

Bağlamı bilen taraf kullanıcıdır. Aracın işi, seçenekleri ve her seçeneğin sınırını göstermektir.

Üçüncü bir olasılık daha vardır: numaranın hiçbir desteklenen düzene uymaması. Bu sonuç, numaranın uydurma olduğu anlamına gelmez. Yalnızca, aracın elindeki düzen listesinde bu biçime karşılık gelen bir tanım bulunmadığını söyler. Destek listesi sınırlıdır ve zamanla genişler; bugün tanınmayan bir düzen yarın eklenebilir. Bu yüzden “tanınmadı” sonucu, veri temizleme kararlarında “hatalı” ile aynı kefeye konmamalıdır.

Aynı şekilde, birden çok düzene uyan bir numarayı tek bir düzene indirgemek de kalıcı bir karar olmamalıdır. Düzen listesi değiştiğinde, daha önce tek aday olan bir düzen artık tek aday olmayabilir. Bu yüzden doğrulama sonucu, numaranın kendisiyle birlikte değil, kullanılan düzen listesinin sürümüyle birlikte saklanmalıdır.

Üçüncü pratik nokta, kullanıcıya gösterilen dille ilgilidir. “Bu numara geçersiz” demek, birden çok düzene uyan bir numarada yanlıştır. Doğru ifade, numaranın hangi düzenlere uyduğunu ve her düzende hangi katmanın denendiğini anlatan bir listedir. Liste kısaldıkça kullanıcı da aracın ne yaptığını daha kolay anlar.

Uzunluk ve karakter kümesi neden yeterli değildir?

Çünkü ikisi de numaranın yalnızca dış görünüşünü denetler. Doğru uzunlukta ve doğru karakterlerle yazılmış bir dizi, rastgele üretilmiş olsa bile bu iki kontrolü geçer. Bu yüzden yalnızca biçime bakan bir denetim, yazım hatası dışında neredeyse hiçbir hatayı yakalamaz.

Yine de bu iki kontrol değersiz değildir. Eksik veya fazla hane yazımını, yanlış klavye düzeninden kaynaklanan karakter karışmalarını ve kopyala yapıştır sırasında eklenen görünmez karakterleri yakalarlar. Ayrıca numarayı doğru düzene yönlendirmek için gereken ilk ayrımı sağlarlar.

Sorun, bu kontrollerin sonucunun abartılmasıdır. “Uzunluk uyuşuyor” ifadesi “numara geçerli” diye okunmaya başladığında, sistem elinde olmayan bir bilgiyi varmış gibi sunar. Bu yüzden katmanların sonuçları ayrı ayrı raporlanmalıdır.

Geliştiriciler için: ülke kurallarını veri olarak tutmak

Ülke kurallarının doğrudan kodun içine yazılması, ilk bakışta en hızlı yol gibi görünür. Ama kurallar değişir; bir düzen numaranın uzunluğunu değiştirir, yeni bir kontrol ekler veya eski numaralar için geçiş dönemi tanımlar. Kural kodun içindeyse her değişiklik yeni bir sürüm gerektirir ve geçmiş kararların neden alındığı kaybolur.

Alternatif, kuralları veri olarak tutmaktır. Her düzen için uzunluk beklentisi, karakter kümesi ve varsa hesap parametreleri tek bir kayıtta durur; denetim kodu yalnızca bu kaydı okur. Böylece yeni bir ülke eklemek kod değişikliği değil, veri ekleme işi olur.

İkinci nokta, doğrulama sonucunun hangi kurala dayandığını taşımasıdır. “Geçersiz” sonucu tek başına kullanıcıya ne yapacağını söylemez. Sonuçla birlikte hangi düzenin uygulandığı ve hangi katmanın başarısız olduğu bilgisi taşınırsa, hata mesajı yol gösterici olur.

Üçüncü nokta, sürümlemedir. Bir numaralandırma düzeni değiştiğinde eski numaralar geçerliliğini koruyabilir. Bu yüzden kural kayıtları sürümlenmeli ve bir doğrulama sırasında hangi sürümün kullanıldığı kaydedilmelidir. Aksi hâlde geçmişte verilmiş bir karar sonradan açıklanamaz.

Dördüncü nokta, açıklama düzeyinin veri olarak tutulmasıdır. Bir düzen için “hesap kuralı var”, “yalnızca biçim var” veya “açıklama yok” bilgisi ayrı bir alan olmalıdır. Bu bilgi olmadan denetim, bilmediği durumlarda da kesin bir sonuç üretmeye çalışır.

Sonraki adımlar

İlk adım, desteklediğiniz her düzen için açıklama düzeyini açıkça yazmak ve denetimi buna göre üç duruma ayırmaktır: tam doğrulama, yalnızca biçim ve kural yok. İkinci adım, ülke kurallarını koddan ayırıp sürümlenebilir veri hâline getirmektir. Elinizdeki bir numaranın hangi düzenlerle eşleştiğini ve her biri için ne kadarının doğrulanabildiğini numara doğrulama aracı sayfasında görebilirsiniz; iki numara türünün karşılaştırmalı örneği için CPF CNPJ doğrulama yazısı, kural bulunmayan durumların nasıl anlatılacağı için kontrol basamağı olmayan numaralar yazısı yararlı olacaktır.

Burada anlatılan ülke düzenleri yalnızca açıklama düzeylerini göstermek amacıyla ele alınmıştır; metinde hiçbir ülkenin gerçek numara kuralı, hane sayısı veya numara örneği verilmemiştir ve verilecek örneklerin tümü kurgusal olmak zorundadır.

Okumaya devam edin

TC Kimlik Doğrulayıcı hakkında makaleler