Криптографічні моделі атак
Коли ми розробляємо систему, важливо розуміти, які загрози можуть у ній виникати.
Моделі атак описують, як зловмисник бачить систему: що йому відомо, які дії він може виконувати та яких цілей досягти.
Ciphertext Only Attack (COA)
Це модель атак, у якій зловмиснику відомий лише шифротекст і більше нічого.
Він не може взаємодіяти з системою та лише пасивно спостерігає за шифротекстами, що через неї проходять.
Мета атакуючого в цій моделі полягає у відновленні відкритого тексту або, у деяких випадках, ключа шифрування.
Для сучасної криптографії стійкість до COA вважається базовою вимогою. Якщо схема ламається в цій моделі, вона не придатна для практичного використання.
Brute Force
Якщо простір ключів достатньо малий, зловмисник може спробувати перебрати всі можливі ключі й перевірити, який із них дає осмислений відкритий текст.
Саме тому сучасні алгоритми використовують ключі достатньої довжини, щоб повний перебір був обчислювально неможливим.
Частотний аналіз
Якщо алгоритм шифрування зберігає статистичні властивості відкритого тексту, зловмисник може використати частотний аналіз для відновлення повідомлення.
Класичними прикладами шифрів, вразливих до частотного аналізу, є:
- шифр Цезаря
- шифр Віженера
Саме тому сучасні шифри прагнуть до того, щоб шифротекст виглядав як випадкові дані та не містив статистичних залежностей.
Атаки на повторне використання ключа
У статті про шифр Вернама описав приклад атаки, коли повторне використання ключа стає загрозою.
Більшість сучасних шифрів стійкі до таких атак, але в деяких старих або самописних алгоритмах це можливо.
Known Plaintext Attack (KPA)
У цій моделі зловмиснику відомі пари відкритий текст - шифротекст.
Ці дані можуть бути використані для відновлення параметрів алгоритму шифрування, ключа або nonce.
Для сучасної криптографії стійкість до Known Plaintext Attack є обовʼязковою вимогою.
Якщо криптосхема ламається через те, що атакуючий знає відкритий текст, така схема не придатна для практичного використання.
У межах Known Plaintext Attack зловмисник не може обирати довільні повідомлення для шифрування.
Це відрізняє KPA від більш сильних моделей атак, таких як Chosen Plaintext Attack.
Chosen Plaintext Attack (CPA)
На відміну від попередніх моделей атак, у CPA зловмисник може сам обирати, які дані шифрувати та отримувати вихідний шифротекст.
Якщо у вашій системі передбачено, що будь-хто може шифрувати дані, необхідно провести детальний аналіз наслідків такого дизайну.
Фактично, якщо користувач може надіслати дані на сервер і отримати зашифрований результат, система вже працює в моделі CPA.
Якщо однакові повідомлення завжди дають однаковий шифротекст, зловмисник може легко виявляти повтори та залежності.
Саме в моделі CPA зʼявляється вимога до використання випадковості: IV, nonce або salt стають критично важливими компонентами безпеки.
Chosen Ciphertext Attack (CCA)
У моделі Chosen Ciphertext Attack зловмисник отримує можливість передавати довільні шифротексти на розшифрування та аналізувати відповідь системи.
CCA виникає не лише тоді, коли система явно дозволяє розшифровувати дані. Достатньо, щоб вона по-різному реагувала на коректні та некоректні шифротексти.
Навіть повідомлення про тип помилки, час відповіді або різна поведінка сервера можуть слугувати каналом витоку інформації.
Padding Oracle
Саме в моделі Chosen Ciphertext Attack стають можливими атаки класу Padding Oracle, про яку я вже писав статтю.
Якщо система повідомляє, чи є padding коректним після розшифрування, зловмисник може поетапно відновити відкритий текст без знання ключа.
Саме тому сучасні рекомендації зводяться до використання автентифікованого шифрування (AEAD), яке поєднує конфіденційність і перевірку цілісності.
AEAD не дозволяють атакуючому отримати жодної інформації про відкритий текст у разі модифікації шифротексту.
Chosen Ciphertext Attack є однією з найсильніших класичних моделей атак.
Рекомендації
Розглядання системи як сукупності незалежних блоків завжди призводить до помилок. Тому при проєктуванні потрібно покладатися не тільки на безпечні алгоритми, а й на те, як вони взаємодіють між собою.
При розробці безпечної системи слід:
- Використовувати сучасні та перевірені алгоритми
- Не писати свої реалізації вже готових примітивів
- Впровадити автентифіковане шифрування (AEAD) або схему Encrypt-then-MAC
- Ховати помилки, зловмисник не повинен знати на якому етапі виникла помилка (padding, MAC чи розшифрування)
- Використовувати надійні ключі та розділяти їх ролі
- Забезпечувати Forward Secrecy: компроментація одного ключа не повинна давати можливості отримувати доступ до історичних або майбутнім повідомленням
Резюме
Криптографічні моделі атак показують, що безпека алгоритму не існує сама по собі. Вона завжди визначається можливостями атакуючого та умовами, у яких використовується система.
Саме тому сучасна криптографія проєктується від найсильнішої реалістичної моделі атак.