UUID Sürüm 5 (UUID v5), bir isim alanı (namespace) tanımlayıcısı ile bir girdi metin dizesinin SHA-1 kriptografik özetleme algoritması kullanılarak deterministik (belirleyici) bir şekilde işlenmesiyle oluşturulan standartlaştırılmış 128 bitlik bir tanımlayıcıdır. İlk olarak IETF RFC 4122 §4.3 altında tanımlanan ve RFC 9562 §5.5 ile teyit edilen UUID v5, isim tabanlı (name-based) evrensel benzersiz kimlikler sınıfına aittir. Tamamen sözde rastgele sayılara dayanan UUID v4’ten veya milisaniye hassasiyetli bir Unix zaman damgası barındıran UUID v7’den farklı olarak, UUID v5 kesinlikle sıfır rastgelelik ve sıfır zamansal veri içerir. Aynı isim alanı UUID’sini ve aynı isim dizesini sağladığınız sürece, UUID v5 dünyanın neresinde olursa olsun, hangi programlama dili çalışma zamanında çalışırsa çalışsın, merkezi bir sunucu koordinasyonuna ihtiyaç duymaksızın matematiksel olarak garantili biçimde tamamen aynı 128 bitlik sonucu üretir.
UUID v5 Üretimi Nasıl Çalışır?
Bir UUID v5’in üretimi katı bir kriptografik prosedürü takip eder: İlk olarak, 36 karakterlik isim alanı UUID’si ayrıştırılır ve big-endian ağ bayt sırasında 16 adet ham ikili bayta dönüştürülür. İkinci olarak, kullanıcı tarafından girilen isim dizesi UTF-8 kodlaması kullanılarak ham bir bayt dizisine dönüştürülür. Üçüncü olarak, 16 isim alanı baytı ile isim baytları tek bir kesintisiz arabellekte art arda birleştirilir. Dördüncü olarak, standart SHA-1 algoritması bu arabelleği karma işlemine tabi tutarak 160 bitlik (20 bayt) bir ileti özeti (digest) üretir. Beşinci olarak, özetin ilk 16 baytı (0 ile 15 arasındaki oktetler) alınırken, kalan son 4 bayt atılır. Son olarak, RFC 4122 uyumluluğunu sağlamak amacıyla sürüm dörtlüsü (6. oktetin en anlamlı dört biti) ikili 0101 (onaltılık 5) ve varyant bitleri (8. oktetin en anlamlı iki biti) ikili 10 (Leach-Salz varyantı) olarak ayarlanır. Elde edilen 16 bayt, kanonik 8-4-4-4-12 onaltılık dize biçiminde formatlanır.
UUID v5 İsim Alanlarını Anlama: DNS, URL, OID ve X.500
UUID v5 mimarisinde isim alanı (namespace), farklı bağlamlar arasındaki isim çakışmalarını önleyen kriptografik bir etki alanı ayırıcı görevi görür. Örneğin, "example.com" dizesi DNS isim alanında bir alan adını temsil ederken, başka bir sistemde rastgele bir kullanıcı adını veya dosya yolunu temsil edebilir. İsmi belirli bir isim alanı UUID’si ile birlikte karma işlemine tabi tutarak, elde edilen kimliklerin birbirinden tamamen farklı olması sağlanır. RFC 4122 önceden tanımlanmış dört standart küresel isim alanı UUID’si sunar: Tam nitelikli alan adları için DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8); protokoller dahil tam web adresleri için URL (6ba7b811-9dad-11d1-80b4-00c04fd430c8); ISO/IEC Uluslararası Nesne Tanımlayıcıları için OID (6ba7b812-9dad-11d1-80b4-00c04fd430c8); ve dizin hizmetleri ile LDAP ayırt edici adları için X.500 (6ba7b814-9dad-11d1-80b4-00c04fd430c8). Ayrıca geliştiriciler, özel uygulama varlıklarını yalıtmak için kendi özel isim alanlarını (örneğin kuruluşa özgü bir UUID v4) sağlayabilirler.
Adım Adım Kılavuz: UUID v5 Nasıl Üretilir?
FastUUIDGenerator üzerinde UUID v5 oluşturmak anlık ve tamamen gizlilik odaklıdır: 1. Bir İsim Alanı Önayarı Seçin: Veri alanınıza uygun standart önceden tanımlanmış isim alanlarından birini (DNS, URL, OID veya X.500) seçin ya da kendi geçerli 128 bitlik isim alanı UUID’nizi yapıştırmak için "Özel" seçeneğini belirleyin. 2. İsim Dizesini Girin: Hedef tanımlayıcıyı İsim alanına yazın veya yapıştırın. Bu bir alan adı, e-posta adresi, veritabanı doğal anahtarı, URI veya rastgele bir UTF-8 metin dizesi olabilir. 3. "UUID v5 Oluştur" Butonuna Tıklayın veya Doğrudan Yazın: Araç, girdileri doğrudan web tarayıcınızda gerçek zamanlı olarak değerlendirir. 4. İnceleyin ve Kopyalayın: Kanonik küçük harfli UUID v5, büyük harfli gösterim ve altta yatan 160 bitlik ham SHA-1 özeti anında hesaplanır ve tek tıklamayla panonuza kopyalanmaya hazır hale gelir.
Matematiksel Olarak Doğrulanmış UUID v5 Örneği
RFC 4122 Ek B test vektörlerine karşı matematiksel doğruluğu kontrol etmek için, "python.org" tam nitelikli alan adı dizesiyle eşleştirilmiş DNS isim alanı UUID’sini (6ba7b810-9dad-11d1-80b4-00c04fd430c8) ele alalım. İkili düzende DNS isim alanı 16 bayta dönüştürülür: [0x6b, 0xa7, 0xb8, 0x10, 0x9d, 0xad, 0x11, 0xd1, 0x80, 0xb4, 0x00, 0xc0, 0x4f, 0xd4, 0x30, 0xc8]. "python.org" için UTF-8 baytları şunlardır: [0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x2e, 0x6f, 0x72, 0x67]. Bu 26 baytın birleştirilmesi ve SHA-1 üzerinden geçirilmesi 160 bitlik 886313e13b8a53725b900c9aee199e5d94d841da onaltılık özetini verir. 16 bayta kırpıldığında 886313e13b8a53725b900c9aee199e5d elde edilir. Sürüm maskesinin uygulanması (6. baytta 0x50), 6. okteti 0x53 (sürüm 5) yapar; varyant maskesinin uygulanması ise (8. baytta 0x3f maskesiyle 0x80) 0x5b değerini 0x9b (varyant 1) değerine dönüştürür. Ortaya çıkan kanonik UUID v5: 886313e1-3b8a-5372-9b90-0c9aee199e5d.
UUID v5 ile UUID v4 Karşılaştırması: Belirleyici vs. Rastgele
UUID v5 ile UUID v4 arasındaki temel mimari fark, belirlilik (determinizm) ile rastgelelik arasındaki ayrımdır. UUID v4, kriptografik olarak güvenli 122 bitlik sözde rastgele entropi üretir; her çalıştırma, önceki çıktılarla hiçbir bağı olmayan yepyeni ve tahmin edilemez bir değer oluşturur. UUID v4 oturum çerezleri, API belirteçleri, geçici ileti kimlikleri ve birincil anahtarların tahmin edilemez olması gereken genel veritabanı kayıtları için mükemmeldir. Buna karşılık, UUID v5 kesinlikle belirleyicidir: aynı isim alanını ve metin dizesini beslemek daima birebir aynı tanımlayıcıyı üretir. UUID v5, mevcut doğal anahtarlardan (e-posta adresleri, stok kodları veya URL’ler gibi) öngörülebilir şekilde türetilen tek biçimli 128 bitlik bir anahtara ihtiyaç duyduğunuzda idealdir; böylece dağıtık servisler çapraz veritabanı sorgularına veya kilit mekanizmalarına gerek kalmadan yerel olarak eşleşen kimlikleri hesaplayabilir.
UUID v5 ile UUID v3 Karşılaştırması: SHA-1 vs. MD5 Algoritmaları
Hem UUID v3 hem de UUID v5, RFC 4122’de tanımlanmış isim tabanlı belirleyici kimlik standartlarıdır. Ancak temelde kullandıkları kriptografik karma algoritmaları bakımından ayrılırlar: UUID v3 eski MD5 özetleme algoritmasını kullanırken (doğrudan 128 bitlik bir karma üretir), UUID v5 SHA-1 algoritmasını kullanır (128 bite kırpılan 160 bitlik bir karma üretir). MD5 ciddi pratik karma çakışması açıklarına sahip olduğu için, RFC 4122 ve modern RFC 9562 şartnameleri yeni sistemlerde UUID v3 kullanımını kesinlikle önermez ve UUID v5’i tercih edilen isim tabanlı standart olarak belirler. Günümüzde UUID v3 yalnızca eski dağıtık bilgi işlem yazılımları ve tarihi Microsoft Active Directory ortamlarıyla geriye dönük uyumluluk için korunmaktadır.
UUID v5 Kriptografik Olarak Güvenli midir?
UUID v5’in güvenlik özelliklerini doğru anlamak, çakışma direnci (collision resistance) ile gizlilik (confidentiality) arasındaki farkı kavramayı gerektirir. SHA-1 büyük veri kümelerinde istenmeyen kopyalara karşı güçlü çakışma direnci sağladığından, aynı isim alanı içinde iki farklı dizenin aynı UUID v5’i üretme olasılığı pratikte sıfırdır. Ancak UUID v5 bir kriptografik sır, şifre veya kimlik doğrulama belirteci DEĞİLDİR. SHA-1 karma işlemi tamamen belirleyici ve genel kullanıma açık olduğundan, isim alanı UUID’sini ve girdi dizesini bilen veya tahmin eden herkes tam UUID v5’i anında yeniden üretebilir. Dahası, düşük entropili bir dizeden (4 haneli PIN veya yaygın bir kullanıcı adı gibi) UUID v5 oluşturursanız, bir saldırgan orijinal girdiyi geri elde etmek için SHA-1 özetine karşı sözlük saldırıları veya gökkuşağı tabloları (rainbow tables) kolayca çalıştırabilir. UUID v5’i asla kimlik doğrulama sırları veya gizli belirteçler için kullanmayın.
UUID v5 İçin Pratik Gerçek Dünya Kullanım Alanları
UUID v5, modern yazılım mimarilerindeki karmaşık mühendislik zorluklarını çözer: 1. Dağıtık Veri Senkronizasyonu: Bağımsız mikroservisler veya çevrimdışı mobil istemciler, merkezi bir veritabanı üzerinden eşitleme yapmadan eşleşen varlıklara (örneğin uluslararası bir telefon numarasını veya vergi kimliğini dahili bir şirket isim alanıyla karmalayarak) otonom olarak birebir aynı birincil anahtarları atayabilir. 2. Tekilleştirme (Deduplication) Boru Hatları: Büyük veri işlemede, ETL hatlarında ve arama dizinleyicilerinde girdi belge URL’lerini URL isim alanıyla karmalamak, dağıtık kümelerde mükerrer kayıtları engelleyen belirleyici tekilleştirme anahtarları üretir. 3. Idempotent REST & GraphQL API’leri: İstemciler istek parametrelerinden belirleyici idempotency anahtarları türeterek, ağ yeniden denemelerinin mükerrer finansal işlemleri veya siparişleri tetiklemesini önleyebilir. 4. Tutarlı Önbellek Anahtarları: Yüksek verimli önbellekleme katmanlarında (Redis/Memcached), değişken uzunluktaki API sorgu dizelerini tek biçimli 36 karakterlik UUID v5 anahtarlarına dönüştürmek bellek kullanımını ve indeks arama hızını optimize eder.
UUID v5 Hakkında Sıkça Sorulan Sorular
UUID v5’in temel amacı nedir?
UUID v5’in temel amacı, tanımlı bir isim alanı içinde insanlar tarafından okunabilir adlardan veya doğal anahtarlardan tutarlı ve belirleyici 128 bitlik tanımlayıcılar üretmektir. Algoritma tamamen matematiksel olduğundan, farklı mikroservisler, veritabanları ve istemci uygulamaları merkezi bir veritabanına danışmadan veya dağıtık kilitler almadan bağımsız olarak birebir aynı UUID’yi üretebilir.
UUID v5 neden SHA-256 yerine SHA-1 kullanıyor?
UUID v5, Temmuz 2005’te RFC 4122 standardı ile tanımlanmıştır; o dönemde SHA-1, MD5’in (UUID v3’te kullanılan) modern ve önerilen alternatifiydi. SHA-256 gibi daha yeni karma algoritmaları mevcut olsa da, RFC 4122 ve güncellenen RFC 9562, dünya çapında milyonlarca mevcut üretim sistemiyle geriye dönük tam uyumluluğu korumak amacıyla UUID v5 için SHA-1 standardını sürdürmektedir.
Bir UUID v5’i orijinal isim dizesine geri dönüştürebilir miyim?
Hayır. SHA-1 gibi kriptografik özetleme fonksiyonları tek yönlü matematiksel fonksiyonlardır. Orijinal isim ve isim alanı, ortaya çıkan UUID’den matematiksel olarak tersine hesaplanamaz. Ancak saldırgan isim alanını biliyorsa ve girdi dizesi düşük entropiye sahipse (kısa bir sayı veya yaygın bir kelime gibi), kaba kuvvet (brute-force) veya sözlük saldırıları yoluyla orijinal değeri tespit edebilir.
UUID v5 karma çakışmalarına karşı güvenli midir?
Evet. Bir UUID v5, karma verisi için 122 bit ayırır (4 sürüm biti ve 2 varyant biti ayarlandıktan sonra). 2¹²² olası kombinasyonla (yaklaşık 5,3 × 10³⁶ benzersiz değer), milyarlarca kayıt arasında aynı isim alanı içinde kazara bir karma çakışması meydana gelme olasılığı yok denecek kadar azdır.
İsim alanı UUID’sinde büyük harf veya küçük harf kullanırsam ne olur?
Standart UUID ayrıştırıcıları, karma işleminden önce onaltılık karakterleri 16 baytlık ham ikili dizilere dönüştürür. Onaltılık büyük/küçük harf durumu alttaki bayt değerlerini değiştirmediğinden (örneğin 0x6b ile 0x6B tamamen aynıdır), isim alanının harf büyüklüğü çıktı UUID v5’i etkilemez. Ancak isim dizesinin kendisi BÜYÜK/KÜÇÜK HARFE DUYARLIDIR (case-sensitive) çünkü UTF-8 karakter baytları büyük ve küçük harfler arasında farklılık gösterir.
UUID v5 için kendi özel isim alanımı oluşturabilir miyim?
Evet. RFC 4122 DNS, URL, OID ve X.500 için küresel standart isim alanları sunsa da, kuruluşunuz veya veritabanı şemanız için özel bir isim alanı olarak hizmet etmek üzere rastgele bir UUID v4 veya v7 oluşturabilirsiniz. Bu, oluşturduğunuz kimliklerin üçüncü taraflarca üretilen kimliklerle asla çakışmamasını garanti eder.
UUID v5 isimdeki Unicode ve özel karakterleri nasıl işler?
RFC 4122 ve RFC 9562 standartlarına göre dizeler karma işleminden önce UTF-8 kodlaması kullanılarak ham baytlara dönüştürülmelidir. FastUUIDGenerator tüm metinleri standart UTF-8 ikili arabelleklerine kodlayarak uluslararası dilleri, aksanları, emojileri ve çok baytlı karakter setlerini kusursuz bir şekilde destekler.
Veritabanı birincil anahtarları için UUID v5 mi yoksa UUID v7 mi kullanmalıyım?
Birincil anahtarlarınız ardışık kayıtlar için kronolojik sıralama, indeks kümeleme ve yüksek hızlı B-Tree ekleme performansı gerektiriyorsa UUID v7 kullanın. Mükerrer eklemeleri önlemek amacıyla birincil anahtarlarınızın mevcut benzersiz doğal verilerden (kullanıcı e-posta adresleri, URL’ler veya katalog kodları gibi) belirleyici biçimde türetilmesi gerekiyorsa UUID v5 kullanın.
Bu oluşturucu isimlerimi veya isim alanlarımı internet üzerinden iletiyor mu?
Hayır. FastUUIDGenerator tüm SHA-1 karma işlemlerini, bayt birleştirmeyi ve UUID biçimlendirmesini istemci tarafı JavaScript kullanarak %100 yerel olarak web tarayıcınızda çalıştırır. Hiçbir isim alanınız, isminiz veya üretilen UUID ağ üzerinden gönderilmez ya da sunucularımızda depolanmaz.