Криптографічний примітив
Криптографічні примітиви — це чітко визначені криптографічні алгоритми низького рівня, які часто використовуються для побудови криптографічних протоколів комп'ютерних систем безпеки. Стандартний примітив зазвичай включає в себе стійкі хеш-функції та функції шифрування.
При створенні криптографічних систем розробники використовують криптографічні примітиви як базові структурні елементи. Враховуючи це, криптографічні примітиви призначені для виконання конкретних завдань і характеризуються високою надійністю.
Оскільки криптографічні примітиви використовуються в якості «будівельних блоків», вони повинні бути дуже надійними, тобто відповідати до цієї специфікації. Наприклад, якщо процедура шифрування передбачає розбиття комп'ютерних операцій на X частин, то при виконанні процедури зі значно меншим розбиттям X, криптографічний примітив повідомить про неможливість здійснення цієї операції. Якщо виявиться, що майже кожне виконання криптографічного примітиву дає збій, то протокол, який його використовує, стає вразливим. Оскільки створення криптографічних процедур є нелегкою задачею, тестування їх на надійність займає багато часу та практично ніколи не буде змісту розробляти новий криптографічний примітив, який відповідає потребам нової криптографічної системи. Причини включають в себе:
- Розробник може бути не компетентним в математичних і практичних областях, пов'язаних з криптографічними примітивами.
- Розробка нового криптографічного примітиву дуже трудомісткий і непростий процес навіть для експертів в цій галузі.
- Алгоритми в цій області повинні бути не тільки добре продуманими, але й також повинні бути добре протестовані спільнотою, бо навіть якщо криптографічні процедури з точки зору розробника виглядають безпечними, вони можуть містити помилки. Така пильна увага дає упевненість в тому, що алгоритм дійсно безпечний у використанні, адже документація по безпеці для криптографічних примітивів, як правило, недоступна.
Криптографічні примітиви схожі в певному сенсі на мови програмування. Програміст рідко винаходить нову мову програмування для написання нової програми; замість цього, він використовує одну із вже сформованих мов програмування для вирішення задачі.
Криптографічні примітиви є одним з структурних елементів будь-якої системи шифрування, наприклад, протоколів TLS, SSL, SSH і т. д. Розробники систем шифрування, які не можуть повністю забезпечити безпеку даних, мають використовувати безпечні криптографічні примітиви. Вибір найбільш надійного примітиву, який доступний для використання в протоколі, як правило, забезпечує найкращу безпеку даних. Однак, комбінації примітивів в будь-якій системі шифрування може призвести до недоліків і задача розробників уникнути їх.
- Одностороння хеш-функція, яку іноді називають як однусторонню функцію стиснення — обчислення меншого значення хешу для повідомлення (наприклад, sha-256)
- Шифрування з симетричним ключем — обчислення текста-шифру, що декодується тим ключем, який використовується для шифрування (наприклад, AES)
- Шифрування з відкритим ключем — обчислення текста-шифру, що декодується іншим ключем, який використовується для шифрування (наприклад, RSA)
- Цифровий підпис — підтвердження авторства повідомлення
- Криптографічно стійкий генератор псевдовипадкових чисел
Криптографічні примітиви, самі по собі, досить обмежені. Вони не можуть бути розглянуті належним чином в рамках криптографічної системи. Наприклад, голий алгоритм шифрування немає ні механізму автентифікації, ні будь-якої явної перевірки повідомлення. Тільки при поєднанні протоколів шифрування можуть бути реалізовані декілька вимог безпеки. Наприклад, для того щоб передати повідомлення, яке не тільки зашифроване, але й захищене від взлому (тобто є конфіденційне і цілісне), процедури кодування, наприклад, DES, і звичайні хеш-функції, такі, як SHA-1 можуть використовуватися в комбінації. Якщо зловмисник не знає ключа шифрування, він не може модифікувати повідомлення, тобто значення цифр в повідомленні будуть дійсні.
Поєднання криптографічних примітивів для створення протоколу безпеки саме по собі є цілою спеціалізацією. Більшість помилок, що використовувались (тобто ненадійність в криптографічних системах) обумовлені не конструктивними помилками примітивів (припускаючи, що вони завжди були обрані з обережністю), але й тим, як вони використовуються, наприклад, не правильна розробка протоколу та помилка або недостатньо ретельне виконання. Математичний аналіз протоколів, на момент написання цієї статті, не є повний. Є кілька основних властивостей, які можна перевірити за допомогою автоматичних методів, таких як БАН логіка. Існують навіть методи повної перевірки (наприклад, SPI обчислення), але вони є надзвичайно громіздкими та не можуть бути автоматизованими. Розробка протоколу — це мистецтво, що вимагає глибоких знань та практики; навіть тоді помилки є спільними. Ілюстративний приклад для реальної системи можна побачити на сторінці новин про вразливість OpenSSL тут [Архівовано 23 жовтня 2020 у Wayback Machine.].
- Категорія:Криптографічні примітиви — список криптографічних примітивів
- Levente Buttyán, István Vajda: Kriptográfia és alkalmazásai (Cryptography and its applications), Typotex 2004, ISBN 963-9548-13-8
- Menezes, Alfred J: Handbook of applied cryptography, CRC Press, ISBN 0-8493-8523-7, October 1996, 816 pages.
- Crypto101 [Архівовано 12 червня 2018 у Wayback Machine.] is an introductory course on cryptography, freely available for programmers of all ages and skill levels.