close

Küçük Şifreleme Algoritması

Gezinmeye atla Aramaya atla
Küçük Şifreleme Algoritması
ÇAY Bilgi Kutusu Şeması.png
TEA'da Feistel fonksiyonunun iki adımı (1 döngü)
Genel
tasarımcılarRoger Needham , David Wheeler
İlk yayın1994
haleflerXTEA , XXTEA
Detaylar
Anahtar boyutu128 bit
Blok boyutu64 bit
YapıFeistel ağı
Geçiş sayısıdeğişkenler: Feistel fonksiyonunun 64 adımını önermek (32 döngü)
Daha iyi kriptoanaliz
TEA, eşdeğer anahtar probleminden muzdariptir (Kelsey ve diğerleri, 1996 ) ve 223 seçilmiş düz metin ve 232'lik bir zaman kullanılarak anahtarla ilgili bir saldırı kullanılarak hacklenebilir .

Kriptografide , Küçük Şifreleme Algoritması (TEA) , basitliği ve uygulama kolaylığı ile bilinen bir blok şifredir (genellikle birkaç satır kod yeterlidir). Cambridge Üniversitesi [1] bilgisayar bölümünden David Wheeler ve Roger Needham tarafından tasarlandı ve ilk kez 1994 yılında Leuven'de ( Belçika ) [2] düzenlenen ikinci Hızlı Yazılım Şifrelemesinde sunuldu .

Algoritma herhangi bir patente tabi değildir .

Özellikler

TEA, 64 bit bloklar üzerinde çalışır ve 128 bit uzunluğunda bir şifreleme anahtarı kullanır. 64 adımlı (önerilen) bir Feistel ağ yapısına sahiptir ve tipik olarak döngü adı verilen çiftler halinde uygulanır . Tüm bitlerini her döngüde aynı şekilde karıştıran çok basit bir anahtar yönetim işlevine sahiptir. Ek olarak, adımların simetrisine dayalı olarak algoritmayı daha basit saldırılara karşı dirençli kılmak için bir sabitin katları kullanılır. Bu sabit, 2654435769 ( ) altın oranın olduğu yerde seçilir .

TEA'nın bazı zayıflıkları vardır, bunların en ciddisi eşdeğer anahtarlarla ilgilidir : her anahtar diğer 3'e eşittir, bu da anahtarın etkin uzunluğunun yalnızca 126 bit olduğu anlamına gelir [3] . Bunun bir sonucu olarak, TEA, hiçbir şekilde bir kriptografik hash fonksiyonu olarak anılmaz . Bu zayıflık, şifrenin önyükleme yazılımını kontrol etmek için bir hash işlevi olarak kullanıldığı Microsoft Xbox konsolunu hacklemek için kullanıldı [4] . TEA ayrıca , bir çift ilişkili anahtar ve 2 32 [5] zaman ile seçilen 2 23 düz metin gerektiren anahtarla ilgili bir saldırıya karşı hassastır .

TEA'nın alışılmadık minimum boyutu, kaynaklarla ilgili aşırı kısıtlamaların olduğu birçok durumda, örneğin bellek miktarının genellikle minimum olduğu eski donanım sistemlerinde, onu ilginç bir seçim haline getirecektir. Öte yandan, algoritmanın kanıtlanmış güvensizliği, yapısının zayıflıklarını düzeltmek için sunulan varyantlardan birinin kullanılmasını önerir.

Sürümler

TEA'nın ilk genel sürümünü , algoritmayı daha güvenli hale getirmeyi amaçlayan bazı değişiklikleri içeren XTEA , eXtended TEA adlı ikinci bir sürüm izledi : orijinal algoritmadan farklı olarak, daha karmaşık bir anahtar yönetim işlevini ve farklı bir bit dizisini birleştirir. shift , XOR ve toplama işlemleri. XTEA ile birlikte, XTEA ile aynı olan ancak tek bir blok olarak düşünülerek tüm mesaj boyunca yinelenen Blok TEA da sunuldu.

Düzeltilmiş Blok TEA ( XXTEA olarak bilinir) adı verilen üçüncü bir versiyon 1998'de yayınlandı : XTEA'dan türetilmiştir ancak herhangi bir uzunluktaki veri bloklarını kullanma olasılığından farklıdır.

Referans kodu

Aşağıdakiler, David Wheeler ve Roger Needham tarafından kamuya sunulan TEA şifreleme ve şifre çözme rutinlerinin C uyarlamalarıdır:

#include <stdint.h> 

geçersiz şifreleme ( uint32_t * v , uint32_t * k ) {      
    uint32_t v0 = v [ 0 ], v1 = v [ 1 ], toplam = 0 , ben ; / * kurmak * /               
    uint32_t delta = 0x9e3779b9 ; / * bir anahtar program sabiti * /                      
    uint32_t k0 = k [ 0 ], k1 = k [ 1 ], k2 = k [ 2 ], k3 = k [ 3 ]; / * önbellek anahtarı * /       
    for ( i = 0 ; i < 32 ; i ++ ) { / * temel döngü başlangıcı * /                             
        toplam + = delta ;  
        v0 + = (( v1 << 4 ) + k0 ) ^ ( v1 + toplam ) ^ (( v1 >> 5 ) + k1 );            
        v1 + = (( v0 << 4 ) + k2 ) ^ ( v0 + toplam ) ^ (( v0 >> 5 ) + k3 ); } / * döngüyü bitir * /              
                                                  
    v [ 0 ] = v0 ; v [ 1 ] = v1 ; 
}

geçersiz şifre çözme ( uint32_t * v , uint32_t * k ) {      
    uint32_t v0 = v [ 0 ], v1 = v [ 1 ], toplam = 0xC6EF3720 , ben ; / * kurulum; toplam == delta * 32 * /      
    uint32_t delta = 0x9e3779b9 ; / * bir anahtar program sabiti * /                      
    uint32_t k0 = k [ 0 ], k1 = k [ 1 ], k2 = k [ 2 ], k3 = k [ 3 ]; / * önbellek anahtarı * /       
    for ( i = 0 ; i < 32 ; i ++ ) { / * temel döngü başlangıcı * /                             
        v1 - = (( v0 << 4 ) + k2 ) ^ ( v0 + toplam ) ^ (( v0 >> 5 ) + k3 );            
        v0 - = (( v1 << 4 ) + k0 ) ^ ( v1 + toplam ) ^ (( v1 >> 5 ) + k1 );            
        toplam - = delta ; } / * döngüyü bitir * /                                     
                                                  
    v [ 0 ] = v0 ; v [ 1 ] = v1 ; 
}

Standart uygulamanın belirli bir mikroişlemci mimarisine bağlı olduğunu unutmayın; bu , şifreli metin farklı sistemlerde dağıtıldığında ve işlendiğinde bayt sırası hususlarının önemli olduğu anlamına gelir . Orijinal belge, mikroişlemcilerin mimarisi hakkında herhangi bir ayrıntı belirtmez, bu nedenle TEA'yı kullanan bir sistemi uygulayan herkesin bu özellikleri dikkate alması gerekir.

Notlar

İlgili öğeler

  • RC4 - TEA gibi, uygulanması çok basit olacak şekilde tasarlanmış bir akış şifresi .
  • XTEA - TEA'nın ilk değiştirilmiş versiyonu olan Block TEA.
  • XXTEA - Düzeltilmiş Blok ÇAY, ÇAY'ın ikinci değiştirilmiş versiyonu.

Diğer referanslar

Dış bağlantılar