oleksandrblazhko / ai182-keosak

2 stars 0 forks source link

CW8 #30

Closed tenn5 closed 1 year ago

tenn5 commented 1 year ago

Запитання 1.1

Опишіть ПЗ, в якому знайдено вразливість:

Назва ПЗ, URL-посилання в інтернеті (знайти через пошукову систему):

The wolfSSL embedded SSL library, https://github.com/wolfSSL/wolfssl

Призначення ПЗ та приклади споживачів, які можуть бути зацікавлені у використанні ПЗ:

Вбудована бібліотека SSL wolfSSL (раніше CyaSSL) — це полегшена бібліотека SSL/TLS, написана на ANSI C і призначена для вбудованих систем, середовищ з обмеженими ресурсами та середовищ з обмеженими ресурсами, головним чином через її невеликий розмір, швидкість і набір функцій. Він також широко використовується в стандартних операційних середовищах через його безоплатну ціноутворення та відмінну міжплатформенну підтримку. wolfSSL підтримує галузеві стандарти до поточних TLS 1.3 і DTLS 1.2, у 20 разів менше, ніж OpenSSL, і пропонує прогресивні шифри, такі як групи ChaCha20, Curve25519, Blake2b і Post-Quantum TLS 1.3. Порівняльний аналіз і відгуки користувачів повідомляють про значно кращу продуктивність при використанні wolfSSL над OpenSSL. wolfSSL працює на основі криптографічної бібліотеки wolfCrypt. Дві версії wolfCrypt пройшли перевірку FIPS 140-2 (сертифікат №2425 і сертифікат №3389). Триває перевірка FIPS 140-3.

Запитання 1.2

Опишіть знайдену вразливість , переклавшу на українську мову розділ Description.

У wolfSSL до 5.5.2, якщо функції зворотного виклику ввімкнено (через прапор WOLFSSL_CALLBACKS), тоді зловмисний клієнт TLS 1.3 або мережевий зловмисник може ініціювати перечитування буфера в купі розміром 5 байтів. (WOLFSSL_CALLBACKS призначений лише для налагодження.)

Запитання 1.3

Наведіть фрагменти прикладів уразливого програмного коду, розглянувши розділ References to Advisories, Solutions, and Tools.

Якщо під час створення wolfSSL установлено макрос WOLFSSL_CALLBACKS, під час обробки клієнтських з’єднань TLS 1.3 виникає потенційне перечитування купи розміром 5 байтів. Це перечитування купи обмежено збірками wolfSSL, які явно встановлюють макрос WOLFSSL_CALLBACKS, ця функція не вмикається жодними іншими параметрами збірки. Макрос WOLFSSL_CALLBACKS призначений лише для налагодження, але якщо його ввімкнено у виробництві, користувачам рекомендується вимкнути WOLFSSL_CALLBACKS. Користувачам, які ввімкнули WOLFSSL_CALLBACKS, рекомендується оновити свою версію wolfSSL.

Запитання 2.1

Розшифруйте абревіатурну назву криптографічного алгоритму та режиму шифрування та вкажіть роки їх створення.

bf-cfb

Алгоритм bf:

Blowfish — це блоковий шифр із симетричним ключем, розроблений у 1993 році Брюсом Шнайєром і включений до багатьох наборів шифрів і продуктів шифрування. Blowfish забезпечує хорошу швидкість шифрування в програмному забезпеченні, і на сьогоднішній день не знайдено ефективного криптоаналізу. Однак Advanced Encryption Standard (AES) тепер отримує більше уваги, і Schneier рекомендує Twofish для сучасних програм.[3]

Шнайєр розробив Blowfish як алгоритм загального призначення, призначений як альтернатива застарілому DES і вільний від проблем і обмежень, пов’язаних з іншими алгоритмами. На момент випуску Blowfish багато інших розробок були запатентованими, обтяженими патентами або становили комерційну чи державну таємницю. Шнайер заявив, що «Blowfish не запатентований і залишиться таким у всіх країнах. Цим алгоритм розміщується у відкритому доступі та може вільно використовуватися будь-ким».

Режим шифрування: CFB

Режим зворотного зв'язку по шифротексту, режим гамування зі зворотним зв'язком (Cipher Feedback Mode, CFB) — один з варіантів використання симетричного блокового шифру, при якому для шифрування наступного блоку відкритого тексту він складається за модулем 2 з перешифрованим (блоковим шифром) результатом шифрування .

Запитання 2.2

Опишіть переваги та недоліки криптографічного алгоритму

У своїй книзі «Прикладна криптографія» [28] Брюс Шнайєр навів такі обмеження алгоритму Blowfish.

Крім того, варто відзначити і менш серйозні недоліки алгоритму:

Алгоритм Blowfish має досить серйозні переваги, зокрема:

Запитання 2.3

Опишіть переваги та недоліки режиму шифрування.

Режим шифрування зі зворотним зв'язком (CFB) замість перетворення всього блоку перетворює в шифрований текст невеликі фрагменти відкритого тексту. У цьому режимі використовується регістр зсуву довжиною в один блок, розділений на секції. Наприклад, при розмірі блоку у вісім байт і побайтовій обробці регістр зсуву розділений на вісім секцій. При спотворенні біта в зашифрованому тексті спотворюється біт відкритого тексту і руйнується регістр зсуву. Це призводить до спотворення декількох наступних фрагментів відкритого тексту до тих пір, поки спотворений біт не досягне межі регістра зсуву. Розмір порції даних зворотного зв'язку за замовчуванням може залежати від алгоритму, але зазвичай дорівнює 8 бітам або бітам у блоці. Кількість бітів зворотного зв'язку може бути змінена з допомогою властивості FeedbackSize. Алгоритми, що підтримують CFB, використовують цю властивість для налаштування зворотного зв'язку.

CFB, OFB і CTR мають дві переваги в порівнянні з режимом CBC: блоковий шифр завжди використовується тільки при шифруванні, і повідомлення не потрібно збільшувати до розміру, кратного розміру блоку шифру (хоча крадіжка шифрованого тексту також може зробити повідомлення марним).

Використання режиму CFB з частковим блоком в якості зворотного зв'язку дозволяє зменшити середню довжину циклу в 2 і більше разів. Математична модель, запропонована Девісом і Паркіном і підтверджена експериментальними результатами, показала, що тільки при наявності зворотного зв'язку може бути досягнута середня довжина циклу, близька до максимальної.

Основними її недоліками є те, що шифрування є послідовним (тобто не може бути розпаралелене), а також те, що повідомлення повинно мати розмір, кратний розміру блоку шифрування. Одним із способів вирішення цієї проблеми є метод, відомий як крадіжка шифрованого тексту. Зауважимо, що зміна в один біт відкритого тексту або ініціалізації (IV) впливає на всі наступні блоки зашифрованого тексту.

Розшифрування з неправильною ІВ призводить до того, що перший блок відкритого тексту буде пошкоджений, але наступні блоки відкритого тексту будуть правильними. Це пов'язано з тим, що кожний блок XORed з шифротекстом попереднього блоку, а не з відкритим текстом, тому немає необхідності розшифровувати попередній блок перед тим, як використовувати його в якості IV для розшифрування поточного блоку. Це означає, що блок відкритого тексту може бути відновлений з двох блоків шифрованого тексту. Як наслідок, дешифрування може бути розпаралелене. Зауважимо, що зміна одного біта в зашифрованому тексті є повною зміною відповідного блоку відкритого тексту і інвертує відповідні біти в блоці відкритого тексту, але залишає інші блоки недоторканими. Ця особливість використовується в різних атаках на оракул з підстановкою, таких як POODLE.

Системи явної ініціалізації використовують цю властивість, додаючи до відкритого тексту один випадковий блок. Шифрування виконується як зазвичай, за винятком того, що IV не потрібно виконувати розшифровку. Незалежно від того, що використовується для дешифрування ІВ, "зіпсованим" виявляється тільки випадковий блок. Його можна спокійно відкинути, а решта розшифровки буде вихідним відкритим текстом.

oleksandrblazhko commented 1 year ago

Оцінка = 7 балів. Дякую за активність!