Küçük Şifreleme Algoritması
| Küçük Şifreleme Algoritması | |
|---|---|
| TEA'da Feistel fonksiyonunun iki adımı (1 döngü) | |
| Genel | |
| tasarımcılar | Roger Needham , David Wheeler |
| İlk yayın | 1994 |
| halefler | XTEA , XXTEA |
| Detaylar | |
| Anahtar boyutu | 128 bit |
| Blok boyutu | 64 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
- ^ Cambridge Üniversitesi Bilgisayar Laboratuvarı resmi sitesi
- ^ TEA, küçük bir şifreleme algoritması
- ^ Bruce Schneier ve David Wagner: IDEA, G-DES, GOST, SAFER ve Triple-DES'in anahtar program kriptanalizi ( 1996 )
- ^ 17 Microsoft Mistakes Made in the Xbox Security System 16 Nisan 2009'da İnternet Arşivi'nde arşivlendi .
- ^ Bruce Schneier ve David Wagner: 3-WAY, Biham-DES, CAST, DES-X NewDES, RC2 ve TEA'nın ilgili anahtar kriptanalizi ( 1997 )
İ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
- TEA'nın bir kriptanalizi ( 2003 )
- Bir TEA döngüsünün kriptanalizi için genetik algoritmaların bir uygulaması ( 2002 )
Dış bağlantılar
- Küçük Şifreleme Algoritmasının ( PDF ) cs.ua.edu üzerinde kriptanalizi .
- TEA ile ilgili kavramlar ve farklı dillerdeki uygulamalar , 143.53.36.235:8080'de . Erişim tarihi: 14 Ekim 2008 ( 12 Haziran 2017'de orijinalinden arşivlendi ) .
- TEA için vektörleri cix.co.uk adresinde test edin .
- php-einfach.de adresinde XTEA'nın PHP uygulaması .
- MOVable-type.co.uk adresinde TEA'nın JavaScript uygulaması .