Научная статья на тему 'Экспериментальные исследования эффективности генераторов псевдослучайных чисел, базирующихся на криптографических алгоритмах RC5 и RC6'

Экспериментальные исследования эффективности генераторов псевдослучайных чисел, базирующихся на криптографических алгоритмах RC5 и RC6 Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
360
118
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Рябко Б. Я., Стогниенко В. С., Шокин Ю. И.

Работа выполнена при финансовой поддержке Российского фонда фундаментальных исследований, грант № 98-01-00772. Рассматривается использование криптографических алгоритмов RC5 и RC6 как генераторов псевдослучайных чисел, приводится их краткое описание и результаты выполненного исследования. Даются практические рекомендации по использованию этих алгоритмов.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Experimental study of generators of pseudo-random numbers efficiency based on cryptographic algorithms RC5 and RC

Making use of cryptographic algorithms RC5 and RC6 is considered as the generators of pseudo-random numbers. The algorithms RC5 and RC6 are briefly described. Practical recommendations for the application are given.

Текст научной работы на тему «Экспериментальные исследования эффективности генераторов псевдослучайных чисел, базирующихся на криптографических алгоритмах RC5 и RC6»

Вычислительные технологии

Том 5, № 6, 2000

ЭКСПЕРИМЕНТАЛЬНЫЕ ИССЛЕДОВАНИЯ ЭФФЕКТИВНОСТИ ГЕНЕРАТОРОВ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ, БАЗИРУЮЩИХСЯ НА КРИПТОГРАФИЧЕСКИХ

АЛГОРИТМАХ RC5И RC6*

Б. Я. Рявко, В. С. Стогниенко, Ю.И. Шокин Институт вычислительных технологий СО РАН Новосибирск, Россия e-mail: [email protected]

Making use of cryptographic algorithms RC5 and RC6 is considered as the generators of pseudo-random numbers. The algorithms RC5 and RC6 are briefly described. Practical recommendations for the application are given.

В период стремительного развития вычислительной техники и вычислительных технологий необычайно актуальными становятся разработка, поиск и исследования "хороших", ориентированных на новые технологии генераторов псевдослучайных чисел. "Случайно выбранные" числа широко используются во многих приложениях и применяются для самых различных целей: моделирования, программирования, численного анализа, выборки, компьютерных игр и пр. Например, фирма Intel генератор псевдослучайных чисел использует в процессорах Pentium III [1].

В практических приложениях наиболее широкое применение нашли три способа генерации псевдослучайных чисел: аппаратный, табличный и алгоритмический [2].

Аппаратный способ предполагает использование специальной электронной приставки — генератора (датчика). В качестве физического эффекта, лежащего в основе таких генераторов, обычно используются шумы в полупроводниковых приборах, реже — явление распада радиоактивных элементов. Как правило, такие устройства позволяют получать равномерно распределенные на интервале [0, 1] числа. Реализация аппаратного способа не требует никаких специальных вычислительных процедур, однако он не гарантирует качества последовательности (см. п. 2 настоящей статьи).

При табличном способе эталонную таблицу псевдослучайных чисел оформляют в виде отдельного файла, который помещают в оперативную или внешнюю память ЭВМ, и обращаются к нему по мере необходимости, но такой способ получения псевдослучайных чисел целесообразно использовать только при небольшом объеме таблицы.

* Работа выполнена при финансовой поддержке Российского фонда фундаментальных исследований, грант №98-01-00772.

© Б. Я. Рябко, В. С. Стогниенко, Ю.И. Шокин, 2000.

Алгоритмический способ основан на формировании псевдослучайных чисел в ЭВМ с помощью специальных алгоритмов и реализующих их программ. Каждое псевдослучайное число вычисляется обращением к соответствующей процедуре. К достоинствам способа относятся: достаточность единственной проверки качества последовательности, возможность многократного воспроизведения одной и той же последовательности, отсутствие необходимости использования внешних устройств, малый занимаемый объем памяти. Однако то, что запас чисел последовательности ограничен ее периодом и велики затраты машинного времени, можно отнести к недостаткам этого способа.

Указанные преимущества алгоритмического способа формирования базовой последовательности псевдослучайных чисел определяют его наибольшую пригодность по сравнению с двумя другими способами. В настоящей статье в качестве генераторов псевдослучайных чисел рассматриваются два криптографических алгоритма.

При оценке алгоритмов генераторов псевдослучайных чисел для электронных вычислительных устройств в первую очередь рассматриваются качество и быстродействие. Для оценки качества последовательности разработано большое количество тестов [3]. Высокая скорость изначально закладывается при разработке алгоритмов с учетом возможностей современных вычислительных платформ. В последнее время многие авторы, например, [4] рекомендуют использовать криптографические алгоритмы в качестве датчиков псевдослучайных чисел, поскольку они хорошо "перемешивают" входные данные и делают их почти независимыми, а также обрабатывают информацию с очень высокой скоростью (4 такта на байт сообщения) [5].

В 1994 году впервые появилось описание криптографического алгоритма шифрования RC5, а в 1998 г. — алгоритма RC6*. По сравнению с традиционными алгоритмами генерации псевдослучайных чисел эти алгоритмы обладают многими достоинствами, в том числе высоким быстродействием. Они рекомендованы для генерации последовательности псевдослучайных чисел [4], но на сегодняшний день каких-либо статистических данных по применению генераторов псевдослучайных чисел на основе этих алгоритмов не опубликовано. Мы попытались восполнить этот пробел. Целью настоящей работы является программная реализация и статистический анализ генераторов псевдослучайных чисел, базирующихся на алгоритмах RC5, RC6, и составление рекомендаций по их применению.

1. Алгоритм RC5

Внимание многих исследователей привлек алгоритм шифрования RC5, разработанный профессором Р. Ривестом для лаборатории RSA Data Security [6]. Для алгоритма характерны следующие свойства:

— адаптивность к аппаратным и программным средствам, которая обеспечивается использованием примитивных вычислительных операций, обычно присутствующих на типичных микропроцессорах;

— высокое быстродействие, так как в базисных вычислительных операциях операторы работают на полных словах данных;

— адаптивность к процессорам различных длин слова. Количество бит в слове w входит в число параметров алгоритма;

0В 2000 г. алгоритм RC6 в числе пяти других вышел в финал конкурса на лучший криптографический алгоритм шифрования Advanced Encryption Standard (AES), объявленный в 1997 г. Национальным институтом стандартов и технологий (США).

— наличие параметра г — количества раундов (итераций), — отвечающего за "степень перемешивания". Пользователь может выбирать между более высоким быстродействием и перемешиванием;

— низкое требование к памяти, что позволяет реализовывать алгоритм на устройствах с ограниченной памятью;

— применение циклических сдвигов, зависимых от данных, с "переменным" количеством сдвигов (на современных микропроцессорах время использования не зависит от количества циклических сдвигов);

— простота.

В алгоритме И.С5 используются только три примитивных операции (и их инверсии), которые непосредственно и эффективно поддерживаются большинством процессоров:

1. Двоичное сложение слов по модулю 2'ш (" +" — символ операции). Обратная операция вычитание (" —" — символ операции).

2. Побитовое исключающее ИЛИ (ф — символ операции).

3. Левый сдвиг слов, х <<< у ("<<<" — символ операции сдвига), — циклический сдвиг влево слова х на количество позиций, заданное в у. Здесь у интерпретируется по модулю т так, чтобы только ^(эд) бит младшего разряда у использовались для определения количества циклических сдвигов (^(эд) обозначает двоичный логарифм от т). Правый сдвиг обозначен соответственно х >>> у.

Алгоритм И.С5 включает алгоритм расширения ключа и алгоритм шифрования.

Алгоритм расширения ключа. Алгоритм расширения ключа заполняет расширенную таблицу ключа Б размером £ = 2(г + 1) произвольных двоичных слов, он использует две "волшебные" константы Pw и Qw (кратные слову) и состоит из трех простых алгоритмических частей. Эти константы определены для произвольного т следующим образом:

Pw = оаа((е — 2^); Qw = оаа((в — );

где е = 2.718281828459... (основание натурального алгоритма); в = 1.618033988749... (золотое сечение); Оаа(х) — нечетное целое число, самое близкое к х. Для т = 16, 32 и 64 эти константы даны ниже в двоичном и шестнадцатеричном виде: Р16 = 1011011111100001 = ЫвХ Р16 = 1001111000110111 = 9в37

Р32 = 10110111111000010101000101100011 = Ъ7в15163 д32 = 10011110001101110111100110111001 = 9е3779Ъ9

Р64 = 1011011111100001010100010110001010001010111011010010101001101011

= Ъ7е151628ае(12а6Ь д64 = 1001111000110111011110011011100101111111010010100111110000010101 = 9e3779Ъ97f4a7c15

Первый шаг расширения ключа должен копировать секретный ключ К [0...6 — 1] в таблицу Ь [0...С — 1] для с = [Ь/и] слов, где и = т/8.

Второй шаг расширения ключа должен инициализировать таблицу Б для частной фиксированной псевдослучайной комбинации двоичных разрядов, используя арифметическую прогрессию, определенную константами Pw и Qw. Этот шаг реализуется следующим фрагментом алгоритма:

Б[0] =РН;

^г 1=1 ^ do

Б[1]=Б[1-1]+ди;

Третий шаг расширения ключа должен смешать ключ пользователя в трех проходах посредством таблиц S и L, но из-за различных размеров таблиц большая из них будет обработана три раза, а другая — большее количество раз. Представим этот шаг в псевдокоде:

i=j=0;

A=B=0;

do 3 * max(t,c) times:

A=S [i] = (S [i] +A+B)«<3; B=L [j] = (L[j] +A+B)«< (A+B) ; i=(i+1)mod(t) ; J=(j+1)mod(c);

Алгоритм шифрования. Пусть блок входа размещен в двух w-битных регистрах A и B, расширение ключа уже выполнено так, чтобы таблица S [0...t — 1], состоящая из t = 2(r + 1) w-битных слов, была вычислена. Представим алгоритм шифрования в псевдокоде [6]:

A=A+S [0];

B=B+S[1] ;

for i=1 to r do

A=((A0B)«<B)+S[2i] ; B=((B0A)«<A)+S[2i+1] ; Результат размещается в регистрах A и B.

Легко заметить исключительную простоту этого алгоритма.

2. Алгоритм RC6

Эволюционным усовершенствованием алгоритма RC5 является алгоритм RC6, разработанный в соответствии с требованиями стандарта AES (Advanced Encryption Standard). В нем так же, как и в RC5, активно применяются зависимые от данных циклические сдвиги. К новым свойствам алгоритма RC6 относятся использование четырех рабочих регистров вместо двух и включение целочисленного умножения как дополнительной простой операции, что значительно увеличивает рассеивание, достигнутое за раунд (цикл), позволяет обеспечить большую защиту, меньшее количество раундов и увеличивает производительность.

Алгоритм RC6 продолжает традицию использования примитивных операций (типа циклических сдвигов), которые эффективно реализованы на современных процессорах с учетом того, что 32-разрядное целочисленное умножение также реализовано на большинстве процессоров. Целочисленное умножение является очень быстрой простой операцией "рассеивания" и позволяет в алгоритме RC6 вычислять количество циклических сдвигов так, чтобы оно зависело от всех разрядов другого регистра, а не только от его младших разрядов, как в алгоритме RC5. В результате алгоритм RC6 имеет намного более быстрое рассеивание. Это также позволяет увеличивать производительность, задавая меньшее количество раундов.

Подобно алгоритму RC5 алгоритм RC6 представляет собой полностью параметризованное семейство алгоритмов шифрования. RC6-w/r/b работает на четырех модулях w-битных слов с использованием следующих шести базисных операций:

а + Ь — сложение целого числа по модулю 2'ш;

а — Ь — вычитание целого числа по модулю 2'ш;

а ф Ь — побитовое исключающее ИЛИ ^-битных слов;

а х Ь — целочисленное умножение по модулю 2'ш;

а <<< Ь — левый сдвиг слов а на ^(эд) бит младшего разряда Ь;

а >>> Ь — правый сдвиг слов а на ^(эд) бит младшего разряда Ь.

Алгоритм шифрования. Алгоритм расширения ключа И.С6 идентичен алгоритму расширения ключа И,С5 и подробно изложен выше.

Алгоритм И.С6 работает с четырьмя ^-битными регистрами А, В, С, Д, которые содержат как входные данные, так и результат на выходе. Первый байт входных данных помещен в младший байт А, а последний — в старший байт Д. Обозначим через (А, В, С, Д) = (В, С, Д, А) параллельное переназначение (перемешивание) регистров. Пусть Б [0,..., 2г+3] — таблица ^-битных ключей.

Представим алгоритм шифрования в псевдокоде [7]: Б=Б+8 [0] 0=0+8 [1]

^г 1=1 ^ г <1о {

г=(Бх (2Б+1))«<^ и (Бх (20+1))«<^у А=((Афг)«<и)+8[21] С=((Сфи)«<г)+8[21+1] (А,Б,С,П)=(Б,С,П,А)

}

А=А+8 [2г+2] С=С+8 [2г+3]

3. Статистические критерии

Статистическая теория дает некоторые количественные критерии случайности. Воспользуемся одним из хорошо известных тестов, который, будучи наиболее полезным, одновременно легко реализуется на вычислительных машинах [3].

Критерий х2 ("хи-квадрат"), вероятно, самый распространенный из всех статистических критериев. Он применяется в форме, предложенной Кнутом [3]. Его преимуществом является то, что одни и те же табличные значения (таблица х2-распределения) используются при любом числе п независимых испытаний и любых вероятностях р3. Единственной переменной является V = к — 1 (число "степеней свободы"), где категория к — число возможных исходов испытаний.

На самом деле величина V (статистика х2) подчиняется распределению х2 только приближенно, причем приближение тем лучше, чем больше п. С учетом рекомендаций [3] и возможностей используемой вычислительной техники взято число а = 10000 для каждой категории к (при равномерном распределении каждое число должно в среднем встретиться 10000 раз). И только для длин слова Ь = 24 и Ь =26 при к24 = 16777216 и к26 = 67108864 соответственно а = 1000, что связано с ограниченными вычислительными ресурсами (Ь = 24 и Ь = 26 рассматривается только для алгоритма И.С6). Число испытаний п = ак, а длина последовательности псевдослучайных чисел (в байтах) определяется по

формуле L = (ab/8)k. Для длины слова b = {1, 2, 3, 4, 5, 6, 7, 8,16, 24, 26} (в битах) число возможных исходов испытаний равно 2b.

Для проведения исследования были написаны программы шифрования c использованием алгоритмов RC5 и RC6, тест х2. В качестве языка программирования выбран язык Java, так как его универсальность и распространенность позволяют выполнять программы на различных платформах без дополнительных установок.

С помощью критерия х2 три раза проверялись разные части ряда псевдослучайных чисел, получаемого на выходе программной реализации алгоритмов RC5 и RC6. На вход подавались числа: в первом случае — начиная с 0, во втором — с и, в третьем — с 2u. Испытания проводились на длинах слов b = {1, 2, 3, 4, 5, 6, 7,8,16, 24, 26} для раундов с 4 по 12 (только после четвертого раунда вывод алгоритма является случайным [8]). Слова длиной b = {1, 2, 3, 4, 5, 6, 7, 8, 16} выбирались последовательно из "непрерывного" выходного потока псевдослучайных чисел, слова длиной b = {24, 26} — из каждого выходного слова (32 бита) алгоритмов со старшей битовой позиции x31, ..., x32-ь, биты x32-b, ..., x0 игнорировались. Для любой длины слова w вероятность ps = 2-w.

Сначала исследовали генератор псевдослучайных чисел согласно предложенной в работе [4] рекомендации. Алгоритм шифрования RC5-32/8/0 использовался без секретного ключа. На вход подавались числа 0, 1, 2, ..., ul, чтобы генерировать последовательность псевдослучайных чисел, которую можно использовать в рандомизированном вычислении [4]. Однако тесты по критерию х2 показали, что при использовании предложенного алгоритма на выходе получаются "плохие" числа, т. е. значения х явно слишком велики (зарегистрировано отклонение от нормального распределения). В связи с этим возникла задача дальнейшего анализа алгоритма шифрования RC5 как основы для генератора псевдослучайных чисел. Проведенные исследования позволили найти алгоритм задания входных данных, при котором RC5 дает неплохие результаты (рис. 1). Представим этот алгоритм в псевдокоде:

for (i={0,n,2n>; i<{n,2n,3n>; I=I+2)

A=i;

B=I+1;

далее следует алгоритм шифрования RC5...

На рис. 1 приведены результаты проверки последовательностей псевдослучайных чисел по критерию х2, полученных с помощью алгоритмов шифрования RC5 и RC6. На трех разных участках для каждой полученной последовательности псевдослучайных чисел проводилась проверка для заданной длины слова. Исходя из этих данных, можно сделать следующие выводы относительно алгоритма RC5:

— этот алгоритм можно использовать для генерации псевдослучайных чисел при условии специального подбора входных данных;

— как генератор псевдослучайных чисел он зависит от г*;

— для данного алгоритма длина получаемой последовательности равна 64 • 216 бит.

Исследование алгоритма шифрования RC6 для генерации последовательности псевдослучайных чисел проводилось аналогично. Эксперименты с различными алгоритмами входных данных показали неплохие результаты по критерию х2. Однако в настоящей работе принят алгоритм, предложенный в работе [4], который позволяет использовать максимальную длину получаемой последовательности псевдослучайных чисел — 128 • 2128 бит. Представим его в псевдокоде:

0Испытания показали, что для обоих алгоритмов при r, большем, чем указано в табл. 1, качество получаемой последовательности псевдослучайных чисел не улучшается.

b RC5/r4 RC5/r5 RC5/r6 RC5/r7 RC5/r8 RC5/r9 RC5/r10 RC5/r11 RC5/r12

1 ♦ □ ♦

2 □ ♦ □ ♦ □ ♦

3 □ ♦ ♦ ♦

4 ♦ ♦ ♦

5 □ ♦ ♦ □ ♦ □ ♦

6 ♦ ♦ ♦ ♦ * ♦ □

7 ♦ ♦ ♦ ♦ ♦ ♦

8 * □ ♦ □ □ * □

16 * * * ♦ ♦ ♦

b RC6/r4 RC6/r5 RC6/r6 RC6/r7 RC6/r8 RC6/r9 RC6/r10 RC6/r11 RC6/r12

1 * ♦ □ □ ♦ ♦ * ♦ ♦

2 ♦ □

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

3 □ □ □ □ □

4 □ □ □ □ □ * ♦ □ ♦ □

5 * ♦ □ □ ♦ □

6 ♦ ♦ □ ♦

7 ♦ □ * ♦ □ ♦

8 * ♦ □ ♦ □

16 * *

24 * * *

26 * * * *

Интервал, в который попадает V, % 0 - 1, 99 - 100 95 - 99 90 - 95

Результат Обозначения

неудовлетворительный 4

подозрительный □

слегка подозрительный ♦

Рис. 1. Результаты испытаний алгоритмов шифрования RC5 и RC6 по критерию %2.

for (i={0,n,2n>; i<{n,2n,3n>; I=I+4)

{A,B,C,D}=i;

далее следует алгоритм шифрования RC6...

Криптографический алгоритм шифрования RC6, используемый для генерации псевдослучайных чисел, как и алгоритм RC5, зависит от r и для исследованных длин слов при r = 6 и r = 11 дает хорошие показатели по критерию х2. Дополнительные испытания поведения алгоритма при генерации многомерной последовательности проведены для b = {8,16, 26} и r = 6. При этом анализировалась плотность заполнения многомерного куба. В табл. 1 приведены результаты испытаний по критерию х2 с помощью алгоритма шифрования RC6, в ней отражена статистика равномерности заполнения при выбранной размерности x (первая графа) квадрата, куба, четырехмерного куба для длины слова 8, 16, 26 бит (первые, вторые и третьи строки соответственно).

Таблица 1

Результаты испытаний генерации многомерной последовательности по критерию %2

x 10 20 30 40 50 60 70 80 90 100

103 392 993 1720 2570 3929 5431 6868 8501 11031

2 xx 101 395 903 1700 2481 3649 4986 6220 8178 10264

97 478 987 1669 2572 3813 5043 6449 8249 10309

1139 8101 27984 65393 126188 219443 346991 516377 733823 1009271

x3 967 7826 26883 64171 125382 216875 343892 513182 731504 1002365

977 8177 27098 64693 124976 216398 343989 513510 731792 1000974

10246 159744 811230 2562239 6254945 16248237 24000022 40961279 65615710 100026625

4 x 10217 160669 810346 2561106 6251952 12963800 24008500 40956500 65603520 99997464

9681 159323 810460 2561489 6251869 12964883 24012199 40965239 65605048 100004235

0.5

А "

¿г ® /!\

-.......§-" -1- ...........#-1-- \|/ 1— \1/ (ОЫ' ® -1---1— м/ \1/ згт

10

20

30

40

50

60

70

80

90

100

А б

а А егь к \!/ \1/

«а \|/ й \|/ УЬ \1/ § 1

-,-,-,-,-,-,-,-,-,-,—>

0.5

10

20

30 40

50

60

70

80

90

100

Ъ л

0.9 --

0.5 -

о.1 --

ч1/

©

ю

20

30

40

50

60

70

80

90

100

Рис. 2. Результаты испытаний генерации многомерной последовательности по критерию — ж2, Ю) — ж3, — ж4, выбранное слово 8, 16, 26 бит — а - в соответственно.

Данные табл. 1 представлены в виде трех графиков (рис. 2), где по вертикальной оси отложена вероятность р8 появления полученного значения по критерию х2 и по горизонтальной — размерность многомерной последовательности. Каждый график отражает результаты испытаний для одной заданной длины слова по всем выбранным параметрам плотности заполнения многомерного куба, т. е. квадрата, куба и четырехмерного куба.

Результаты двух тестов для алгоритма ИС6 позволяют сделать вывод о пригодности его использования как генератора псевдослучайных чисел.

4. Рекомендации

Проведенные исследования позволяют сделать вывод о том, что алгоритмы шифрования ИС5 и ИС6 можно применять в качестве генераторов псевдослучайных чисел для исследованных длин слов. Однако тестирование показало, что для алгоритма ИС5 требуется специальный подбор входных данных. Временные характеристики алгоритма ИС5 уступают характеристикам алгоритма ИС6 (табл. 2). С помощью алгоритма ИС6 можно получить

Таблица 2

Быстродействие алгоритмов шифрования RC6 и RC5

Алгоритм Программная среда Цикл/блок Цикл/с Мбайт/с

ANSI С 616 325 000 5.19

Java (JDK) 16 200 12 300 0.197

RC6 Java (JIT) 1010 197 000 3.15

assembly 254 787 000 12.6

ANSI С 328 610 000 4.9

RC5 Java (JIT) 1 140 175 000 1.4

assembly 148 1 350 000 10.8

Данные округлены до трех значащих разрядов

последовательность псевдослучайных чисел значительно большей длины, чем с помощью алгоритма RC5. Выходная последовательность при одном обращении к алгоритму для RC6 (128 бит) в два раза больше, чем для RC5. Учитывая вышесказанное, рекомендуем для получения последовательности псевдослучайных чисел в качестве генератора использовать алгоритм шифрования RC6 с параметром r = 6 или r = 11. При выборе параметров алгоритма следует помнить, что число раундов влияет на количество проходов (перемешивание) и, следовательно, при большой выборке — на общее время счета.

Рассмотренные алгоритмы адаптированы для различных средств программирования за счет использования только примитивных вычислительных операций, благодаря чему они легко программируются. Выбор языка программирования индивидуален для каждого пользователя, и здесь нет никаких ограничений. Программная реализация алгоритмов RC5 и RC6 не представляется трудоемкой (алгоритм RC6 вместе с входными данными включает 12 строк простых операций на 128 бит выходной последовательности). При многократном использовании алгоритма с фиксированными начальными входными данными на выходе получаем фиксированную последовательность псевдослучайных чисел.

В статье дано полное описание алгоритма вычисления таблицы расширения ключа S[0,..., 2r + 3], необходимое при работе алгоритма шифрования. Для реализации алгоритма RC6 в качестве генератора псевдослучайных чисел на языке Java для получения S[ ] можно взять RC6Key.class на http://cins.ict.nsc.ru/Class/RC6Key.class и в свой программный код вставить следующие операторы:

int S [] ;

S=RC6Key.KeySchedule(r);

где r — заданное количество раундов.

Для иллюстрации временных характеристик алгоритмов RC5 и RC6 в зависимости от выбранного языка программирования приведем данные из работы [7].

Характеристики реализации алгоритма RC6 на оптимизированном ANSI С получены с использованием компилятора Borland C++ Development Suite 5.0. Измерения проводились на Pentium II 266 MHZ с 32 Mbytes RAM, под Windows 95. Для точности измерений временных характеристик маскируемые прерывания на процессоре были повреждены, в то время как установленные временные характеристики сохранялись.

Приведенные данные для реализации алгоритма RC6 на ассемблере получены на том же компьютере при идентичных условиях. Характеристики реализации алгоритма RC6 на Java измерялись на Pentium Pro 180 MHz с 64 Mbytes RAM, под Windows NT 4.0. Эта реализация компилировалась JavaSoft's JDK 1.1.6 компилятором, и характеристики результирующего кода измерялись JavaSoft's JDK 1.1.6 интерпретатором (с JIT поврежденной трансляцией) и Symantec

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Corporation's Java! JustInTime Compiler, версия 210.054 для JDK. 1.1.2. Для достижения высокой точности измерений каждое множество временных тестов было выполнено 10 раз. В табл. 2 приведены не зависящие от размера ключа осредненные характеристики быстродействия алгоритмов (см. подробности в [7]).

Таким образом, алгоритм генерирования псевдослучайных чисел, базирующийся на использовании алгоритма шифрования RC6, обладает хорошим качеством и высокой скоростью и может быть рекомендован для практического применения.

Список литературы

[1] Спунер Дж. Intel выдвигает комплексный план защиты ПК // PC Week Online. 1999.

[2] Ферапонтов М. М. Моделирование случайных воздействий на ЭВМ. М.: Изд-во МТУ, 1995.

[3] Кнут Д. Искусство программирования для ЭВМ. М.: Мир, 1977.

[4] Rivest R. L. The RC5 Encryption Algorithm. http://www.rsa.com, 1998.

[5] Rogaway Phillip. Software-Optimized Encryption Algorithm // J. Cryptology. 1998. No. 11. P. 273-287.

[6] Rivest R. L. The RC5 encryption algorithm // Proc. 2nd Workshop on Fast Software Encryption. Springer, 1995. P. 86-96.

[7] Rivest R. L., Robshaw M. J.B., Sidney R. et al. The RC6TM Block Cipher. Technology Square. 545. Cambridge, MA 02139, USA, 1998.

[8] Soto J., Bassham L. Randomness Testing of the Advanced Encryption Standard Finalist Candidates // Computer Security Division NIST.

http://csrc.nist.gov/encryption/aes/aes_home.htm, March 28, 2000.

Поступила в редакцию 26 апреля 1999 г., в переработанном виде — 28 июля 2000 г.

i Надоели баннеры? Вы всегда можете отключить рекламу.