İki algoritma arasındaki fark nedir?
Bildiğim bir fark MAC'ın anahtarlanmış olması ve hash olmaması.
Basitleştirmek için: genellikle MAC, gizli bir anahtarla şifrelenmiş bir Hash değeridir. Örneğin, saldırganlar mesaj oluşturabilir ve yeni bir karmayı hesaplayabilir, ancak sistem karmanın gizli bir anahtarla şifrelenmesini gerektiriyorsa bunu yapamaz.
A kriptografik karma işlevi , herkesin keyfi girdiler üzerinden hesaplayabileceği tamamen herkese açık, deterministik bir karma işlevidir. Girdi olarak bir bit dizisi alır (herhangi bir bit dizisi; bazı hash fonksiyonları, örneğin daha az 2'nin girişleri ile resmi olarak sınırlıdır.64 bit, diğer adıyla "2 milyon terabayt") ve değerleri oldukça küçük bir alanda, tipik olarak sabit boyutlu bir bit dizisinden çıkarır (örneğin her zaman standart karma işleviyle her zaman 160 bit SHA-1 ). İyi kriptografik hash fonksiyonları, gayri resmi olarak, giriş verilerini o kadar iyice karıştırdıklarına, daha sonra anlayamayacağımız bazı koşullara saygı gösterir.
A mesaj kimlik doğrulama kod , giriş olarak bir mesaj ve bir gizli anahtar alan ve daha sonra mesajla eşleşecek şekilde doğrulanabilen sabit boyutlu bir çıktı üreten bir algoritmadır; doğrulama ayrıca aynı gizli anahtarı gerektirir. Her şeyin bilindiği ve saldırganların matematiğe karşı savaştığı karma işlevlerin aksine MAC, sır bilgisi olan varlıkların olduğu modellerde mantıklıdır. İyi bir MAC'tan beklediğimiz şey unutulmazdır: verilen bir anahtarla başarıyla doğrulayan bir çift mesaj + MAC değeri hesaplamak mümkün olmamalıdır [~ # ~] k [~ # ~] olmadan bilmek [~ # ~] k [~ # ~] tam olarak ve bütünüyle.
Karma fonksiyonlar ve MAC böylece farklı özelliklere sahip ve gerçekten farklı durumlarda kullanılan farklı algoritmalardır.
Bazı MAC algoritmaları (ama kesinlikle hepsi değil) "anahtarlı hash fonksiyonları" olarak düşünülebilir, ancak bu kısıtlayıcı bir görüştür. HMAC , akıllı bir şekilde temeldeki karma işlevini temel alan iyi bilinen bir MAC yapısıdır. Gerçekten de, karma fonksiyonları ve MAC için güvenlik özellikleri ve modelleri, karma fonksiyonunu is güvenli olsa bile bir karma fonksiyonunu ve bir anahtarı birlikte tokatlamak zorunda kalmayacak kadar birbirinden yeterince farklıdır. (bu noktayı gösteren zunluk uzatma saldırısı konusuna bakın).
Bir dereceye kadar, güvenli bir şekilde çalışabilen bir MAC algoritmasının bir IV bazı karma benzeri özellikler göstermesi gerektiğini söyleyebiliriz ( HMAC'ı sevmemin nedeni budur: IV olmadan, uygularken yanlış yapmak çok daha zordur). Ancak Şeytan ayrıntıda gizlidir.
Bunlar tamamen farklı iki ilkel. Mesaj kimlik doğrulaması için bir MAC kullanılır ve simetrik olarak anahtarlanmış bir ilkeldir. Bir karma fonksiyonu birçok amaç için kullanılabilir ve özel bir tuş girişi yoktur. MAC, "mesaj kimlik doğrulama kodunun" kısaltmasıdır.
Bazı MAC algoritmalarının (örn. SHA1-HMAC) bir alt program olarak bir karma işlevi kullanarak çalışmasıyla karıştırmayın. Onlar çok farklı yaratıklar.
Bunu başka bir forumdan gelen cevaba kadar buldum.
Bu tür kriptografik ilkel, yerine getirdikleri güvenlik hedefleriyle ayırt edilebilir (basit bir "mesaja ekleme" protokolünde):
Dürüstlük: Alıcı, mesajın yanlışlıkla değiştirilmediğinden emin olabilir mi?
Kimlik Doğrulama: Alıcı, mesajın gönderenden geldiğinden emin olabilir mi?
Reddetmeme: Alıcı mesajı ve kanıtı üçüncü bir tarafa iletirse, üçüncü taraf mesajın gönderenden geldiğinden emin olabilir mi? (Yasal olarak değil, kriptografik anlamda reddetmekten bahsettiğimi lütfen unutmayın.) Bu soru da önemlidir:
Anahtarlar: İlkel bir paylaşılan gizli anahtar mı yoksa genel-özel anahtar çifti mi gerektiriyor? Kısa cevabın en iyi bir tablo ile açıklandığını düşünüyorum:
Cryptographic primitive | Hash | MAC | Digital Security Goal | | | signature ------------------------+------+-----------+------------- Integrity | Yes | Yes | Yes Authentication | No | Yes | Yes Non-repudiation | No | No | Yes ------------------------+------+-----------+------------- Kind of keys | none | symmetric | asymmetric | | keys | keys
Kullanılan anahtarlara güvenmeden kimlik doğrulamanın yararsız olduğunu lütfen unutmayın. Dijital imzalar için alıcı, doğrulama anahtarının gerçekten gönderene ait olduğundan emin olmalıdır. MAC'ler için, alıcı paylaşılan simetrik anahtarın yalnızca gönderenle paylaşıldığından emin olmalıdır.