Криптографічно стійкий генератор псевдовипадкових чисел
Криптографічно стійкий генератор псевдовипадкових чисел — генератор псевдовипадкових чисел, який задовільняє додатковим умовам. Зокрема, він має генерувати такі послідовності, які не здатен відрізнити від повністю випадкових послідовностей жоден ефективний алгоритм за поліноміальний час. Іншими словами, жоден статистичний тест не буде здатен відрізнити отриману послідовність псевдовипадкових чисел від насправді випадкової послідовності[1].
Таким чином, генерована послідовність:[2]
- повинна мати якнайбільш можливий період;
- не повинна мати прихованих періодів;
- повинна мати різномірний спектр.
Опис
Безпека деяких алгоритмів шифрування залежить від стійкості генератора випадкових чисел завдяки якому формується ключ або послідовність біт. Шифри з досконалою стійкістю потребують повністю випадкового ключа такої ж довжини, як і вихідний ключ. Проте у більшості випадків, насправді випадкові послідовності біт необхідної довжини не доступні. Тому були розроблені методи отримання псевдовипадкових послідовностей. Такі послідовності можуть справляти враження випадкових, але отримані вони в результаті роботи детермінованого алгоритму. Такі алгоритми називають генераторами псевдовипадкових чисел. Отримавши порівняно невеликий випадковий вхідний рядок (так зване випадкове початкове значення — англ. seed), такі алгоритми здатні обчислити доволі довгі псевдовипадкові послідовності[1].
Звичайні генератори псевдовипадкових послідовностей можуть обчислювати послідовності з якісними статистичними показниками. Отримані послідовності можуть бути придатними для використання в методах Монте-Карло, але непридатними для використання в криптографічних алгоритмах. Наприклад, таємні параметри генераторів псевдовипадкових послідовностей на основі лінійного конгруентного методу або на основі регістру зсуву з лінійним зворотнім зв'язком можут бути відтворені з доволі невеликої кількості згенерованих ними елементів послідовності. Таким чином, стає можливим відтоврити всю згенеровану ними послідовність[1].
Серед відомих методів побудови криптографічно стійких генераторів псевдовипадкових послідовностей важливу роль відіграють генератори на основі односторонніх підстановок[1].
Слід зазначити, що навіть найкращий генератор псевдовипадкових послідовностей потребує джерело дійсно випадкових чисел для отримання початкового значення[1].
Властивості
Оскільки генератори псевдовипадкових чисел є детермінованими алгоритмами, тому буть-хто здатен обчислити елементи генерованої послідовності для заданого початкового значення (англ. seed). А оскільки, зазвичай, алгоритми таких генераторів загально відомі, особливі зусилля мають бути скеровані на те, що б втаємничити їхні початкові значення та унеможливити їхнє обчислення на основі згенерованої послідовності. Крім того, саме початкове значення бажано зробити випадковим та непередбачуваним[3].
Властивості генераторів псевдовипадкових чисел оцінюють з використанням низки кількісних показників, основними з яких є:[4]
- період (довжина) послідовності псевдовипадкових чисел;
- основа алфавіту ;
- ймовірність перекриття в просторі або в часі двох сегментів та , тобто в різних абонентів або в одного абонента протягом часу, так, що ;
- структурна скритність (еквівалентна складність) послідовності ;
- кількість (ентропія джерела) ключів для випадку, коли генератор випадкових чисел використовують як джерело ключів;
- відстань рівнозначності конкретної послідовності ;
- безпечний час генератора випадкових чисел ;
- складність формування послідовності ;
- довжина параметрів зворотного зв'язку;
- властивості випадковості, рівноймовірності, незалежності та однорідності.
За всіма названими показниками до генератора послідовностей псевдовипадкових чисел висувають низку вимог. Так, період повторення , тобто повинен бути не менше заданого, можливість змінної основи алфавіту , ймовірність перекриття менше допустимої, структурна скритність , ентропія джерела ключів , відстань рівнозначності , безпечний час , тобто не менш допустимих. Крім того, реалізації i повинна задовольняти вимогам випадковості, рівноймовірності, незалежності та однозначності[4].
Крім того, до генераторів псевдовипадкових послідовностей можуть бути висунуті вимоги прямої стійкості (англ. forward unpredictability): попри знання всіх попередніх чисел послідовності наступні числа мають бути непередбачуваними якщо не відоме початкове значення генератора. Зворотна стійкість вимагає унеможливити обчислення початкового значення на основі будь-якої кількості згенерованих чисел послідовності. Кореляція між початковим значенням та згенерованою послідовністю має бути неочевидною, а кожен наступний елемент має справляти враження реалізації випадкової події з імовірністю ½[3].
Стандарти
Загальним підходом до генерування ключів, ключової інформації та параметрів є стандартизація методів, механізмів і практичних (конкретних) алгоритмів їх генерування[4].
Нині розроблені та прийняті регіональні і міжнародні стандарти, у яких визначені вимоги, методи, механізми та алгоритми реалізації генераторів. Оскільки при застосуванні засобів криптографічного захисту інформації необхідністю є відновлення ключів та ключової інформації у просторі й часі, у зазначених стандартах розглянуті лише детерміновані генератори випадкових бітів[4].
Базовими міжнародними стандартами, що стандартизують алгоритми генерації послідовностей випадкових чисел є:[4]
- міжнародний стандарт ISO/IEC 18031 «Information technology — Random number generation», який визначає алгоритми генерації псевдовипадкових і випадкових чисел, а також визначає статистичні тести перевірки генераторів;
- міжнародний стандарт ISO/IEC 18032 «Information technology — Prime number generation», який визначає методи генерації простих чисел і методи тестування чисел на простоту;
- національний стандарт ДСТУ ISO/IEC19790 «Інформаційна технологія — Методи захисту — Вимоги щодо захисту для криптографічних модулів».
Додаткові вимоги до алгоритмів та реалізацій методів і засобів генерації та тестування послідовностей випадкових чисел визначені національними та промисловими стандартами США: FIPS 140-3, ANSI X9.17, ANSI X9.31, ANSI X9.44 та ін., а також рекомендаціями NIST — NIST SP 800-22 і рекомендаціями органу зі стандартизації Німеччини — AIS-20, AIS-31 та інші[4].
Одним із важливих та необхідних напрямків досліджень при створенні ефективних генераторів випадкових чисел та генераторів псевдовипадкових чисел є розробка методів та засобів оцінки статистичних властивостей випадкових послідовностей. Статистичні показники та побудовані на їх основі критеріїв оцінки є інструментом перевірки правильності технічних рішень щодо побудови генераторів випадкових чисел. Дослідження статистичних властивостей здійснюються у рамках методики статистичних випробувань на основі статистичних тестів[4].
Найбільш прийнятними (з точки зору практичного використання) методиками тестування є методики NIST STS, FIPS PUB 140-1, AIS 20 та AIS 31[4].
Приклади
- ANSI X9.17
Генератор псевдовипадкових послідовностей визначений у стандарті ANSI X9.17 (Financial Institution Key Management (wholesale)) пройшов сертифікацію та прийнятий як стандарт FIPS. На вході він отримує TDEA (варіант ключів 2) набір ключів k та випадкове початкове число розміром 64 біт s.[5] Для обчислення наступного псевдовипадкового числа послідовності він:
- Бере поточний час D з найбільшою доступною точністю (мілісекунди, тощо).
- Обчислює проміжне значення t = TDEAk(D)
- Обчислює псевдовипадкове число x = TDEAk(s ⊕ t), де ⊕ позначає побітову операцію виключної диз'юнкції.
- Оновлює значення початкового числа s = TDEAk(x ⊕ t)
Вади реалізацій
DUHK
Попри відповідність алгоритму формальним вимогам стандартів його реалізації можуть мати вади. Так, в жовтні 2017 року група дослідників оприлюднила доповідь про виявлену ними ваду у деяких апаратних реалізаціях генераторів псевдовипадкових чисел. Зокрема, йдеться про уразливість в реалізації генератора псевдовипадкових чисел ANSI X9.31 Random Number Generator (RNG), коли в пристрої виробником закодовано одне єдине початкове значення генератора замість використання випадкового числа обчисленого іншим генератором випадкових чисел[6].
Генератори ANSI X9.31 мають доволі широке використання в пристроях для генерації ключів шифрування VPN, SSL/TLS, IPsec, тощо[6][7].
Також дослідники розробили алгоритм атаки на знайдену ними вразливість. Алгоритм отримав назву DUHK (англ. Don't Use Hard-coded Keys) та дозволяє зловмиснику відтворити зашифровані дані аж до встановлення сеансового ключа[6].
Дослідникам вдалось встановити 12 продуктів, які успішно пройшли сертифікацію FIPS 140-2, але в яких присутня дана вада[6]. Зокрема, вразливість була виявлена в популярній системі FortiOS v4 версії 4.3.17[7].
Примітки
- Hans Delfs, Helmut Knebl (2007). 8.1 Computationally Perfect Pseudorandom Bit Generators. Introduction to Cryptography. Information Security and Cryptography (вид. 2-ге). Springer. ISBN 978-3-540-49243-6.
- Олег Ігорович Гарасимчук, Володимир Миколайович Максимович. Генератори псевдовипадкових чисел, їх застосування, класифікація, основні методи побудови і оцінка якості // Захист інформації. — 2003. — Т. 5, вип. 16. — DOI: .
- 1.1.2 Unpredictability. A Statistical Test Suite for the Validation of Random Number Generators and Pseudo Random Number Generators for Cryptographic Applications. Special Publication (вид. Revision 1a). NIST. квітень 2010. NIST 800-22.
- О. А. Замула, Д. О. Семченко, Ю. В. Землянко. Аналіз і обґрунтування критеріїв і показників ефективності криптографічних генераторів псевдовипадкових чисел // Системи обробки інформації. — 2014. — Вип. 120. — С. 131-136.
- Handbook of Applied Cryptography, Alfred Menezes, Paul van Oorschot, and Scott Vanstone, CRC Press, 1996, Chapter 5 Pseudorandom Bits and Sequences (PDF)
- Catalin Cimpanu (24 жовтня 2017). DUHK Crypto Attack Recovers Encryption Keys, Exposes VPN Connections, More. Bleeping Computer.
- Shaanan Cohney, Nadia Heninger, and Matthew D. Green. Practical state recovery attacks against legacy RNG implementations.
Література
Див. також
Посилання
- A Statistical Test Suite for the Validation of Random Number Generators and Pseudo Random Number Generators for Cryptographic Applications. Special Publication (вид. Revision 1a). NIST. квітень 2010. NIST 800-22.
- RFC 4086 Randomness Requirements for Security (2005)
- Random Bit Generation на сайті NIST