ZONEMD, bir DNS bölgesinin bütün veri kümesi için kriptografik özet taşıyan DNS kaynak kaydıdır. Yetkili DNS yöneticisi, aktarılan, arşivlenen veya başka bir süreç tarafından üretilen bölge kopyasının yayımlanan veriyle aynı olup olmadığını tek tek kayıtları elle karşılaştırmadan denetleyebilir.

Özet, metin dosyasının ham karakterleri üzerinden değil, DNS kayıtlarının standartlaştırılmış ikili gösterimi ve sıralaması üzerinden hesaplanır; buna kanonik ağ biçimi denir. Bu nedenle yalnız boşluk, yorum veya sunum biçimi gibi anlamsal olmayan farklılıklar aynı bölge verisi için farklı bir özet üretmez.

ZONEMD tek başına bir imza değildir. DNS kayıtlarının kaynağını ve bütünlüğünü dijital imzalarla doğrulayan DNSSEC ile birlikte kullanıldığında ZONEMD kaydı da doğrulanabilir; DNSSEC yoksa ZONEMD esas olarak istemsiz bozulma, eksik kopya veya aktarım hatasını fark etmeye yarayan bir sağlama toplamı niteliğindedir.

ZONEMD Kaydının Yapısı

ZONEMD, DNS kaynak kayıt türü 63 olarak tanımlanır ve RFC 8976 kapsamındaki doğrulama için bölge kökünde, yani bölgenin kendi adında bulunur. Bölgenin genel bilgilerini ve sürümünü tutan SOA kaydı da burada yer alır. RDATA (kayıt verisi) dört alandan oluşur; bu alanlar hangi bölge sürümünün hangi kurallarla özetlendiğini açık biçimde belirtir.

Aşağıdaki tablo, ZONEMD kaydındaki dört alanın doğrulamadaki rolünü gösterir.

AlanİşleviDoğrulamadaki anlamı
SerialÖzetin üretildiği SOA seri değerini taşır.Özet ile belirli bölge sürümünü birbirine bağlar.
SchemeKayıtların özet girdisine nasıl hazırlanacağını belirtir.SIMPLE şeması 1 değeriyle gösterilir.
Hash AlgorithmKriptografik özet algoritmasını belirtir.SHA-384 değeri 1, SHA-512 değeri 2 olarak kayıtlıdır.
DigestHesaplanan bölge özetini taşır.Doğrulayan tarafın yeniden hesapladığı değerle karşılaştırılır.

RFC 8976, ZONEMD uygulayan yazılımlarda SHA-384 desteğini zorunlu, SHA-512 desteğini ise önerilen olarak tanımlar. SHA-384 kullanıldığında 48 baytlık, SHA-512 kullanıldığında 64 baytlık özet tam olarak yayımlanır; bu iki algoritmada özet kısaltılmaz.

Bir bölgede algoritma geçişi gibi nedenlerle birden fazla ZONEMD kaydı bulunabilir, ancak her kayıt benzersiz bir Scheme ve Hash Algorithm ikilisi kullanmalıdır. Normal işletimde tek ZONEMD kaydı yeterlidir; algoritma geçişinde eski ve yeni yöntemler birlikte yayımlanabilir.

Bölge Özeti Nasıl Hesaplanır?

SIMPLE şemasının amacı, aynı DNS veri kümesinin farklı sunum biçimlerinden bağımsız olarak aynı kriptografik girdiye dönüşmesini sağlamaktır. Bu nedenle hesaplama, bölge dosyasındaki satırların sırayla özetlenmesi gibi basit bir dosya özeti değildir.

  1. Özet üreten uygulama, hazırladığı yeni yayın kopyasında bölge kökündeki eski ZONEMD kayıtlarını ve bunları kapsayan imzaları kaldırır; seçilen şema ve algoritma için geçici bir ZONEMD kaydı hazırlar.
  2. Bölge DNSSEC ile imzalanacaksa uygulama gerekli DNSSEC kayıtlarını bu aşamada oluşturabilir. Geçici kayıt, DNSSEC ile kayıt yokluğunu kanıtlamada kullanılan NSEC veya NSEC3 kayıtlarının bölge kökündeki örneklerinde ZONEMD türünün doğru biçimde yer almasını sağlar.
  3. Uygulama bölgedeki kaynak kayıtlarını DNSSEC kanonik ağ biçimine dönüştürür ve kanonik sırada işler. Aynı ada, DNS sınıfına ve kayıt türüne ait kayıtlar bir RRset oluşturur. Uygulama adları kanonik sıraya, aynı addaki RRset’leri sayısal kayıt türüne, her RRset’in içindeki kayıtları da kanonik RDATA baytlarına göre sıralar.
  4. Uygulama, yetkinin alt bölgeye devri için gereken glue kayıtlarını (yetkili DNS sunucularının adres kayıtlarını) ve bölgenin veri kümesine ait diğer kayıtları kapsama alır. Yetki devri nedeniyle normal sorgularda kullanılmasa da bölge kopyasında tutulan kayıtlar özete dahildir. DNSSEC imzalarını taşıyan RRSIG kayıtları da kapsamdadır. Ancak bölge kökündeki ZONEMD kayıtlarını ve bunları kapsayan RRSIG kayıtlarını, özet hesabından sonra doldurulacakları için hesaplamanın dışında tutar; sahip adı, sınıfı, türü ve RDATA değeri aynı olan yinelenen kayıtların yalnız bir örneğini işler.
  5. Uygulama sıralanmış kayıtların ağ biçimlerini art arda birleştirip seçilen özet algoritmasını uygular. Elde edilen değeri geçici ZONEMD kaydındaki Digest alanına yazar; DNSSEC varsa ZONEMD RRset imzasını daha sonra günceller. Eşleşen SOA ve ZONEMD kayıtları birlikte yayımlanır; bu son imzalama SOA seri değerini değiştirmemelidir.

Hesaba dahil edilen bir kaydın kanonik verisi değişirse bölge özeti yeniden hesaplanmalıdır; kapsam dışında bırakılan ZONEMD kayıtları ve bunların imzaları bu genellemenin dışındadır. Böylece iki bölge kopyasının aynı veri kümesini taşıyıp taşımadığı tek bir özet karşılaştırmasıyla anlaşılabilir; ancak özet farkı hangi kaydın değiştiğini tek başına göstermez.

ZONEMD Kaydı Nasıl Doğrulanır?

Doğrulama, alınan ZONEMD değerini doğrudan güvenilir kabul etmekten ibaret değildir. DNSSEC beklenen bir bölgede doğrulayan uygulama önce ZONEMD kaydının yetkili yayımlayıcıdan geldiğini denetler, ardından bütün bölgenin özetini yeniden hesaplar.

  1. Doğrulayan uygulama, güvendiği başlangıç anahtarlarına ve gerektiğinde üst bölgeden alıp doğruladığı DS kayıtlarına göre DNSSEC imzalarının beklenip beklenmediğini belirler. DS, alt bölgenin DNSSEC anahtarına bağ kuran özeti taşır. DNSSEC bekleniyorsa bölge kökündeki ZONEMD kaydının varlığı veya yokluğu ile mevcut SOA ve ZONEMD RRset’lerinin imzaları doğrulanır. ZONEMD’nin gerçekten bulunmadığı kanıtlanırsa özet karşılaştırması yapılamaz; bulunması gerektiği halde eksikse doğrulama başarısızdır.
  2. Uygulama ZONEMD Serial değeri ile bölgedeki SOA seri değerini tam olarak karşılaştırır. Değerler eşleşmiyorsa o ZONEMD kaydıyla doğrulamayı başarılı saymaz.
  3. Uygulama Scheme ve Hash Algorithm değerlerini destekleyip desteklemediğini ve yerel güvenlik politikasının bu ikiliye izin verip vermediğini kontrol eder. Digest uzunluğu da seçilen algoritmaya uymalıdır. Aynı Scheme ve Hash Algorithm ikilisini tekrarlayan ZONEMD kayıtları doğrulamada kullanılamaz.
  4. Uygulama, belirtilen şema ve algoritmayla bölge verisinin özetini yeniden hesaplar.
  5. Hesaplanan Digest, ZONEMD kaydındaki Digest ile eşleşirse uygulama doğrulamayı başarılı sayar. Birden fazla geçerli ZONEMD kaydı varsa uygulamanın desteklediği ikililerden birindeki eşleşme yeterlidir.

ZONEMD ve DNSSEC Bölge Verisini Birlikte Nasıl Doğrular?

ZONEMD ile DNSSEC farklı düzeylerde çalışan tamamlayıcı mekanizmalardır. DNSSEC tek tek RRset'lerin bütünlüğü ve kaynak doğrulaması için imza altyapısı sağlarken ZONEMD, bölgenin bütün veri kümesini tek bir kriptografik özet altında karşılaştırır.

ZONEMD kaydı DNSSEC olmadan saldırgana karşı bütünlük doğrulaması sunmaz. Bölgeyi değiştirebilen bir saldırgan ZONEMD Digest alanını da yeniden hesaplayabilir. Bu kullanım yalnız istemsiz bozulma, eksik aktarım veya benzeri işletim hatalarına karşı sağlama toplamı işlevi görür.

DNSSEC doğrulaması, ZONEMD RRset’inde yapılan değişiklikleri, kaydın kaldırılmasını veya farklı bir özetle yeniden yayımlanmasını tespit edebilir. Bu nedenle bütün bölge verisinin yayımlanan sürümle eşleştiğine dair güvence, ZONEMD özet karşılaştırması ile DNSSEC doğrulamasının birlikte başarılı olmasına dayanır.

ZONEMD Hangi Durumlarda Kullanılır?

ZONEMD özellikle aynı DNS bölgesinin farklı sistemlerde üretilen, aktarılan veya saklanan kopyalarını karşılaştırmak için kullanılır. İletim yönteminden bağımsız olarak veri kümesini doğruladığı için aktarım kanalı güvenli olsa bile sonradan diskte tutulan ya da başka bir sistemden alınan kopyayı ayrıca kontrol etmeye yarar.

  • Birincil ve ikincil yetkili sunucularda bulunan tam bölge kopyalarının aynı veri kümesini taşıyıp taşımadığını denetlemek.
  • Dosya, depo veya başka bir dağıtım yöntemiyle alınan bölge verisinin yayımlanan kopyayla eşleştiğini kontrol etmek.
  • Birden fazla DNS sağlayıcısının veya bölge dosyası üreten yazılımın, aynı olması beklenen veri kopyalarını karşılaştırmak.
  • Yedekten veya yerel depolamadan yüklenen bölge verisinde istemsiz değişiklik ya da eksiklik olup olmadığını saptamak.

ZONEMD aktarım protokolünün yerini almaz ve aktarım kanalını şifrelemez. Farklı DNS sağlayıcıları aynı adres kayıtlarını kendi DNSSEC anahtarlarıyla imzalıyorsa anahtar ve imza kayıtları farklı olduğundan ZONEMD özetleri de farklı olabilir; bu durum tek başına yanlış yapılandırma kanıtı değildir.

Büyük ve Sık Değişen Bölgelerde ZONEMD Hesaplama Maliyeti

RFC 8976'daki SIMPLE şeması, hesaba dahil edilen bölge verisi her değiştiğinde bütün bölgeyi yeniden işleyerek yeni özet üretir. Bu nedenle küçük veya seyrek değişen bölgeler için daha elverişlidir; çok büyük ve sık güncellenen bölgelerde hesaplama maliyeti ve yayın süresi nedeniyle verimli olmayabilir.

DNS sunucusu her ZONEMD sorgusunda bütün bölgenin özetini yeniden hesaplamamalıdır; çok sayıda sorgu işlemciyi gereksiz yere meşgul edebilir. Özet, bölgenin yeni sürümü hazırlanırken üretilir ve sorgulara yayımlanmış kayıtla yanıt verilir.