DKIM Kaydı Denetleyicisi, göz önünde saklanan bir sorun içindir. Bir alan adı ve bir DKIM seçicisi girersiniz ve denetleyici secici._domainkey.alanadi adresindeki DNS kaydını arar. Oradan DKIM TXT kaydını okur, genel anahtarı gösterir, kayıt etiketlerini inceler, anahtar türünü kontrol eder ve eksik veriler, iptal edilmiş anahtarlar, zayıf RSA uzunlukları, hatalı biçimlendirilmiş kayıtlar ve DNS gerçekliğinden ziyade kurumsal efsanelerde var olan seçiciler gibi yaygın hataları belirtir. Sıradan bir dille, dolaysız bir soruyu yanıtlar: Alan adınız e-postayı imzaladığını iddia ediyorsa, DNS'te bekleyen geçerli bir genel anahtar gerçekten var mı, yoksa tüm kurulum panoların söylediği bir başka törensel yalan mı?

Posta sistemlerinin içinde yaşamayan biri için yalın versiyon basittir. Bir alan adı (domain), example.com gibi okunabilir addır. DNS yani Alan Adı Sistemi, bu ad altında teknik kayıtları saklayan dağıtılmış arama sistemidir. DKIM ise DomainKeys Identified Mail anlamına gelir. Harfler mistik değildir. Alıcı bir posta sisteminin bir iletinin ilgili özel anahtarı elinde bulunduran biri tarafından imzalandığını doğrulamasını sağlamak için bir alan adı, bir şifreleme anahtar çifti ve DNS'te yayınlanan genel anahtarları kullanan bir posta imzalama sisteminin etiketidir. Bu, iletinin ahlaki açıdan saf, akıllıca veya hoş olduğu anlamına gelmez. Alan adıyla ilişkili bir imzalayıcının kontrol edilebilecek şekilde bunun sorumluluğunu üstlendiği anlamına gelir.

DNS tarafından zaten travmatize edilmiş bir kişinin donuk gözleriyle göz gezdirmek yerine okumaya zahmet ederseniz isim alışılmadık derecede açıklayıcıdır. Domain (Alan Adı), sistemin dünyadaki her insan için kişisel bir sertifikaya değil, bir alan adına bağlı olduğu anlamına gelir. Keys (Anahtarlar), açık anahtarlı şifrelemenin dahil olduğu anlamına gelir. İmzalamak için kullanılan özel bir anahtar ve başkalarının doğrulayabilmesi için yayınlanan bir genel anahtar vardır. Identified (Tanımlanmış), amacın yalnızca içeriği şifre dumanında saklamak olmadığı; asıl amacın iletiye sorumlu bir imzalama kimliği bağlamak olduğu anlamına gelir. Mail (Posta) ise tam olarak bu anlama gelir: E-posta; onlarca yılını saçma bir şekilde güvenerek geçiren ve ardından dünya spam, sahtecilik (spoofing), kimlik avı (phishing) ve ölçeği keşfettikten sonra katman katman teknik şüphe icat etmek zorunda kalan o eski küresel ortam.

Tarihsel yol önemlidir çünkü DKIM bir anda yoktan var olmadı. DKIM standart olmadan önce, RFC 4870'te "DNS'te Reklamı Yapılan Açık Anahtarları Kullanan Alan Adı Tabanlı E-posta Kimlik Doğrulaması" olarak tanımlanan DomainKeys vardı. Başlık bile bir mühendisin bir hassas aletin tüm sıcaklığıyla bir mekanizmayı tanıtmadan önce boğazını temizlemesi gibi tınlar. DomainKeys, DNS'teki genel anahtarları kullanan erken bir alan adı düzeyinde e-posta kimlik doğrulama çerçevesiydi. RFC 4871'de standartlaştırılan ve daha sonra RFC 6376'da revize edilen DKIM, bu soykütüğü doğrudan kendi adında taşıdı. İmzalayan alan adına sahip olan bir kişinin, rolün veya kuruluşun bir ileti için sorumluluk iddia etmesine ve bu iddianın kriptografik bir imza ve genel anahtar için bir DNS araması yoluyla kontrol edilmesine olanak tanımak için oluşturuldu.

Bu sorumluluk kelimesi önemlidir. DKIM bir hale değildir. Ahlaki bir sertifika değildir. İnternetin gözlerinde yaşlarla iletinin azizlerden geldiğini ilan etmesi değildir. DKIM hizmetine genel bakış, DKIM'in kısıtlı bir işi olduğunu çok açık bir şekilde belirtir. Posta sistemlerine daha sonra karar verebilmeleri için iletiyle ilişkili doğrulanabilir bir tanımlayıcı verir. DKIM tek başına bir alıcıya tam olarak hangi eylemi gerçekleştireceğini söylemez, görünen her başlığın normal bir insanın varsaydığı anlama geldiğini tek başına kanıtlamaz ve başarılı doğrulamadan sonra yeniden oynatmayı sihirli bir şekilde durdurmaz. Başka bir deyişle DKIM yararlıdır çünkü spesifiktir. İnsanlar ondan tam bir güven felsefesi olmasını istediklerinde başları belaya girer.

DKIM'in anahtar dağıtımı için DNS kullanmasının nedeni son derece pratiktir. Hizmete genel bakış, DNS kullanmanın tamamen yeni bir küresel sorgu altyapısı icat etme ihtiyacını ortadan kaldırdığını açıklar. Bu tam bir internet kararıydı: Zaten büyük, dağıtılmış, küresel olarak işletilen bir adlandırma sistemi var, bu yüzden teknik hırsın bir büyük katedralini daha yaratmak yerine onu kullanın. DNS kayıtları ölçekli olarak nasıl dağıtacağını zaten biliyordu. DKIM genel doğrulama materyalini sadece orada sakladı. Mantıklı, verimli ve doğal olarak daha sonra ne yapıştırdıklarını okumadan yardım makalelerinden DNS parçacıklarını kopyalayacak yönetici nesilleri tarafından yanlış anlaşılmaya mahkum.

Bu bizi DKIM'deki en yararlı fikirlerden birine getirir: seçici (selector). Bir seçici hayatı ilginç kılmak için orada değildir. Tek bir alan adının birden fazla imzalama anahtarına ve birden fazla imzalama düzenlemesine sahip olabilmesi nedeniyle vardır. Seçici, tüm anahtarları tek bir hüzünlü yığına itmeden imzalama sisteminin doğru genel anahtarı işaret etmesini sağlar. RFC 5585, doğrulayıcının hangi anahtarı alacağını bilmesi için seçicinin imzalayan alan adı tanımlayıcısıyla birleştirildiğini açıklar. RFC 6376 daha da ileri gider ve seçicilerin anahtar döndürme, yetkilendirme ve hatta hiyerarşik adlandırma konusunda yardımcı olduğunu belirtir, çünkü seçicilerin içindeki noktalar DNS etiket sınırlarını tanımlar. Yalın dille seçici, "O anahtarı değil, bu anahtarı kullan" diyen alt etikettir. Posta altyapısının çekmeceleri etiketleme versiyonudur; bu, kimsenin çekmeceleri etiketlemediğinde ne olduğunu görene kadar kulağa mütevazı gelir.

Sabit ._domainkey kısmının da bir nedeni vardır. RFC 6376, tüm DKIM anahtarlarının _domainkey adlı bir alt etki alanında saklandığını söyler. Yani imzalayan alan adı example.com ve seçici newsletter ise, DNS sorgusu newsletter._domainkey.example.com adresine gider. Bu adlandırma kuralı düzen yaratır. Seçici anahtarı seçer. _domainkey alt etki alanı orada ne tür verilerin yaşadığını söyler. Temel alan adı tüm meseleyi imzalayıcının ad alanına bağlar. Bu yapı olmadan DNS zaten olduğundan daha fazla bir hazine avı haline gelirdi.

DKIM kaydının kendi içinde etiketler rastgele dekorasyon değildir. v=DKIM1 kayıt sürümünü bildirir. p= genel anahtar verisini taşır. k= anahtar türünü tanımlar; tarihsel olarak en sık RSA. Diğer bazı etiketler hizmet kullanımını kısıtlar, bayrakların reklamını yapar veya kabul edilebilir karma davranışını tanımlar. Boş bir p= değeri, RFC 6376'da özellikle kuru ve önemli bir anlama sahiptir: Anahtarın iptal edildiği anlamına gelir. Bu, standartlar dünyasının soğukkanlı bir verimlilikle ele aldığı ayrıntılardan biridir. Havai fişek yok. Dramatik veda yok. Yalnızca boş anahtar verisi ve doğrulayıcının bunu başarısızlık olarak ele alması beklenir.

İyi bir DKIM denetleyicisi kriptografiyi de önemsemelidir, çünkü genel anahtar dekoratif bir duvar kağıdı değildir. DKIM, RSA'nın standart imzalama yöntemi olduğu bir dünyada başladı ve RFC 6376 hala o dönemi yansıtır. Daha sonra RFC 8301, rsa-sha1'in eskidiğini ilan ederek ve imzalayıcıların en az 1024 bitlik RSA anahtarları kullanmasını zorunlu kılarak DKIM kriptografik rehberliğini güncelledi; 2048 bitten küçük anahtarların çevrimdışı saldırılara karşı savunmasız olabileceğini belirtti. Bu, standartlar dilinde "eski rahatlık battaniyesi inceliyor" anlamına gelir. Ardından RFC 8463, benzer güvenlik seviyeleri için daha kısa anahtarlar getiren Ed25519 tabanlı DKIM imzalamayı ekledi. Dolayısıyla bir denetleyici bugün bir DKIM anahtarına baktığında gururla bir sopa taşıyan bir golden retriever gibi sadece "kayıt bulundu" dememelidir. Ne tür bir anahtar olduğunu, anahtarın ayrıştırılıp ayrıştırılamayacağını ve boyutun kriptografik iyimserlik müzesine değil de mevcut gerçekliğe ait olup olmadığını sormalıdır.

DKIM'in merkezinde neredeyse komik bir tezat vardır. Kavram temizdir: Seçilen başlıkları ve gövde içeriğini imzalayın, genel anahtarı DNS'te yayınlayın, alıcıların doğrulamasını sağlayın. Operasyonel gerçeklik ise daha az şiirseldir. Anahtar döndürme unutulur. Eski seçiciler birikir. Satıcılar yöneticilerden bir seçici daha, bir dış kaynaklı gönderici daha, sözde zararsız bir DNS kaydı daha yayınlamalarını ister. Yıllar sonra kuruluşun _domainkey altında bazıları aktif, bazıları terk edilmiş, bazıları yarı belgelenmiş ve bir tanesi üç logo önceki bir yönetim yeniden yapılanmasından bu yana kimsenin dokunmadığı bir faturalandırma sistemine güç verebileceğinden herkesin kaldırmaktan korktuğu küçük bir bayat seçici mezarlığı oluşur. İşte bu yüzden DKIM kayıtlarını kontrol etmek akademik bir hijyen değildir. Sonuçları olan bir altyapı arkeolojisidir.

Daha büyük dersi açıkça söylemeye değer. E-posta kimlik doğrulama sistemleri vardır çünkü internet yalnızca duruşla güvenilmeyecek kadar büyük ve çok düşmanca hale gelmiştir. DKIM bu gerçekliğe bir cevaptır. Bir alan adıyla ilişkili imzalayıcının postaya kriptografik bir imza eklemesine ve alıcıların ilişkili genel anahtarı DNS aracılığıyla doğrulamasına olanak tanır. Her güven sorununu çözmez. Muhakemenin yerini almaz. Kötü yönetilen bir posta operasyonunu kendi alışkanlıklarından kurtarmaz. Ancak yalnızca inanılmak yerine kontrol edilebilecek doğrulanabilir bir teknik beyan sağlar. Modern internette bu bir ilerleme sayılır.

Peki ciddi bir DKIM Kayıt Denetleyicisi size gerçekte ne söylemelidir? Seçici ana bilgisayarının var olup olmadığı. Uygun bir v=DKIM1 kaydının orada olup olmadığı. Genel anahtarın mevcut, kodu çözülebilir ve makul olup olmadığı. Anahtarın iptal edilmiş görünüp görünmediği. Kaydın önemli bayrakların veya hizmet kısıtlamalarının reklamını yapıp yapmadığı. Kriptografinin saygın olacak kadar güncel görünüp görünmediği. Ve belki de en önemlisi, alan adınızın posta imzalama hikayesinin gerçek bir yayınlanmış anahtar üzerine mi kurulduğu, yoksa bir alıcı sunucunun kanıt istediği anda çökme eğiliminde olan türden bir idari temenni üzerine mi kurulduğu.