істю ключа, а не секретністю алгоритму шифрування. У деяких ситуаціях (наприклад, у військових, розвідувальних і дипломатичних відомствах) немає ніяких причин робити загальнодоступним опис суті криптосистеми. Зберігаючи таку інформацію в таємниці, можна додатково підвищити надійність шифру. Однак покладатися на секретність цієї інформації не слід, оскільки рано чи пізно вона буде скомпрометована. Тому аналіз надійності таких систем завжди повинен проводитися виходячи з того, що противник має всю інформацію про застосовуваний криптоалгоритм, йому невідомий тільки реально використаний ключ [6]. У зв'язку з вищевикладеним можна сформулювати загальне правило: при створенні або при аналізі стійкості криптосистем не слід недооцінювати можливості противника. Їх краще переоцінити, ніж недооцінити.
Стійкість криптосистеми залежить від складності алгоритмів перетворення, довжини ключа, а точніше, від обсягу ключового простір, методу реалізації: при програмній реалізації необхідно додатково захищатися від руйнуючих програмних впливів - закладок, вірусів і т. п. Хоча поняття стійкості шифру є центральним у криптографії, кількісна оцінка криптостойкости - проблема досі невирішена.
Методи оцінки якості криптоалгоритмов, використовувані на практиці [7, 9]:
) всілякі спроби їх розкриття;
) аналіз складності алгоритму дешифрування;
З) оцінка статистичної безпеки шифру.
У першому випадку багато залежить від кваліфікації, досвіду, інтуїції криптоаналитика і від правильної оцінки можливостей противника. Зазвичай вважається, що супротивник знає шифр, має можливість його вивчення, знає деякі характеристики відкритих даних, що захищаються, наприклад тематику повідомлень, їх стиль, стандарти, формати і т.п. В [7] наводяться такі приклади можливостей супротивника:
противник може перехоплювати всі зашифровані повідомлення, але не має відповідних їм відкритих текстів;
противник може перехоплювати всі зашифровані повідомлення і добувати відповідні їм відкриті тексти;
противник має доступ до шифру (але не ключам) і тому може зашифровувати і розшифровувати будь-яку інформацію.
У другому випадку оцінку стійкості шифру замінюють оцінкою мінімальної складності алгоритму його розкриття. Однак отримати строго доказові оцінки нижньої межі складності алгоритмів розглянутого типу не представляється можливим. Іншими словами, завжди можлива ситуація, коли алгоритм розтину шифру, складність якого аналізується, виявляється зовсім не найефективнішим.
Складність обчислювальних алгоритмів можна оцінювати числом виконуваних елементарних операцій, при цьому, природно, необхідно враховувати їх вартість і витрати на їх виконання. У загальному випадку то число повинно мати строгу нижню оцінку і виходити за межі можливостей сучасних комп'ютерних систем. Якісний шифр неможливо розкрити способом більш ефективним ніж повний перебір по всьому ключовому простору, при цьому криптограф повинен розраховувати тільки на те, що у супротивника не вистачить часу і ресурсів, щоб це зробити.
Алгоритм повного перебору по всьому ключовому простору - це приклад так званого експоненціального алгоритму. Якщо складність алгоритму виражається таким собі многочленом (поліномом) від