Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3189

.pdf
Скачиваний:
6
Добавлен:
15.11.2022
Размер:
8.9 Mб
Скачать

Пакет Privacy+Plus

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

Порядок проведения работы

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

туру.

2.Самостоятельно запустить указанные пакеты и проделать ти­ повое задание.

3.Ответить на контрольные вопросы.

Задание на практическую работу

1.Обязательными являются программы Crypton-З и DiskReet.

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

3.Изготовить текстовый файл и зашифровать его.

4.Передать файл принимающему и сообщить ему пароль. При­ нимающий сообщение должен правильно расшифровать его.

5.Выбрать (по желанию) один из дополнительных пакетов (Crypt, Encrypted Data Tools, Privacy+Plus). Повторить п. 5.2.-5А

Контрольные вопросы

1.Какие алгоритмы шифрования используют пакеты, каковы их основные параметры?

2.В чем особенность ввода пароля в программе DISKREET?

3.Чем принципиально отличается Crypton от других рассмот­ ренных средств?

4.Почему ключ вводится в плату до загрузки DOS?

5.Сделайте сравнительный анализ изученных пакетов по ско­ рости шифрования и удобству работы с программой.

11. СХЕМА ОТКРЫТОГО РАСПРЕДЕЛЕНИЯ КЛЮЧЕЙ

Цели работы

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

- Получить ключи с использованием программы, реализующей эту схему.

-Организовать передачу шифрованной информации с исполь­ зованием полученных ключей.

Сведения из теории

До сих пор мы рассматривали системы шифрования, основан­ ные на ключе, который знают и отправитель, и получатель сообще­ ния. Чтобы отправитель и получатель узнали свой ключ, его нужно им доставить, причем так, чтобы сохранить его в тайне от всех дру­ гих. Кроме того, желательно для каждого сообщения использовать новый ключ. Очень привлекательным со всех точек зрения было бы вырабатывать ключ для каждого сообщения - однако понятно, что детерминированные алгоритмы для этого не годятся, - противник может прогнозировать ключи. Если мы будем вырабатывать ключи каждый раз случайно, то как оповестить об этом своего корреспон­ дента? Не передавать же сам ключ.

Решение проблемы - в односторонних функциях. Функцию У =ЛХ) назовем односторонней, если вычисление у по х имеет ма­ лую трудоемкость, а вычисление д: по у - высокую.

Односторонние функции действительно существуют - это воз­ ведение в степень (обратная функция - логарифмирование) в конеч­ ном (чаще простом) поле, либо в другой алгебраической структуре (например, в группе точек эллиптической кривой), умножение (об­ ратная функция - разложение чисел на множители), задачи кодиро­ вания-декодирования линейных кодов (типа кодов Рида-Малера или Рида-Соломона). Надо отметить, что полагаемая из общих сообра­ жений «односторонность» функции часто впоследствии не подтвер­

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

Итак, попробуем использовать односторонние функции при вы­ работке ключей. Например, имеются две функции fla.x) и g(a,x). От­ правитель А сообщения вырабатывает случайное значение х, вычис­ ляет / =J{a,x), получатель В тоже вырабатывает случайное значение у, вычисляет г = g(a,y). Далее А получает г, а В - t. Будем предпола­ гать, чтоДг,х) =J(g(a,y),x) совпадает с g(t,y) = g(J{a,x),y) (иначе у кор­ респондентов не получится одно и то же значение ключа).

Какие свойства необходимы для функций / и g, чтобы против­ ник не смог определить ключ К = g(t,y) = g{j{ajc),y) =f(rTx) = =J(g(a,y)Tx)? Из простых логических соображений следует, что свой­ ство должно быть таким: по значению Jia^x) и g(ajc) без знания х и у сложно было бы вычислить К.

С другой стороны, важно чтобы сами функции/и g были легко вычислимы, а также равенство g{f[ayx),y) =J[g{ay),x) выполнялось бы для любых х и у и хотя бы для некоторых а.

Именно такой метод был предложен в работе Диффи и Хеллмана [7], и он получил название «открытое распределение ключей» (ОРК). Действительно, данный метод описывает лишь протокол вы­ работки ключа для произвольного алгоритма шифрования.

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

Нельзя ли построить алгоритм шифрования так, чтобы отправи­ тель сообщения мог лишь зашифровать его, а расшифровать мог только получатель? Для того, чтобы это стало возможным, необхо­ димо следующее:

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

пользовании одним ключом отправитель может легко про­ читать его);

ключи отправителя и получателя должны быть связаны од­ нозначным соотношением;

по одному из ключей было бы крайне сложно определить другой ключ.

Оказывается, так построить схему шифрования возможно. Для этого также необходимо использовать однонаправленные алгоритмы. Такой способ шифрования называется «открытое шифрование» (ОШ), поскольку в данном случае однонаправленная функция суще­ ственно участвует в самом процессе шифрования, а не только при выработке ключа. Более подробно этот материал был рассмотрен в практической работе № 3.

Рассмотрим систему ОРК на основе дискретной экспоненты. Задано простое число Р и некоторое число а< Р.

Пусть имеется два корреспондента. Каждый из них вырабатыва­ ет случайное число хи у соответственно, а затем вычисляет:

r = ах (mod Р) - первый корреспондент, t = ay (mod Р) - второй корреспондент.

В данном случае функция = a* (mod Р).

Затем корреспонденты обмениваются этими числами и выраба­ тывают общий ключ К.

К= (ax(mod P))y(mod P)=(av(mod / )))x(mod P).

Противник будет располагать только числами t и г, для нахож­ дения х и у он должен будет проводить операцию логарифмирования в простом поле, и, следовательно, трудоемкостью данной операции и будет определяться стойкость этого варианта ОРК.

Порядок проведения работы

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

2.Выполнить задание на практическую работу.

3.Ответить на контрольные вопросы.

Задание на практическую работу

Запустите программу ОК и повторите схему открытого рас­ пределения ключей.

Создайте два каталога на одном компьютере либо на двух компьютерах в сети.

При помощи программы RAND произведите файлы:

-с основанием степени (он будет одинаковым для обоих або­ нентов!),

-со случайным показателем степени, например, а и х соответ­ ственно.

При помощи программы POW получите степени, например pow а х алх.

Обменяйтесь полученными степенями и основаниями.

Получите итоговый ключ, например, вы получили файл аАу, тогда получите итоговый ключ как pow afy х itog.

Превратите файл itog в читаемый пароль программой Conv: CONV itog.

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

Контрольные вопросы

1.Каков размер используемых в данной работе ключей?

2.Почему необходимо превратить результат возведения в чи­ таемый пароль? В чем вам видится недостаток такого подхода?

3.Объясните схему ОРК.

4.Какие требования вы можете предъявить к системе ОРК (по

выработке случайных чисел, длине основания и т.д.)?

12. ИЗУЧЕНИЕ СТАНДАРТНЫХ СРЕДСТВ КРИПТОГРАФИЧЕСКОЙ АУТЕНТИФИКАЦИИ-ЭЦП

Цель работы

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

Сведения из теории

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

Рассмотрим сначала систему RSA в общем виде.

Нам потребуется несколько алгебраических терминов и утвер­ ждений:

1) а сравнимо с b по модулю и, a=6(mod п)

означает, что число п нацело делит разность а-Ь.

2) Числа а и Ъ имеют наибольший общий делитель (НОД) d, ес­ ли d делит и а, и Ъ, и максимально среди таких чисел.

НОД(a,b)=d

3)Числа а и Ъвзаимно просты, если НОД(а,6)=1

4)Число р называется простым, если оно делится только на 1

исамого себя.

5)Если р - простое и Ь<р, то НОД(6,/?)=1.

6)Малая теорема Ферма.

р- простое число, НОД(а,р)=1, арЛ= l(modр).

7)Если a=6(mod л) и c=</(mod к), то ab=cd{mod пк) (умножение сравнений).

8)Если a=6(mod л) и c=d(mod к), то ac=bd(mod л), ac=bd(mod к). Пусть числа p n q - простые.

n—p q , h=(p-\) (q-\).

Выработаем число е случайным образом, е<п. Вычислим d из соотношения ed- l(mod к)

Рассмотрим теперь числа end . Предположим, что мы знаем од­ но из них и знаем соотношение, которым они связаны. Мы бы с лег­ костью вычислили второе число, как обратный элемент мультипли­ кативной группы с операцией умножения по модулю к (он существу­ ет и однозначно определяется по определению группы), однако мы не знаем чисел р и q,

(p-l)x(q-\)=pq-p-q+l=n+l-p-q.

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

1.Сообщения представить как векторы длиной /

Х= (хи х2, . . . Л ), 0 < X j< k.

2.Каждое х, возвести в степень е по модулю п.

3.Прислать нам Y = (xie(mod п), х2c(mod л), ...,x/e(mod л)). Выделим t=yi

Возведем полученное число t в степень второго числа пары - d: R=f*(mo<l л) = (xe(mod л)) d(mod л).

Это значит, что ed сравнимо с единицей по модулю к!

e d - 1 делится на -\){д -\) нацело, т.е.

e-d=\+a-(p-\){q-\),

a - целое число, --операция умножения в кольце целых чисел.

Рассмотрим:

J J — |1+а(р-1)(ч-1)

Утверждается, что (/(mod п)=х. Действительно, по малой теореме Ферма:

х?-1= l(mod р),

JC4'1= l(mod q), ^.(р-iKq-n _ i(mod pq)

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

Описанная система называется системой RSA, или несиммет­ ричной системой шифрования Райвеста-Шамира-Адлемана (Rivest- Shamir-Adleman). Часто применяется термин «система с открытым ключом». Надо признать, что не совсем удачен этот термин - мы все­ гда исходим из предположения секретности части ключа. Более кор­ ректно именовать такие системы системами несимметричного шиф­ рования. Числа в паре (e,d) называются: е - открытой частью ключа («публичный ключ», или public key), d - секретной частью ключа (secret key).

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

Рассматривая систему RSA, мы отметили, что зашифровывать на открытой части ключа может любой, а расшифровывать на сек­ ретной - только получатель сообщения. На практике очень часто возникает потребность в обратном - зашифровать некоторую ин­ формацию (например, свое имя) на секретном ключе так, чтобы не­ который набор лиц мог расшифровать это имя (используя разослан­ ный ранее открытый ключ).

Очень ценно то, что в системе RSA не придется ничего менять - нужно просто использовать для шифрования свою секретную часть ключа, тогда в силу симметричности ключей е й d (которая, в свою очередь, возникает из-за коммутативности операции модульного ум­ ножения) процесс расшифрования у получающих будет аналогич­ ным.

Кроме того, мы получим неожиданный эффект - зашифрован­ ную на секретном ключе информацию почти невозможно осмыслен­ но изменить, ведь для этого нужно сначала ее найти (т.е. дешифро­ вать систему RSA), а уж потом исправить. Тем самым получатели сообщения могут аутентифицировать отправителя, т.е. быть уверены, что операцию зашифрования провел он (отправитель), а никто иной. Тем самым мы получим криптографический аналог обыкновенной подписи под некоторой информацией. К тому же вполне логичным будет в качестве открытого текста использовать информацию, суще­ ственно зависящую от содержания послания, но значительно мень­ шего объема. Такую информацию, как правило, называют хешзначением сообщения, а способ (алгоритм) получения хешзначения - хеш-функцией (от английского - hash).

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

Рассмотрим теперь особенности RSA в реализации программы

PGP.

Программа Pretty Good ™ Privacy (PGP) выпущена фирмой «Phil's Pretty Good Software» и является криптографической системой с высокой степенью секретности для операционных систем MS-DOS, Unix, VAX/VMS и других. PGP позволяет пользователям обмени­ ваться файлами или сообщениями с использованием функций сек­ ретности и установлением подлинности. Секретность означает, что прочесть сообщение сможет только тот, кому оно адресовано. Уста­ новление подлинности позволяет установить, что сообщение, полу­ ченное от какого-либо человека, было послано именно им. Нет необ­ ходимости использовать секретные каналы связи, что делает PGP простым в использовании программным обеспечением.

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

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

Кроме того, обеспечивается также установление подлинности сообщения. Собственный секретный ключ отправителя может быть использован для шифровки сообщения, таким образом «подписывая» его. Так создается электронная подпись сообщения, которую получа­ тель (или кто-либо еще) может проверять, используя открытый ключ отправителя для расшифровки. Это доказывает, что отправителем был, действительно, создатель сообщения и что сообщение впослед­ ствии не изменялось кем-либо, так как отправитель - единственный, кто обладает секретным ключом, с помощью которого была создана

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]