Twofish — блоков шифър, AES финалист: характеристики и употреба

Twofish — мощен блоков шифър, AES финалист: характеристики, сигурност и практична употреба. Научете за архитектура, ключови размери (128–256 бита) и приложения.

Автор: Leandro Alegsa

В криптографията Twofish е блоков шифър със симетричен ключ, който оперира с размер на блока 128 бита и поддържа дължина на ключа до 256 бита. Проектиран е като бърз и гъвкав алгоритъм за софтуерни и хардуерни реализации и е публикуван в края на 1990-те като кандидат за следващ стандарт в блоковото шифроване.

През 1997 г. NIST обявява конкурс за избор на наследник на DES, който да бъде известен като AES. Twofish е един от петте финалисти в този конкурс, но в крайна сметка не е избран за официален стандарт. Въпреки това, алгоритъмът остава широко използван и се счита за сигурен за повечето практически приложения.

Дизайн и основни характеристики

Twofish е свързан с по-ранния блоков шифър Blowfish и наследява някои идеи за гъвкавост и скорост. Някои ключови характеристики:

  • Блоков размер: 128 бита.
  • Дължина на ключа: 128, 192 или 256 бита (до 256 бита общо).
  • Структура: 16-раундова Feistel структура, подобна на тази в DES, но с по-сложни функции на раундовете.
  • Ключ- зависими S-боксове: Twofish използва предварително изчислени S-боксове, които се формират въз основа на част от ключа, за да се получи висока криптографска дифузия и разнообразие между различните ключове.
  • Сложен график на ключовете: алгоритъмът генерира множество подключове за «whitening» и за всеки раунд; част от ключа се използва за модифициране на самите S-боксове, а останалата за генериране на раундови подключове — това е описано като използване на едната половина от n‑битовия ключ за криптиране, а другата за модифициране на алгоритъма (зависими от ключа S-boxes).
  • Математически елементи: Twofish използва MDS (Maximum Distance Separable) матрица и преобразувание, подобно на псевдо‑Хадамаровата трансформация (PHT) от семейството шифри SAFER, за да осигури добра дифузия и устойчивост срещу анализи.

Как работи накратко

В основата си Twofish комбинира:

  • функция g(), която използва ключ‑зависими S-боксове и MDS матрица,
  • PHT за смесване на резултатите и за генериране на подключове,
  • бяло (whitening) преди и след раундовете, което намалява възможностите за прости атаки върху границите между раундовете.

За даден ключ част от ключовия материал се използва за изчисляване на S-боксовете (които обикновено се предварително изчисляват в софтуерните реализации за по‑добра производителност), а другата част се използва за изчисляване на подключовете за всеки от 16-те раунда.

Производителност и реализации

На повечето софтуерни платформи Twofish обикновено е малко по-бавен от Rijndael (избраният алгоритъм за Advanced Encryption Standard) при 128‑битови ключове, но може да бъде конкурентен или дори по‑бърз при 256‑битови ключове, тъй като при Twofish някои операции разчитат на предварително изчислени таблици и сложен график на ключовете. На хардуер или при специфични оптимизации съотношението може да се промени.

Twofish е имплементиран в различни софтуерни проекти (например криптирани файлови системи и инструменти за диск криптиране). Няколко популярни програми и библиотеки предлагат Twofish като опция заедно с AES и други алгоритми.

Сигурност и криптоанализ

Към настоящия момент не са известни практически успешни атаки срещу пълната 16‑раундова версия на Twofish, когато е използван правилно (правилен режим на работа и добри практики при управление на ключовете). Има обаче няколко теоретични резултата и атаки върху намален брой раундове или в специфични условия (например някои related‑key атаки или отличителни атаки на намален брой раундове). Това е типично за голяма част от модерните блокови шифри — те подлежат на аналитични изследвания, но практическата сигурност при пълния брой раундове остава висока.

Важно е да се има предвид, че сигурността зависи не само от самия шифър, но и от начина на използване: избор на режим (CBC, CTR, GCM, XTS и др.), правилно генериране и управление на IV/nonce, защита срещу странични канали (timing, cache attacks) и др. При софтуерни реализации, които използват таблици (lookup tables), е препоръчително да се вземат мерки срещу странични канали — например constant‑time подходи или хардуерна поддръжка.

Сравнение с AES и Blowfish

  • Twofish vs Rijndael (AES): AES е стандартът, има силна хардуерна поддръжка (например AES‑NI инструкции) и често превъзхожда Twofish в реални приложения, където тези оптимизации са налични. Twofish остава конкурентен по сигурност и в някои случаи по‑бърз при дълги ключове или при липса на хардуерна поддръжка за AES.
  • Twofish vs Blowfish: Twofish може да се разглежда като по‑модерна и по‑сложна еволюция на идеите зад Blowfish — поддържа по‑голям блок (128 бита срещу 64 бита при Blowfish) и по‑сложен ключов график, което намалява риска от някои проблеми, присъщи на 64‑битовите шифри при големи обеми данни.

Употреба и препоръки

  • Twofish е подходящ избор, когато се търси силен, добре проучен блоков шифър като алтернатива на AES или като част от набор от алгоритми в софтуерни продукти.
  • За диск криптиране често се използват режими като XTS; Twofish е бил използван в проекти за криптиране на дискове и контейнери (например някои версии на TrueCrypt/вериги).
  • За защита срещу странични канали предпочитайте имплементации с constant‑time операции или използвайте хардуер, който предоставя защита.
  • Ако е необходимо спазване на стандарти или по-добра съвместимост, AES е по‑често изискваният избор (поради статут на стандарт и хардуерна поддръжка).

Лицензиране и достъпност

Twofish е свободно публикуван алгоритъм и е наличен за използване без плащане на лицензионни такси, което допринася за широкото му използване в свободен софтуер и комерсиални продукти.

В обобщение: Twofish е добре проучен, сигурен и гъвкав блоков шифър с интересни дизайн решения (ключ‑зависими S-боксове, PHT и MDS матрици). Въпреки че не беше избран за AES, остава валидна и практична опция за криптиране в много приложения, при спазване на добри практики за внедряване и управление на ключовете.

Създатели

Twofish е проектиран от Брус Шнайер, Джон Келси, Дъг Уайтинг, Дейвид Вагнер, Крис Хол и Нилс Фъргюсън; "разширеният екип на Twofish", който се среща, за да направи допълнителен криптоанализ на Twofish и други конкуренти на AES, включва Стефан Люкс, Тадайоши Кохно и Майк Стай.

Алгоритъмът Twofish е свободен за използване от всеки без каквито и да било ограничения. Шифърът Twofish не е патентован и примерът за софтуерната му спецификация е пуснат в публичното пространство. Въпреки това Twofish не се използва широко като Blowfish, който е достъпен от по-дълго време.


 

Криптоанализ

Към 2008 г. най-добрият публикуван криптоанализ на блоковия шифър Twofish е съкратен диференциален криптоанализ на пълната версия с 16 кръга. В статията се твърди, че вероятността за атаки със съкратени диференциали е 2-57.3 на блок и че ще са необходими около 251 избрани открити текста (данни на стойност 32 PiB), за да се намери добра двойка съкратени диференциали.

Брус Шнайер отговаря в публикация в блога си от 2005 г., че този документ не представя пълна криптоаналитична атака, а само някои хипотетични диференциални характеристики: "Но дори от теоретична гледна точка Twofish не е дори отдалечено разбита. Не е имало никакви разширения на тези резултати, откакто те са публикувани" през 2000 г.


 

Свързани страници


 

Допълнително четене

  • Брус Шнайер, Джон Келси, Дъг Уайтинг, Дейвид Вагнер, Крис Хол, Нилс Фъргюсън (1998-06-15). "Алгоритъмът за шифроване Twofish" (PDF/PostScript). Извлечено 2007-03-04. {{cite journal}}: Cite journal requires |journal= (help)CS1 maint: multiple names: authors list (link)
  • Брус Шнайер, Джон Келси, Дъг Уайтинг, Дейвид Вагнер, Крис Хол, Нилс Фъргюсън (1999-03-22). Алгоритъмът за шифроване Twofish: 128-битов блоков шифър. Ню Йорк: John Wiley & Sons. ISBN 0-471-35381-7.{{cite book}}: CS1 maint: multiple names: authors list (link)
 

Въпроси и отговори

Въпрос: Какво представлява Twofish?


О: Twofish е блоков шифър със симетричен ключ с размер на блока 128 бита и дължина на ключа до 256 бита.

В: Как Twofish е свързан с по-ранния блоков шифър Blowfish?


О: Основните характеристики на Twofish са използването на предварително изчислени S-боксове, зависещи от ключа, и сравнително сложен график на ключа. Едната половина от n-битов ключ се използва като действителен ключ за криптиране, а другата половина от n-битовия ключ се използва за модифициране на алгоритъма за криптиране (зависими от ключа S-boxes).

Въпрос: Избран ли е Twofish като усъвършенстван стандарт за шифроване?


О: Не, през 1997 г. NIST обяви конкурс за избор на наследник на DES, който ще бъде известен като AES, но Twofish не беше избран за стандарт.

В: Какви елементи използва Twofish от други проекти?


О: Twofish използва някои елементи от други дизайни; например псевдо-Хадамаровата трансформация (PHT) от семейството шифри SAFER.

В: Използва ли структурата на Файстел като DES?


О: Да, той използва структурата на Feistel като DES.

В: По-бърз ли е от Rijndael за 128-битови ключове?


О: На повечето софтуерни платформи Twofish е малко по-бавен от Rijndael за 128-битови ключове.

В: По-бърз ли е от Rijndael за 256-битови ключове?


О: Малко по-бърз е от Rijndael за 256-битови ключове.


обискирам
AlegsaOnline.com - 2020 / 2025 - License CC3