Параметры алгоритма ГОСТ 28147-89

Алгоритм ГОСТ 28147-89 является одним из блочных алгоритмов, основанных на сети Файстеля. В данной лаб. работе необходимо реализовать один из раундов сети Файстеля, определенных в этом алгоритме. Графическое описание одного раунда имеет вид (номер шага отмечен на соответствующем блоке схемы):

Шаг 0. Определяет исходные данные для основного шага криптопреобразования:

N – преобразуемый 64-битовый блок данных, в ходе выполнения шага его младшая (N1) и старшая (N2) части обрабатываются как отдельные 32-битовые целые числа. Таким образом, можно записать N=(N1,N2).

X – 32-битовый элемент ключа; в данной лаб. работе в качестве X можно использовать любое произвольно выбранное 32-битное число.

Т. обр., на вход алгоритма нужно подать три числа типа longint – X, N1, N2.

Шаг 1. Сложение с ключом. Число N1 складывается по модулю 232 с используемым на шаге элементом ключа X, результат передается на следующий шаг. Под сложением по модулю 232 можно понимать обычное сложение двух чисел типа longint с приведением результата к типу longint.

Шаг 2. Поблочная замена. 32-битовое значение, полученное на предыдущем шаге, интерпретируется как массив из восьми 4-битовых блоков кода: S = (S0, S1, S2, S3, S4, S5, S6, S7). Далее значение каждого из восьми блоков заменяется новым, которое выбирается по соответствующей таблице замен. Рекомендуется использовать следующие S-блоки (зададим их в виде одномерного списка, как договаривались ранее):

S-блок Значение
S0
S1
S2
S3
S4
S5
S6
S7

Шаг 3. Циклический сдвиг на 11 бит влево. Результат предыдущего шага сдвигается циклически на 11 в сторону старших разрядов (т.е. влево, shl) и передается на следующий шаг.

Шаг 4. Побитовое сложение: значение, полученное на шаге 3, побитно складывается по модулю 2 с N2. Напомним, что побитное сложение по модулю 2 – это операция xor (исключающее или).

Шаг 5. Переприсвоение: N2 := N1; а в N1 записывается результат выполнения предыдущего шага.

Шаг 6. Вернуть результат: N=(N1, N2).

 

Т.к. сеть Файстеля в общем случае строится на основе необратимых преобразований, то при построении обратного отображения не имеет смысл вычислять обратные S-блоки и выполнять указанные преобразования в обратном порядке. Обратное преобразование в этом случае будет иметь вид:

Шаг 0. Определяет исходные данные для основного шага обратного криптопреобразования:

N – преобразуемый 64-битовый блок данных, в ходе выполнения шага его младшая (N1) и старшая (N2) части обрабатываются как отдельные 32-битовые целые числа. Таким образом, можно записать N=(N1,N2).

X – 32-битовый элемент ключа; в данной лаб. работе в качестве X можно использовать любое произвольно выбранное 32-битное число.

Т. обр., на вход алгоритма нужно по-прежнему подать три числа типа longint – X, N1, N2.

Шаг 1. Сложение с ключом. Число N2 складывается по модулю 232 с используемым на шаге элементом ключа X, результат передается на следующий шаг.

Шаг 2. Поблочная замена. 32-битовое значение, полученное на предыдущем шаге, интерпретируется как массив из восьми 4-битовых блоков кода: S = (S0, S1, S2, S3, S4, S5, S6, S7). Далее значение каждого из восьми блоков заменяется новым, которое выбирается по соответствующей таблице замен (ПО ТОЙ ЖЕ ТАБЛИЦЕ ЗАМЕН, ЧТО И В ПРЕДЫДУЩЕМ АЛГОРИТМЕ).

Шаг 3. Циклический сдвиг на 11 бит влево. Результат предыдущего шага сдвигается циклически на 11 в сторону старших разрядов (т.е. влево, shl) и передается на следующий шаг.

Шаг 4. Побитовое сложение: значение, полученное на шаге 3, побитно складывается по модулю 2 с N1.

Шаг 5. Переприсвоение: N1 := N2; а в N2 записывается результат выполнения предыдущего шага.

Шаг 6. Вернуть результат: N=(N1, N2).

В данной лаб. работе предлагается программно реализовать 6 описанных шагов одного раунда алгоритма ГОСТ 28147-89. Предлагается также построить функцию, выполняющую обратное преобразование.

 

При выполнении работы требуется решить следующие задачи:

1. Реализовать 8 S-блоков, описанных в шаге 2 раунда шифрования ГОСТ (см. таблицу). Решение этой задачи – это процедура или функция, которой на вход подается 32-битное число. Данная подпрограмма должна разбить это число на 8 4-битных блоков и осуществить замену каждого i-го блока (i=0,1,…,7) в соответствии с i-й таблицей.

2. Реализовать функцию, выполняющую 11 –битовый левый циклический сдвиг своего 32-битного аргумента.

3. Реализовать функцию, выполняющую 1 раунд шифрования по ГОСТ 28147-89. Реализовать также обратную к ней функцию.

 

Отчет по работе должен включать:

1. 2-минутное сообщение

2. программу-тест

 


 

Лабораторная работа № 6

 

Программная реализация алгоритма шифрования ГОСТ 28147-89.

 

Задание: Программно реализовать алгоритм блочного шифрования ГОСТ 28147-89, один раунд которого был получен на предыдущем лабораторном занятии.

 

Время выполнения: 1 пара.

 

Алгоритм ГОСТ 28147-89 – блочный алгоритм шифрования данных, имеющий следующие основные параметры:

· Размер блока – 64 бит

· Длина ключа – 256 бит

· Количество итераций Файстеля – 32. На каждой итерации Файстеля используется определенная 32-битная часть ключа и 64-битный блок данных, являющийся выходом предыдущей итерации Файстеля. На первой итерации Файстеля входными данными является шифруемый 64-битный блок информации.

· При работе алгоритма 256-битный ключ шифрования K разбивается на 8 32-битных подключей, использующихся на итерациях сети Файстеля: K = K0 | K1 | K2 | K3 | K4 | K5 | K6 | K7. На итерациях Файстеля при шифровании данных используются следующие подключи:

Номер итерации
Номер подключа
Номер итерации
Номер подключа

При расшифровании данных, соответственно, используются след. подключи:

Номер итерации
Номер подключа
Номер итерации
Номер подключа

Таким образом, зашифрование (64-битного) блока данных состоит в последовательном применении к нему 32 итераций Файстеля, реализации которого мы получили на предыдущем занятии. Выбор части ключа (Х) выполняется в соответствии с таблицами выше. При расшифровании можно использовать те же подключи, что и при зашифровании, но цикл перебора итераций Файстеля запустить в обратном порядке.

 

При выполнении работы требуется решить следующие задачи:

1. Реализовать алгоритм, выполняющий зашифрование одного 64-битного блока данных, представленного одним числом int64 или двумя числами longint, с помощью алгоритма ГОСТ 28147-89.

2. Реализовать алгоритм, выполняющий расшифрование одного 64-битного блока данных.

 

Отчет по работе должен включать:

1. 2-минутное сообщение

2. программу-тест

 


 

Лабораторная работа № 7

 

Режимы использования блочных шифров.

 

Задание: Ознакомиться и программно реализовать наиболее известные методы использования блочных шифров:

· режим простой замены (ECB)

· режим шифрования с обратной связью (CBC, режим сцепления блоков)

· режим гаммирования с обратной связью (CFB, режим обратной связи по шифротексту)

· режим OFB (обратная связь по выходу).

 

Время выполнения: 1 пара.

 

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

 

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

Обозначим:

· M={mi} – исходный текст M, разделенный на блоки m1, m2, …, mN

· C={ci} – шифрованный текст С, разделенный на блоки с1, с2, …, сN

· E – функция зашифрования на ключе K

· D – функция расшифрования на ключе K.

Тогда режим простой замены можно описать в виде формулы:

Графическое описание Формула
Зашифрование: ci = E(mi) Расшифрование: mi = D(ci)

 

В режиме шифрования с обратной связью (СВС, режим сцепления блоков) каждый блок сi, i³1, шифртекста перед очередным зашифрованием складывается по модулю 2 со следующим блоком открытого текста mi+1. При этом вектор c0 полагается равным начальному вектору IV (Initial Vector, вектор инициализации). Начальный вектор хранится в секрете. Рекомендуется его постоянно менять. Вектор инициализации также используется в двух нижеописанных режимах использования шифра.

Режим сцепления блоков можно описать в следующем виде:

Графическое описание Формула
Зашифрование: ci = E(ci-1 Å mi), c0=IV Расшифрование: mi = D(ci) Å ci-1

 

Режим гаммирования с обратной связью (CFB, режим обратной связи по шифрованному тексту) предполагает, что предыдущий блок шифрованного текста шифруется еще раз и результат складывается с блоком исходного текста с помощью поразрядного сложения по модулю 2 (т.е. операции XOR).

При использовании этого режима шифрования манипулирование исходным текстом путем перестановки или удаления блоков шифротекста невозможно.

Режим обратной связи по шифротексту можно описать в следующем виде:

Графическое описание Формула
Зашифрование: ci = mi Å E(ci-1), c0=IV Расшифрование: mi = E(ci-1) Å mi

 

Режим обратной связи по выходу (OFB) подобен режиму CFB, но величины, складываемые поразрядно по модулю 2 с блоками исходного текста (с помощью операции XOR), не зависят от исходного текста.

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

Обозначим si – блок гаммы, накладываемый на i-й блок исходного текста. Тогда режим обратной связи по выходу можно описать в следующем виде:

Графическое описание Формула
Зашифрование: si = E(si-1), ci = mi Å si, s0 = IV Расшифрование: si = E(si-1), mi = ci Å si

 

При выполнении работы требуется решить следующие задачи:

1. Реализовать процедуры, выполняющие шифрование и расшифрование текста алгоритмом ГОСТ 28147-89 с помощью режима простой замены. Алгоритм шифрования одного блока исходного текста получен в предыдущей лаб. работе.

2. Реализовать процедуры, выполняющие шифрование и расшифрование текста с помощью других описанных здесь режимов использования шифра.

 

Отчет по работе должен включать:

1. 2-минутное сообщение

2. программу-тест


 

Лабораторная работа № 8

 

Алгоритм асимметричного шифрования Эль-Гамаля (El-Gamal).

 

Задание: Реализовать алгоритмы шифрования данных и генерации ключей Эль-Гамаля.

 

Время выполнения: 1 пара.

 

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

 

Алгоритм Эль-Гамаля – один из самых известных алгоритмов асимметричного шифрования данных, основанных на проблеме вычисления дискретного логарифма чисел в конечном поле. Данный алгоритм также допускает построение протокола цифровой подписи документов (на нем основаны стандарты ЭЦП DSA (амер. стандарт) и российский стандарт, ныне устаревший, ГОСТ 34.10-94).

 

Пусть даны два пользователя – А (Алиса) и Б (Боб). Пусть пользователь A желает инициировать криптосистему (т.е. сгенерировать все ключи и др. необходимые параметры) и начать обмен конфиденциальной информацией с Б. Тогда он должен выполнить следующее:

1. Сгенерировать простое число p (рекомендуется, чтобы оно было как минимум 512-битным). Сгенерировать также случайное целое число g, 1 < g < p.

2. Сгенерировать случайное целое число a, 1 < a < p. Вычислить также y = ga mod p.

3. Составить открытый ключ Ko = {p,g,y} и передать его пользователю Б.

4. Составить секретный ключ Ks = {a} и оставить его в секрете.

 

Допустим, что пользователь Б желает передать пользователю А некую конфиденциальную информацию, представленную в виде целого числа M, M < p (или в виде массива таких чисел; число p он узнает, получив открытый ключ пользователя А). Тогда он должен:

1. Выбрать произвольное число k такое, что НОД (k, p-1) = 1.

2. Найти y1 = gk mod p.

3. Найти y2 = M Å (yk mod p), где M – исходное сообщение.

4. Результат шифрования: пара (y1, y2).

 

Пользователь А, получив шифровку (y1, y2) от пользователя Б, выполняет ее расшифрование:

1. Расшифрование: M = (y1a mod p) Å y2

 

Заметим, что для успешной реализации данной схемы шифрования необходимо реализовать алгоритм вычисления НОД двух чисел (используется на первом шаге шифрования данных) Для вычисления НОД двух чисел используется алгоритм Евклида. Опишем его на псевдокоде (алгоритмическом языке) в следующем виде:

Алгоритм GCD

Вход: a, b: longint

Выход: c: longint // с = НОД(a,b).

1. Если a>b, то поменять местами а и b;

2. Присвоить с := a mod b. Если c=0, то вернуть b.

3. Присвоить a := b; b := c; Перейти к шагу 2.

 

 

При выполнении работы требуется решить следующие задачи:

1. Реализовать алгоритм Евклида, выполняющий поиск НОД двух чисел.

2. Реализовать криптосистему Эль-Гамаля. При этом рекомендуется выбрать следующие параметры этой криптосистемы:

· Исходное сообщение должно быть не более чем 16-битным числом (или массивом таких чисел).

· В качестве числа p возьмите простое число, большее 216, например, 87649.

· Для хранения промежуточных операций, во избежание переполнения, используйте тип int64.

 

Отчет по работе должен включать:

  1. 2-минутное сообщение
  2. программу-тест

 


 

Лабораторная работа № 9

 

Бесключевые функции хеширования. Алгоритм SHA-1.

 

Задание: Реализовать алгоритм хеширования данных SHA-1.

 

Время выполнения: 1 пара.

 

Алгоритм SHA-1 – это алгоритм бесключевого хеширования данных, вырабатывающий 160-битную свертку сообщения.

 

Обработка исходного сообщения выполняется по одному 512-битному блоку. Поэтому исходное сообщение необходимо дополнить так, чтобы его длина стала кратной 32 битам. Оно дополняется до этой длины даже если его длина уже кратна указанной.

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

 

Инициализация алгоритма:

1. Дополнить сообщение до длины, кратной 512 битам, как описано выше.

2. Завести переменные

· A = 6745230116 (=173258419310);

· B = EFCDAB8916 ( = 402323341710);

· C = 98BADCFE16 (=256238310210);

· D = 1032547616 (=27173387810);

· E = C3D2E1F016 (=328537752010).

Для хранения этих переменных используйте тип 32-битное целое число (для С++-программистов рекоменжуется использовать тип без знака).

3. Завести переменные a,b,c,d,e и скопировать в них значения переменных A,B,C,D и E соответственно (программистам Дельфи придется придумать для них другие имена).

 

Для реализации алгоритма хеширования необходимо получить следующие вспомогательные алгоритмы:

1. Определить операцию <<< циклического сдвига числа влево на заданное количество позиций.

2. Определить значения констант Kt, где t = 0, …, 79, в виде

 

3. Определить функции ft(X,Y,Z), где

4. Определить значения Wt по формуле:

При этом за Mt обозначен 32-битный блок исходного текста, имеющий номер t (т.е. M1 – это первые 32 бита исходного текста, M2 – следующие 32 бита исходного текста, …, M15 – последние 32 бит исходного текста)

 

Описание алгоритма хеширования имеет вид (опишем его на псевдокоде):

for t=0 to 79 do begin

temp = (a <<< 5) + ft(b, c, d) + e + Wt + Kt;

e = d;

d = c;

c = b <<< 30;

b = a;

a = temp;

end

После этого значения a,b,c,d,e складываются со значениями A,B,C,D,E соответственно, затем осуществляется переход к обработке следующего 512-битного блока сообщения. На выход алгоритма подается 160-битовое значение, являющееся битовой конкатенацией чисел A,B,C,D,E (в нашем случае необходимо вернуть сами числа A,B,C,D,E в виде массива 5 чисел.).

 

При выполнении работы требуется решить следующие задачи:

1. Реализовать алгоритм хеширования файла. Для простоты, считывайте файл в память 512-битными (64-байтными) блоками. Текст должен быть записан в виде массива 32-битных целых чисел. За один такт хеширования обрабатываются 16 элементов этого массива.

 

Отчет по работе должен включать:

  1. 2-минутное сообщение
  2. программу-тест

 


 

Лабораторная работа № 10

 

Пользовательские навыки работы с системой виртуализации Sun xVM Virtual Box и гостевыми виртуальными машинами.

 

Задание: Научиться создавать виртуальные машины с различными гостевыми системами, запускать их и выполнять их настройку. Ознакомиться с основными возможностями системы виртуализации Sun xVM Virtual Box.

 

Время выполнения: 1 пара.

 

При выполнении работы требуется решить следующие задачи:

  1. Научиться создавать новую виртуальную машину.
    1. Запустите программу Virtual Box. Перед вами откроется основное окно программы:

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

    1. Научитесь работать с виртуальными машинами, с уже установленными ОС на виртуальных дисках, на примере диска с Windows 7 (или Windows Vista, по выбору). Создайте новую виртуальную машину (в верхней части основного окна Virtual Box нажмите кнопку «Создать»). Затем нажмите «Далее». В открывшемся окне введите имя создаваемой машины и ее тип. Имя – это ее идентификатор, который будет отображаться в главном окне программы. Тип машины – это тип ОС на котором она устанавливается. В качестве типа выберите “Windows 7 (или Vista)”, а в качестве имени – строку, содержащую вашу фамилию и номер группы:

После этого нажмите «Далее». Теперь система предложит выделить количество ОЗУ, которое будет отдано виртуальной машине. Укажите значение 512 М:

Далее система предложит указать, что нужно использовать в качестве жесткого диска системы. В нашем случае жесткий диск уже создан. Скопируйте его с ftp-сервера из папки ftp://msbook/onlyread/OS_IMGs/ архив вида win7*.7z и распакуйте файл с расширением .vdi, содержащийся в этом архиве, на диск D: вашей машины в папку D:\student\<номер группы>\<фамилия>\IMG. ВНИМАНИЕ! ПЕРЕД СКАЧИВАНИЕМ ПРОЧИТАЙТЕ ЗАМЕЧАНИЯ НИЖЕ!!!

ЗАМЕЧАНИЕ: При добавлении вашего виртуального диска к менеджеру виртуальных дисков может появиться ошибка, которая говорит, что такой виртуальный диск уже зарегистрирован в системе:

Это говорит о том, что до вас работал другой студент, и его образ виртуальной машины остался зарегистрированным в программе. Диски регистрируются в VirtualBox по их уникальному UUID, поэтому вам необходимо скачать любой другой диск. Для предотвращения путаницы, номер используемого вами диска отобразите в названии ВМ, переименовав ее (см. далее, как переименовать машину). Сами также скачивайте диск с номером, не отображенным в именах уже созданных ВМ.

Замечание 2. Т.к. вам придется одновременно качать образы дисков, желательно использовать ftp-клиента с поддержкой докачки, в связи с возможными обрывами соединения. Для этого лучше всего использовать клиент FileZilla. Запустите его, и в основном окне укажите адрес ftp-сервера. Доступ к нему анонимный, поэтому ничего больше указывать не нужно. Далее нажмите кнопку «Быстрое соединение»:

В правой части окна отображается файловая структура ftp-ресурса, а в левой части – структура вашего компьютера. Чтобы скопировать файл, перетяните его из одной части окна в другую. После этого сразу начнется его копирование:

После загрузки и распаковки виртуального диска, в программе VirtualBox выберите опцию «Существующий» и нажмите кнопку менеджера жестких дисков:

Менеджер виртуальных дисков сохраняет информацию о известных в системе виртуальных дисках. Чтобы использовать диск в виртуальной машине, его нужно сначала зарегистрировать в этом менеджере (чтобы создать новый диск и зарегистрировать его, нажмите кнопку «создать», а чтобы зарегистрировать уже имеющийся диск, нажмите «Добавить»):

Далее укажите путь к распакованному вами файлу. После этого описание диска появится в списке. Выберите его и нажмите «Выбрать»:

После этого нажмите «Далее» и «Готово». Виртуальная машина создана.

  1. Научиться выполнять базовую настройку виртуальной машины.
    1. Щелкните мышью на имени виртуальной машины в основном окне программы Virtual Box и нажмите кнопку «Свойства»:

После этого откроется окно, позволяющее персонализировать настройки вашей ВМ. Переименуйте в нем вашу виртуальную машину, с указанием номера используемого диска:

    1. Ассоциировать ВМ с сетевым интерфейсом. Для этого выберите вкладку «Сеть» и в правой части окна, под вкладкой «Адаптер 1» в опции «Тип подключения» выберите «Сетевой мост». Это значит, что виртуальный интерфейс виртуальной машины будет объединен в мост с сетевой картой вашего компьютера и будет ее использовать для передачи данных по сети. Далее выберите в списке вашу сетевую карту (если их несколько):

После этого нажмите кнопку «ОК».

    1. Запустить ВМ. В главном окне программы VirtualBox щелкните мышью на имени машины и затем нажмите кнопку «Старт»:

Дождитесь загрузки ОС. На все появляющиеся диалоговые окна реагируйте следующим образом:

Перед загрузкой ОС будет произведена ее настройка, затем будет выполнена перезагрузка. После перезагрузки необходимо ввести имя пользователя и имя машины (процесс является первой настройкой только что установленной Windows 7):

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

Другими словами, чтобы начать работать мышью внутри ВМ, нужно просто щелкнуть по окну ВМ, а чтобы продолжить работать с основной ОС, нужно нажать хост-клавишу (по умолчанию – правый Ctrl).

В диалоговом окне нажмите «Захватить» и продолжите работу с ВМ.

Далее введите пароль (можно оставить его пустым). Если захотите ввести пароль, обязательно также указать подсказку для него:

Далее укажите, какие параметры безопасности ОС следует настроить:

Для вашей ВМ выбор опции в этом окне значения не имеет.

Настройте остальные требуемые параметры и перезагрузите ВМ. После ее загрузки установите Дополнения гостевой ОС в вашу ВМ.

Для этого в меню окна с вашей ВМ выберите «Устройства –> установить дополнения гостевой ОС»:

Замечание: Дополнения гостевой ОС позволят вам работать с сетью, звуком и некоторыми другими устройствами вашей ВМ. Кроме того, они позволят мыши автоматически захватываться окном ВМ и автоматически освобождаться, без нажатия хост-клавиши.

Внутри ВМ должно отобразиться меню автозапуска CD-ROM. Запустите предлагаемый exe-файл и установите программу. В процессе установки разрешите установку драйверов sun:

После завершения установки выберите опцию «Перезагрузить компьютер»:

    1. Отключите UAC в ВМ.

Замечание: отключение UAC – шаг, предлагаемый для повышения удобства и совместимости программ. Т.к. UAC может серьезно повысить защищенность ОС, не рекомендуется этого делать на основных ОС.

Чтобы отключить UAC, в панели управления выберите User Accounts:

В открывшемся окне выберите «Change user account control settings»:

И в открывшемся окне переместите ползунок в крайнее нижнее положение:

    1. Проверить статус лицензии ВМ. Т.к. данный образ ВМ был подготовлен с помощью общедоступной версии Windows 7, то он имеет ограниченный срок действия. Для более подробной информации просмотрите «описание ВМ» на ftp-сервере преподавателя.

В меню «пуск выполните команду» slmgr.vbs –dlv. В открывшемся окне отобразится информация об используемом лицензионном ключе и об окончании срока лицензии:

Если время подойдет к 0 минут, можно выполнить команду slmgr -rearm и сбросить счетчик. Количество возможных выполнений этой команды отображено в окне выше в секции «remaining windows rearm count».

    1. Настройте сеть в ВМ. Внутри гостевой машины в панели управления выберите Network and sharing center:

Откроется окно, отображающее информацию о работе вашей сети. Чтобы изменить параметры сетевого подключения, выберите «Change adapter settings»:

В отобразившемся списке подключений выберите подключение по локальной сети:

Нажмите по нему правой кнопкой мыши и выберите в контекстном меню «Properties». В открывшемся окне выберите «IP v4» и нажмите «Properties»:

Далее пропишите ip-адрес, связный с подсетью 10.113.0.0/255.0.0.0. ВНИМАНИЕ: IP-адреса виртуальных машин ОБЯЗАТЕЛЬНО должны быть разными и не совпадать с IP-адресами хостовых систем:

    1. С помощью команды ping проверить связность с хостовой машиной. Если связности нет, попробуйте перезагрузит ВМ.
  1. Научиться создавать открытую сетевую папку на виртуальной машине, с анонимным доступом к этой папке. Она понадобится, если потребуется копировать даны в и из виртуальной машины. Для простоты настроим доступ для пользователя «гость» (guest).

Замечание: создавать общие папки с гостевым доступом пользователей на невиртуальных машинах не рекомендуется т.к. это может приводить к проблемам безопасности.

Сначала нужно включить учетную запись «гость» (по умолчанию она отключена). Для этого в панели управления выберите «Computer management»:

В открывшейся оснастке выберите вкладку «Local users and groups». Далее щелкните правой кнопкой мыши по записи «Guest» и нажмите «properties »:

В открывшемся окне снимите галочку с опции «account is disabled»:

  1. Создайте папку, которую нужно сделать доступной по сети. Далее щелкните по ней правой кнопкой мыши и выберите «properties». В открывшемся окне щелкните на вкладку «Sharing», а в ней нажмите на кнопку «Advanced Sharing»:

В открывшемся окне сначала выберите опцию «Share this folder»:

Отредактируйте поле «Share name». Далее нажмите кнопку «Permissions» и установите права для сетевого доступа к этой папке:

Выберите пользователей и группы (по умолчанию выбрана группа «Все») и отредактируйте права доступа к этой папке. Установите галочку «Full control» для полного доступа к папке.

В окне «properties» щелкните на гиперссылку «Network and Sharing center».

В открывшемся окне установите разрешение на доступ к файлам и принтерам по сети:

Нажмите «Save changes». Далее в окне «properties» щелкните на вкладку «Security» установите локальные права доступа для гостя (которые будут действовать при его олицетворении):

Нажмите «Edit» и кнопку «Add», чтобы добавить разрешения для пользователя «guest». В открывшемся окне нажмите «Advanced»:

В раскрывшемся окне нажмите «Find now», чтобы компьютер выполнил поиск всех учетных записей и групп на локальном компьютере:

После этого выберите учетную запись гостя и нажмите ОК:

Далее добавьте гостю полный доступ к этой папке:

Далее отредактируйте права локальной политики компьютера для разрешения доступа гостя по сети (по умолчанию доступ по сети с учетной записью guest запрещен).

Для этого выполните команду gpedit.msc. Откроется оснастка-редактор локального объекта групповой политики:

В левой части открывшегося окна раскройте «Computer configuration -> windows settings -> security settings -> local policies -> user rights assignments». В списке опций справа выберите опцию «Deny access to this computer from the network»:

Дважды щелкните по этому пункту, чтобы отредактировать параметр:

Выберите запись «guest» и нажмите кнопку «remove».

a. Попробуйте обратиться к созданной вами общей папке из основной машины. Для этого используйте UNC-пути к этой папке (т.е. пути вида \\имя_компьютера\имя_ресурса) в окне проводника:

 

 

Отчет по работе должен включать:

1. Устный отчет на 2 мин. с демонстрацией полученных умений.


 

Лабораторная работа № 11

 

Программа True Crypt. Защита конфиденциальной информации. Программа PGP Desktop и стандарт защиты конфиденциальных данных PGP.

 

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

 

Время выполнения: 1 пара.

 

TrueCrypt - это программная система для создания и использования шифруемого-на-лету тома (устройства хранения данных). Шифрование-на-лету означает, что данные автоматически шифруются или расшифруются прямо во время их считывания или записи, не отвлекая пользователя. Данные, сохранённые на зашифрованном томе, невозможно прочесть (расшифровать) без использования правильных пароля/ключевого файла или без правильных ключей шифрования. Шифруется вся файловая система, включая имена папок и файлов, содержимое файлов, пустое пространство, метаданные, и тому подобное).

Файлы могут копироваться с, и на подключенный том TrueCrypt также, как они копирутся с/на любой нормальный диск (к примеру, с помощью технологии перетаскивания - drag-n-drop). Файлы автоматически дешифруются "на лету" (в память) во время чтения или копирования с зашифрованного тома TrueCrypt. Верно и обратное - файлы, записываемые или копируемые на том TrueCrypt, "на лету" шифруются в памяти прямо перед записью на диск. Однако это не значит, что весь файл, предназначенный для шифрования/расшифрования, должен целиком попасть в память перед шифрованием/расшифрованием. Для TrueCrypt не требуется дополнительная память.

TrueCrypt никогда не сохраняет никакие данные в незашифрованном виде на диск - он их временно хранит в памяти. Даже когда том подключен, данные на нём хранятся в зашифрованном виде. Когда вы перезапускаете Windows или выключаете компьютер, том отключается, и файлы, хранимые на нём, становятся недоступными, оставаясь зашифрованными. То же самое происходит в случае непредвиденного отключения электроэнергии (без правильного завершения работы системы). Чтобы получить к ним доступ снова, вы должны подключить том, используя правильные пароль и/или ключевой файл.

 

PGP (Pretty Good Privacy) — компьютерная программа, позволяющая выполнять операции шифрования (кодирования) и цифровой подписи сообщений, файлов и другой информации, представленной в электронном виде. Первоначально разработана Филиппом Циммерманном в 1991 году.

PGP имеет множество реализаций, совместимых между собой и рядом других программ (GnuPG, FileCrypt и др.) благодаря стандарту OpenPGP (RFC 4880), но имеющих разный набор функциональных возможностей. Существуют реализации PGP для всех наиболее распространённых операционных систем.

Пользователь PGP создаёт ключевую пару: открытый и закрытый ключ. При генерации ключей задаются их владелец (Имя и адрес электронной почты), тип ключа, длина ключа и срок его действия.

PGP поддерживает два типа ключей -- RSA и Diffie-Hellman/DSS (Elgamal в терминологии GnuPG). Длина ключа может составлять от 1024 до 4096 бит. Ключи могут содержать один главный ключ и дополнительные ключи для шифрования. При этом ключ электронной подписи в ключах Diffie-Hellman/DSS всегда имеет размер 1024. Срок действия для каждого из типов ключей может быть определён как неограниченный или до конкретной даты. Для защиты ключевого контейнера используется секретная фраза.

Электронная цифровая подпись формируется путём подписи дайджеста(хэш значения, свертки) сообщения (файла) закрытым ключом отправителя (автора). Для формирования дайджеста могут использоваться алгоритмы MD5, SHA-1, RIPEMD-160, SHA-256, SHA-384, SHA-512. В новых версиях PGP поддержка MD5 осуществляется для сохранения совместимости с ранними версиями. Для подписи используются алгоритмы RSA или DSA (в зависимости от типа ключа).

Шифрование производится с использованием одного из пяти симметричных алгоритмов (AES, CAST5, TripleDES, IDEA, Twofish) на сеансовом ключе. Сеансовый ключ генерируется с использованием криптографически стойкого генератора псевдослучайных чисел. Сеансовый ключ зашифровывается открытым ключом получателя с использованием алгоритмов RSA или Elgamal (в зависимости от типа ключа получателя).

В целях уменьшения объёма сообщений и файлов и, возможно, для затруднения криптоанализа PGP производит сжатие данных перед шифрованием. Сжатие производится по одному из алгоритмов ZIP, ZLIB, BZIP2. Для сжатых, коротких и слабосжимаемых файлов сжатие не выполняется.

 

GNU Privacy Guard, GnuPG, GPG — свободная альтернатива набору криптографического ПО PGP, выпущенная под лицензией General Public License. Является частью проекта GNU, получила гранты от Германского правительства. GnuPG полностью совместим со стандартом IETF OpenPGP. Текущие версии GnuPG могут взаимодействовать с PGP и другими OpenPGP-совместимыми системами в режиме совместимости. GnuPG позволяет шифровать и подписывать данные в целях безопасного хранения и передачи информации.

GnuPG изначально создан Вернером Кохом (Werner Koch). Его свойства:

  • Полная альтернатива PGP.
  • Не использует патентованные алгоритмы.
  • Распространяется под GNU General Public License.
  • Полная реализация OpenPGP (RFC2440).
  • Дешифрование и аутентификация сообщений, созданных с помощью PGP 5, 6 и 7.
  • Поддержка электронной подписи с помощью алгоритмов ElGamal, DSA, RSA и хеш-функций MD5, SHA-1, RIPE-MD-160 и TIGER.
  • Работа с ассиметричным шифрованием ElGamal и RSA (длина ключа от 1024 до 4096 бит)
  • Поддержка блочных алгоритмов симметричного шифрования AES, 3DES, Blowfish, Twofish, CAST5, а также IDEA с помощью плагина.
  • Лёгкая реализация новых алгоритмов с помощью дополнительных модулей.
  • Поддержка просроченных ключей и подписей.
  • Интегрированная поддержка серверов ключей.

GnuPG — ПО, часто включаемое в свободные ОС, такие как GNU/Linux, FreeBSD, OpenBSD и NetBSD. В 2005 году выпущен Gpg4win — прогрaммный набор, который включает в себя GnuPG для Windows, WinPT, Gnu Privacy Assistant, и плагины GnuPG для Проводника Windows и Outlook.

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

GnuPG не использует запатентованное или иначе ограниченное ПО и/или алгоритмы, включая алгоритм IDEA. GnuPG использует другие непатентованные алгоритмы CAST5, 3DES, AES, Blowfish и Twofish. Тем не менее, возможно использование в GnuPG и алгоритма IDEA с помощью дополнительного модуля.

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

 

 

При выполнении работы требуется решить следующие задачи:

  1. Провести бенчмарку компьютера. Этот тест выполняет проверку скорости выполнения алгоритмов шифрования на машине. Например алгоритм AES будет шифровать/расшифровывать со скоростью 99/94,5 МБ/с.
    1. Нажмите Tools -> Benchmark…

    1. Нажмите [Close]
  1. Для создания нового файлового контейнера в основном окне программы нажмите Create Volume:

Далее нажмите [Create a file container], нажмите [Next>]

Выбрать [Standard TrueCrypt volume], нажмите [Next>]

В следующем окне предлагается выбрать директорию для сохранения контейнера:

Следует указывать путь следующего вида: D:\stud\<№ группы>\<фамилия студента>. Затем нажмите [Next>].

Выберите алгоритм шифрования:

Следует выбирать установки предложенные по умолчанию (Encryption Algorithm – AES, Hash Algorithm – RIPEMD-160)

нажмите [Next>]

Установите размер контейнера (например 1ГБ) и нажмите [Next>]

 

Введите пароль и подтверждение пароля:

нажмите [Next>]

Следующее окно предупреждает о том, что пароль может быть легко взломан и предлагает ввести пароль длиной более 20 символов. В данной лабораторной работе допускается использование более короткого пароля

Нажмите [Да]

Процесс генерации ключа:

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

нажмите [Format]

После создания контейнера предлагается создать другой контейнер [Next>] или закрыть мастера создания контейнеров [Exit]:

Нажмите [Exit]

  1. Монтировать контейнер и скопировать на него несколько файлов

Нажмите кнопку [Select File…] в основном окне программы, выберите созданный контейнер, который собираетесь смонтировать, нажмите [Mount]

Введите пароль к контейнеру

После чего в списке появится установленный контейнер, а в проводнике он будет отображаться в виде нового логического диска:

Теперь можно пользоваться контейнером как обычным диском.

  1. Зашифровать физический раздел жесткого диска. Для этого сначала создайте этот раздел (пустое место на диске под ваш раздел уже было выделено на вашей ВМ). Для этого зайдем в апплет «Администрирование» Панели управления и откроем ярлык «Управление компьютером». На левой панели выберите вкладку «Управление дисками»:

Нажмите правой кнопкой на области, которая не распределена и выберите в контекстном меню пункт «Создать раздел». После этого откроется мастер создания разделов. Нажмите «Далее».

В следующем окне выберите «Основной раздел» и нажмите «Далее»:

В следующем окне согласитесь с предложенными данными и нажмите «Далее»:

В следующем окне назначьте любую из предложенных букв вашему новому дисковому разделу:

После этого нажмите «Далее»:

В следующем окне выберите следующие параметры создаваемого раздела: файловая система – NTFS, размер кластера – По умолчанию. Для экономии времени поставьте галочку напротив опции «Быстрое форматирование»:

Нажмите кнопку «Готово».

Далее повторите шаг 2 данной работы, но укажите «Create a volume within non-system partition/device».

  1. Создать спрятанный контейнер внутри существующего контейнера. Для этого требуются действия, аналогичные п. 2 предыдущей лаб., но потребуется указать, что контейнер имеет тип Hidden (спрятанный):

Нажмите [Next>]

В окне VolumeCreation Mode выбрать Direct mode. Нажмите [Next>]

Открыть контейнер созданный в предыдущей лаб. работе (если он утерян, вернитесь к предыдущему шагу и вместо опции Direct mode укажите Normal mode; при этом сначала будет предложено создать обычный контейнер), нажмите [Next>]

Введите пароль к этому контейнеру

Создание скрытого контейнера:

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

Завершение работы мастера

Нажмите [Exit]

  1. Монтируйте спрятанный контейнер и скопируйте в него несколько файлов (при монтировании укажите файл с обычным контейнером, но вводите пароль от спрятанного контейнера). Затем монтируйте обычный контейнер и убедитесь, что файлы спрятанного контейнера на нем не видны.
  2. Начало работы с программой OpenPGP.

1. Установка и настройка PGP Desktop.

Сначала выберите язык установки:

Затем согласитесь с EULA и пройдите несколько шагов:

Далее ответьте утвердительно (Yes) на предложение перезагрузки:

После перезагрузки системы запустится мастер установки PGP. Укажите "yes" и нажмите "Далее":

Далее укажите свои данные. Эти данные потом можно будет использовать для создания вашей пры ключей в PGP:

Далее в окне выбора типа лицензирования программы укажите "использовать без лицензии и отключить большинство функций":

Далее выберите опцию "Я уже использовал программу PGP":

После этого нажмите насколько раз "Далее", затем нажмите "Skip". Завершите установку программы.

После этого в системном трее появится иконка программы PGP:

 

2. Генерация ключевых пар и ключей.

Щелкнув по ней левой или правой кнопкой мыши, вы откроете меню PGP:

Выберите "Open PGP Desktop", чтобы открыть программу "PGP Desktop":

Чтобы сгенерировать новую пару ключей, выберите в меню keys -> New keyring:

После этого появится новя запись в секции "Ключи" основного окна. Щелкните по ней правой кнопкой мыши и переименуйте

так, как вам удобно:

Чтобы сгенерировать ключи в выбранном keyring, нажмите File->New PGP Key. Откроется мастер создания ключей:

Нажмите "Далее" и укажите пользователя, для которого требуется создать ключевую пару:

Замечание: эта информация будет использоваться при обмене ключами. Это значит, что имя и почтовый адрес будут

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

Нажмите "Advanced" и укажите дополнительные параметры ключа и используемых с ним алгоритмов шифрования данных:

Укажите размер ключа 4096 бит, установите срок окончания действия ключа (произвольный). Укажите предпочитаемый симметричный шифр - Twofish вместо AES.

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

При любом обращении к секретному ключу, как-то расшифрование данных или установление ЭЦП, вас попросят ввести эту парольную фразу.

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

После этого программа выполнит генерацию ключей:

Далее мастер завершит работу.

 

3. Дополнительные параметры ключей. Обмен ключами.

Чтобы просмотреть параметры вашего ключа, щелкните по нему правой кнопкой мыши и выберите "Properties":

Окно с опциями имеет следующий вид:

Чтобы просмотреть Фингерпринт вашего ключа (значение хеш-функции от него), нажмите на раскрывающуюся вкладку Fingerprint, а в ней выберите закладку "Hexadecimal":

далее настройте еще одну виртуальную машину (Wondows Vista или Windows Server) и установите программу PGP Desktop на ней. Также сгенерируйте на ней пару ключей для пользователя с именем, отличным от имени пользователя с созданной на первой машине парой ключей.

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

Чтобы экспортировать ключ, выберите его, а затем в меню выберите File->Export->key:

В открывшемся после этог