Ключ
Ключ - секретна інформація, яка використовується криптографічним алгоритмом для шифрування / дешифрування повідомлень, постановці і перевірці цифрового підпису, обчисленні кодів автентичності (MAC). При використанні одного і того ж алгоритму результат шифрування залежить від ключа. Для сучасних алгоритмів сильної криптографії втрата ключа призводить до практичної неможливості розшифрувати інформацію. Згідно з принципом Керхгоффса, надійність криптографічної системи повинна визначатися приховуванням секретних ключів, але не приховуванням використовуваних алгоритмів або їх особливостей.
Довжина ключа
Кількість інформації в ключі, як правило, вимірюється в бітах. Для сучасних симетричних алгоритмів (AES, CAST5, IDEA, Blowfish, Twofish) основною характеристикою криптостійкості є довжина ключа. Шифрування з ключами довжиною 128 біт і вище вважається сильним, так як для розшифровки інформації без ключа потрібні роки роботи потужних суперкомп'ютерів. Для асиметричних алгоритмів, заснованих на проблемах теорії чисел (проблема факторизації - RSA, проблема дискретного логарифма - Elgamal) в силу їх особливостей мінімальна надійна довжина ключа в даний час - 1024 біт. Для асиметричних алгоритмів, заснованих на використанні теорії еліптичних кривих (ECDSA, ГОСТ Р 34.10-2001, ДСТУ 4145-2002), мінімально надійною довжиною ключа вважається 163 біт, але рекомендуються довжини від 191 біт і вище.
Класифікація ключів
Криптографічні ключі розрізняються згідно алгоритмам, в яких вони використовуються.
- Секретні (Симетричні) ключі - ключі, що використовуються в симетричних алгоритмах (шифрування, вироблення кодів автентичності). Головна властивість симетричних ключів: для виконання як прямого, так і зворотного криптографічного перетворення (шифрування / дешифрування, обчислення MAC / перевірка MAC) необхідно використовувати один і той же ключ (або ж ключ для зворотного перетворення легко обчислюється з ключа для прямого перетворення, і навпаки ). З одного боку, це забезпечує більш високу конфіденційність повідомлень, з іншого боку, створює проблеми розповсюдження ключів в системах з великою кількістю користувачів.
- Асиметричні ключі - ключі, що використовуються в асиметричних алгоритмах (шифрування, ЕЦП); взагалі кажучи, є ключовою парою, оскільки складаються з двох ключів:
- Закритий ключ (en: Private key) - ключ, відомий тільки своєму власнику. Тільки збереження користувачем у таємниці свого закритого ключа гарантує неможливість підробки зловмисником документа і цифрового підпису від його імені. - Відкритий ключ (en: Public key) - ключ, який може бути опублікований і використовується для перевірки дійсності підписаного документа, а також для попередження шахрайства з боку особи у вигляді відмови його від підпису документа. Відкритий ключ підпису обчислюється, як значення деякої функції від закритого ключа, але знання відкритого ключа не дає можливості визначити закритий ключ.
Головна властивість ключової пари: по секретному ключу легко обчислюється відкритий ключ, але за відомим відкритим ключем практично неможливо вирахувати секретний. В алгоритмах ЕЦП підпис звичайно ставиться на секретному ключі користувача, а перевіряється на відкритому. Таким чином, будь-хто може перевірити, чи дійсно цей користувач поставив даний підпис. Тим самим асиметричні алгоритми забезпечують не тільки цілісність інформації, але і її автентичність. При шифруванні ж навпаки, повідомлення шифруються на відкритому ключі, а розшифровуються на секретному. Таким чином, розшифрувати повідомлення може тільки адресат і більше ніхто (включаючи відправника). Використання асиметричних алгоритмів знімає проблему розповсюдження ключів користувачів в системі, але ставить нові проблеми: достовірність отриманих ключів. Ці проблеми більш-менш успішно вирішуються в рамках інфраструктури відкритих ключів (PKI).
- Сеансові (сесійні) ключі - ключі, що виробляються між двома користувачами, зазвичай для захисту каналу зв'язку. Зазвичай сеансовим ключем є загальний секрет - інформація, яка виробляється на основі таємного ключа одного боку і відкритого ключа іншого боку. Існує декілька протоколів вироблення сеансових ключів і загальних секретів, серед них, зокрема, алгоритм Діффі - Хеллмана.
- Підключі - ключова інформація, яка виробляється в процесі роботи криптографічного алгоритму на основі ключа. Найчастіше підключі створюються на основі спеціальної процедури розгортання ключа.