Перейти до основного вмісту

Симетрична криптографія з секретним ключем

У цьому уроці ми розглянемо симетричну криптографію з секретним ключем, яка завдяки своїй ефективності захищає значну частину даних як у стані спокою, так і під час передачі.

До кінця уроку ми розберемо:

  • Що таке симетрична криптографія з секретним ключем
  • Приклади коду на Python, що демонструють використання симетричної криптографії
  • Застосування симетричної криптографії з секретним ключем
  • Застосування симетричної криптографії з секретним ключем
  • Безпека симетричної криптографії з секретним ключем
  • Загрози цим алгоритмам з боку як класичних, так і квантових комп'ютерів

Вступ до симетричної криптографії з секретним ключем

Симетрична криптографія з секретним ключем (СКК) — найстаріша і найінтуїтивніша форма криптографії. У СКК конфіденційна інформація захищається за допомогою симетричного шифрування з секретним ключем (ССШ), тобто за рахунок використання єдиного секретного ключа для шифрування та розшифрування.

СКК передбачає:

  • Функцію шифрування, яка перетворює заданий відкритий текст на шифротекст, використовуючи секретний ключ
  • Функцію розшифрування, яка виконує зворотну операцію: перетворює шифротекст назад у відкритий текст за допомогою того самого секретного ключа

Відкритий текст може означати будь-які незашифровані дані, наприклад природномовний текст або бінарний код, інформаційний зміст яких у принципі безпосередньо доступний, тоді як шифротекст — це зашифровані дані, інформаційний зміст яких до розшифрування має бути недоступним.

Алгоритм, що описує операції шифрування та розшифрування з використанням спільного секретного ключа, також називають симетричним шифром.

Рис. 1: Симетричне шифрування заданого відкритого тексту у шифротекст і розшифрування назад у відкритий текст за допомогою того самого ключа.

Рисунок 1. Симетричне шифрування заданого відкритого тексту у шифротекст і розшифрування назад у відкритий текст за допомогою того самого ключа.

Властивості симетричних криптосистем

Симетрична криптосистема повинна забезпечувати такі властивості для захисту повідомлень — як даних, що зберігаються статично, так і комунікацій через канал передачі:

  • Конфіденційність: Властивість, яка забезпечує захист інформаційного змісту зашифрованих повідомлень від несанкціонованого доступу.
  • Цілісність: Властивість, яка дає змогу виявити будь-яке втручання в зашифровані повідомлення під час зберігання або передачі.
  • Автентичність: Властивість, яка дає змогу одержувачу повідомлення перевірити особу відправника та виявити спроби видати себе за іншу особу з боку неуповноваженої сторони.

Крім того, ці властивості мають реалізовуватися в умовах, коли алгоритми або шифри, що використовуються для шифрування та розшифрування, можуть бути загальнодоступними, а доступ до інформаційного змісту зашифрованих повідомлень контролюється виключно через доступ до секретного ключа.

Реалізація безпечної симетричної криптосистеми передбачає два основних завдання:

  1. Застосування надійного алгоритму симетричного шифрування, стійкого до криптографічних атак.
  2. Забезпечення конфіденційності при розповсюдженні секретних ключів та управлінні ними.

У цьому уроці ми розглянемо аспекти, пов'язані з першим завданням, яке є головним предметом технології СКК. Друге завдання потребує рішень, що виходять за межі СКК, і буде розглянуто пізніше.

Ілюстрація симетричного шифрування на Python

Ми продемонструємо простий приклад операцій шифрування та розшифрування з використанням класичного шифру Цезаря зі зсувом та сучасного Стандарту розширеного шифрування (AES), який є стандартом симетричного шифрування з 2001 року. Спершу ми підключимо необхідні бібліотеки Python, що надають потрібні шифри симетричного ключа, а потім визначимо відкритий текст, який хочемо зашифрувати.

# Added by doQumentation — required packages for this notebook
!pip install -q cryptography numpy secretpy
# Install the library if needed
# %pip install secretpy

# import the required crypto functions which will be demonstrated later
from secretpy import Caesar
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from functools import reduce
import numpy as np

# Set the plaintext we want to encrypt
plaintext = "this is a strict top secret message for intended recipients only"
print(f"\nGiven plaintext: {plaintext}")

Ми побачимо, як зашифрувати та розшифрувати цей текст двома різними методами симетричного шифрування:

  1. Класичний шифр Цезаря зі зсувом
  2. Сучасний протокол Стандарту розширеного шифрування AES-256

Шифр Цезаря зі зсувом:

Шифрування за допомогою шифру Цезаря зі зсувом передбачає визначення:

  • Алфавіту можливих символів для кодування
  • Значення зсуву, яке може бути від 0 (без шифрування) до довжини алфавіту. Це і є ключ.

Він відомий як моноалфавітний підстановчий шифр, оскільки кожна літера відкритого тексту замінюється іншою літерою в шифротексті.

У цьому прикладі ми будемо використовувати рядкові літери латинського алфавіту.

Розпочнімо з налаштування.

# initialize the required python object for doing Caesar shift encryption
caesar_cipher = Caesar()

# Define the shift, ie the key
caesar_key = 5
print(f"Caesar shift secret key: {caesar_key}")

# Define the alphabet
alphabet = (
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
" ",
)
print(f"alphabet: {alphabet}")

Зашифруємо відкритий текст, щоб отримати шифротекст для шифру Цезаря.

caeser_ciphertext = caesar_cipher.encrypt(plaintext, caesar_key, alphabet)
print(f"Encrypted caeser shift ciphertext: {caeser_ciphertext}")

Розшифруємо шифротекст назад у вихідний відкритий текст, використовуючи той самий ключ, що і для шифрування.

caeser_plaintext = caesar_cipher.decrypt(caeser_ciphertext, caesar_key, alphabet)
print(f"Decrypted caeser shift plaintext: {caeser_plaintext}\n")

Шифр Стандарту розширеного шифрування (AES)

Тепер зашифруємо відкритий текст за допомогою AES — популярного алгоритму симетричного шифрування.

Починаємо зі створення ключа — у цьому випадку це випадковий рядок із 16 символів.

# lambda defines an inline function in this case that takes two values a,b with the resulting expression of a+b
# reduce uses a two-argument function(above), and applies this to all the entries in the list (random alphabet characters) cumulatively
aes_key = reduce(lambda a, b: a + b, [np.random.choice(alphabet) for i in range(16)])

print(f"AES secret key: {aes_key}")

AES підтримує кілька режимів роботи, і нам потрібно вказати, який з них використовувати.

Ми обираємо режим Cipher Block Chaining (CBC), що надається класом modes.CBC бібліотеки cryptography. Режим CBC для AES використовує випадковість для додаткового захисту. Для цього потрібно задати випадковий Initialization Vector (IV), також відомий як nonce. Ми також використаємо для нього випадковий рядок, як і для ключа.

aes_initialization_vector = reduce(
lambda a, b: a + b, [np.random.choice(alphabet) for i in range(16)]
)
print(f"AES initialization vector: {aes_initialization_vector}")

Тепер можна створити екземпляр AES-шифру від імені відправника секретного повідомлення. Зверни увагу, що вектор ініціалізації передається до класу modes.CBC для налаштування режиму роботи CBC.

Після цього ми зашифруємо відкритий текст для відправлення.

# The encryptor is setup using the key and CBC. In both cases we need to convert the string (utf-8) into bytes
sender_aes_cipher = Cipher(
algorithms.AES(bytes(aes_key, "utf-8")),
modes.CBC(bytes(aes_initialization_vector, "utf-8")),
)
aes_encryptor = sender_aes_cipher.encryptor()

# update can add text to encypt in chunks, and then finalize is needed to complete the encryption process
aes_ciphertext = (
aes_encryptor.update(bytes(plaintext, "utf-8")) + aes_encryptor.finalize()
)

# Note the output is a string of bytes
print(f"Encrypted AES ciphertext: {aes_ciphertext}")

Щоб розшифрувати, створимо екземпляр AES-шифру від імені одержувача. Зверни увагу, що передбачений одержувач має доступ як до секретного ключа, так і до вектора ініціалізації, однак останній не є обов'язково секретним.

# Similar setup of AES to what we did for encryption, but this time, for decryption
receiver_aes_cipher = Cipher(
algorithms.AES(bytes(aes_key, "utf-8")),
modes.CBC(bytes(aes_initialization_vector, "utf-8")),
)
aes_decryptor = receiver_aes_cipher.decryptor()

# Do the decryption
aes_plaintext_bytes = aes_decryptor.update(aes_ciphertext) + aes_decryptor.finalize()

# convert back to a character string (we assume utf-8)
aes_plaintext = aes_plaintext_bytes.decode("utf-8")

print(f"Decrypted AES plaintext: {aes_plaintext}")

Застосування криптографії з симетричним ключем

Хоча класичні шифри, такі як шифр Цезаря, давно вийшли з ужитку, сучасні симетричні криптосистеми, такі як AES, застосовуються в широкому спектрі задач, зокрема:

  1. Шифрування та розшифрування даних: КСК широко використовується для захисту конфіденційних даних — як тих, що зберігаються на пристроях, так і тих, що передаються мережею. Приклади включають захист облікових даних користувачів, шифрування електронних листів і захист фінансових транзакцій.

  2. Захищена комунікація: Поширені протоколи зв'язку, такі як SSL/TLS, поєднують симетричне та асиметричне шифрування для забезпечення конфіденційності й цілісності даних, що обмінюються між двома сторонами. Повідомлення шифруються та розшифровуються за допомогою симетричного ключового шифрування, яке використовує спільний ключ. Цей спільний ключ безпечно передається за допомогою асиметричного шифрування з парою публічний-приватний ключ. Симетричне шифрування набагато швидше, тому його можна застосовувати для шифрування повідомлень великого розміру.

  3. Перевірка автентичності: У деяких випадках КСК застосовується через техніки, такі як коди автентифікації повідомлень (MAC) і HMAC на основі хеш-функцій, для перевірки автентичності та цілісності повідомлень, що гарантує захист від підробки.

  4. Шифрування файлів і дисків: Програми для повного шифрування дисків і шифрування файлів використовують КСК для захисту конфіденційних даних, що зберігаються на жорстких дисках або портативних носіях.

  5. Віртуальні приватні мережі: Технології VPN, покликані забезпечити конфіденційні канали зв'язку без прослуховування, можуть використовувати симетричне або асиметричне шифрування для підключення віддалених користувачів і корпоративних мереж.

Різноманітність застосувань КСК вимагає від симетричних криптосистем відповідності певному набору критеріїв.

Принципи симетричного ключового шифрування

У цьому розділі ми розглянемо деякі основні принципи, що лежать в основі безпеки алгоритмів симетричного ключового шифрування.

Стійкість до атаки грубою силою: Найосновніша вимога до безпеки шифру — це дуже великий розмір простору ключів, тобто кількість можливих різних ключів, з яких міг вибрати той, хто використовує алгоритм.

Стійкість до криптоаналітичних атак: Друга базова вимога до будь-якого шифру — симетричного чи ні — полягає в здатності генерувати шифротексти, які є інформаційно нерозбірливими. З точки зору теорії інформації необхідною (але не достатньою) умовою є те, що шифротексти мають характеризуватися високою ентропією, що робить їх невідрізнюваними від випадкового тексту без жодних помітних закономірностей або кореляцій. Так зловмисник не зможе отримати жодної інформації про відкритий текст або секретний ключ, намагаючись аналізувати шифротекст за допомогою частотного аналізу чи інших статистичних методів.

Стійкість до загальних форм криптоаналітичних атак, достатня для забезпечення семантичної безпеки, формалізується через поняття нерозрізнюваності. Хоча існує кілька варіантів нерозрізнюваності з різними вимогами, симетрична криптосистема вважається семантично безпечною, якщо вона задовольняє критерій нерозрізнюваності при атаці на основі обраного відкритого тексту (IND-CPA). Це означає, що зловмисник не може відрізнити шифрування двох різних повідомлень, навіть якщо йому дозволено надсилати довільні відкриті тексти алгоритму й бачити відповідні шифротексти.

Як ми розглянемо далі, IND-CPA, як правило, вимагає використання випадковості, щоб гарантувати: щоразу, коли певний відкритий текст шифрується певним секретним ключем, отриманий шифротекст непередбачувано відрізняється при кожному шифруванні.

Вразливості класичних шифрів: До появи сучасної криптографії у 1970-х роках більшість класичних шифрів, що застосовувалися на практиці, не задовольняли одній або обом вищезазначеним вимогам. Наприклад, ранні підстановчі шифри, такі як моноалфавітний шифр зсуву Цезаря, мали і малий розмір простору ключів (див. Таблицю 1), і шифротекст з низькою ентропією, що робило їх незахищеними проти різноманітних криптоаналітичних атак: атак грубою силою, частотного аналізу та атак на основі відомого відкритого тексту (KPT).

Подальші поліалфавітні підстановчі шифри, такі як шифр Віженера та шифр машини Енігма, мали ефективно великий простір ключів, що давало стійкість до атак грубою силою, але вони були вразливі до частотного аналізу та KPT-атак відповідно. Аналогічно підстановчим шифрам, класичні транспозиційні шифри, які переставляють літери в повідомленні замість їх заміни, також піддаються різноманітним атакам: анаграмуванню, статистичному аналізу, атакам грубою силою та KPT-атакам.

Теоретично поліалфавітний підстановчий шифр, відомий як одноразовий блокнот (OTP), вважається криптографічно стійким. OTP має секретний ключ, який повинен бути: (1) складений з випадково вибраних літер або бітів, (2) не коротшим за вихідний відкритий текст і (3) використаний лише один раз. OTP непрактичний для реальних застосувань, оскільки якби секретний ключ — який повинен бути не коротшим за відкритий текст і може використовуватися лише один раз — можна було безпечно передати, то і сам відкритий текст можна було б передати так само. Натомість OTP ілюструє корисність випадковості у генерації стійких шифротекстів.

Зловмисник, який намагається здійснити перебір ключів у просторі ключів, щоб знайти ключ для розшифрування повідомлення, змушений виконати кількість операцій, пропорційну розміру простору ключів.

Тому великий розмір простору ключів забезпечує захист від атак грубою силою, роблячи їх обчислювально нездійсненними. У Таблиці 1 наведено розміри простору ключів деяких відомих шифрів.

Таблиця 1: Розміри простору ключів деяких симетричних шифрів

ШифрДовжина ключаРозмір простору ключів
Шифр Цезаря1розмір алфавіту
Віженерnрозмір алфавітуn^\mathrm{n}
Одноразовий блокнотдовжина відкритого текстурозмір алфавітуplaintextlength^\mathrm{plaintext-length}
DES56256^\mathrm{56}
AES-1281282128^\mathrm{128}
AES-1921922192^\mathrm{192}
AES-2562562256^\mathrm{256}
ChaCha202562256^\mathrm{256}
Сучасні схеми симетричного ключового шифрування значною мірою долають обмеження класичних шифрів. Вони генерують шифротексти, стійкі до криптоаналізу, мають великий простір ключів і водночас є значно практичнішими, ніж OTP.

Блокові шифри: Один клас сучасних шифрів — зокрема DES та AES — досягає безпеки шляхом поєднання принципів перемішування та розсіювання, спочатку введених Клодом Шенноном. Розглянемо ці поняття в контексті, де схеми шифрування працюють з двійковими представленнями повідомлень:

  • Перемішування (Confusion): Перемішування — це властивість, за якої кожен біт шифротексту залежить від кількох бітів секретного ключа. Воно гарантує, що невелика зміна секретного ключа змінює майже всі біти шифротексту, приховуючи зв'язок між шифротекстом і секретним ключем.

  • Розсіювання (Diffusion): Розсіювання — це властивість, за якої перевертання одного біта у відкритому тексті має змінювати приблизно половину бітів шифротексту, і навпаки. Розсіювання приховує статистичні залежності між відкритим текстом і шифротекстом. Шифри з достатнім розсіюванням задовольняють так званий лавинний критерій криптографії.

Блокові шифри реалізують перемішування та розсіювання за допомогою криптографічних структур, відомих як мережі підстановки-перестановки (SPN), що діють на дискретних блоках даних. SPN приймає блок відкритого тексту й секретний ключ як вхідні дані та виконує задану кількість раундів перетворень для отримання блоку шифротексту. Кожен раунд складається з чергування математичних структур, відомих як блоки підстановки (S-блоки) та блоки перестановки (P-блоки) або еквівалентних операцій.

Вони відповідно реалізують складні нелінійні та лінійні перетворення вхідних блоків, що призводить до лавинних ефектів у шифротексті.

SPN побудовані таким чином, що збільшення кількості раундів, як правило, підвищує безпеку шифру. Це призводить до поняття запасу безпеки. Запас безпеки: Запас безпеки певного криптографічного шифру на основі SPN — це різниця між кількістю раундів у повній реалізації шифру та максимальною кількістю раундів, які відомо можна зламати за допомогою найкращої відомої реальної атаки.

Наприклад, наразі найкращі відомі атаки, швидші за перебір, проти AES-256 можуть зламати до 9 раундів із загальних 14 раундів повного шифру при використанні в стандартному режимі, відомому як режим Електронної кодової книги (ECB). Таким чином, наразі запас безпеки AES-256 становить 5 раундів.

Потокові шифри: Як альтернатива блоковим шифрам, сучасні криптологи також розробили практично стійкі потокові шифри, такі як ChaCha20. Ці шифри використовують випадковість як фундаментальну частину свого дизайну й оперують псевдовипадковими потоками ключів бітів замість дискретних блоків даних.

Відповідно, потокові шифри поєднують секретний ключ та вектор ініціалізації (IV) для ініціалізації псевдовипадкового генератора чисел (PRNG), що генерує потік ключів випадкових бітів, які потім комбінуються з відкритим текстом для отримання шифротексту. У цьому сенсі потокові шифри схожі на одноразовий блокнот (OTP), але мають коротші секретні ключі та повторно використовувані ключі, що робить їх практичнішими. Однак з тієї ж причини вони, на відміну від OTP, не гарантують абсолютної секретності.

Семантична безпека: Завершуємо цей підрозділ, повертаючись до поняття семантичної безпеки, або безпеки рівня IND-CPA, введеного вище. Базові операції, що реалізуються блоковими шифрами — такі як S-блок і P-блок — є детерміністичними. Це означає, що в стандартних режимах роботи, таких як ECB, дана пара відкритий текст–ключ завжди дає той самий шифротекст, що вразливо до атак на основі обраного відкритого тексту.

Для досягнення безпеки рівня IND-CPA блокові шифри мають працювати в режимі, який використовує випадковість, що вводиться через псевдовипадковий вектор ініціалізації (IV), з додатковою вимогою, що жодні дві операції шифрування не використовують одну й ту саму пару ключ–IV. AES підтримує кілька режимів роботи, наприклад зчеплення шифрованих блоків (CBC), які є IND-CPA безпечними. Аналогічна вимога поширюється й на потокові шифри: одну й ту саму пару ключ–IV не слід використовувати для ініціалізації PRNG більше одного разу, якщо бажається IND-CPA.

Ознайомившись з деякими основними принципами КСК, розглянемо кілька популярних алгоритмів симетричного ключа, щоб проілюструвати різноманітність підходів, що використовуються в сучасних криптосистемах. Сучасні блокові та потокові шифри застосовуються в різних контекстах, як показано нижче.

  1. Advanced Encryption Standard: AES, вже представлений вище, наразі є де-факто стандартом КСК завдяки своїм характеристикам безпеки, ефективності та продуктивності. AES має фіксовані розміри ключів 128, 192 і 256 бітів та використовує багатораундову мережу підстановки-перестановки (SPN). AES відомий своєю стійкістю до широкого спектру криптоаналітичних атак. У 2001 році AES був оголошений федеральним стандартом обробки інформації (FIPS) для симетричного ключового шифрування в США.`

  2. Data Encryption Standard (DES) та Triple Data Encryption Standard (3DES): DES — це блоковий шифр, спочатку розроблений Горстом Фейстелем та його колегами в IBM® у 1970-х роках, який використовував SPN з відносно коротким 56-бітним ключем. DES застосовувався як FIPS для симетричного ключового шифрування в США аж до кінця 1990-х років, коли було доведено, що він може бути зламаний атаками грубою силою за допомогою спеціалізованого обладнання через малий розмір простору ключів. Згодом як заміна був введений 3DES, який тричі застосовує алгоритм DES з різними ключами, збільшуючи довжину ключа до 168 бітів. Проте 3DES значною мірою витіснений AES.

  3. Blowfish та Twofish: Blowfish та його наступник Twofish — блокові шифри, запропоновані криптографом Брюсом Шнаєром у 1990-х роках. Blowfish та Twofish допускають змінні довжини ключа до 448 бітів і 256 бітів відповідно, що забезпечує певну гнучкість у компромісі між безпекою та продуктивністю. На відміну від AES, вони також мають ключозалежні S-блоки. Twofish був одним з фіналістів конкурсу NIST з вибору Advanced Encryption Standard, але зрештою не був обраний. Обидва алгоритми наразі вважаються безпечними.

  4. Шифри Рівеста (RC2, RC4, RC5 та RC6): Сімейство алгоритмів симетричного ключа Rivest Cipher (RC) було розроблено Роном Рівестом починаючи з 1980-х років. RC2 — ранній 64-бітний блоковий шифр, тоді як RC4 — потоковий шифр, широко використовуваний у протоколах безпеки, пов'язаних із веб-трафіком, завдяки своїй простоті та швидкості. Жоден з них наразі не вважається безпечним. RC5 та RC6 — блокові шифри на основі SPN з настроюваним розміром блоку, розміром ключа та кількістю раундів. Як і Twofish, RC6 був фіналістом конкурсу NIST AES і вважається безпечним.

  5. Salsa20 та ChaCha20: Salsa20 та ChaCha20 — це споріднене сімейство потокових шифрів, розроблених криптографом Деніелом Бернштейном у 2000-х роках. Salsa20 входить до портфоліо профілю 1 європейського проекту криптографічної валідації eSTREAM. ChaCha20, модифікація Salsa20, була розроблена для покращення характеристик розсіювання та продуктивності. Наразі ChaCha20 вважається безпечним і забезпечує кращу продуктивність за відсутності спеціалізованого апаратного прискорення AES. Тому ChaCha20 знаходить застосування в певних контекстах, таких як мережеві протоколи QUIC і мобільні пристрої з процесорами на базі ARM.

Переваги криптографії з симетричним ключем

Окресливши властивості симетричних криптосистем і деякі принципи їх розробки, перелічимо основні переваги КСК порівняно з асиметричною ключовою криптографією. Остання буде розглянута в наступних уроках.

  1. Швидкість та ефективність: Алгоритми симетричного ключа більш придатні для шифрування великих обсягів даних або застосування в сценаріях комунікації в реальному часі, оскільки вони, як правило, швидші й менш ресурсоємні, ніж їхні асиметричні аналоги. Алгоритми КСК, такі як AES, масштабуються лінійно з розміром відкритого тексту й не передбачають алгебраїчно ємних математичних операцій. Детальний огляд характеристик продуктивності AES наведено у Tomoiaga et al..

  2. Масштабованість: Завдяки відносно низьким обчислювальним витратам алгоритми симетричного ключа добре масштабуються зі збільшенням кількості користувачів і обсягу даних, що шифруються.

  3. Простота: Протоколи симетричного шифрування часто легші для реалізації та розуміння порівняно з підходами з асиметричним ключем, що робить їх привабливими для розробників і користувачів.

Виклики та обмеження криптографії з симетричним ключем

Попри переваги, криптографія з симетричним ключем також має певні виклики та обмеження:

  1. Розподіл і управління ключами: У КСК і відправник, і одержувач повідомлення повинні мати доступ до одного й того самого ключа, який має залишатися конфіденційним від сторонніх осіб. Якщо ключ якимось чином перехоплено або скомпрометовано третьою стороною, безпека зашифрованих даних також втрачається. Тому безпечний розподіл і управління секретним ключем — це серйозний виклик. Однак вирішення цього виклику лежить поза межами самої КСК.

  2. Відсутність невідмовності: Невідмовність — це здатність довести, що конкретна сторона надіслала повідомлення. У КСК, оскільки один і той самий ключ використовується для шифрування та розшифрування, неможливо визначити, яка сторона створила певний шифротекст. Натомість асиметрична ключова криптографія забезпечує невідмовність через використання цифрового підпису.

Для вирішення цих викликів криптографія з симетричним ключем часто застосовується в поєднанні з асиметричною ключовою криптографією. Наприклад, асиметричне шифрування ключа часто використовується для безпечної передачі відносно короткого спільного секретного ключа між відправником і одержувачем. Це уможливлює подальше використання симетричного шифрування для ефективної передачі значно більших даних і повідомлень.

Квантові обчислення та симетричне ключове шифрування: ризики та їх зниження

Квантова криптографія пропонує перспективний шлях для зниження ризиків у цифрову епоху, а прийняття квантово-стійких продуктів готується захистити нашу інформацію від наростаючої загрози розвитку квантових обчислень.

Далі ми розглянемо ризики, які квантові комп'ютери становлять для схем симетричного ключового шифрування, представлених у попередньому розділі, та окреслимо деякі потенційні шляхи їх зниження.

Квантові криптографічні атаки

Існують два різних класи квантових загроз для традиційних криптографічних алгоритмів:

  1. Квантові атаки грубою силою: Це ситуації, коли зловмисник використовує квантовий комп'ютер для виконання спеціалізованого квантового алгоритму, щоб здійснити перебір ключів симетричного шифру. Найбільш релевантним квантовим примітивом для такої атаки є алгоритм Гровера.

  2. Квантові криптоаналітичні атаки: Це ситуації, де квантові комп'ютери використовуються для виконання криптоаналітичних атак, що мають на меті відновити секретний ключ або відкритий текст ефективнішим способом, ніж перебір. Можливість успішних квантових криптоаналітичних атак залежить від багатьох факторів, пов'язаних із математичною структурою шифру, що аналізується, а також від потенційних слабких місць у конкретних реалізаціях.

Стратегії зниження ризиків від квантових атак

Перш ніж обговорювати стратегії зниження ризиків від квантових атак, введемо поняття рівня безпеки криптографічного шифру:

Рівень безпеки — це міра складності зламу шифру, що виражається кількістю обчислювальних операцій, які знадобляться для успішного зламу.

Як правило, рівень безпеки виражається в бітах; тобто, загалом кажучи, шифр забезпечує N-бітну безпеку, якщо для його зламу потрібно O(2N)\mathcal{O}(2^{N}) операцій. На класичних комп'ютерах, за умови, що симетричний шифр є криптографічно стійким, рівень безпеки приблизно збігається з довжиною ключа.

Наприклад, рівень безпеки AES-128 з 128-бітним ключем загалом вважається рівним 128 бітам, оскільки зловмиснику, який використовує класичний комп'ютер, знадобиться порядку 2128^{128} операцій, щоб перебрати всі можливі 128-бітні ключі у просторі ключів.

Атаки грубою силою та їх зниження

Ризик квантової атаки грубою силою: Квантова атака грубою силою змінює наведену вище оцінку, оскільки алгоритм Гровера дозволяє зловмиснику з відповідним квантовим комп'ютером перебирати простір ключів шифру квадратично швидше, ніж будь-який класичний комп'ютер.

Наприклад, та сама атака грубою силою на AES-128 за допомогою алгоритму Гровера потенційно може бути здійснена лише за 264^{64} операцій. Таким чином, рівень безпеки AES-128 знижується зі 128 до 64 бітів при наявності квантового зловмисника, що використовує пошук Гровера. Оскільки обчислювальна потужність традиційно зростала експоненційно з часом, наразі рівень безпеки 64 біти вважається недостатнім — це означає, що після появи достатньо потужних квантових комп'ютерів від AES-128 доведеться відмовитися.

Таке ж міркування стосується інших симетричних блокових або потокових шифрів: рівень безпеки для заданої довжини ключа фактично вдвічі зменшується алгоритмом Гровера.

Зниження ризику квантової атаки грубою силою: Наведені міркування означають, що очевидний спосіб протистояти квантовим атакам грубою силою — це щонайменше подвоїти мінімальні довжини ключів, що використовуються для симетричного ключового шифрування.

Таким чином, щоб забезпечити 128-бітну безпеку щодо квантових атак грубою силою, достатньо просто використовувати шифри, такі як AES-256 або ChaCha20, що застосовують 256-бітні ключі. Це вважається безпечним, оскільки навіть з квантовими комп'ютерами виконання 2128^{128} операцій для зламу шифрів є нездійсненним у доступному для огляду майбутньому.

Хоча теоретично простий, цей запропонований спосіб подвоєння розмірів ключів не позбавлений витрат: більші розміри ключів тягнуть за собою додаткові обчислювальні витрати на рутинні операції шифрування-розшифрування, а також сповільнення роботи, більші вимоги до пам'яті та додаткові витрати енергії.

Криптоаналітичні атаки та їх зниження

Ризик квантових криптоаналітичних атак: Ризик для симетричних ключових криптосистем, що виходить від квантових криптоаналітичних атак, наразі активно досліджується криптографами. Поєднання класичних і квантових обчислень потенційно розширює арсенал інструментів зловмисників для зондування слабких місць у математичній структурі шифрів, і зараз пропонується широкий спектр нових квантових криптоаналітичних атак. Серед них — квантизації відомих класичних методів, таких як лінійний і диференційний криптоаналіз, а також нові режими атак без класичних аналогів.

Нещодавнє квантово-криптоаналітичне дослідження Advanced Encryption Standard (AES) показало, що шифр залишається стійким до різних відомих квантових криптоаналітичних атак і продовжує демонструвати достатній постквантовий запас безпеки. Однак деякі дослідження виявили, що різні симетричні шифри, що вважаються класично безпечними, легко компрометуються так званою квантовою атакою на основі обраного відкритого тексту. Тому також були запропоновані нові примітиви для симетричного ключового шифрування, спеціально розроблені для постквантової ери.

Зниження ризику квантових криптоаналітичних атак: Враховуючи, що квантовий криптоаналіз як дисципліна перебуває на початку свого шляху, постквантова симетрична криптографія може зазнати швидкої еволюції в міру появи нових квантових криптоаналітичних атак і пропозиції та оцінки нових стійких до них шифрів. Тому найкраща стратегія зниження ризику квантових криптоаналітичних атак у найближчому майбутньому — це криптографічна гнучкість (або крипто-гнучкість). Крипто-гнучкість означає здатність інформаційної системи швидко й легко переходити на альтернативні криптографічні примітиви без руйнівних змін у системній інфраструктурі.

Крипто-гнучкість вимагає можливості замінювати застарілі алгоритми, що використовуються для шифрування, розшифрування, цифрових підписів або інших криптографічних функцій, з мінімальними зусиллями та перебоями. Крипто-гнучкі системи будуть добре підготовлені до управління переходом на постквантову симетричну ключову криптографію.

Підсумок

Криптографія з симетричним ключем надає надійні та ефективні рішення для захисту цифрової інформації. Простота використання одного ключа як для шифрування, так і для розшифрування забезпечує високу продуктивність і масштабованість, що робить КСК придатною для широкого спектра застосувань.

Безпека КСК спирається на алгоритмічну стійкість до криптографічних атак, а також на належне управління секретними ключами. Сучасні симетричні ключові криптосистеми поєднують принципи перемішування, розсіювання та випадковості разом з достатніми розмірами ключів для досягнення семантичної безпеки. Управління секретними ключами, хоча й критично важливе, не може бути досягнуте лише засобами КСК.

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

Розвиток квантових обчислень і квантового навчання вносить нову вимірність у криптографію з симетричним ключем. Квантові комп'ютери здатні підірвати безпеку, що забезпечується класичними алгоритмами симетричного ключа, що зумовлює потребу в квантово-стійких криптографічних підходах для забезпечення конфіденційності та захисту даних перед обличчям технологій, що постійно розвиваються.