
Лабораторная работа 3 ГЕНЕРАЦИЯ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ
Задание
Изучить процедуру генерации случайных чисел методом Блюм — Блюма — Шуба.
Технология выполнения задания
Задание 1. Сгенерировать 8-битовую псевдослучайную последовательность.
1. Выбрать значения параметров BBS-генератора р, q и случайное число s из табл.1 согласно номеру варианта (от 1 до 5). Сформировать псевдослучайную последовательность аналогично рассмотренному ниже примеру.
Таблица 1 - Варианты задания
Номер варианта |
р |
q |
s |
1 |
431 |
719 |
98 907 |
2 |
151 |
191 |
20 302 |
3 |
71 |
127 |
3517 |
4 |
127 |
239 |
14 930 |
5 |
359 |
607 |
166 646 |
6 |
407 |
588 |
3164 |
7 |
276 |
439 |
12034 |
8 |
321 |
503 |
17809 |
9 |
134 |
736 |
12067 |
10 |
632 |
840 |
400036 |
Пример 1.
Заданы параметры BBS-генератора р = 407, q = 599, выбрано случайное число s=3612. Сформировать псевдослучайную 8-битовую последовательность, используя один младший бит чисел xi, формируемых BBS-генератором.
2. В приложении MS Excel создать новую книгу, на первом листе ввести значения р, q, вычислить число Блюма n как их произведение, например =В1*В2 (рис. 1). Ниже ввести значение случайного числа s.
Рис.1. Вычисление последовательности xi BBS-генератора
3. Рассчитать элементы ряда хi.
• пронумеровать ячейки первого столбца от 0 до 7;
• в первую ячейку второго столбца ввести формулу для вычисления х0 по формуле х0 = s2 mod n, например =ОСТАТ(В4^2;$В$3) (см. рис.1);
• скопировать формулу на весь ряд.
4. Вычислить младшие биты чисел хi. Значение младшего бита определяется остатком от деления числа на 2, поэтому для вычисления можно использовать функцию ОСТАТ (рис.2), например =ОСТАТ(В5;2) для числа х0. Скопировать формулу на все ячейки диапазона.
Рис.2. Вычисление значений младших битов
5. Сформировать результирующую битовую псевдослучайную последовательность с помощью операции &, например =С5&С6&С7&С8&С9&С10&С11&С12, или функции СЦЕПИТЬ из группы Текстовые, например =СЦЕПИТЬ(С5;С6;С7;С8;С9;С10;С11;С12). Значение результирующей последовательности: 11101111 (см. рис. 2).
Задание 2. Расшифровать криптограмму, полученную наложением на шифруемый текст псевдослучайной последовательности, сформированной эффективной реализацией BBS-генератора.
6. Выбрать из табл. 2 согласно номеру варианта (от 1 до 5) значения числа Блюма n, секретного ключа — случайного числа s и шифротекста, представленного последовательностью ASCII-кодов символов. Провести расшифрование (получить открытый текст) аналогично рассмотренному ниже примеру.
Таблица 2 - Варианты задания
Номер варианта |
п |
s |
Криптограмма Y |
1 |
309 889 |
281 812 |
69, 47, 119,91 |
2 |
28 841 |
782 |
2,133,58 |
3 |
9017 |
1116 |
62, 89, 4 |
4 |
30 353 |
17 849 |
214, 190, 100 |
5 |
217 913 |
4815 |
151, 195, 144, 53 |
Пример 2.
С помощью BBS-генератора получена псевдослучайная последовательность, которая затем наложена на открытый текст. Известно, что использована аффективная реализация BBS-генератора, т.е. при формировании псевдослучайной последовательности используется максимально возможное число младших битов чисел xi не нарушающее стойкости последовательности. Известны числа Блюма n = 243 793 и случайное число s = 48 914, использованные для генерации. Требуется расшифровать текст, заданный последовательностью ASCII-кодов: 16, 182,219, 83.
7. Занести значения n и s на лист MS Excel, ниже в столбец занести значения ASCII-кодов, составляющих криптограмму (рис.3). Перевести десятичные значения ASCII-кодов в двоичный вид, используя функцию ДЕС.В.ДВ из группы Инженерные. Поскольку символы в таблице ASCII кодируются одним байтом (восемью битами), указать разрядность 8. Например, =ДЕС.В.ДВ(А4;8).
Рис.3. Перевод десятичных кодов в двоичный вид
8. Ниже с помощью операции & или функции СЦЕПИТЬ (например, =СЦЕПИТЬ(В4;В5;В6;В7)) сформировать соответствующую шифротексту битовую последовательность (см. рис.3).
9. Определить максимально допустимое для использования в BBS-гене- раторе число младших битов (рис. 4):
• определить минимальное число битов, необходимое для кодирования n. Рядом со значением п вычислить двоичный логарифм значения n + 1. Для этого следует использовать функцию LOG, задав значение второго параметра равным двум, например =LOG(Bl+l;2). Получено значение 17,8953;
• округлить полученное значение вверх до целого, для чего следует использовать функцию ОКРУГЛВВЕРХ, задав число десятичных разрядов равным нулю, например =ОКРУГЛВВЕРХ(С1;0). Получено значение 18;
Рис.4. Расчет максимально допустимого числа младших битов
Таким образом, для кодирования числа n = 243 793 требуется не менее 18 двоичных разрядов.
Замечание: округление вверх можно произвести также с помощью функций ОКРВВЕРХ или ОКРВВЕРХ.ТОЧН, в этом случае значение второго параметра (точность) следует установить равным единице;
• взять двоичный логарифм от полученного значения, например =LOG(Dl;2). Получено значение 4,1699;
• округлить полученное значение вниз с помощью функции ОКРУГЛВНИЗ, задав число десятичных разрядов равным нулю, например =ОКРУГЛВНИЗ(Е1;0). Получено значение «4», таким образом, в BBS-генераторе допустимо использовать не более четырех младших битов.
Замечание: округление вниз можно также произвести с помощью функций ОКРВНИЗ или ОКРВНИЗ.ТОЧН, в этом случае значение второго параметра (точность) следует установить равным единице.