Tek anahtarlı mesaj doğrulama kodu - Vikipedi
İçeriğe atla
Ana menü
Gezinti
  • Anasayfa
  • Hakkımızda
  • İçindekiler
  • Rastgele madde
  • Seçkin içerik
  • Yakınımdakiler
Katılım
  • Deneme tahtası
  • Köy çeşmesi
  • Son değişiklikler
  • Dosya yükle
  • Topluluk portalı
  • Wikimedia dükkânı
  • Yardım
  • Özel sayfalar
Vikipedi Özgür Ansiklopedi
Ara
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç

İçindekiler

  • Giriş
  • 1 Uygulamalar
  • 2 Kaynakça
  • 3 Dış bağlantılar

Tek anahtarlı mesaj doğrulama kodu

  • Català
  • English
Bağlantıları değiştir
  • Madde
  • Tartışma
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Araçlar
Eylemler
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Genel
  • Sayfaya bağlantılar
  • İlgili değişiklikler
  • Kalıcı bağlantı
  • Sayfa bilgisi
  • Bu sayfayı kaynak göster
  • Kısaltılmış URL'yi al
  • Karekodu indir
Yazdır/dışa aktar
  • Bir kitap oluştur
  • PDF olarak indir
  • Basılmaya uygun görünüm
Diğer projelerde
  • Vikiveri ögesi
Görünüm
Vikipedi, özgür ansiklopedi
Bu madde, öksüz maddedir; zira herhangi bir maddeden bu maddeye verilmiş bir bağlantı yoktur. Lütfen ilgili maddelerden bu sayfaya bağlantı vermeye çalışın. (Eylül 2022)

Tek anahtarlı mesaj doğrulama kodu (One-key MAC, OMAC), CBC-MAC algoritmasına benzer bir blok şifresinden oluşturulan bir mesaj kimlik doğrulama kodudur .

Resmi olarak, küçük bir değişiklik dışında her ikisi de esasen aynı olan iki OMAC algoritması (OMAC1 ve OMAC2) vardır. Mayıs 2005'te NIST tarafından önerilmiş olan OMAC1, CMAC algoritmasına eşdeğerdir.

Algoritma, herhangi bir patent kapsamında olmadığından her kullanıcı için ücretsizdir. Kriptografide CMAC (Cipher-based Message Authentication Code, Şifre Tabanlı Mesaj Kimlik Doğrulama Kodu)[1] bir çeşit blok şifreleme tabanlı mesaj kimlik doğrulama kodu algoritmasıdır. İkili verilerin kimliğinin doğruluğunu ve dolayısıyla da bütünlüğünü garanti etmek için kullanılabilir. Bu çalışma kipi, CBC-MAC'in güvenlik eksikliklerini giderir (CBC-MAC sadece sabit uzunluktaki mesajlar için güvenlidir).

CMAC algoritmasının temeli, Black ve Rogaway tarafından önerilmiş ve XCBC[2] adı altında analiz edilip NIST'e gönderilmiş[3] olan bir CBC-MAC varyasyonudur. XCBC algoritması, CBC-MAC'in güvenlik eksikliklerini etkili bir şekilde gidermektedir, ancak üç anahtar gerektiriyor. Iwata ve Kurosawa, XCBC için bir iyileştirme sunmuş ve elde ettikleri algoritmayı makalelerinde One-Key CBC-MAC (OMAC) olarak adlandırmış,[4] ardından OMAC üzerine bir iyileştirme ve ilave güvenlik analizi olan OMAC1'i yayımlamışlardır.[5][6] OMAC algoritması, XCBC için gereken anahtar miktarını azaltır. CMAC, OMAC1'e eşdeğerdir.

Bir adet b {\displaystyle b} {\displaystyle b}-bitlik blok şifresi ( E ) {\displaystyle (E)} {\displaystyle (E)} ve bir adet gizli anahtar ( k ) {\displaystyle (k)} {\displaystyle (k)} kullanarak, bir mesaja ( m ) {\displaystyle (m)} {\displaystyle (m)} ait l {\displaystyle {\mathcal {l}}} {\displaystyle {\mathcal {l}}}-bitlik bir CMAC etiketi ( t ) {\displaystyle (t)} {\displaystyle (t)} oluşturmak için; öncelikle aşağıdaki algoritma kullanılarak iki adet b {\displaystyle b} {\displaystyle b}-bitlik alt-anahatlar ( k 1 {\displaystyle k_{1}} {\displaystyle k_{1}} ve k 2 {\displaystyle k_{2}} {\displaystyle k_{2}}) türetilir (Bu işlem, sonlu alan G F ( x b ) {\displaystyle GF(x^{b})} {\displaystyle GF(x^{b})} üzerinde x {\displaystyle x} {\displaystyle x} ve x 2 {\displaystyle x^{2}} {\displaystyle x^{2}}'nin çarpımına eşdeğerdir). ≪ {\displaystyle \ll } {\displaystyle \ll } sembolü standart sola-kaydırma operatörü ve ⊕ {\displaystyle \oplus } {\displaystyle \oplus } sembolü ise dışlayıcı veya işlemini, m s b {\displaystyle msb} {\displaystyle msb} fonksiyonu ise sayının en anlamlı bitini (most significant bit) belirtmek üzere:

  1. Geçici bir k 0 = E k ( 0 ) {\displaystyle k_{0}=E_{k}(0)} {\displaystyle k_{0}=E_{k}(0)} değeri hesaplanır.
  2. Eğer m s b ( k 0 ) = 0 {\displaystyle msb(k_{0})=0} {\displaystyle msb(k_{0})=0} ise, k 1 = k 0 ≪ 1 {\displaystyle k_{1}=k_{0}\ll 1} {\displaystyle k_{1}=k_{0}\ll 1}; aksi halde k 1 = ( k 0 ≪ 1 ) ⊕ C {\displaystyle k_{1}=(k_{0}\ll 1)\oplus C} {\displaystyle k_{1}=(k_{0}\ll 1)\oplus C} olur. Burada, C {\displaystyle C} {\displaystyle C} yalnızca b {\displaystyle b} {\displaystyle b}'ye bağlı belirli bir sabittir. (Spesifik olarak, C {\displaystyle C} {\displaystyle C} değeri, indirgenemeyen b . {\displaystyle b.} {\displaystyle b.} dereceden ikili polinomlar arasında en az sayıda 1 {\displaystyle 1} {\displaystyle 1} içeren ilk polinomun baş katsayısı haricindeki diğer katsayılarıdır: Mesela, 64 bit için 0x1B, 128 bit için 0x87 ve 256 bit bloklar için 0x425.)
  3. Eğer m s b ( k 1 ) = 0 {\displaystyle msb(k_{1})=0} {\displaystyle msb(k_{1})=0} ise, k 2 = k 1 ≪ 1 {\displaystyle k_{2}=k_{1}\ll 1} {\displaystyle k_{2}=k_{1}\ll 1}, aksi halde k 2 = ( k 1 ≪ 1 ) ⊕ C {\displaystyle k_{2}=(k_{1}\ll 1)\oplus C} {\displaystyle k_{2}=(k_{1}\ll 1)\oplus C} olur.
  4. MDK hesaplama işlemi için gerekli bu alt anahtarlar ( k 1 , k 2 ) {\displaystyle (k_{1},k_{2})} {\displaystyle (k_{1},k_{2})} döndürülür.

Küçük bir örnek olarak, b = 4 {\displaystyle b=4} {\displaystyle b=4}, C = 0011 2 {\displaystyle C=0011_{2}} {\displaystyle C=0011_{2}} ve k 0 = E k ( 0 ) = 0101 2 {\displaystyle k_{0}=E_{k}(0)=0101_{2}} {\displaystyle k_{0}=E_{k}(0)=0101_{2}} olarak varsayılsın. O halde k 1 = 1010 2 {\displaystyle k_{1}=1010_{2}} {\displaystyle k_{1}=1010_{2}} ve k 2 = 0100 ⊕ 0011 = 0111 2 {\displaystyle k_{2}=0100\oplus 0011=0111_{2}} {\displaystyle k_{2}=0100\oplus 0011=0111_{2}} olarak hesaplanmış olur.

CMAC etiketi oluşturma süreci aşağıdaki gibidir:

  1. Mesaj m = m 1   | |   m 2   | |   …   | |   m n {\displaystyle m=m_{1}\ ||\ m_{2}\ ||\ \dots \ ||\ m_{n}} {\displaystyle m=m_{1}\ ||\ m_{2}\ ||\ \dots \ ||\ m_{n}} olacak şekilde b {\displaystyle b} {\displaystyle b} bitlik bloklara ayrılır. Burada m 1 , m 2 , … , m n − 1 {\displaystyle m_{1},m_{2},\dots ,m_{n-1}} {\displaystyle m_{1},m_{2},\dots ,m_{n-1}} tam bloktur. (Boş mesaj ise tamamlanmamış bir tane blok olarak değerlendirilir.)
  2. Eğer M n {\displaystyle M_{n}} {\displaystyle M_{n}} tam bloksa m n ′ = k 1 ⊕ m n {\displaystyle m_{n}^{'}=k_{1}\oplus m_{n}} {\displaystyle m_{n}^{'}=k_{1}\oplus m_{n}}, aksi halde m n ′ = k 2 ⊕ ( m n   | |   10...0 2 ) {\displaystyle m_{n}^{'}=k_{2}\oplus (m_{n}\ ||\ 10...0_{2})} {\displaystyle m_{n}^{'}=k_{2}\oplus (m_{n}\ ||\ 10...0_{2})} olur.
  3. c 0 = 00...0 2 {\displaystyle c_{0}=00...0_{2}} {\displaystyle c_{0}=00...0_{2}} olsun.
  4. Her i ∈ { 1 , 2 , 3 , … , n − 1 } {\displaystyle i\in \{1,2,3,\dots ,n-1\}} {\displaystyle i\in \{1,2,3,\dots ,n-1\}} için, c i = E k ( c i − 1 ⊕ m i ) {\displaystyle c_{i}=E_{k}(c_{i-1}\oplus m_{i})} {\displaystyle c_{i}=E_{k}(c_{i-1}\oplus m_{i})} değeri hesaplanır.
  5. c n = E k ( c n − 1 ⊕ m n ′ ) {\displaystyle c_{n}=E_{k}(c_{n-1}\oplus m_{n}^{'})} {\displaystyle c_{n}=E_{k}(c_{n-1}\oplus m_{n}^{'})} olur.
  6. Çıktı t = m s b l ( c n ) {\displaystyle t=msb_{\mathcal {l}}(c_{n})} {\displaystyle t=msb_{\mathcal {l}}(c_{n})} olarak bulunmuş olur.

Doğrulama işlemi ise aşağıdaki gibidir:

  1. Etiketi oluşturmak için yukarıdaki algoritma kullanılır.
  2. Oluşturulan etiketin alınan etikete eşit olup olmadığı kontrol edilir.

Uygulamalar

[değiştir | kaynağı değiştir]
  • Python uygulaması[7]
  • Ruby uygulaması[8]

Kaynakça

[değiştir | kaynağı değiştir]
  1. ^ Dworkin (2016). "Recommendation for block cipher modes of operation" (PDF). 9 Mayıs 2020 tarihinde kaynağından arşivlendi (PDF)5 Nisan 2020. 
  2. ^ Mihir Bellare (26 Haziran 2003). Advances in Cryptology - CRYPTO 2000 (İngilizce). Springer. ISBN 978-3540445982. 
  3. ^ Black. "A Suggestion for Handling Arbitrary-Length Messages with the CBC MAC" (PDF). 30 Ağustos 2017 tarihinde kaynağından arşivlendi (PDF)5 Nisan 2020. 
  4. ^ FSE 2003 (16 Ekim 2003). Fast Software Encryption (İngilizce). Springer Science & Business Media. ISBN 978-3-540-20449-7. 
  5. ^ Iwata (2003). "OMAC: One-Key CBC MAC – Addendum" (PDF). 4 Mart 2016 tarihinde kaynağından arşivlendi (PDF)5 Nisan 2020. 
  6. ^ Thomas Johansson; Subhamoy Maitra (25 Kasım 2003). Progress in Cryptology -- INDOCRYPT 2003 (İngilizce). Springer Science & Business Media. ISBN 9783540206095. 
  7. ^ "Impacket is a collection of Python classes for working with network protocols.: SecureAuthCorp/impacket". 15 Aralık 2018. 19 Kasım 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Nisan 2020 – GitHub vasıtasıyla. 
  8. ^ "Ruby C extension for the AES-CMAC keyed hash function (RFC 4493): louismullie/cmac-rb". 4 Mayıs 2016. 11 Haziran 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Nisan 2020 – GitHub vasıtasıyla. 

Dış bağlantılar

[değiştir | kaynağı değiştir]
  • RFC 4493 AES-CMAC Algoritması
  • RFC 4494 AES-CMAC-96 Algoritması ve IPsec ile Kullanımı
  • RFC 4615 Gelişmiş Şifreleme Standardı-Şifreleme Tabanlı İleti Kimlik Doğrulama Kodu-Sözde Rastgele İşlev-128 (AES-CMAC-PRF-128)
  • OMAC Çevrimiçi Testi
  • OMAC Hakkında Daha Fazla Bilgi11 Ekim 2019 tarihinde Wayback Machine sitesinde arşivlendi.
  • Phillip Rogaway'in CMAC'ın fikri mülkiyet durumu ile ilgili açıklaması5 Aralık 2013 tarihinde Wayback Machine sitesinde arşivlendi.
"https://tr.wikipedia.org/w/index.php?title=Tek_anahtarlı_mesaj_doğrulama_kodu&oldid=34458148" sayfasından alınmıştır
Kategoriler:
  • Sonlu cisimler
  • Mesaj doğrulama kodu
Gizli kategoriler:
  • Öksüz maddeler Eylül 2022
  • Webarşiv şablonu wayback bağlantıları
  • RFC sihirli bağlantısını kullanan sayfalar
  • Sayfa en son 23.06, 7 Aralık 2024 tarihinde değiştirildi.
  • Metin Creative Commons Atıf-AynıLisanslaPaylaş Lisansı altındadır ve ek koşullar uygulanabilir. Bu siteyi kullanarak Kullanım Şartlarını ve Gizlilik Politikasını kabul etmiş olursunuz.
    Vikipedi® (ve Wikipedia®) kâr amacı gütmeyen kuruluş olan Wikimedia Foundation, Inc. tescilli markasıdır.
  • Gizlilik politikası
  • Vikipedi hakkında
  • Sorumluluk reddi
  • Davranış Kuralları
  • Geliştiriciler
  • İstatistikler
  • Çerez politikası
  • Mobil görünüm
  • Wikimedia Foundation
  • Powered by MediaWiki
Tek anahtarlı mesaj doğrulama kodu
Konu ekle