XXTEA - XXTEA

Düzeltilmiş Blok TEA (XXTEA)
XXTEA cipher.svg için algoritma diyagramı
Bir tur XXTEA
Genel
TasarımcılarDavid Wheeler, Roger Needham
İlk yayınlandıEkim 1998
Elde edilenTEA'yı engelle
Şifre ayrıntısı
Anahtar boyutları128 bit
Blok boyutlarıkeyfi, en az iki kelime (64 bit)
YapısıDengesiz Feistel Ağı
Mermiblok boyutuna bağlıdır; ~ 52 + 6 *kelimeler (6-32 tam döngü)
En iyi halk kriptanaliz
XXTEA, bir seçilmiş düz metin saldırısı 2 gerektiren59 sorgular ve önemsiz işler.[1]

İçinde kriptografi, Düzeltilmiş Blok TEA (genellikle şöyle anılır XXTEA) bir blok şifreleme orijinaldeki zayıflıkları düzeltmek için tasarlanmıştır TEA'yı engelle.[2][3]

XXTEA, bir seçilmiş düz metin saldırısı 2 gerektiren59 sorgular ve önemsiz işler. Aşağıdaki kriptanalize bakın.

şifre tasarımcıları Roger Needham ve David Wheeler of Cambridge Bilgisayar Laboratuvarı ve algoritma yayınlanmamış bir[açıklama gerekli ] Ekim 1998'deki teknik rapor (Wheeler ve Needham, 1998). Herhangi bir tabi değildir patentler.

Resmi olarak konuşursak, XXTEA tutarlı, eksik, kaynak ağırlıklı, heterojen bir UFN'dir (dengesiz Feistel ağı ) blok şifresi. XXTEA, boyut olarak 32 bitin keyfi katları olan (minimum 64 bit) değişken uzunluklu bloklar üzerinde çalışır. Tam döngü sayısı blok boyutuna bağlıdır, ancak en az altı tane vardır (küçük blok boyutları için 32'ye yükselir). Orijinal Blok ÇAY, XTEA bloktaki her kelimeye yuvarlak işlev ve onu ek olarak en soldaki komşusuyla birleştirir. Şifre çözme işleminin yavaş yayılma hızı, şifreyi kırmak için hemen kullanıldı. Düzeltilmiş Blok TEA, bloktaki her bir kelimenin işlenmesinde her iki yakın komşuyu kullanan daha kapsamlı bir yuvarlak işlevi kullanır.

XXTEA, daha uzun mesajlar için muhtemelen XTEA'dan daha verimli olacaktır.[kaynak belirtilmeli ]

Needham & Wheeler, Block TEA'nın kullanımına ilişkin şu yorumlarda bulunmaktadır:

Kullanım kolaylığı ve genel güvenlik için, aşağıdaki nedenlerden dolayı uygulanabilir olduğunda büyük blok versiyonu tercih edilmelidir.

  • Tek bir bit değişikliği, tüm bloğun bitlerinin yaklaşık yarısını değiştirecek ve değişikliklerin başladığı yerde hiçbir yer bırakmayacaktır.
  • İlgili mod seçeneği yoktur.
  • Her zaman gönderilen verilerin (muhtemelen bir mesaj numarasıyla) değiştirilmesinin doğru kullanımı kullanılsa bile, yalnızca aynı mesajlar aynı sonucu verir ve bilgi sızıntısı minimumdur.
  • Bu fazlalık, kabul edilen rastgele bir mesaja karşı yapılan kontrol olduğundan mesaj numarası her zaman kontrol edilmelidir.
  • Kes ve birleştirme saldırıları mümkün görünmüyor.
  • Çok uzun mesajlar kabul edilemezse, 60 kelimelik parçalara bölünebilir ve zincirli için kullanılan yöntemlere benzer şekilde DES.

Bununla birlikte, yuvarlak işlevin eksik doğası nedeniyle, 12 kelime dışında tümü aynı olan 53 veya daha fazla 32 bit kelimeden oluşan iki büyük şifreleme, 2 gerektiren basit bir kaba kuvvet çarpışma aramasıyla bulunabilir.96 − N bellek, 2N zaman ve 2N+296 − N seçili düz metinler, diğer bir deyişle toplam süre * 2 bellek karmaşıklığı96, aslında 2wordize * fullcycles / 2 böyle bir şifre için. Bu tür kısmi çarpışmaların şifrenin güvenliği için herhangi bir tehdit oluşturup oluşturmadığı şu anda bilinmemektedir. Sekiz tam döngü, paralel kaba kuvvet saldırılarının karmaşıklığının üzerinde böyle bir çarpışma araştırması için çıtayı yükseltecektir.[kaynak belirtilmeli ]

XXTEA algoritmasının alışılmadık derecede küçük boyutu, onu aşırı kısıtlamaların olduğu durumlarda uygun bir seçenek haline getirecektir. kullanılabilir miktarın bulunduğu eski donanım sistemleri (belki yerleşik) Veri deposu minimal veya alternatif olarak tek kartlı bilgisayarlar benzeri Ahududu Pi, Muz Pi veya Arduino.

Kriptanaliz

2010 yılında E. Yarrkov tarafından yayınlanan bir saldırı, seçilmiş düz metin saldırısı geniş bloklu tam yuvarlak XXTEA'ya karşı, 259 212 bayt veya daha büyük bir blok boyutu için sorgular ve önemsiz çalışma. Dayanmaktadır diferansiyel kriptanaliz.[1]

"212 bayt veya daha fazla" algoritmasını şifrelemek için yalnızca 6 tur gerçekleştirir ve dikkatlice seçilmiş bit desenleri, çığ etkisini algılamaya ve analiz etmeye izin verir. Kağıt, iki ek tur (yani 6 yerine 8 tur) eklendiğini fark ediyor (yani 6 yerine 8 tur) bu sorunu çözüyor.

Referans Kodu

David Wheeler ve Roger Needham tarafından yayınlanan Düzeltilmiş Blok TEA algoritmasının orijinal formülasyonu aşağıdaki gibidir:[4]

  # tanımla MX ((z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (toplam ^ y) + (k [p & 3 ^ e] ^ z))    uzun Btea(uzun* v, uzun n, uzun* k) {    imzasız uzun z=v[n-1], y=v[0], toplam=0, e, DELTA=0x9e3779b9;    uzun p, q ;    Eğer (n > 1) {          / * Kodlama Bölümü * /      q = 6 + 52/n;      süre (q-- > 0) {        toplam += DELTA;        e = (toplam >> 2) & 3;        için (p=0; p<n-1; p++) y = v[p+1], z = v[p] += MX;        y = v[0];        z = v[n-1] += MX;      }      dönüş 0 ;     } Başka Eğer (n < -1) {  / * Kod Çözme Bölümü * /      n = -n;      q = 6 + 52/n;      toplam = q*DELTA ;      süre (toplam != 0) {        e = (toplam >> 2) & 3;        için (p=n-1; p>0; p--) z = v[p-1], y = v[p] -= MX;        z = v[n-1];        y = v[0] -= MX;        toplam -= DELTA;      }      dönüş 0;    }    dönüş 1;  }

Needham ve Wheeler'a göre:

BTEA, n kelimeyi tek bir blok olarak kodlayacak veya çözecektir. n > 1

  • v n kelimeli veri vektörüdür
  • k 4 kelimeli anahtar
  • n, kod çözme için negatiftir
  • n sıfır ise sonuç 1 ise ve kodlama veya kod çözme gerçekleşmez, aksi takdirde sonuç sıfır olur
  • 32 bit 'uzun' ve aynı endian kodlama ve kod çözme olduğunu varsayar

Z'nin başlatılmasının Tanımsız davranış için n <1 neden olabilir Segmentasyon hatası veya diğer istenmeyen davranışlar - 'Kodlama Bölümü' bloğunun içine yerleştirilmesi daha iyi olur. Ayrıca, MX tanımında bazı programcılar, operatör önceliğini netleştirmek için parantez kullanmayı tercih ederler.

Bu iyileştirmeleri içeren netleştirilmiş bir versiyon aşağıdaki gibidir:

  #Dahil etmek <stdint.h>  #define DELTA 0x9e3779b9  # tanımla MX (((z >> 5 ^ y << 2) + (y >> 3 ^ z << 4)) ^ ((toplam ^ y) + (anahtar [(p & 3) ^ e] ^ z)) )    geçersiz Btea(uint32_t *v, int n, uint32_t sabit anahtar[4]) {    uint32_t y, z, toplam;    imzasız p, mermi, e;    Eğer (n > 1) {          / * Kodlama Bölümü * /      mermi = 6 + 52/n;      toplam = 0;      z = v[n-1];      yapmak {        toplam += DELTA;        e = (toplam >> 2) & 3;        için (p=0; p<n-1; p++) {          y = v[p+1];           z = v[p] += MX;        }        y = v[0];        z = v[n-1] += MX;      } süre (--mermi);    } Başka Eğer (n < -1) {  / * Kod Çözme Bölümü * /      n = -n;      mermi = 6 + 52/n;      toplam = mermi*DELTA;      y = v[0];      yapmak {        e = (toplam >> 2) & 3;        için (p=n-1; p>0; p--) {          z = v[p-1];          y = v[p] -= MX;        }        z = v[n-1];        y = v[0] -= MX;        toplam -= DELTA;      } süre (--mermi);    }  }

Ayrıca bakınız

  • RC4: Bir kesintisiz şifreleme bu, tıpkı XXTEA gibi, uygulaması çok basit olacak şekilde tasarlanmıştır.
  • XTEA: TEA'nın öncüsünü engelleyin.
  • ÇAY: XTEA'nın öncüsü.

Referanslar

  1. ^ a b Elias Yarrkov (2010-05-04). "XXTEA'nın Kriptanalizi". Alıntı dergisi gerektirir | günlük = (Yardım)
  2. ^ Matthew D. Russell (2004-02-27). "Kalaylık: ÇAY ve İlgili Şifrelere Genel Bakış". Arşivlenen orijinal 2007-08-12 tarihinde.
  3. ^ Roger M. Needham ve David J. Wheeler (Ekim 1997). "Çay uzantıları" (PDF). Bilgisayar Laboratuvarı, Cambridge Üniversitesi, İngiltere. Alındı 2008-07-04.
  4. ^ David J. Wheeler ve Roger M. Needham (Ekim 1998). "XTEA'da Düzeltme" (PDF). Bilgisayar Laboratuvarı, Cambridge Üniversitesi, İngiltere. Alındı 2008-07-04.

Dış bağlantılar