Урок 1 з 4 · 9 хв
Симетричне шифрування, асиметричне шифрування і хешування
Три різні криптографічні інструменти гарантують три різні речі. Плутанина між ними — найпоширеніше джерело хибної впевненості.
Люди часто кажуть «це зашифровано», ніби це закриває питання безпеки. Це не так, бо шифрування — не одна річ. Це заняття розглядає три будівельні блоки, що стоять майже за кожним твердженням про цифровий захист: симетричне шифрування, асиметричне шифрування та хешування. Кожен гарантує щось інше, і знання того, який саме задіяний, показує, що насправді захищено.
Симетричне шифрування: один спільний ключ
Навчальний центр Cloudflare описує симетричне шифрування просто: «є лише один ключ, і всі сторони спілкування використовують той самий (секретний) ключ як для шифрування, так і для розшифрування». Advanced Encryption Standard (AES) — стандартний приклад сьогодні, що замінив старіший Data Encryption Standard (DES) після того, як коротка довжина ключа DES зробила його зламним грубою силою. Симетричне шифрування швидке й саме воно фактично перемішує основну масу ваших даних, будь то файл на диску чи тіло веб-сторінки, завантаженої через HTTPS. Його головна проблема — розповсюдження: обидві сторони потребують того самого секретного ключа, а передача цього ключа іншій стороні так, щоб ніхто інший його не побачив, — саме та проблема, яку вирішує асиметричне шифрування.
Асиметричне шифрування: два ключі, що працюють парою
В асиметричному, або шифруванні з відкритим ключем, є два математично пов’язані ключі: «один ключ використовується для шифрування, а інший — для розшифрування», за Cloudflare. Ключ шифрування можна опублікувати для будь-кого — звідси «відкритий ключ» — тоді як відповідний ключ розшифрування залишається приватним. Дані, замкнені відкритим ключем, можна розблокувати лише приватним ключем. Саме це дозволяє двом людям, які ніколи не зустрічалися, домовитися про спільний секрет через відкриту мережу, що й відбувається на початку кожного HTTPS-з’єднання (наступне заняття детально розглядає це рукостискання). RSA та криптографія на еліптичних кривих — поширені алгоритми, що стоять за цим сьогодні.
Хешування: відбиток, а не замок
Функція хешування — не те й не інше з переліченого: вона нічого не замикає, і немає ключа, щоб її розблокувати. NIST визначає її як функцію, що «перетворює бітовий рядок довільної довжини на бітовий рядок фіксованої довжини» — простими словами, вона перетворює будь-який файл чи повідомлення на короткий відбиток фіксованого розміру. NIST визначає властивості, які має мати схвалена хеш-функція: обчислювально неможливо знайти вхід, що дає заданий вихід (одностороння дія), і неможливо знайти два різних входи, що дають однаковий вихід (стійкість до колізій). Саме тому хешування перевіряє цілісність — чи змінився цей файл? — і захищає збережені паролі: сервіс може перевірити пароль за збереженим хешем, ніколи не зберігаючи сам пароль. Старіші хеш-функції на кшталт MD5 і SHA-1 більше не вважаються безпечними проти вмотивованого зловмисника, тому сучасні системи натомість використовують родини SHA-2 чи SHA-3.
Що насправді гарантує кожен із них
| Інструмент | Що гарантує | Чого не гарантує |
|---|---|---|
| Симетричне шифрування | Конфіденційність, якщо спільний ключ залишається секретним | Безпечний спосіб обміну цим ключем спочатку |
| Асиметричне шифрування | Спосіб обміну секретом і перевірки особи (див. наступне заняття про підписи) | Швидкість; воно значно повільніше за симетричне шифрування для великих обсягів даних |
| Хешування | Цілісність: доказ, що дані не змінювалися, і спосіб перевіряти секрети, не зберігаючи їх | Конфіденційність; хеш не призначений для зворотного перетворення, але й не приховує розмір чи наявність даних |
Як вони поєднуються на практиці
Майже ніщо не використовує лише один із цих інструментів. Типове захищене з’єднання коротко використовує асиметричне шифрування, щоб домовитися про спільний секрет, а потім переходить на швидке симетричне шифрування для самих даних, тоді як хешування працює весь час, щоб переконатися, що надіслане нічого не змінилося дорогою. Розпізнавання цих трьох ролей — саме те, що робить решту цього курсу — підписи, сертифікати, TLS і наскрізне шифрування — зрозумілою як комбінації того самого невеликого набору інструментів, а не окремою магією.
Головне
- Симетричне шифрування використовує один спільний ключ як для шифрування, так і для розшифрування; воно швидке, але потребує безпечного способу поділитися ключем.
- Асиметричне шифрування використовує пару з відкритого й приватного ключів, вирішуючи проблему розповсюдження ключа, яку має симетричне шифрування.
- Хешування створює відбиток фіксованого розміру з даних; воно захищає цілісність і збережені секрети, а не конфіденційність — ключа, щоб розблокувати хеш, не існує.
- Реальні системи поєднують усі три: асиметричне шифрування, щоб домовитися про секрет, симетричне — заради швидкості, хешування — щоб виявити втручання.
- Старіші алгоритми (DES, MD5, SHA-1) мають відомі слабкості; AES та родини SHA-2/SHA-3 — сучасні стандарти.
Перевірте себе
1. Яка визначальна риса симетричного шифрування?
- Воно використовує відкритий і приватний ключі
- Воно використовує один спільний секретний ключ як для шифрування, так і для розшифрування — Правильно.
- Його не можна використовувати для великих обсягів даних
- Воно взагалі ніколи не потребує ключа
Симетричне шифрування покладається на єдиний спільний ключ, який уже мають обидві сторони; складність — у безпечному розповсюдженні цього ключа.
2. Яку проблему вирішує асиметричне шифрування, яку симетричне не може вирішити самостійно?
- Пришвидшення шифрування
- Дозволяє двом сторонам домовитися про спільний секрет, не зустрічаючись спочатку — Правильно.
- Полегшує запам’ятовування паролів
- Запобігає видаленню даних назавжди
Криптографія з відкритим ключем дозволяє відкрито поділитися відкритим ключем, тоді як розшифрувати може лише відповідний приватний ключ, що вможливлює безпечний обмін ключами через відкриту мережу.
3. Чому хеш-функцію не можна використати, щоб зберегти повідомлення в таємниці?
- Хеші завжди надто короткі, щоб вмістити повідомлення
- Хеш за задумом односторонній; немає ключа, щоб повернути його до вихідних даних — Правильно.
- Хеш-функції заборонено використовувати для шифрування
- Хеші працюють лише із зображеннями, а не з текстом
Хеш-функції побудовані так, що відновлення вихідних даних із результату обчислювально неможливе — саме ця властивість (одностороння дія) робить їх корисними для перевірки цілісності й зберігання паролів, а не для конфіденційності.
4. Яка пара алгоритмів вважається застарілою через відомі слабкості?
- AES і RSA
- DES і MD5 — Правильно.
- SHA-2 і криптографія на еліптичних кривих
- TLS і HTTPS
Коротка довжина ключа DES і слабкості MD5 до колізій означають, що сучасні системи натомість використовують AES та родини SHA-2/SHA-3.
Застосуйте на практиці з FireAI
Застосуйте цей урок на своєму Mac.
- Глибока перевірка без розшифрування чогось — Отримайте справжню деталізацію захищеного з’єднання без того, щоб FireAI коли-небудь читав його вміст.
- Що залишається на вашому Mac і коли саме FireAI сам виходить у мережу — Прочитайте весь список того, що надсилає FireAI, замість того щоб просто вірити фаєрволу на слово.
Джерела
- Cloudflare Learning Center: What is encryption?
- NIST Computer Security Resource Center Glossary: hash function
Застосуйте це на своєму Mac
Усі функції безкоштовно на 17 днів, без банківської картки.