**Mesaj doğrulama kodu** (kısaca **MDK**) kriptografi biliminde bir mesajın doğruluğunu kanıtlamak için kullanılan küçük boyutlu bilgilerdir.

Mesaj doğrulama kodu algoritması, (ayrıca **anahtarlı** (**kriptografik**) **özet fonksiyon** olarak da bilinir), girdi olarak gizli anahtar ve doğruluğu ispatlanacak olan herhangi bir uzunlukta mesaj alır. Çıktı olarak **Mesaj doğrulama kodu**  verir. Bu değer mesajın hem veri bütünlüğünü hem de doğruluğunu kontrol etmeyi sağlar. Bu sayede gizli anahtara sahip kişi (doğrulayıcı) gelen mesajda değişiklik olup olmadığını anlayabilir.

Güvenlik
--------

MDK fonksiyonları kriptografik özet fonksiyonlara benzemelerine rağmen güvenlik gereksinimleri bakımından farklıdırlar. Bir mesaj doğrulama koduna güvenli denilebilmesi için, kullanılan MDK fonksiyonunun **seçilmiş açık mesaj saldırısı** altında **varoluşsal sahtekarlığa** dayanıklı olması gereklidir. Bunun anlamı, eğer saldırı yapan kişi, gizli anahtara sahip ve saldıran kişinin istediği mesajların bu anahtar ile oluşturulmuş bir MDK'sini veren bir Kahinli Turing makinesine sahip olsa bile, bu mesajlardan başka bir mesaja karşılık gelen MDK'yi olası bir zaman dilimi içinde oluşturamamalıdır.

MDK'ları sayısal imzalardan ayıran temel özellik, hem oluşturma hem de doğrulama aşamasında aynı gizli anahtarın kullanılıyor olmasıdır. Bu da, simetrik şifrelemeye benzer şekilde, gönderici ve alıcının iletişimden önce ortak bir gizli anahtar üzerinde anlaşmalarını gerektirir. Aynı özellikten dolayı MDK'lar sayısal imzaların sağladığı inkar edilemezlik özelliğini sağlayamazlar. Çünkü herhangi bir MDK'yı doğrulayabilen bir kişi aynı zamanda herhangi bir mesaj için geçerli bir MDK da oluşturabilir.

Mesaj bütünlük kodları (MBK)
----------------------------

MBK ve MDK birbirlerine kelime olarak çok benzemelerine rağmen kriptografik olarak farklıdırlar. MDK'nın aksine MBK üretilirken herhangi bir gizli anahtar kullanılmaz. Dolayısıyla MBK ile mesajın bütünlüğü kontrol edilmek istendiğinde, oluşturulan MBK ya şifrelenmeli ya da olası değiştirme müdahalelerine karşı korunmaya alınmalıdır.Aynı MBK üretme algoritmasının kullandıldığı varsayımı altında aynı mesaj için her zaman aynı MBK oluşacaktır. Buna karşı, MDK üretirken kullanılan gizli anahtar ve başlangıç vektörüne bağlı olarak oluşan MDK değişiklik gösterecektir. MBK'lar gizli anahtar kullanmadıkları için MDK'lara göre mesaj bütünlüğünü koruma adına daha zayıftırlar.

Uygulama
--------

MDK algoritmaları kriptografik özet fonksiyonlar ya da blok şifreleme algoritmaları kullanılarak oluşturulabilir. özet fonksiyonlar ile oluşturulan algıritmalara örnek olarak en:HMAC, blok şifreleme kullanılarak oluşturulan algoritmalara ise OMAC, en:CBC-MAC ve PMAC verilebilir. Buna rağmen, en:UMAC ve en:VMAC gibi hızlı MDK üretme algoritmaları evrensel özetlemeye dayalı olarak oluşturulmuştur.

Standartlar
-----------

MDK algoritmalarını tanımlayan çeşitli standartlar mevcuttur. Bunlardan bazıları:

* FIPS PUB 113 *Bilgisayar Veri Doğrulunu Kanıtlama*, withdrawn in 2002, defines an algorithm based on DES.
* ISO/IEC 9797-1 *blok şifreleme kullanan mekanizmalar*
* ISO/IEC 9797-2 *Özel özet fonksiyon kullanan mekanizmalar*

ISO/IEC 9797-1 ve -2 herhangi bir özet fonksiyon ya da blok şifreleme algoritması ve çeşitli parametreler ile kullanılabilecek genel bir model veya algoritma tanımı verir. Bu da paramterelere bağlı olarak daha belirleyici algoritmalar oluşturmayı sağlar. Örneğin FIPS PUB 113 algoritması, ISO/IEC 9797-1 MAC algoritmasına en:padding metodunun 1 olarak seçilmesi ve DES blok şifreleme algoritmasının kullanılması ile denk olur.

Örnek
-----

Bu örnekte, gönderici, mesajına ait MDK oluşturmak için bir MDK algoritması kullanıyor. Oluşan MDK ve mesaj alıcıya gönderiliyor. Alıcı, ulaşan mesajı, sadece gönderici ve kendisinin sahibi olduğu gizli anahtarı ve gönderici ile aynı MDK algoritmasını kullanarak MDK'yı oluşturur. Oluşan bu MDK, göndericiden mesaj ile birlikte gelen MDK değeri ile karşılaştırılır. Eğer iki MDK birbirine eşit ise, alıcı mesajın bütünlüğünden ve doğruluğundan emin olabilir. Aksi halde mesajın yolda değiştirilmiş ya da hasara uğramış olduğu anlar.

Dış bağlantılar
---------------

* MDK'lar hakkında RSA web sitesi
* Ron Rivest'in MDK ile ilgili ders notları4 Mart 2016 tarihinde Wayback Machine sitesinde arşivlendi.

Kaynakça
--------

1. ↑  "VMAC: Message Authentication Code using Universal Hashing". *CFRG Working Group*. CFRG Working Group. 15 Nisan 2009 tarihinde kaynağından arşivlendi. Erişim tarihi: 16 Mart 2010.
2. ↑  "FIPS PUB 113 *Computer Data Authentication*". 27 Eylül 2011 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Mayıs 2012.
3. ↑  "Federal Information Processing Standards Publications, Withdrawn FIPS Listed by Number". 1 Ağustos 2010 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Mayıs 2012.
4. ↑  "ISO/IEC 9797-1 *Information technology — Security techniques — Message Authentication Codes (MACs) — Part 1: Mechanisms using a block cipher*". 9 Nisan 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Mayıs 2012.
5. ↑  "ISO/IEC 9797-2 *Information technology — Security techniques — Message Authentication Codes (MACs) — Part 2: Mechanisms using a dedicated hash-function*". 15 Mart 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Mayıs 2012.

|  |  |
| --- | --- |
| Otorite kontrolü Bunu Vikiveri'de düzenleyin | 
* GND: 1080489657

 |