Главная > Лабораторная работа


МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ФАКУЛЬТЕТ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ И КИБЕРНЕТИКИ

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

и варианты заданий

К ВЫПОЛНЕНИЮ ЛАБОРАТОРНЫХ РАБОТ

ПО ДИСЦИПЛИНЕ

«Информационная безопасность в сетях»

Составители:

д.ф.м.н, доцент.каф.САИТ

Ишмухаметов Ш.Т.

Казань, 2008

ЛАБОРАТОРНАЯ РАБОТА № 1

Название работы. Реализация в среде Excel алгоритма RSA шифрования с открытым ключом.

Цель. Ознакомиться с аппаратом программирования на языке Visual Basic for Applications, примерами программ для решения простых задач. Разработать и написать в среде Excel программу выработки пар «открытый/закрытый» ключ по методу RSA. Выполнить шифрование конфиденциальных данных.

Программно-аппаратные средства.Компьютерная лаборатория, пакет Microsoft Office.

Задание на лабораторную работу

  1. Изучить теоретический материал по данной лабораторной работе.

  2. Ознакомиться с указаниями по программированию в на языке VBA в среде Excel.

  3. Разработать программный комплекс в среде Excel генерации параметров метода RSA, шифрования/расшифровки данных.

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

  5. Ответить на контрольные вопросы в конце задания.

Указания к выполнению лабораторной работе.

Лабораторная работа 1 состоит из четырех частей, каждая из которых выполняется в одном и том же рабочем листе Excel.

  • В первой части следует составить программу на языке Visual Basic для реализации расширенного алгоритма Евклида.

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

  • В третьей части надо реализовать шифрованию/расшифровку текстов, вводимых с клавиатуры.

  • В заключительной части необходимо реализовать взлом метода RSA, считая известным открытый ключ RSA. Для разложения числа на множители использовать метод Полларда.

ВАРИАНТЫ ЗАДАНИЙ

№ варианта

Алгоритм проверки

простоты чисел

Диапазон выбора простых чисел (для 1-о и 2-о чисел)

Открытый ключ (N,E) и шифр сообщения для взлома

1

Метод пробных делений

[50;100], [75; 125]

(N,e)=(78937, 19)

M={44389, 31974, 50020, 41406, 29866}

2

Метод Ферма

[70;120], [90; 140]

(N,e)=(55357, 37)

M={13389, 33602, 11685, 33602, 40522, 47755, 10459, 15507, 33602}

3

Тест Миллера-Рабина

[40;90], [80; 130]

(N,e)=(41869, 23)

M={21618, 16457, 36520, 31771, 22233, 32135 }

4

Метод пробных делений

[70;120], [60; 110]

(N,e)=(111557, 113)

M={49096, 63084, 8557, 3743, 4162, 63084, 8557}

5

Метод Ферма

[30;70], [70; 120]

(N,e)=(96091,113)

M={61768, 80113, 95437, 80113, 53070, 75177, 82879}

6

Тест Миллера-Рабина

[60;100], [110; 150]

(N,e)=(139331, 113)

M={84929, 101535, 89665, 31645, 48847, 48310, 101535, 89665}

7

Метод пробных делений

[70;120], [60; 110]

(N,e)=(85039, 113)

M={30454, 11454, 54678, 37720, 28540, 13779, 22807, 63035}

8

Метод Ферма

[40;80], [70; 120]

(N,e)=(150737, 113)

M={104318, 143945, 19327, 69783, 112451, 105094}

9

Тест Миллера-Рабина

[70;110], [120; 150]

(N,e)=(94697,113)

M={10546, 67178, 84721, 4306, 78944, 1251, 27204}

10

Метод пробных делений

[75;110], [100; 130]

(N,e)=(156031,113)

M={29152, 59889, 6814, 115388, 93780, 105567, 31230, 108149}

11

Метод Ферма

[35;70], [80; 120]

(N,e)=(157379, 113)

M={113065, 45393, 45393, 77288, 102351, 90053, 4109, 122125}

12

Тест Миллера-Рабина

[75;100], [120; 160]

(N,e)=(65041, 113)

M={11965, 10878, 61241, 39494, 43796, 59735, 10878}

13

Метод пробных делений

[60;90], [90; 140]

(N,e)=(95371, 113)

M={73636, 91819, 93589, 82293, 75385, 63153, 27478}

14

Метод Ферма

[70;100], [1200; 150]

(N,e)=(103861, 113)

M={31152, 63308, 38428, 91454, 4476, 10515, 70086, 63308, 84514, 83370}

15

Тест Миллера-Рабина

[65;100], [105; 140]

(N,e)=(169921, 113)

M={39823, 108107, 55814, 75107, 158616, 145959, 18054}

Теоретический материал

Односторонняя (однонаправленная) функция (one way function) - это функция f, осуществляющая отображение X->Y, где X и Y - произвольные множества, и удовлетворяющая следующим условиям:

  1. Для каждого x из области определения функции легко вычислить . Понятие «легко» обычно означает, что существует алгоритм, вычисляющий функцию f(x) за полиномиальное время от длины аргумента x.

  2. Задача нахождения прообраза для произвольного y, принадлежащего области значений функции, является вычислительно сложной задачей. Последнее означает, что не существует алгоритма, вычисляющего существенно быстрее, чем алгоритм полного перебора.

Задача разложения натурального числа N на простые множители (факторизация N) явлется задачей вычисления односторонней функции: зная сомножители p и q, нетрудно вычислить их произведение N=p • q, но обратная задача нахождения делителей p и q по известному N является сложной задачей, решение которой требует значительных вычислительных ресурсов.

На вычислительной сложности решения этой задачи построен один из самых известных асимметричных методов криптографии – метод RSA. В 1977 году, когда создатели этого метода Ривест, Шамир и Адлеман объявили о новом методе криптографии, основанном на задаче факторизации, наиболее длинные числа, разложимые на множители, имели длину 40 десятичных цифр, что соответствует, примерно, 132-битовому двоичному числу (число 40 надо домножить на ). Создатели RSA предложили широкой публике расшифровать некую фразу английского языка. Для этого предварительно требовалось факторизовать 129-значное десятичное число N (длины 428 в битовом представлении), про которое было известно, что оно представимо в виде произведения двух простых сомножителей p и q, которые имели длину 65 и 64 десятичных знака.

С тех пор был достигнут значительный прогресс в этой области. Число, предложенное создателями RSA, было разложено в 1994 году с помощью нового мощного метода факторизации – метода квадратичного решета (Quadratic Sieve Factoring), разработанного Карлом Померанцем и реализованного Аткинсом, Граффом, Ленстрой и Лейлендом. В работе участвовало около 600 добровольцев, задействовано в сети около 1700 компьютеров, которые работали в течение 7 месяцев.

Параллельно с этим методом Джоном Поллардом, известным специалистом по криптографии и теории алгоритмов, был разработан еще более быстрый метод, получивший название метода решета числового поля (Generalizad Number Field Sieve - GNFS), который является наиболее быстрым методом и на сегодняшний день. Текущий рекорд, установленный немецкими исследователями, на июнь 2008 года, составляет 1000-бит. Это делает небезопасными ключи RSA длины 1024, которые являются на сегодняшний день, самыми распространенными.

Генерация пар «открытый/закрытый ключ» метода RSA.

  1. Выбираются два простых числа p и q. Для нашего примера числа p и q должны находится в интервале от 100 до 200. В этом случае их произведение N=p • q будет иметь длину 10 – 12 бит. В реальных задача длина N выбирается равной 512, 768 или 1024 бита (иногда 2048 для самых ответственных задач).

  2. Вычисляем их произведение N=p • q.

  3. Вычисляем функцию Эйлера . Значение равно числу натуральных чисел, меньших N, взаимно простых с (т.е. числу всех k < N таких, что наибольший общий делитель НОД(N; k)=1).

  4. Выбираем параметр e, входящий в открытый ключ RSA, равным произвольному числу, меньшему N, но взаимно простому с . При реальном шифровании длина e выбирается приблизительно равной L/3, где L – длина N. Можно взять e равным произвольному простому числу, меньшему N и отличному от p и q, проверив при этом условие того, что не делится на е ().

  5. Находим параметр d, являющийся секретным параметром метода RSA, из условия . Для вычисления d необходимо воспользоваться расширенным алгоритмом Евклида, который описан ниже. Расширенный алгоритм Евклида по входным натуральным числам A и B находит их наибольший общий делитель C=НОД(А,В), а также числа x и y такие, что выполнено равенство . Для нахождения параметра d подставим в расширенный алгоритм Евклида входные числа и е. Их наибольший общий делитель C=НОД(,е) равен 1. Если это не так, то параметр е выбран неверно. Выполнив вычисления по алгоритму Евклиду мы найдем числа x и y такие, что . Применив операцию к обеим частям последнего равенства, получим . Значит, можно взять значение параметра d равным коэффициенту y из метода Евклида. Однако, коэффициент y может принимать как положительные, так и отрицательные значения, а параметр d обязательно должен положительным, поэтому в случае если y < 0, следует взять

Генерация параметров RSA завершена. Пара (N, e) объявляется открытым ключом, а параметры и d закрытыми параметрами (d – закрытый ключ).

Шифрование/расшифровка сообщений по методу RSA.

Текст, который следует зашифровать, разбивается на отдельные символы (или на блоки по k бит в реальных задачах, где , L – длина N в битовом представлении). Для шифрования числа с, служащего кодом символа, выполняется операция возведения в степень по формуле

(*)

где числа N, e взяты из открытого ключа RSA.

Обратная расшифровка выполняется возведение шифра r в степень d, где d – секретный параметр RSA.

(**)

Гарантией того, что при повторном возведении в степень, будет получено исходное число, служит теорема Эйлера, которая утверждает, что для любого выполняется формула . Проверим операцию (**):

Расширенный алгоритм Евклида.

Алгоритм Евклида используются для нахождения по заданным целым числам A и B их наибольшего общего делителя С=НОД(А; B). Расширенный алгоритм Евклида используется также для нахождения целых чисел x, y таких, что выполняется условие . Используется во многих криптографических конструкциях, в том числе в методе RSA.

Основным равенством, используемым для вычисления НОД чисел А и В, является условие

НОД(А, В) = НОД( В, A mod B) (3)

где A mod B – остаток от целочисленного деления А на В. Применяя последовательно формулу (3), мы будем уменьшать числа А и В в этом алгоритме, пока A mod B не станет равным 0, тогда последнее значение аргумента В даст искомый НОД (А, В). Полное описание расширенного алгоритма мы объясним на примере. Пусть числа А и В равны 172 и 38 соответственно. Откроем рабочий лист Excel и разметим в первых строчках заголовки столбцов, а под заголовками А и В поместим числа 172 и 38, как указано на рисунке.

Рис.1. Примерный вид рабочего листа Excel для реализации расширенного алгоритма Евклида.

В столбце Amod B напишем формулу вычисления остатка от целочисленного деления А на В: =ОСТАТ(A3;B3), а в столбце A div B впишем формулу =ЦЕЛОЕ(A3/B3), обозначающую операцию нахождения целой части от деления A на В.

В следующей строке в столбах А и В поместим значения 38 и 20, взятые из двух ячеек, находящихся выше и правее (применение формулы (3)). Значения ячеек под заголовками Amod B и A div B надо вычислить как в предыдущей строке. В Excel для этого достаточно просто скопировать и вставить вышележащие клетки на строку ниже.

Повторяем эти операция несколько раз, пока не получим в столбце Amod B значение 0. Значение В в этой строке будет равно НОД(А,В) (в нашем примере он равен 2).

Далее заполняем столбцы x и y в обратном порядке снизу вверх. Поместим в столбцы x и y в последней полученной строке значения 0 и 1. Далее в каждой следующей (вышележащей) строке i поместим значения xi и yi, вычисленные по формулам:

где обозначает значение из столбца A div B, взятое из той же строки, где вычисляются значения x и y. Используя эти формулы, заполним столбцы x и y. В верхней строке получим значения x и y, которые нам нужны.

Алгоритм возведения в степень по модулю натурального числа.

Для выполнения шифрования по методу RSA приходится выполнять возведение в большую степень различных чисел, а результат приводить по модулю числа N, являющегося параметром метода и имеющего длину 512 и более бит. Уже для небольших a и e вычислить значение

(1)

выполняя сначала возведение в степень, а потом вычисляя остаток от деления на N, становится невозможным. Между тем, если применить алгоритм, описанный в этом разделе, можно вычислять выражения (1), для достаточно больших чисел a, e, N, оставаясь в рамках обычных операций с целыми числами, заложенных в компьютере.

Алгоритм быстрого возведения в степень основывается на идее замены прямого вычисления возведения в степень последовательными операциями умножения на a и возведения в квадрат. Для этого представим степень e число в двоичном исчислении

(2)

где любое ti для принадлежит , . Зная вектор разрядов , можно вычислить число e, применяя последовательные вычисления:

, (3)

Например, если e = 13, то в двоичном представлении e = 11012 , и 13 можно представить как результат вычисления , .

Последнее число и есть e.

Используя формулы (3), можно процедуру возведения в степень по модулю натурального числа N, записать в виде последовательности итераций:

где . Множитель в зависимости от принимает либо значение a, если , либо 1, если . Результат вычислений можно свести в таблицу

...

...

Пример. Вычислить .

Решение. Переведем степень e=13 в двоичный вид. Для этого заполним следующую таблицу:

e div 2

13

6

3

1

e mod 2

1

0

1

1

Таблица 1. Перевод десятичного числа e к двоичному представлению.

Искомое двоичное разложение числа e будет во второй строке таблицы , записанное в обратном порядке справа налево.

Далее, составим таблицу вычисления с, заполняя следующую таблицу:

е

1

1

0

1

с

5

11

7

10

Таблица 2. Возведение а=5 в степень e=13 по модулю 19.

В первой строке запишем цифры двоичное разложения числа 13. В первую ячейку второй строки поместим основание а=5. Далее каждое следующее значение с будем вычислять по формуле:

Например,

Приведем код на Паскале вычисления функции возведения в степень:

Function Rise(A,B,N:Integer):Integer;

var

B2:array[1..20] of byte;

i,C,L:integer;

Begin

C:=B; i := 1;

While C > 0 do

Begin

B2[i]:= C Mod 2;

C:= C div 2;

i:= i + 1;

End;

L:= i - 1;

i:= 1;

D:= A;

While i

Begin

D:= (D * D) Mod N;

If B2[L-i]= 1 Then D:=(D * A) Mod N;

i := i + 1;

End;

Rise := D;

End;




Похожие документы:

  1. « « 2010 г Методические указания для выполнения лабораторных работ по дисциплине «Защита аудиовизуальной и компьютерной информации» для студентов специальностей

    Методические указания
    ... « « 2010 г. Методические указания для выполнениялабораторныхработподисциплине «Защита аудиовизуальной и компьютерной информации» для ... и сетях. - М.: Изд-во "Яхтсмен", 2003. С.Н. Семкин, А.Н. Семкин Основы информационнойбезопасности объектов ...
  2. Методические указания по выполнению лабораторных работ по дисциплине «метрология стандартизация и сертификация»

    Методические указания
    ... ЦИОЛКОВСКОГО Кафедра «Информационные технологии» Методические указания повыполнениюлабораторныхработподисциплине «Метрология, ... памяти, возможности сети, мощность процессора, ... командировки, требуемый уровень безопасности, прямые и косвенные ...
  3. Методическая разработка и указания к лабораторным занятиям по дисциплине «информационные технологии управления»

    Методическая разработка
    ... ОГЛАВЛЕНИЕ Меры безопасности при работе на компьютере 4 ... работающим от сети переменного тока ... выполнениюлабораторных занятий подисциплине «Информационные технологии управления». Порядок проведения лабораторнойработы 1. Получить информационно ...
  4. Учебно-методический комплекс по дисциплине (68)

    Учебно-методический комплекс
    ... 8.2. Подготовка к выполнениюлабораторного практикума Для выполнениялабораторныхработподисциплине «Информационные технологии» необходим персональный ... алгоритмом? а) правила техники безопасности; б) инструкция по получению денег в банкомате; ...
  5. Учебно-методический комплекс по дисциплине (171)

    Учебно-методический комплекс
    ... 8.2. Подготовка к выполнениюлабораторного практикума Для выполнениялабораторныхработподисциплине «Информационные технологии» необходим персональный ... алгоритмом? а) правила техники безопасности; б) инструкция по получению денег в банкомате; ...

Другие похожие документы..