УДК 621.394/681.325
ВИКОРИСТАННЯ СПЕЩАЛЬНИХ ФУНКЦ1Й ДЛЯ ПРОГРАМНИХ ГЕНЕРАТОР1В ПСЕВДОВИПАДКОВИХ ПОСЛ1ДОВНОСТЕЙ
Танцюра Д.В., Зшъковсъкий Ю.Ф.
Проведено пор1внялъний анал1з генератор1в псевдовипадкових посл1довностей на основ1 одноб1чно1 функци з лаз1вкою. Приведет рекомендаци щодо тдвищення сттко-cmi та перюду генератор1в.
Вступ. Постановка задачi
Програмш та програмно-апаратш засоби генерацп псевдовипадкових послщовностей (ПВП) е головними елементами будь яко!' захищено!' комп'ютерно!' системи, незалежно вiд ll' складност та призначення. Серед задач, для ршення яких використовуються генератори ПВП: техшчне дiа-гностування, оперативний контроль виконання програм i процесiв, моде-лювання, завадостiйке стохастичне кодування, забезпечення безпеки систем (шифрування, програмш системи безпеки, електронний цифровий шд-пис[1]). Саме вiд властивостей генераторiв ПВП, особливо за необхiдностi забезпечити надшну стiйку роботу програмно! системи при наявност ви-падкових та спланованих деструктивних впливiв, в значнш мiрi залежить надiйнiсть процесiв накопичення, обробки, зберiгання та передавання ш-формацп. До програмних засобiв генерацп ПВП висувають жорстк вимо-ги, в першу чергу за такими параметрами, як непередбачувашсть, безпека реашзацп, статистичш та перiодичнi властивостi.
У зв'язку з тим, що побудова щеальних стохастичних пристро'в (при-стро! на основi "натуральних" випадкових процеш, наприклад бiлого ра-дiошуму) викликае певнi труднощi, на практицi використовують ПВП чисел, як можна побудувати за допомогою арифметичних алгоршшв (гене-раторiв). Апаратнi генератори будуються на окремих мжросхемах з влас-ними функцiями, а програмнi - на програмному кодi який виконуеться стандартизованими функщям. Найпоширенiшими варiантами е програмш генератори, що обчислюють ПВП як складну функщю вiд даного часу i (або) числа, яке вводить користувач. Найбшьш поширенi випадковi числа, що рiвномiрно розподiленi на вiдрiзку [0;1], та рiвноймовiрнi двiйковi ви-
падковi знаки an з умови P {аап = 0} = P {ап = 1} = 1/2 (тодi випадковою по-
слiдовнiстю бтв довжини n буде випадкова величина, яка набувае кожне значення iз значень {0;1}n з однаковою ймовiрнiстю (1/2)n).
Однобiчна функцiя з лазiвкою дае змогу побудувати криптографiчнi стiйкi генератори двiйкових ПВП. Таю генератори базуються на тих же важкорозв'язуваних задачах, що й криптографiя з вiдкритим ключем - фак-торизацiя складеного числа, добування корешв за модулем, дискретне ло-гарифмування. Наприклад, генератор BBS (генератор квадратичних лиш-
юв) - простий та ефективний генератор, що використовуе складшсть фак-торизацii великих чисел.
Принципи побудови i результати дослщження генератора
Можна використати HacTynHi принципи побудови генератора [1,2]:
1. Навмання вибираються простi числа p i q (велик1 простi числа, при-близно однакового розмiрy) з властивютю p ° 3(mod4), q ° 3(mod4) та об-числюеться цiле число Блюма (p ° q ° 3(mod4))n = p • q, щ числа p i q збе-рiгаються у таемнищ. Стiйкiсть генератора гаранту еться при умов^ що числа p i q простi (хоча на практищ задовольняються i квазi-простими числами): p%k Ф 0, к = p (1), де % - фyнкцiя залишку вщ дiлення. Тому необ-хiдно перевiряти ix "на простоту", або заздалепдь вибирати простi числа з вiдомоi множини. Перевiрка "на простоту" потребуе вiд 2 до 2p операцiй.
2. Випадково вибираеться з мyльтиплiкативноi групи лишк1в Z* шше цiле число х, взаемно просте з числом n: (x, n) = 1
3. Обчислюеться число x0 ° x2 (mod n) як початкове значення генератора.
4. За законом xt ° xf_1 (mod n) утворюеться послiдовнiсть чисел xt.
5. Шуканою двiйковою ПВП b1b2 (BBSnm (x0)) буде послщовшсть
молодших бiтiв чисел xi, тобто bi ° xi_1 (mod 2), i = 1; m.
Слйюсть генератора визначаеться фактом створення обчислювальноi системи або ж знаходженням певного алгоритму, за допомогою яких неса-нкцiоновано можна отримати вiрне значення початкового стану генератора. Даний генератор можна зламати методом "брутального зламу" або знайшовши прост числа p i q. В першому випадку хакеру вщомо число n та алгоритм генератора, тому можна визначити кшьюсть необхщних опе-рацiй на кожному крощ.
1. Спочатку визначаеться кшьюсть операцш для знаходження одного мо-жливого числа x: число x повинно бути взаемно простим з числом n, тому ви-користовуючи алгоритм Евклiда для знаходження найбшьшого спiльного дь льника двох чисел (x, n) n = xq0 + r1 x = r1q1 + r2 r1 = r2q2 + r3 • - , rn-1 = rnqn, r
- сшльт дiльники чисел (x, n). Найбшьший спiльний дiльник чисел (x, n), дорiвнюе rn, останньому не нульовому члену цiеi послiдовностi.
Отже, для знаходження одного можливого значення x - необxiдно вико-нати настyпнi дп: r1 = n%x r2 = x%r1 if (r2 = 1) ^ при цьому ключ можли-
вий, if (r2! = 1)^ вар1ант ключа в1дкидаеться. Отже на цю операцш витра-чаеться 3 дп (за даним алгоритмом).
2. Знаходження можливого початкового стану генератора x0 = n + x2%n. При цьому необхщно виконати щонайменше 3 дii.
3. Для знаходження одного значення можливого генератора
Ь =[xf_1 (modn)](mod2), i = 1;m де xi2_1 (modn) виконуеться xt = (i+1)n+
Тобто необхiдно 6 дш для знаходження одного значення.
Загальна формула кiлькостi операцiй на визначення можливого ключа для певно!' двшково!' ПВП: L = 3n + 3(1---n/lnn)(1 + 6y) де L - загальна не-
обхiдна кшьюсть операцiй, ln n ) - кшьюсть можливих варiантiв поча-
ткового стану генератора, y - кшьюсть бтв послiдовностi.
У випадку коли необхщна послiдовнiсть мае кшьюсть 1024 бщ то в пе-ревiреному програмному варiантi n теоретично може досягати величини вщ 263 • 263 = 2126 до 264 • 264 = 2128. Тобто L в даному випадку буде станови-
ти вщ ~2,55 • 1038 до 7,17 • 1040 операцiй.
Визначити i-й бiт ПВП без завчасного обчислення i-1 попереднiх бiтiв в звичайному генераторi Блюма можливо за умови, що вiдоме розкладання
модуля на множники: xj(n) ° 1( mod n ) ^ x( p_1)(g-1) = 1( mod n ). Звщси
Xi Х0
(mo (р ) (q )) ( mod n ) Тому за загальним методом факторизацп (методом пробного дшення) числа n: n%g = 0, g = 2,3,5,7• • • < Vn (алгоритм фак-торизацiï) для визначення простих чисел р i q. Перше знайдене g, яке задо-вольняе попереднш умов^ i буде одним з них (р або q), тодi друге легко
визначаеться. Тому при вщомш таблицi простих чисел до 4n необхiдно 4n/lnV« +1 операцiй, в iншому разi - (jn _ 1)-2•(¡n _2 +1), а вщтак
2,11 • 1017 та 6,8 • 1038 операцiй вiдповiдно.
Вщомий генератор типу RSA [2], який будуеться за допомогою iншоï однобiчноï функцiï, що е основою криптосистеми RSA:
xi+1 ° xet (mod n), (e, (p _ 1) • (q _ 1)) = 1, n = p • q, x0 p n ; де p i q - велик прост! числа (закритий ключ), x0 - випадкове початкове число. Його стшюсть базуеться на використанш складностi факторизацiï великих чисел. Тому алгоритм факторизацп теж тдходить для зламу, хоча - не-достатнш.
Можна визначити кшьюсть операцш для "брутального зламу" програм-но!' реалiзацiï цього генератора.
Так як числа p i q - невщом^ то спочатку необхщно знайти ïx. Тодi можна знайти значення ( p _ 1)( q _ 1). Далi за допомогою умови (e, (p _ 1) • (q _ 1)) = 1 знаходиться ключ e.
1. Для знаходження одного можливого значення e необхщно виконати наступш дп: r1 =( p _ 1)( q _ 1) % e r2 = e%r1 if (r2 = 1) ^ при цьому ключ
можливий if (r2!= 1)^ вар1ант ключа в1дкидаеться.
Отже на цю операцш витратиться вщ 3 до 3 ( p _ 1)( q _ 1) дш.
2. У зв'язку з тим, що x0 p n, x0 - випадкове початкове значення генератора, теж невщоме (секретний елемент), але для надшност лежить в межах p...n, то можна визначити приблизну кшьюсть операцш необхщних для зламу програмно1 реалiзацiï цього генератора:
L = 2,111017...6,8-1038 + 3...3 ( p -1)( q -1) + ( 6 y )( n - p )
тут L - загальна необхщна юльюсть операцш, y - юльюсть бтв посль довностi. Тобто при y = 1024, L буде в межах 5,22 • 1041 до 5,24 • 1041, але юнують алгоритми, якi швидше (потребують меншоï кiлькостi операцiй) можуть визначити параметри генератора.
Для генерацiï (i для зламу) генераторiв необхiдне виршення проблеми генерацiï великих простих чисел. Також для бiльшоï непередбачуваностi, унеможливлення вiдтворення та пiдвищення надiйностi програмш генера-тори комбiнують з апаратними, точшше початковi параметри програмних генераторiв формують з "натуральних" випадкових процешв: параметри вводить сам користувач, або вони генеруються з часу, встановленому у си-стемi, або вибираються з сигналу звуково", вiдео карти комп'ютера, або з часових iнтервалiв мiж натисканням клавiш користувачем. Тому можна за-пропонувати наступний генератор, який в деяюй мiрi можна назвати про-грамно-апаратним, це варiант генератора Блюма, але зi сво1ми особливос-тями. В ньому число p - генеруеться з числа, яке вводить користувач. Число q - генеруеться з значень дати i часу системи за допомогою хеш-функцп. У випадку, коли не виконуеться принцип (1), вибираеться най-ближче до генерованого просте число: p = p -1, p%k ф 0, к = 1- • • p Для
визначення початкового стану генератора використовуеться випадкове ^i стандартного простого системного генератора) число к - цше ( к p 10) i не нуль: x0 = кп + x2%n. Тобто кожний бгг ПВП генеруеться генератором з новим початковим станом, що у багато разiв ускладнюе "брутальний злам", але потребуе глибоких статистичний дослщжень (тестiв на випадковють та повторюванiсть). Кожне значення ПВП генеруеться новим (тим самим, але з новим початковим значенням) генератором, тому можна стверджувати про непередбачувано величезний (в 10...10! разiв бшьший за звичайний генератор Блюма) перюд розглянутого генератора. Навт при тих самих початкових значеннях (стану) генератора, вiдтворена ПВП буде вiдрiзня-тися вiд передбачено1\
Запропонований генератор можна зламати методом "брутального зламу", але знайшовши нав^ь прост! числа p i q, його злам, як генераторiв RSA та простого генератора Блюма, буде ускладнений, бо можна знайти тшьки один бщ а не всю послщовшсть ПВП. Можна визначити к1льк1сть необхщних опе-рацiй на кожному крощ за умови, що вiдомо число n та алгоритм генератора (найпрший можливий випадок).
1. Визначення юлькосп операцш для знаходження одного можливого числа х, виконуеться, як i ранiше, за допомогою алгоритму Евкшда. Отже, для знаходження одного можливого значення х - необидно виконати 3 ди.
2. Для знаходження можливого початкового стану генератора х0 = kn + х2%n, k - цше i не нуль. Необхiдно виконати щонайменше 4 дп.
3. Для знаходження одного значення можливого генератора, так само як i в попередньому випадку, необхщно 6 дш для одного значення.
Загальна формула кшькосп операцш на визначення можливого ключа для певно! двшково! ПВП буде: L = 3n + 4 (1--- n/ln n) k (1 + 6y), де L - загальна необхщна юльюсть операцiй, ln n) - юльюсть можливих варiан-пв початкового стану генератора, y - кшьюсть бтв послiдовностi. При ге-нерацп 1024 6гтно1' послiдовностi, n теоретично може досягати значень вщ 263 • 263 = 2126 до 264 • 264 = 2128. Тобто L в даному випадку, при k = 7, буде становити вщ f 2,55 • 1038 до 6,61 • 1041 операцiй.
Висновки
Надшнють генераторiв ПВП базуеться на випадковост та секретностi по-чаткових параме^в, тому доцiльно для тдвищення надiйностi та стiйкостi -використовувати не програмш, а програмно-апаратнi генератори, швидкодiя яких незначно вiдстае вщ програмних. Можна рекомендувати використовувати алгоритм генераторiв з непостiйним перюдом, як це запропоновано в данш стагтi (модифiкований генератор Блюма), але достатнiм для необхiдноi ПВП. Обов'язковим е дослщження генераторiв за допомогою статистичних тестiв, бо, навiть, складний генератор iнколи можна легко передбачити неочь куваними простими функцiями. Рекомендувати для криптографiчних цшей чисто апаратш генератори недоцiльно, оск1льки вони обмежеш жорсткими вимогами до вбудовано1 пам'яп, швидкодп та площi (кiлькостi комiрок), що ускладнюе забезпечення та тдвищення криптостшкосп.
Л1тература
1.Танцюра Д.В., Зшьковський Ю.Ф. Надшшсть захисту шформацп системи елек-тронного цифрового тдпису//В1сник НТУУ «КП1» Сер1я - Радютехшка. Радюапаратобудування.-2007.-№°34, стор. 156-163.
2.Математичш основи криптографа: Навч. поабник / Кузнецов Г.В. та ш. - Дншро-петровськ: Нащональний прничий ушверситет, 2004. - Ч. 1. - 391 с.
3.Тесты DIEHARD : http://stat.fsu.edu/pub/diehard/_
Ключов1 слова: криптограф1я, генератор, псевдовипадковоi послщовносп
Танцюра Д.В., Зиньковский Ю.Ф. Использование специальных функций для программных генераторов псевдослучайных последовательностей Проведен сравнительный анализ генераторов псевдослучайных последовательностей на основе функции с уловкой. Приведены рекомендации по повышению стойкости и периода генераторов. Tantsyura D.V., Zinkovskiy Y.F. The using of the special function for the program generators pseudorandom sequences It is organize benchmark analysis generator pseudorandom sequences on base of the unilateral function with trick. Recommendations on increasing of stability and period of generator are brought