stringtranslate.com

Крошечный алгоритм шифрования

В криптографии Tiny Encryption Algorithm ( TEA ) — это блочный шифр , отличающийся простотой описания и реализации , обычно в несколько строк кода. Он был разработан Дэвидом Уилером и Роджером Нидхэмом из Кембриджской компьютерной лаборатории ; впервые был представлен на семинаре Fast Software Encryption в Лёвене в 1994 году и впервые опубликован в трудах этого семинара. [4]

Шифр не подлежит никаким патентам .

Характеристики

TEA работает с двумя 32-битными целыми числами без знака (могут быть получены из 64-битного блока данных ) и использует 128-битный ключ . Он имеет структуру Фейстеля с предлагаемыми 64 раундами, обычно реализуемыми парами, называемыми циклами . Он имеет чрезвычайно простой график ключей , смешивая весь ключевой материал абсолютно одинаковым образом для каждого цикла. Различные кратные магической константы используются для предотвращения простых атак, основанных на симметрии раундов. Магическая константа, 2654435769 или 0x9E3779B9, выбрана равной ⌊2 32 𝜙⌋ , где 𝜙золотое сечение (как число, которое ничего не спрятано в рукаве ). [4]

TEA имеет несколько слабых мест. Наиболее заметным является то, что он страдает от эквивалентных ключей — каждый ключ эквивалентен трем другим, что означает, что эффективный размер ключа составляет всего 126 бит . [5] В результате TEA особенно плох как криптографическая хэш-функция . Эта слабость привела к методу взлома игровой консоли Xbox от Microsoft , где шифр использовался в качестве хэш-функции. [6] TEA также подвержен атаке со связанными ключами , которая требует 2 23 выбранных открытых текстов под парой связанных ключей, со сложностью по времени 2 32. [2] Из-за этих слабостей был разработан шифр XTEA .

Версии

Первая опубликованная версия TEA была дополнена второй версией, которая включала расширения, чтобы сделать ее более безопасной. Блочная TEA (которая была указана вместе с XTEA ) работает с блоками произвольного размера вместо 64-битных блоков оригинала.

Третья версия ( XXTEA ), опубликованная в 1998 году, описывала дальнейшие усовершенствования для повышения безопасности алгоритма Block TEA.

Справочный код

Ниже приведена адаптация эталонных процедур шифрования и дешифрования на языке C , опубликованная в открытом доступе Дэвидом Уилером и Роджером Нидхэмом: [4]

#include <stdint.h> void encrypt ( uint32_t v [ 2 ], const uint32_t k [ 4 ]) { uint32_t v0 = v [ 0 ], v1 = v [ 1 ], sum = 0 , i ; /* настройка */ uint32_t delta = 0x9E3779B9 ; /* константа расписания ключа */ uint32_t k0 = k [ 0 ], k1 = k [ 1 ], k2 = k [ 2 ], k3 = k [ 3 ]; /* ключ кэша */ for ( i = 0 ; i < 32 ; i ++ ) { /* начало базового цикла */ sum += delta ; v0 += (( v1 << 4 ) + k0 ) ^ ( v1 + sum ) ^ (( v1 >> 5 ) + k1 ); v1 += (( v0 << 4 ) + k2 ) ^ ( v0 + сумма ) ^ (( v0 >> 5 ) + k3 ); } /* конец цикла */ v [ 0 ] = v0 ; v [ 1 ] = v1 ; }                                                             void decrypt ( uint32_t v [ 2 ], const uint32_t k [ 4 ]) { uint32_t v0 = v [ 0 ], v1 = v [ 1 ], sum = 0xC6EF3720 , i ; /* настройка; сумма равна (delta << 5) & 0xFFFFFFFF */ uint32_t delta = 0x9E3779B9 ; /* константа расписания ключей */ uint32_t k0 = k [ 0 ], k1 = k [ 1 ], k2 = k [ 2 ], k3 = k [ 3 ]; /* ключ кэша */ for ( i = 0 ; i < 32 ; i ++ ) { /* начало базового цикла */ v1 -= (( v0 << 4 ) + k2 ) ^ ( v0 + sum ) ^ (( v0 >> 5 ) + k3 ); v0 -= (( v1 << 4 ) + k0 ) ^ ( v1 + сумма ) ^ (( v1 >> 5 ) + k1 ); сумма -= дельта ; } /* конец цикла */ v [ 0 ] = v0 ; v [ 1 ] = v1 ; }                                                             

Обратите внимание, что эталонная реализация действует на многобайтовые числовые значения. В исходной статье не указано, как вывести числа, на которые она действует, из двоичного или другого контента.

Смотрите также

Примечания

  1. Мэтью Д. Рассел (27 февраля 2004 г.). «Tinyness: An Overview of TEA and Related Ciphers». Архивировано из оригинала 12 августа 2007 г.
  2. ^ ab Kelsey, John; Schneier, Bruce ; Wagner, David (1997). "Related-key cryptanalysis of 3-WAY, Biham-DES,CAST, DES-X, NewDES, RC2 и TEA". Информационная и коммуникационная безопасность. Конспект лекций по информатике. Том 1334. С. 233–246. CiteSeerX 10.1.1.35.8112 . doi :10.1007/BFb0028479. ISBN  978-3-540-63696-0.
  3. ^ Богданов, Андрей; Ван, Мейцинь (2012). «Нулевая корреляция линейного криптоанализа с уменьшенной сложностью данных». Быстрое программное шифрование (PDF) . Конспект лекций по информатике. Том 7549. С. 29–48. doi :10.1007/978-3-642-34047-5_3. ISBN 978-3-642-34046-8.
  4. ^ abc Wheeler, David J.; Needham, Roger M. (16 декабря 1994 г.). "TEA, крошечный алгоритм шифрования". Fast Software Encryption. Lecture Notes in Computer Science. Vol. 1008. Leuven, Belgium. pp. 363–366. doi :10.1007/3-540-60590-8_29. ISBN 978-3-540-60590-4.{{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  5. ^ Келси, Джон; Шнайер, Брюс ; Вагнер, Дэвид (1996). «Криптоанализ ключа-расписания IDEA, G-DES, GOST, SAFER и Triple-DES». Достижения в криптологии — CRYPTO '96 (PDF) . Конспект лекций по информатике. Том 1109. С. 237–251. doi :10.1007/3-540-68697-5_19. ISBN 978-3-540-61512-5. Архивировано из оригинала (PDF) 8 февраля 2012 г. . Получено 25 февраля 2008 г. .
  6. ^ Майкл Стейл. "17 ошибок Microsoft, допущенных в системе безопасности Xbox". Архивировано из оригинала 16 апреля 2009 г.

Ссылки

Внешние ссылки