Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: LI Международной научно-практической конференции «Инновации в науке» (Россия, г. Новосибирск, 30 ноября 2015 г.)

Наука: Технические науки

Скачать книгу(-и): Сборник статей конференции, Сборник статей конференции часть II

Библиографическое описание:
Выборнова Ю.Д. РЕАЛИЗАЦИЯ И ИССЛЕДОВАНИЕ КРИПТОГРАФИЧЕСКИ СТОЙКОГО ГЕНЕРАТОРА BLUM-BLUM-SHUB // Инновации в науке: сб. ст. по матер. LI междунар. науч.-практ. конф. № 11(48). Часть II. – Новосибирск: СибАК, 2015.
Проголосовать за статью
Дипломы участников
У данной статьи нет
дипломов

 

РЕАЛИЗАЦИЯ  И  ИССЛЕДОВАНИЕ  КРИПТОГРАФИЧЕСКИ  СТОЙКОГО  ГЕНЕРАТОРА  BLUM-BLUM-SHUB

Выборнова  Юлия  Дмитриевна

аспирант  Самарского  государственного  аэрокосмического  университета  имени  академика  С.П.  Королева РФгСамара

Email: 

 

RESEARCH  AND  IMPLEMENTATION  OF  CRYPTOGRAPHICALLY  SECURE  PSEUDORANDOM  BLUM-BLUM-SHUB  GENERATOR

Yuliya  Vybornova

post-graduate  student,  Samara  State  Aerospace  University,  Russia,  Samara

 

АННОТАЦИЯ

Объектом  исследования  является  криптографически  стойкий  генератор  псевдослучайных  последовательностей  Blum-Blum-Shub.  Цель  работы  –  реализация  генератора  псевдослучайных  последовательностей  с  помощью  двух  различных  прикладных  криптографических  библиотек  языка  программирования  C++  и  сравнение  основных  характеристик  полученных  программных  модулей.  В  работе  проведен  анализ  основных  характеристик  полученного  генератора:  производительности  и  потребления  оперативной  памяти  при  генерации  последовательностей  большой  длины.  Сформированы  выводы  о  границах  применения  полученных  реализаций  генератора.

ABSTRACT

The  object  of  this  research  is  a  cryptographically  secure  pseudorandom  number  generator  called  Blum-Blum-Shub  generator.  The  main  objective  is  implementation  of  pseudorandom  number  generator  using  two  different  C++  applied  cryptography  libraries  and  comparison  of  software  modules  characteristics.  The  paper  analyzes  the  main  characteristics  of  the  resulting  generator:  performance  and  memory  consumption  in  case  of  generating  long  sequences.  Application  area  of  both  implementations  was  defined.

 

Ключевые  слова:  псевдослучайные  последовательности;  генератор  бинарных  последовательностей;  большие  числа;  скорость  алгоритма;  потребление  памяти.

Keywords:  binary  sequences;  pseudorandom  number  generator;  big  integers;  algorithm  speed;  memory  consumption.

 

Реализация  генератора.

Генераторы  псевдослучайных  последовательностей  –  это  алгоритмы,  которые  используют  математические  формулы  или  предварительно  вычисленные  таблицы,  чтобы  порождать  последовательности  псевдослучайных  чисел  [1,  с.  815–816].

В  1986  году  Ленор  Блюм,  Мануель  Блюм  и  Майкл  Шуб  опубликовали  алгоритм,  который  впоследствии  получил  название  генератора  Blum-Blum-Shub.  Генератор  основан  на  операции  возведения  в  квадрат  в  кольце  вычетов  по  модулю  большого  числа  N,  где  N  =  P  ×  Q,  при  условии,  что  P  и  Q  –  простые  числа  равной  длины,  сравнимые  с  3  по  модулю  4  [2,  с.  367–368].

Операции  с  целыми  числами  большой  длины  являются  наиболее  ресурсоемкими  и  сложными  с  точки  зрения  алгоритмов  в  генераторе  Blum-Blum-Shub,  поэтому  важным  этапом  при  реализации  данного  генератора  является  выбор  подходящей  программной  библиотеки,  реализующей  такие  операции. 

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

Для  реализации  первой  версии  программного  генератора  Blum-Blum-Shub  было  решено  использовать  библиотеку  Crypto++  [3]. 

Для  реализации  второй  версии  программного  генератора  Blum-Blum-Shub  использовалась  библиотека  MPIR  (The  Multiple  Precision  Integers  and  Rationals  Library)  [4]. 

Также  для  детального  рассмотрения  была  выбрана  одна  из  существующих  реализаций  исследуемого  генератора  –  реализация  Ника  Галбрета  2005  года  [5].  Реализация  представляет  собой  библиотеку  на  языке  программирования  Java. 

Исследование  характеристик  генератора  Blum-Blum-Shub

Три  реализации  исследуемого  генератора  были  протестированы  на  трех  различных  операционных  системах  семейства  Windows:  Windows  7  Home  Basic  (64-битная),  Windows  8  Professional  (32-битная),  Windows  Vista  Ultimate  (32-битная).  Windows  7  является  основной  операционной  системой  персонального  компьютера,  на  котором  проводилось  исследование,  а  Windows  8  и  Windows  Vista  запускались  с  помощью  виртуальной  машины  Oracle  VM  VirtualBox.  Основные  характеристики  персонального  компьютера:  двухядерный  процессор  Intel  Pentium  P6100,  тактовая  частота  каждого  ядра  2  ГГц,  объем  оперативной  памяти  3  Гб. 

Результаты  представлены  в  таблицах  1–3.

Таблица  1. 

Среднее  время  выполнения  программы  при  генерации  1  миллиона  бит  псевдослучайной  последовательности,  [с]

Реализация

 

Операционная

система

Java

C++,  Crypto++

C++,  MPIR

Windows  7

5,656

87,442

35,642

Windows  8

27,437

151,862

47,264

Windows  Vista

21,374

94,424

38,399

 

 

Таблица  2. 

Средняя  скорость  потока  при  генерации  1  миллиона  бит  псевдослучайной  последовательности,  [бит/с]

Реализация

 

Операционная

система

Java

C++,  Crypto++

C++,  MPIR

Windows  7

188279,631

11461,812

28226,993

Windows  8

37118,510

6594,147

21251,284

Windows  Vista

47831,430

10615,840

26182,505

 
 

 

Таблица  3. 

Средний  объем  потребляемой  оперативной  памяти  при  генерации  1  миллиона  бит  псевдослучайной  последовательности,  [Кбайт]

Реализация

 

Операционная

система

Java

C++,  Crypto++

C++,  MPIR

Windows  7

42149,6

3298,0

51313,6

Windows  8

1461,8

2412,0

50728,0

Windows  Vista

1195,6

352,8

47595,2

 

 

Исходя  из  результатов  тестирования  двух  рассмотренных  генераторов,  можно  сделать  вывод,  что  самой  быстрой  является  реализация  генератора  Blum-Blum-Shub  на  языке  программирования  Java.  Однако  следует  обратить  внимание  на  наличие  внешней  зависимости  и  ненормированное  потребление  памяти.  В  данном  случае  преимущество  по  скорости  не  играет  роли,  так  как  для  того  чтобы  изменить  границы  применения  генератора,  необходимо  увеличить  его  скорость  в  1000  раз  и  более,  а  в  данном  случае  реализация  на  языке  программирования  Java  быстрее  других  реализаций  не  более,  чем  в  16  раз.

Реализация  на  основе  библиотеки  MPIR  также  обладает  высокой  скоростью,  но  как  и  реализация  на  языке  программирования  Java  имеет  ненормированное  потребление  памяти,  поэтому  трудно  предсказать  поведение  данной  программы  при  генерации  очень  больших  последовательностей  (1  гигабайт  и  более).  Для  запуска  данной  реализации  требуется  наличие  динамической  библиотеки  mpir.dll.  Данная  библиотека  не  требует  установки  и  почти  не  занимает  места  на  диске,  поэтому  такая  зависимость  не  является  недостатком.

Реализация  на  основе  библиотеки  Crypto++  является  самой  медленной  и  для  генерации  очень  больших  последовательностей  потребуется  колоссальное  количество  времени.  Но  зато  данная  программа  отличается  стабильным  потреблением  памяти  и  отсутствием  каких-либо  внешних  зависимостей. 

Средняя  скорость  работы  всех  перечисленных  выше  реализаций  генератора  Blum-Blum-Shub  во  много  раз  ниже  средней  скорости  современных  симметричных  алгоритмов  блочного  шифрования.  Из  этого  следует,  что  исследуемый  генератор  неприменим  для  генерации  гаммы  в  шифрах  гаммирования,  но  может  использоваться  для  генерации  данных  в  системах  и  протоколах,  где  скорость  генерации  не  играет  роли.  Например,  для  генерации  ключей  в  асимметричных  системах,  в  качестве  генератора  ключей  для  имитовставки,  а  также  в  реализациях  криптографических  протоколов  аутентификации  и  шифрования.

Заключение. 

Таким  образом,  если  стоит  вопрос  об  экономии  времени,  необходимо  применять  программную  реализацию  на  основе  теоретико-числовой  библиотеки  MPIR.  Если  же  приоритетным  требованием  является  экономия  памяти,  то  следует  выбрать  программную  реализацию  на  основе  криптографической  библиотеки  Crypto++.

 

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

  1. Neil  J.  Salkind.  Encyclopedia  of  Measurement  and  Statistics.  Sage  Publications,  2007. 
  2. Blum  L.,  M.  Blum  and  M.  Shub.  A  Simple  Unpredictable  Pseudo-Random  Number  Generator.  Proceedings,  SIAM  Journal  on  Computing,  May  1986.
  3. Crypto++.  [Электронный  ресурс].  –  Режим  доступа.  –  URL:  http://www.cryptopp.com/  (дата  обращения:  21.09.2015)
  4. The  Multiple  Precision  Integers  and  Rationals  Library.  [Электронный  ресурс].  –  Режим  доступа.  –  URL:  http://mpir.org/  (дата  обращения:  16.10.2015)
  5. A  collection  of  random  number  generators  in  java.  [Электронный  ресурс].  –  Режим  доступа.  –  URL:  https://code.google.com/p/javarng/  (дата  обращения:  19.10.2015)

 

Проголосовать за статью
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.