Mesaj Doğrulama Kodları
Bir mesaj doğrulama kodu (MAC), paylaşılan bir gizli anahtar kullanarak kısa bir etiket üretir; bu etiket, alıcının bir mesajın bütünlüğünü ve gerçekliğini doğrulamasını, herhangi bir kurcalama veya sahteciliği tespit etmesini sağlar.
Tanım
Bir mesaj doğrulama kodu, gizli bir anahtar ve bir mesaj verildiğinde, sabit uzunlukta bir etiket üreten simetrik bir ilkeldir; öyle ki, anahtara sahip olmayan hiç kimse, seçilen mesajlar üzerindeki etiketleri görmüş olsa bile, yeni bir mesaj için geçerli bir etiket üretemez (sahtecilik yapamaz).
Kapsam
Bu konu, simetrik doğrulamayı ele almaktadır: seçilen mesaj saldırısı altında varoluşsal sahtecilik yapılamazlığı güvenlik hedefi, özet fonksiyonlarından (HMAC) ve blok şifrelerden (CMAC, GMAC) MAC yapılarının oluşturulması ve bunların şifreleme ile birleştirilerek doğrulanmış şifreleme (encrypt-then-MAC, AES-GCM) oluşturulması incelenmektedir. Uzunluk uzatma (length-extension) gibi tuzaklar ve sabit zamanlı etiket karşılaştırmasının gerekliliği ele alınmaktadır. Açık anahtarlı kriptografi kullanarak kamuya açık doğrulanabilirlik ve inkar edilemezlik sağlayan dijital imzalar bu kapsamın dışındadır.
Temel sorular
- Paylaşılan bir anahtar, bir alıcının bir mesajdaki herhangi bir değişikliği nasıl tespit etmesini sağlar?
- Seçilen mesaj saldırısı altında varoluşsal sahtecilik yapılamazlığı, güvenli bir MAC'ten ne talep eder?
- Güvenli MAC'ler özet fonksiyonlarından (HMAC) ve blok şifrelerden (CMAC) nasıl inşa edilir?
- Gizlilik ve bütünlüğü korumak için şifreleme ve doğrulama nasıl birleştirilmelidir?
- Etiket karşılaştırması neden sabit zamanlı olmalıdır ve zamanlama sızıntılarını hangi saldırılar kullanır?
Anahtar kavramlar
- doğrulama etiketi
- varoluşsal sahtecilik yapılamazlığı
- seçilen mesaj saldırısı
- HMAC
- CMAC ve GMAC
- doğrulanmış şifreleme (AEAD)
- önce şifrele-sonra MAC
- sabit zamanlı karşılaştırma
- tekrar oynatma koruması
Temel kuramlar
- Seçilen mesaj saldırısı altında varoluşsal sahtecilik yapılamazlığı
- Standart MAC güvenlik tanımı: kendi seçtiği mesajlar üzerinde etiket talep edebilen bir saldırgan, sorgulamadığı herhangi bir mesaj üzerinde geçerli bir etiket üretemez, bu da sahteciliği imkansız hale getirir.
- HMAC ve doğrulanmış şifreleme
- HMAC, herhangi bir standart özet fonksiyonundan kanıtlanabilir şekilde güvenli bir MAC elde etmek için anahtarlı bir özeti iki kez iç içe kullanır; bir MAC'i önce şifrele-sonra MAC (encrypt-then-MAC) yoluyla (veya AES-GCM kullanarak) şifreleme ile birleştirmek, gizliliği ve bütünlüğü birlikte koruyan doğrulanmış şifreleme sağlar.
Mekanizmalar
HMAC, H((K xor opad) || H((K xor ipad) || message)) ifadesini hesaplar; burada H bir özet fonksiyonu, ipad/opad ise sabit dolgu (pad) değerleridir. İç içe geçmiş bu yapı, uzunluk uzatma (length-extension) saldırılarını engeller ve sıkıştırma fonksiyonu bir sözde rastgele fonksiyon ise kanıtlanabilir şekilde güvenlidir. CMAC gibi blok şifre MAC'leri, mesaj bloklarının şifrelemelerini anahtarlı bir son ayarlama ile zincirler. AES-GCM gibi doğrulanmış şifreleme modları, gizliliği ve bütünlüğü tek geçişte birleştirmek için şifreli metin üzerinde bir Galois-field MAC (GMAC) hesaplar.
Klinik önem
MAC'ler, neredeyse tüm güvenli ağ trafiğini doğrulamaktadır: HMAC, TLS kayıt bütünlüğünü, IPsec'i, JSON Web Tokens'ı ve AWS tarzı API istek imzalama işlemlerini desteklerken, AES-GCM TLS 1.3'te ve disk şifrelemede doğrulanmış şifreleme sağlamaktadır. Bir MAC'i doğrulamak, bir saldırganın şifreli metni sessizce değiştirmesini veya ele geçirilmiş mesajları tekrar oynatmasını engellemektedir.
Kanıt ve kılavuzlar
HMAC, FIPS 198-1 ve RFC 2104'te; CMAC, NIST SP 800-38B'de; GCM/GMAC ise NIST SP 800-38D'de standartlaştırılmıştır. En iyi uygulama, doğrulanmış şifreleme (AEAD) yapılarını ve önce şifrele-sonra MAC (encrypt-then-MAC) sıralamasını tercih etmektedir; eski TLS sürümlerinde kullanılan önce MAC-sonra şifrele (MAC-then-encrypt) sıralaması, dolgu kehaneti (padding-oracle) saldırılarına katkıda bulunmuştur.
Tarihçe
İlk MAC'ler, CBC-MAC modunda DES'ten inşa edilmiştir. Basit anahtarlı özet MAC'lerinin uzunluk uzatma (length-extension) saldırılarına karşı savunmasız olduğunun keşfedilmesi, 1996 yılında Bellare, Canetti ve Krawczyk tarafından tanıtılan ve kısa süre sonra standartlaştırılan HMAC'i motive etmiştir. 2000'li yıllar, doğrulanmış şifrelemenin ve GCM ve CCM gibi özel AEAD modlarının resmileşmesini getirmiştir; bunlar günümüzde aktarımdaki verileri korumak için varsayılan yöntemlerdir.
Öne çıkan isimler
- Mihir Bellare
- Ran Canetti
- Hugo Krawczyk
- Phillip Rogaway
İlgili konular
Temel eserler
- bellare1996hmac
- katz2020
- menezes1996
Sıkça sorulan sorular
- MAC ile dijital imza arasındaki fark nedir?
- Her ikisi de bir mesajı doğrular, ancak bir MAC paylaşılan bir gizli anahtar kullanır, bu nedenle bir etiketi doğrulayabilen herhangi bir taraf onu üretmiş de olabilir — inkar edilemezlik (non-repudiation) yoktur. Dijital imza ise imzalama için özel bir anahtar ve doğrulama için açık bir anahtar kullanır, bu nedenle sadece imzalayan kişi onu oluşturmuş olabilir ve herkes onu kontrol edebilir.
- Önce şifrelemeli miyim yoksa önce doğrulamalı mıyım?
- Önerilen sıra önce şifrele-sonra MAC'tir (encrypt-then-MAC): düz metni şifreleyin, ardından şifreli metin üzerinde MAC'i hesaplayın. Bu, alıcının sahte şifreli metinleri şifrelerini çözmeden önce reddetmesini sağlar ve önce MAC-sonra şifrele (MAC-then-encrypt) sıralamalarından kaynaklanan dolgu kehaneti (padding-oracle) ve diğer saldırıları önler.