Cryptography Vocabulary for Developers: Encryption, Key Management, and PKI Terms Explained (англійською)
Освоєння криптографічного словника, який використовується у справжніх інженерних розмовах — симетричне проти асиметричного шифрування, шифрування конвертів, TLS handshake, обертання ключів, HSM, FIPS 140- 2 і багато іншого.
Криптографічний словник з’являється в оглядах безпеки, обговореннях архітектури, оцінці постачальників і аудитах відповідності. Використання неправильного терміна — або використання правильного терміна неточно — сигналізує колегам, що ви працюєте з поверхневого рівня розуміння. У цьому довіднику наведено словник, який вам слід знати, щоб з повною впевненістю брати участь у розмовах з інженерами щодо шифрування, керування ключами і безпеки передачі даних.
Симетричне проти асиметричного шифрування
Найбільш фундаментальна відмінність у прикладній криптографії полягає між ** симетричними ** і ** асиметричними ** алгоритмами шифрування, і вона визначає, який інструмент підходить для даної проблеми.
Симетричне шифрування
** Симетричне шифрування ** використовує один і той же ключ для шифрування і розшифрування даних. Поточним стандартом для симетричного шифрування є AES- 256- GCM. Назва кодує повний опис:
AES— Advanced Encryption Standard, основний шифр256— довжина ключа в бітах; довші ключі збільшують стійкість до атак з використанням грубих силGCM— Режим Галуа/Контра, режим роботи
GCM — це режим ** автентифікованого шифрування**: він створює як ** шифрований текст ** (зашифровані дані), так і ** мітку автентифікації ** (коротке значення, яке доводить, що шифрований текст не було змінено). Це критична відмінність від старих режимів, таких як CBC, які забезпечують конфіденційність, але не цілісність без окремого MAC.
Симетричне шифрування використовується для масового шифрування даних — шифрування поля бази даних, файла на диску або великої кількості даних під час передачі — оскільки воно є швидким.
Асиметричне шифрування
** Асиметричне шифрування ** використовує математично пов’ язану ** пару ключів **: відкритий ключ шифрує дані, і тільки відповідний закритий ключ може їх розшифрувати. Два домінуючих асиметричних алгоритми:
- ** RSA ** — широко використовується, розміри ключів 2048 або 4096 біт; обчислювально дорогий
- ECC (Еліптична кривина криптографії) — забезпечує еквівалентну безпеку RSA при значно коротших довжинах ключів; 256-бітний ключ ECC вважається еквівалентним 3072-бітному ключу RSA, що робить його перевагою для мобільних пристроїв і TLS
«Ми використовуємо AES-256-GCM для даних у спокійному стані і RSA-2048 для обгортання ключів в наших застарілих сервісах — ми переключаємо нові сервіси на обмін ключами ECDH, щоб зменшити накладні витрати на рукопашний бій»
Шаблон шифрування конверта
Застосування асиметричного шифрування безпосередньо до великих даних непрактичне — воно повільне, а обмеження розміру даних жорсткі. Стандартним рішенням в галузі є шаблон ** шифрування конвертів **, який використовується у всіх основних хмарних KMS (AWS, GCP, Azure).
Як працює криптографія
- Буде створено DEK (ключ шифрування даних) — випадковий симетричний ключ, який буде використано для шифрування фактичних даних за допомогою AES- 256- GCM
- Сам DEK потім зашифровується (загортається) за допомогою ** KEK ** (ключ шифрування ключа), збережений в KMS (Служба керування ключами)
- Зашифрований DEK зберігається разом з шифротекстом; DEK з відкритим текстом ніколи не зберігається
Щоб розшифрувати, програма запитує, щоб KMS розпакував DEK за допомогою KEK, розшифрував дані, а потім вилучив DEK з відкритого тексту з пам’ яті.
Для чого потрібна криптографія?
Цей шаблон розв’ язує три проблеми одночасно:
- ** Безпека **: головний ключ (KEK) ніколи не залишає KMS. Програма завжди має DEK, і тільки тимчасово.
- ** Поворот за масштабом **: щоб змінити масштаб шифрування, вам слід перезашифрувати лише DEK за допомогою нового KEK, а не всі дані, які знаходяться за ним. Для набору даних, що містить декілька терабайт, це різниця між операцією 100 мс і міграцією, що триває декілька днів.
- ** Шлях аудиту **: Кожне розгортання DEK записується у журнал KMS, що надає повний шлях аудиту доступу без зміни програм.
«Ми використовуємо шифрування конвертів — кожен запис отримує свій власний DEK, DEK обгортається нашим ключем KMS, а AWS KMS управляє повним життєвим циклом KEK, включаючи автоматичну щорічну ротацію»
TLS 1.3 Handshake Vocabulary (англійською)
** TLS ** (Transport Layer Security) — це протокол, який забезпечує безпеку даних під час передачі. Знання його словника є необхідним для будь- якої розмови про безпеку API, керування сертифікатами або мережеву архітектуру.
Т. 1. с. 132
TLS 1.3 (RFC 8446, 2018) є поточним стандартом. Ключові відмінності від TLS 1. 2:
- Вилучає слабкі і застарілі набори шифрів (RC4, 3DES, RSA key exchange, SHA- 1)
- Зменшує час обміну повідомленнями з ** 2- RTT ** (дві поїздки в обидва боки) до ** 1- RTT **, з можливим режимом відновлення ** 0- RTT **
- Наказує ** ідеальну передачу секретності ** для всіх наборів шифрів
Ключовий словник сертифікатів
Сертифікат TLS не є окремим файлом — він є частиною ** ланцюга сертифікатів **:
- ** Корінь CA ** — центр сертифікації на вершині ланцюга; його сертифікат попередньо встановлено у операційних системах і переглядачах
- ** Проміжне ЦС ** — ЦС, сертифікат якого підписано кореневим ЦС; проміжні ЦС видають листкові сертифікати, щоб ізольувати кореневе ЦС від щоденних операцій
- ** Сертифікат листка ** — сертифікат, представлений сервером; підписаний проміжним центром сертифікації
** SNI ** (Server Name Indication) — це розширення TLS, яке надає змогу клієнту вказати назву вузла, з яким він з’ єднується, перед завершенням обміну TLS, що надає змогу одній IP- адресі обробляти декілька сертифікатів TLS.
** Скріплення OCSP ** — це механізм, за допомогою якого сервер активно долучає останню відповідь на запит на перевірку чинності сертифіката від центру сертифікації до TLS- зв’ язку, уникаючи необхідності для клієнта робити окремий запит OCSP. Без скріплення перевірка скасування сертифіката додає затримку і порушує конфіденційність.
Ідеальна передня секретність
** Досконала передана таємниця (PFS) ** означає, що скомпрометування довгострокового закритих ключа сервера не скомпрометує поточний трафік сеансу. Він працює за допомогою ** ефемерних пар ключів ** для кожного сеансу TLS — обмін ключами використовує ECDH (Еліптична крива Діффі- Хелмана) для отримання ключа сеансу, який відкидається після використання. Навіть якщо нападник записав весь минулий TLS-транзит і пізніше отримав закритий ключ сервера, він не зможе його розшифрувати.
«Ми вимагаємо TLS 1.3 мінімум на всіх зовнішніх кінцевих точках і вимагаємо PFS шифрування набори - ефемерний ECDH тільки. Прикріплення сертифікатів явно не використовується в мобільному клієнті, враховуючи операційний ризик невдач обертання виводів»
Ключовий словник управління
Клавіша обертання
** Ротація ключів ** — це процес заміни криптографічного ключа новим за розкладом або у відповідь на подію безпеки. Сучасні системи KMS підтримують автоматичне поновлення — KMS створює нову версію ключа за визначеним розкладом (зазвичай раз на рік), і всі нові операції шифрування використовують найновішу версію. Старі версії ключів зберігаються для розшифрування даних, зашифрованих до обертання.
Ротація запускається за розкладом, підозрюваним компромісом або значним відходом персоналу (працівник з ключовим доступом залишає організацію).
Виведення ключів
** Виведення ключів ** створює криптографічні ключі з секрету джерела (зазвичай, пароля). Два стандартні алгоритми:
- PBKDF2 (Password-Based Key Derivation Function 2) — застосовує псевдовипадкову функцію (зазвичай HMAC-SHA256) багато тисяч разів; високе кількість ітерацій робить атаки грубим способом дорогими. ** salt ** (випадкове значення, унікальне для кожного користувача) запобігає попередньо обчисленим атакам на таблиці веселки.
- ** HKDF ** (HMAC- based Key Derivation Function) — використовується для отримання декількох специфічних ключів з одного вхідного даних з високою ентропією (не підходить для паролів; для цих ключів використовуйте PBKDF2)
HSM
** HSM ** (аппаратний модуль безпеки) — це спеціальний апаратний пристрій для створення і зберігання криптографічних ключів. Основні гарантії HSM:
- ** Відповідність вимогам безпеки **: спроби фізичних атак викликають автоматичне знищення ключа
- ** Ізоляція матеріалу ключа **: закритий ключ і KEK створюються всередині HSM і ніколи не експортуються у вигляді простого тексту
- Типові випадки використання HSM: підписування кореневих і проміжних сертифікатів CA, зберігання KEK для корпоративної системи керування ключами, виконання вимог нормативних актів
FIPS 140-2
** FIPS 140- 2 ** (Federal Information Processing Standard 140- 2) — це урядовий стандарт США для перевірки криптографічних модулів. Він визначає чотири рівні безпеки. Рівні 2 і 3 найчастіше використовуються у корпоративному середовищі:
- ** FIPS 140- 2 Рівень 2 ** — вимагає фізичного доказу несанкціонованого доступу (пломби, замки) до криптографічного модуля; програмні криптографічні бібліотеки, перевірені на цьому рівні, прийняті для федеральних закупівель США
- ** FIPS 140- 2 Рівень 3 ** — вимагає більшої фізичної стійкості до підробки і нульування ключового матеріалу при виявленні вторгнення; потрібне для HSM, що обробляють найбільш чутливий ключовий матеріал
«Клієнт вимагає FIPS 140-2 Level 3 для їх регульованого навантаження даних — нам потрібно маршрутизувати їхні операції шифрування через кластер HSM, а не програмне забезпечення KMS»
Мова обговорення безпеки
Криптографічні рішення проектування повинні бути точно повідомлені, особливо в оглядах безпеки і архітектурних підписах.
Рецензія на книгу
- ** Модель загрози ** — структурований аналіз потенційних нападників, їх можливостей і активів, які вони можуть об’ єктивно оцінити
- ** Поверхня атаки ** — сукупність відкритих інтерфейсів і шляхів коду, за допомогою яких атакуючий може взаємодіяти з системою
- ** Межа довіри ** — лінія в архітектурі, де дані або керування перетинаються між двома різними рівнями довіри; кожне перетинання межі довіри потребує перевірки
Розробка криптографічного шифрування
Уникайте нечітких пояснень у дискусіях про безпеку. Використовуйте шаблон: “Ми обрали X над Y, тому що [різниця в специфічних властивостях]; компромісом є [вартість, складність або продуктивність].”
«Ми обрали AES-256-GCM над AES-CBC, тому що нам потрібно автентифіковане шифрування — CBC забезпечує конфіденційність, але не гарантує цілісність; для цілісності потрібен окремий HMAC, що додає складності і має бути реалізовано правильно, щоб уникнути вразливостей оракула. GCM забезпечує обидва в одному проході і швидше на практиці.”
Атака з боку каналу
Атака бокового каналу використовує інформацію, витік якої відбувається через фізичну або обчислювальну поведінку системи — час, споживання енергії, електромагнітні випромінювання — а не слабкості самого криптографічного алгоритму.
** Атака за часом ** є найпоширенішим бічним каналом прикладного рівня: якщо функція порівняння повертається рано на першому різних байтах, нападник може визначити, скільки байтів збігається, вимірюючи час відповіді на багато запитів.
Захист є ** порівняння в постійному часі **: порівняння функцій, які виконують однакову кількість операцій незалежно від того, де вхідні дані розходяться.
«Ми використовуємо порівняння постійного часу для перевірки HMAC по всьому шляху автентифікації — порівняння рядків змінного часу можна використовувати через часовий боковий канал, і це було продемонстровано проти реальних систем автентифікації»
Мова розкриття уразливостей
Під час повідомлення про виявлення порушень безпеки, точність у визначенні ступеня тяжкості впливає на швидкість призначення пріоритету проблем:
«Це низькосерйозна криптографічна слабкість — набір шифрів технічно застарілий, але не існує відомого практичного шляху експлуатації, враховуючи розміри ключів у використанні. З цим сказано, ми повинні повертатися до рекомендованого алгоритму впродовж кварталу, щоб підтримувати оборонну позицію перед наступним аудитом відповідності»
Шаблон: ** тяжкість + виправдання + рекомендована дія + часовий проміжок **. Не збивайте з пантелику результати низької тяжкості або мінімізуйте результати високої тяжкості.
Криптографический словарь - это разница между участием в проверке безопасности и прохождением ее. Для практики з цими термінами в реальних інженерних розмовах, досліджуйте CoderLingo Вправи зі словниковим запасом і підготовка до криптографічного інтерв’ю.