-
Інтернет: шифрування й відкриті ключі
-
Привіт! Мене звати Міа Гіл-Епнер, моя
спеціальність — комп’ютерні науки в УК Берклі,
-
і я працюю в Міністерстві оборони США над
зберіганням даних у безпеці. Інтернет —
-
це відкрита й публічна система. Ми всі
надсилаємо й отримуємо дані через спільні
-
провідні комунікації. Та хоча це відкрита
система, ми все ж обмінюємося великою
-
кількістю приватних даних. Це номери кредитних
карток, банківські дані, паролі, імейли, тощо.
-
Тож як усі ці приватні дані зберігаються
в таємниці? Будь-які дані можна зберігати
-
в таємниці завдяки процесу під назвою "шифрування",
"кодування", або "заміна повідомлення
-
для приховування оригінального тексту".
Дешифрування — процес декодування цього
-
повідомлення, щоб воно було читабельним.
Люди роблять це століттями. Одним з перших
-
відомих методів шифрування був шифр Цезаря.
Названий на честь римського генерала Юлія Цезаря,
-
який шифрував свої військові команди,
щоб повідомлення не перехопили вороги
-
і не могли його прочитати. Шифр Цезаря —
це алгоритм, який замінює кожну букву
-
в оригінальному повідомленні на букву,
що стоїть на кілька кроків далі за алфавітом.
-
Якщо цифра відома лише відправникові
й отримувачеві, вона називається ключем.
-
Це дозволяє читачеві розблокувати секретне
повідомлення. Наприклад, якщо оригінальне
-
повідомлення — "HELLO", то, за алгоритмом
шифру Цезаря з ключем 5, зашифроване слово
-
було б таким... Щоб розшифрувати повідомлення,
одержувач просто скористався б новим ключем
-
і змінив процес. Але з шифром Цезаря є значна
проблема: будь-хто може легко зламати код
-
чи розшифрувати повідомлення, спробувавши
всі можливі ключі, а в англійському алфавіті
-
лише 26 літер, і це означає, що вам потрібно
буде спробувати максимум 26 клавіш, щоб
-
розшифрувати повідомлення. Спробувати
26 ключів не дуже складно, це займе не більше
-
пари годин. Тож ускладнімо завдання. Замість
перенесення кожної букви на одну й ту саму
-
кількість кроків, змістимо їх на іншу кількість
кроків. У цьому прикладі десятизначний ключ
-
показує, на скільки кроків буде змінено
кожну наступну букву, щоб зашифрувати довше
-
повідомлення. Вгадати цей ключ дуже важко.
Для десятизначного шифру може бути 10 мільярдів
-
рішень. Звичайно, жодна людина не могла б
це вирішити, це займе багато століть.
-
Але звичайному комп’ютеру сьогодні знадобиться
лише кілька секунд, щоб спробувати всі
-
10 мільярдів можливостей. Оскільки сьогодні
злодії озброєні комп’ютерами замість олівців,
-
то як можна зашифрувати повідомлення так
надійно, щоб їх було занадто важко зламати?
-
"Занадто важко" означає забагато можливостей
для обчислення за розумну кількість часу.
-
Сьогодні безпечна комунікація шифрується
за допомогою 256-бітних ключів. Це означає,
-
що комп’ютер злодія, який перехоплює ваше
повідомлення, має спробувати стільки варіантів...
-
поки не виявить ключ і не зламає повідомлення.
Навіть якби у вас було 100 000 суперкомп'ютерів,
-
і кожен з них пробував би мільйон мільярдів
ключів щосекунди, то на кожен варіант знадобилося б
-
трильйони трильйонів років, просто щоб зламати
одне повідомлення з 256-бітним шифруванням.
-
Звичайно, комп'ютерні чіпи стають вдвічі
швидшими і вдвічі меншими щороку. Якщо цей
-
темп експоненціального прогресу продовжиться,
сьогоднішні неможливі задачі буде вирішено
-
лише за кілька сотень років у майбутньому,
і 256 біт буде недостатньо для безпечності.
-
І нам уже довелося збільшити стандартну довжину
ключів, щоб не відставати від швидкості комп'ютерів.
-
Хороша новина в тому, що використання
довшого ключа не надто ускладнює шифрування
-
повідомлень, але це експоненціально збільшує
кількість здогадок для злому шифру. Коли
-
відправник і одержувач мають один і той самий
ключ для кодування й декодування повідомлення,
-
це називається "симетричне шифрування".
При ньому, як і в шифрі Цезаря, секретний ключ
-
має бути заздалегідь узгоджений між двома
особами. Це зручно для людей, але Інтернет
-
є відкритим і загальнодоступним, тому неможливо,
щоб два комп’ютери «зустрілися» приватно і
-
домовились про секретний ключ. Натомість
комп'ютери використовують асиметричні ключі:
-
відкритий ключ, який можна надати кому завгодно,
і приватний ключ, що не розкривається. Відкритий
-
ключ використовується для шифрування даних,
і будь-хто може зашифрувати ним повідомлення,
-
але секрет може розшифровати лише комп'ютер з
доступом до приватного ключа. Це працює
-
математично, але це інша історія. Просто
уявіть, ніби у вас є особиста поштова скринька,
-
куди кожен може класти листи, але для цього
їм потрібен ключ. Ви можете зробити багато
-
копій ключа й надіслати його своєму другу або
навіть просто зробити ключ загальнодоступним.
-
Ваш друг або навіть незнайомець може
скористатися відкритим ключем, щоб отримати
-
доступ до вашої скриньки й покласти листа. Але
лише ви можете відкрити скриньку своїм приватним
-
ключем і отримати доступ до секретних повідомлень.
І ви можете відправити захищене повідомлення
-
назад своєму другові, скориставшись відкритим
ключем до його скриньки. Так ми обмінюваємось
-
захищеними повідомленнями без узгодження
приватного ключа. Криптографія відкритого ключа
-
є основою всіх захищених повідомлень у відкритому
інтернеті, включаючи протоколи безпеки, відомі
-
як SSL та TLS, які захищають нас під час
перегляду веб-сторінок. Ваш комп'ютер
-
використовує це сьогодні, якщо ви бачите замочок
або букви "https" в адресному рядку браузера.
-
Це означає, що ваш комп'ютер використовує
шифрування відкритого ключа для безпечного
-
обміну даними з веб-сайтом. Усе більше людей
користується інтернетом, тож передаватиметься
-
все більше приватних даних, і необхідність
у безпечності цих даних буде ще важливішою.
-
Адже комп’ютери стають усе швидшими, нам
доведеться розробити нові способи зробити
-
шифрування заважким для його зламу комп'ютером.
Це моє завдання, і воно завжди змінюється.