Існує багато різних частин криптографії. Однак якщо ви хочете зашифрувати деякі дані, ви можете використовувати два типи алгоритмів: симетричні алгоритми шифрування та асиметричні алгоритми шифрування. Концепція та сама: вони можуть шифрувати дані, але працюють за іншими принципами та мають інші випадки використання.
Однак основна відмінність описує ключі шифрування. Алгоритм симетричного шифрування використовує єдиний спільний ключ для шифрування та дешифрування даних. Алгоритм асиметричного шифрування використовує два зв’язані ключі: один для розшифровки, а інший – для розшифровки.
Термінологія
Алгоритми асиметричного шифрування ґрунтуються на використанні двох різних ключів. Один ключ можна використовувати для шифрування даних, а інший – для дешифрування. Два ключі шифрування — це не просто два старі значення. Вони внутрішньо пов’язані між собою і мають бути згенеровані за допомогою алгоритму генерації ключів.
Альтернативна назва асиметричного шифрування — шифрування з відкритим ключем. Це тому, що передбачається, що один із двох ключів є відкритим. Традиційна концепція полягає в тому, що ключ шифрування є загальнодоступним, а ключ дешифрування зберігається суворо закритим. З цієї причини ключ шифрування називають відкритим ключем, а ключ дешифрування – закритим.
Ця конфігурація дозволяє будь-кому зашифрувати повідомлення, щоб лише власник закритого ключа міг його розшифрувати. Це корисно, оскільки будь-хто може безпечно спілкуватися з одержувачем за допомогою єдиного опублікованого ключа шифрування. Щоб безпечно з’єднатися, одержувач повинен буде використовувати відкритий ключ початкового відправника.
Теоретично, немає причин, щоб ви не могли поміняти ключі та надати спільний доступ до ключа дешифрування, зберігаючи при цьому ключ шифрування закритим. Це може бути використано для перевірки автентичності джерела, якщо не забезпечує будь-якої суттєвої безпеки. Однак на практиці це не робиться, оскільки існують інші механізми досягнення такого ж результату.
Властивості алгоритмів симетричного шифрування
Асиметричні алгоритми шифрування вимагають використання набагато більших ключів, ніж симетричні алгоритми шифрування, забезпечуючи той самий рівень безпеки. Як правило, симетричний алгоритм шифрування зі 128-бітним ключем шифрування вважається безпечним, хоча перевагу надають 256-бітним ключам. В асиметричному алгоритмі шифрування 2048-бітні ключі вважаються безпечними.
Приклад 2048-бітного ключа стосується RSA, який довгий час був стандартом для асиметричного шифрування. Однак криптографія еліптичної кривої є новою концепцією, яка також є асиметричною, але використовує значно менші ключі. 2048-бітний ключ RSA забезпечує еквівалентну безпеку 224-бітному ключу еліптичної кривої.
Порада: Наведені вище значення вважаються безпечними для комерційного використання, але АНБ вимагає більш надійних ключів для надсекретного шифрування. Потрібні принаймні 3072-бітні ключі RSA, тоді як потрібні 384-бітні ключі еліптичної кривої. Варто зазначити, що 3072-бітний ключ RSA слабший, ніж 384-бітний ключ еліптичної кривої.
Алгоритми асиметричного шифрування, як правило, відносно повільні порівняно з алгоритмами симетричного шифрування. Захищений зв’язок може здійснюватися через незахищений канал, якщо обидві сторони генерують асиметричну пару ключів, а потім обмінюються відкритими ключами. Таким чином обидві сторони можуть надсилати повідомлення, які може розшифрувати лише інша.
На практиці принаймні одна зі сторін повинна перевірити цілісність свого відкритого ключа. Це робиться через PKI або інфраструктуру відкритих ключів. Це має форму центрів сертифікації, які підписують ключі інших, щоб показати, що їхню особу перевірено. У цій системі всі центри сертифікації мають бути довіреними; без цього система розвалиться.
Використання на практиці
Алгоритми асиметричного шифрування зазвичай не використовуються для масового шифрування, особливо коли час або продуктивність є проблемою. Вони можуть використовуватися для шифрування одноразових повідомлень, наприклад вмісту електронної пошти. Однак їх здатність захищати незахищений канал робить їх чудовим вибором для протоколу обміну ключами, який передає симетричні ключі, які потім можна використовувати для більш ефективного масового шифрування.
Це варіант використання TLS, який забезпечує безпеку в HTTPS. Користувач підключається до веб-сервера; потім вони обмінюються відкритими ключами для шифрування невеликих повідомлень один одному. Потім сервер генерує симетричний ключ, шифрує його відкритим ключем користувача та надсилає йому. Користувач розшифровує ключ, а потім може використовувати симетричний ключ для ефективного шифрування майбутніх повідомлень на сервер.
Центр сертифікації в наведеному вище процесі перевіряє відкритий ключ сервера. Це дозволяє користувачеві бути впевненим, що він спілкується з тим, з ким намагається спілкуватися. У більшості випадків користувач створює одноразовий ключ, оскільки серверу не потрібно перевіряти, з яким користувачем він спілкується.
Висновок
Алгоритми асиметричного шифрування використовують два різні ключі. Один ключ використовується для шифрування, а інший для дешифрування. Ключі математично пов’язані та мають бути згенеровані за допомогою алгоритму генерації ключів; випадкові значення не працюють. Як правило, ключ шифрування є відкритим, що дозволяє будь-кому зашифрувати повідомлення, призначене для власника пари ключів.
Поки ключ розшифровки залишається закритим, лише власник ключа може розшифрувати повідомлення, зашифровані за допомогою відкритого ключа. Як таке, асиметричне шифрування часто також називають криптографією з відкритим ключем.