Офіційний аналіз зробив Філ Рогавей у 2011 році, тут . У розділі 1.6 наведено резюме, яке я перекладаю тут, додаючи власний наголос жирним шрифтом (якщо ви нетерплячі, то його рекомендація - використовувати режим CTR, але я пропоную прочитати мої параграфи про цілісність повідомлення проти шифрування нижче).
Зауважте, що більшість із них вимагає, щоб IV був випадковим, що означає непередбачуваний характер, і тому його слід генерувати з криптографічним захистом. Однак, деякі вимагають лише "ніколи", яке не вимагає цього майна, а вимагає лише його повторного використання. Тому конструкції, які покладаються на ніколи, є менш схильними до помилок, ніж конструкції, які цього не роблять (і повірте, я бачив багато випадків, коли CBC не реалізується при правильному підборі IV). Отже, ви побачите, що я додав сміливий характер, коли Рогавей говорить щось на кшталт "конфіденційність не досягається, коли IV - це нікчемність", це означає, що якщо ви виберете свій IV криптографічно захищений (непередбачуваний), то жодних проблем. Але якщо цього не зробити, ви втрачаєте хороші захисні властивості. Ніколи не використовуйте IV для жодного з цих режимів.
Також важливо зрозуміти різницю між цілісністю повідомлення та шифруванням. Шифрування приховує дані, але зловмисник може змінити зашифровані дані, і результати потенційно можуть бути прийняті вашим програмним забезпеченням, якщо ви не перевірите цілісність повідомлення. Поки розробник скаже «але модифіковані дані повернуться як сміття після розшифровки», хороший інженер з безпеки знайде ймовірність того, що сміття викликає несприятливу поведінку в програмному забезпеченні, і тоді він перетворить цей аналіз у справжню атаку. Я бачив багато випадків, коли шифрування використовувалося, але цілісність повідомлення дійсно була потрібна більше, ніж шифрування. Зрозумійте, що вам потрібно.
Я мушу сказати, що, хоча GCM має і шифрування, і цілісність повідомлення, це дуже крихкий дизайн: якщо ви повторно використовуєте IV, ви накрутили - зловмисник може відновити ваш ключ. Інші конструкції менш крихкі, тому я особисто боюся рекомендувати GCM на основі кількості поганого коду шифрування, який я бачив на практиці.
Якщо вам потрібні і цілість, і цілісність повідомлення, і шифрування, ви можете поєднати два алгоритми: зазвичай ми бачимо CBC з HMAC, але немає причин зв'язувати себе з CBC. Важливо знати, що спочатку шифрувати, потім MAC шифрувати вміст , а не навпаки. Також IV повинен бути частиною розрахунку MAC.
Мені невідомі проблеми ІС.
Тепер до хороших речей професора Рогауей:
Блокуйте режими шифрування, шифрування, але не цілісність повідомлення
ЄЦБ : блокшифр, режим шифрує повідомлення, що є кратними n бітів, окремо шифруючи кожен n-бітний фрагмент. Властивості безпеки слабкі , метод протікає рівність блоків по обох позиціях блоку та часу. Має значну спадщину та є цінністю як складової для інших схем, але режим сам по собі не досягає жодної загально бажаної цілі безпеки, і її слід використовувати з великою обережністю; ЄЦБ не слід розглядати як режим конфіденційності "загального призначення" .
CBC : схема шифрування на основі IV, режим захищений як імовірнісна схема шифрування, досягаючи нерозрізненості від випадкових бітів, припускаючи випадковий IV. Конфіденційність не досягається, якщо IV - це лише нонсенс , або якщо він не шифрується за тим самим ключем, який використовується у схемі, як неправильно пропонує зробити стандарт. Шифротексти дуже ковкі. Не вибрано захист від шифротекстової атаки (CCA). Конфіденційність втрачається в присутності оракула з правильним набиванням для багатьох методів набивання. Шифрування неефективне від того, що за своєю суттю є послідовним. Широко використовувані властивості безпеки режиму конфіденційності режиму часто призводять до неправильного використання. Може використовуватися як будівельний блок для алгоритмів CBC-MAC. Я не можу визначити жодних важливих переваг перед режимом CTR.
CFB : схема шифрування на основі IV, режим захищений як імовірнісна схема шифрування, досягаючи нерозрізненості від випадкових бітів, припускаючи випадковий IV. Конфіденційність не досягається, якщо IV є передбачуваним , або якщо він зроблений без шифрування, зашифрованого за тим самим ключем, що використовується схемою, як неправильно пропонує зробити стандарт. Шифротексти ковкі. Ніякої CCA-безпеки. Шифрування неефективне від того, що за своєю суттю є послідовним. Схема залежить від параметра s, 1 ≤ s ≤ n, як правило, s = 1 або s = 8. Неефективна потреба в одному виклику блокшифтера для обробки лише s біт. Режим досягає цікавого властивості «самосинхронізації»; вставлення або видалення будь-якої кількості s-бітових символів у шифротекст лише тимчасово порушує правильне розшифрування.
OFB : схема шифрування на основі IV, режим захищений як імовірнісна схема шифрування, досягаючи нерозрізненості від випадкових бітів, припускаючи випадковий IV. Конфіденційність не досягається, якщо IV не має значення, хоча фіксована послідовність IV (наприклад, лічильник) працює нормально. Шифротексти дуже ковкі. Відсутність безпеки CCA. Шифрування та дешифрування неефективні від того, що за своєю суттю є послідовним. Рідно шифрує рядки будь-якої бітової довжини (не потрібні прокладки). Я не можу визначити жодних важливих переваг перед режимом CTR.
CTR : Схема шифрування на основі IV, режим досягає невідрізнення від випадкових бітів, припускаючи відсутність IV. Як безпечна схема, що не базується на даних, режим може також використовуватися як імовірнісна схема шифрування, з випадковим IV. Повний провал конфіденційності, якщо ніколи не буде повторно використане під час шифрування чи розшифрування. Паралелізованість режиму часто робить його швидшим, в деяких настройках набагато швидшим, ніж інші режими конфіденційності. Важливий будівельний блок для схем автентифікованого шифрування. Загалом, як правило, найкращий і найсучасніший спосіб досягти шифрування лише для конфіденційності.
XTS : Схема шифрування на основі IV, режим працює, застосовуючи налаштований блокшифтер (захищений як сильний PRP) до кожного n-бітного блоку. Для повідомлень з довжиною, не поділеною на n, останні два блоки обробляються спеціально. Єдине дозволене використання режиму - це шифрування даних на блоково-накопиченому пристрої зберігання даних. Вузька ширина основного PRP і погана обробка дробових кінцевих блоків є проблемами. Більш ефективний, але менш бажаний, ніж (широкоблочний) PRP-захищений блокшиф.
MAC (цілісність повідомлення, але не шифрування)
ALG1–6 : колекція MAC, всі вони базуються на CBC-MAC. Занадто багато схем. Деякі з них є надійно захищеними як VIL PRF, деякі як FIL PRF, а деякі не мають надійної безпеки. Деякі схеми допускають згубні атаки. Деякі режими датовані. Розмежування ключів недостатньо відвідується для режимів, які його мають. Не слід приймати масово, але можливий вибірковий вибір «найкращих» схем. Також було б непогано приймати жоден із цих режимів на користь CMAC. Деякі з МАС ISO 9797-1 широко стандартизовані та використовуються, особливо в банківській справі. Незабаром буде випущена переглянута версія стандарту (ISO / IEC FDIS 9797-1: 2010) [93].
CMAC : MAC, заснований на CBC-MAC, режим є надійно захищеним (до встановленого дня народження) як (VIL) PRF (якщо вважати, що базовий блокшиффер є хорошим PRP). По суті мінімальні накладні витрати для схеми на основі CBCMAC. По суті, серійний характер є проблемою в деяких областях додатків, а використання 64-бітного блочного коду вимагає періодичної повторної клавіші. Чистіше, ніж колекція MAC ISO 9797-1.
HMAC : MAC, що базується на криптографічній хеш-функції, а не на блокшифрі (хоча більшість криптографічних хеш-функцій самі базуються на blockciphers). Механізм має сильні межі надійної безпеки, хоча і не з переважних припущень. Кілька тісно пов'язаних між собою варіантів літератури ускладнюють розуміння того, що відомо. Жодних згубних атак ніколи не було запропоновано. Широко стандартизовані та використовувані.
GMAC : MAC, що не базується на інформації, що є особливим випадком GCM. Успадковує багато хороших та поганих характеристик GCM. Але жодна вимога не потрібна для MAC, і тут вона купує мало користі. Практичні атаки, якщо теги обрізані до ≤ 64 біт і ступінь розшифровки не контролюється та зменшується. Повний збій при безвідмовному використанні. Використання все одно неявне, якщо прийнято GCM. Не рекомендується для окремої стандартизації.
аутентифіковане шифрування (і шифрування, і цілісність повідомлення)
CCM : схема, що базується на AEAD, яка не базується на даних, що поєднує шифрування режиму CTR та необроблений CBC-MAC. По суті серійний, обмежуючи швидкість у деяких контекстах. Достовірно безпечний, з хорошими межами, якщо припустити, що базовий блокшиф є хорошим PRP. Невдала конструкція, яка наочно виконує роботу. Простіший у застосуванні, ніж GCM. Можна використовувати як MAC на основі бездисперсного використання. Широко стандартизовані та використовувані.
GCM : схема на основі AEAD, що базується на принципах, що поєднує шифрування режиму CTR та універсальну хеш-функцію на основі GF (2128). Хороші характеристики ефективності для деяких середовищ реалізації. Хороші доказово-безпечні результати за умови мінімального усічення тегів. Атаки та погані межі доказувальної безпеки за наявності значних усікань тегів. Може використовуватися як MAC, що не базується на роботі, який потім називається GMAC. Сумнівний вибір, щоб дозволити, крім 96-біт. Рекомендуйте обмежувати значення без 96-біт, а мітки - принаймні 96 бітами. Широко стандартизовані та використовувані.