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

Методические указания и индивидуальные задания для самостоятельной работы по дисциплине Комплексное обеспечение информационной безопасности инфокоммун

.pdf
Скачиваний:
0
Добавлен:
09.08.2026
Размер:
328 Кб
Скачать

2.3Алгоритм формирования общего ключапо схеме Диффи-Хеллмана

В1976 г. американские ученые Диффи и Хеллман предложили весьма простой способ обмена секретными ключами междувсеми пользователями сети с применением при передаче по каналусвязи не засекречиваемых сообщений.

Эффективность алгоритма Диффи-Хеллмана опирается на трудность вычисления дискретных логарифмов. Формально дискретный алгоритм можно определить следующим образом. Сначала определяется примитивный корень простого числа P как число, степени которого порождают все целые числа от 1 до P-1. Это означает, что если число α является примитивным корнем простого числа P, то все числа

(α) MODp (α2) MOD pP-1) MOD p

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

Для любого целого числа B и любого примитивного корня α простого числа P однозначно определяется показатель степени I, при котором:

B= αI MOD P где 1<=I <=P-1

Этот показатель степени обычно называется дискретным логарифмом. Теперь рассмотрим обмен ключами по схеме Диффи-Хеллмана.

В этой схеме имеются два открытых для всех числа: простое число Q и целое число α , являющееся первообразным корнем Q.

Если пользователи i и j захотят установить секретную связь с использованием какого-либо алгоритма с симметричным ключом, то формирование этого ключа происходит следующим образом:

Пользователь i выбирает случайное целое число Xi < Q и вычисляет

Yi= αXi MOD Q

Аналогично, пользователь j независимо выбирает случайное целое число Xj < Q и вычисляет

Yj= αXjMOD Q.

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

K= YjXi MOD Q , а пользователь j – по формуле K= YiXj MOD Q

Эти две формулы при вычислении дают одинаковые результаты: K= YjXi MOD Q

= (αXjMOD Q)Xi MOD Q = (αXj)Xi MOD Q

= αXj Xi MOD Q

= (αXi)Xj MOD Q

= (αXiMOD Q)Xj MOD Q = YiXj MOD Q

Итак, обе стороны обменялись секретным ключом. Поскольку при этом значения Xi и Xj остались в тайне, противникупридется работать с Q, α, Yi, Yj

Таким образом, емупридется вычислять дискретный логарифм, чтобы определить ключ. Защищенность обмена ключами по схеме Диффи-Хеллмана опирается фактически на то, что в то время, как степени по модулю некоторого простого числа определяются относительно легко, вычислять дискретные логарифмы оказывается очень трудно. Для больших простых чисел последнее считается задачей практически неразрешимой.

Пример:

Обмен ключами строится на использовании простого числа Q=71 и его первообразного корня α=7.

Пользователи i и j выбирают секретные ключи Xi= 5 и Xj=12, соответственно. Каждый вычисляет свой открытый ключ:

Yi= 75 MOD 71 = 51,

Yj= 712MOD 71 = 4.

11

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

K= 45 MOD 71 = 30

K= 5112 MOD 71 =30

Имея 51 и 4, противникуне удастся с легкостью вычислить 30.

3. Симметричная система шифрования

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

3.1 Потоковые шифры

Потоковые шифры преобразуют открытый текст в шифротекст побитово. Генератор гаммы выдает поток битов: k1,k2,k3…, ki. Эта гамма шифра или просто гамма и поток битов открытого текста: p1,p2,p3…pi подвергаются операции XOR, и в результате создается поток битов шифротекста.

ci=pi XOR ki

При расшифровывании, для восстановления битов открытого текста, над битами шифротекста и той же самой гаммой тоже выполняетсяоперация XOR:

pi=ci XOR ki

Поскольку

pi XOR ki XOR ki= pi

эта схема работает превосходно.

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

3.2 Генераторы псевдослучайных чисел

Генераторы псевдослучайных чисел – устройство или программа, вырабатывающее/(щая) последовательность b- разрядных чисел, которые отвечают требованиям случайных ( кажутся случайными), но могут быть воспроизведены вновь при каждом запуске генератора с “начала”. В настоящее время наиболее доступными (с точки зрения практического воплощения) являются линейные конгруэнтные генераторы и генераторы на основе регистров сдвига с обратными связями. Одним из хороших конгруэнтных генераторов является линейный конгруэнтный генератор ПСЧ.

Линейный конгруэнтный генератор

Этот генератор вырабатывает последовательность псевдослучайных чисел T1, T2, T3, … Tm, используя соотношение:

Ti+1=(a*Ti +c)MOD m ,

где a и c – константы, а Ti -исходная величина, выбранная как порождающее число. Данное уравнение генерирует ПСЧ с определенным периодом повторения, зависящим от выбранных значений a и с. Значение m обычно устанавливается равным 2b или 2b-1 , где b – длина ПСЧ в битах. Для получения максимального периода повторения генератора, работающего по данному уравнению, необходимо, чтобы b было целым числом больше 2 , c- нечетным числом и a MOD 4 = 1.

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

Другим примером генератора ПСЧ является генератор на основе регистра сдвига .

12

Генератор на основе регистра сдвига

Рассмотрим регистр сдвига, образованный на основе неприводимого многочлена

P(x)=x4 +x+1

и вырабатывающий 15 4-х разрядных чисел.

Если в младший левый разряд регистра сдвига поместить 1, а в остальные разряды 0, то последовательные сдвиги содержимого регистра дадут все множество различных n- разрядных последовательностей. Для данного полинома максимальное число различных последовательностей составляет 15.

Генератор с регистром сдвига с обратными связями может генерировать (при правильном выборе образующего полинома P(x)) в одном периоде 2n-1 различных n- разрядных последовательностей.

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

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

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

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

( 0 XOR 0 = 0; 1 XOR 0 = 1; 0 XOR 1 = 1; 1 XOR 1 = 0 в общем случае a XOR a =0 ; a XOR b XOR b =a )

Для расшифровки та же гамма накладывается на зашифрованные данные.

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

13

3.3 Блочные шифры

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

шифры перестановки (transposition, permutation, P-блоки);

шифры замены (подстановки, substitution, S-блоки).

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

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

моноалфавитные (код Цезаря) ;

полиалфавитные (шифр Видженера, цилиндр Джефферсона, диск Уэтстоуна, Enigma).

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

Вполиалфавитных подстановках для замены некоторого символа исходного сообщения

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

Всовременных криптографических системах, как правило, используют оба способа шифрования (замены и перестановки). Такой шифратор называют составным (product cipher). Oн более стойкий, чем шифратор, использующий только замены или перестановки.

14

3.4 Сети Файстеля

Практически все алгоритмы традиционного блочного шифрования имеют структуру, описанную специалистом из IBM Х. Файстелем в 1973 г. Соответствующая схема показана на рисунке.

На вход алгоритма шифрования подается блок открытого текста длиной 2w и ключ k. Затем блок открытого текста разделяется на 2-е равные части, L0 и R0, которые последовательно проходят n раундов обработки, а затем объединяются снова, предварительно поменяв местами левую и правую половину блоков, для получения блока шифрованного текста соответствующей длины

На изображенной схеме показаны 4 – е раунда перестановок. Здесь буквами Li и Ri обозначены левая и правая половинки исходных данных на i-м шаге последовательного преобразования. Каждый такой целый шаг называют раундом шифрования. Функция раунда обозначена через Fi, посколькуна каждом раунде может быть использована своя собственная функция. На каждом раунде используется свой подключ Ki , образованный из ключа K по определенномуалгоритму.

В общем виде на каждом раунде производится следующее преобразование:

На последнем шаге алгоритма левая и правая часть блока меняется местами

Ln+1 = Rn

Rn+1= Ln

15

Получается блок зашифрованного текста длиной 2w.

Шифр, использующий такую схему, гарантированно обратим.

Эта схема используется в следующих шифрах: DES, Lucifer, ГОСТ,CAST, Blowfish и многих других.

3.5 Режимы шифрования

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

o ECB (Electronic Code Book) – электронная кодовая книга

o CBC (Cipher Block Chaining) – сцепление блоков по шифротексту

oCFB (Cipher Feed Back) – обратная загрузка шифротекста

3.5.1Электронная кодовая книга (ECB)

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

Pi-1

Pi

Pi+1

Ек

 

Ек

 

Ек

 

 

 

 

 

 

 

 

 

 

Сi-1

 

Сi

 

Сi+1

 

 

 

 

 

Рис.1 Зашифровывание в режиме ECB

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

16

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

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

3.5.2Сцепление блоков по шифротексту (CBC)

Врежиме шифрования CBC происходит «сцепливание» всех блоков сообщения по шифротексту(см рис 2).

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

Pi-1

 

Pi

 

Pi+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ек

 

 

Ек

 

 

Ек

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сi-1

 

Сi

 

Сi+1

 

 

 

 

 

Рис.2 Зашифровывание в режиме CBC

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

Расшифровывание выполняется в обратном порядке (см Рис 3.).

17

Ci-1

 

Ci

 

Ci+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Dк

 

Dк

 

Dк

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Pi-1

 

Pi

 

Pi+1

 

 

 

 

 

Рис.3 Расшифровывание в режиме CBC

Математически это выглядит следующим образом:

Ci=Ek(Pi XOR Ci-1)

Pi= Ci-1 XOR Dk(Ci)

Поскольку в режиме CBC при зашифровании каждая итерация алгоритма зависит от результата предыдущей итерации, то зашифрование сообщения не поддаётся распараллеливанию. Однако в режиме расшифрования, когда весь шифротекст уже получен, функцию расшифровки вполне можно исполнять параллельно и независимо для всех блоков сообщения. Это даёт значительный выигрыш по времени. В этом режиме стоит остановиться ещё на одной детали. Дело в том, что последний блок шифротекста, который получается на выходе алгоритма режима CBC, зависит как от ключа блочного шифра и вектора инициализации, так и (что важнее в данном случае) от всех бит отрытого текста сообщения. А это означает, что этот последний блок шифротекста можно использовать как своего рода идентификатор сообщения. Такой идентификатор не даёт постороннему наблюдателю никакой информации о содержимом всего сообщения в целом, и в то же время, практически однозначно определяет его (сообщение). Более того, подделать этот идентификатор без знания ключа шифрования K так же трудно, как и правильно угадать сам ключ.

При шифровании в режиме CBC одинаковые блоки открытого текста превращаются в различающиеся друг от друга блоки шифротекста только в том случае, если различались какие-то блоки предшествующего текста. Однако при шифровании идентичных сообщений создается один и тот же шифротекст. Чтобы избежать этого, можно зашифровать в первом блоке какие-то произвольные данные. Этот блок случайных данных называют вектором инициализации (ВИ) или русский термин- синхропосылка.

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

18

3.5.3Обратная загрузка шифротекста (CFB)

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

Pi-1

 

Pi

 

Pi+1

 

 

 

 

 

Ек Ек

Сi-1

Сi

Сi+1

Рис.4 Зашифровывание в режиме CFB

В режиме CFB ошибка в одном бите шифротекста влияет на несколько последующих блоков и один бит искаженного блока.

4. Хэш-функции

Хэш-функция - это преобразование, получающее из данных произвольной длины некое значение (свертку) фиксированной длины. Простейшими примерами являются контрольные суммы (например, crc32). Бывают криптографические и программистские хэши. Криптографический хэш отличается от программистского следующими двумя свойствами: необратимостью и свободностью от коллизий. Обозначим m - исходные данные, h(m) - хэш от них. Необратимость означает, что если известно число h0, то трудно подобрать m такое, что h(m) = h0. Свободность от коллизий означает, что трудно подобрать такие m1 и m2, что m1 != m2, но h(m1) = h(m2). Криптографические хэш-функции разделяются на два класса:

хэш-функции без ключа (MDC (MODification (Manipulation) Detect Code) - коды),

хэш-функции c ключом (MАC (Message Authentication Code) - коды).

Хэш-функции без ключа разделяются на два подкласса:

19

слабые хэш-функции,

сильные хэш-функции.

Слабой хэш-функцией называется односторонняя функция H(x), удовлетворяющая следующим условиям:

1)аргумент х может быть строкой бит произвольной длины;

2)значение H(x) должно быть строкой бит фиксированной длины;

3)значение H(x) легко вычислить;

4)для любого фиксированного x вычислительно невозможно найти другой x' != x такой, что

H(x')=H(x).

Пара x' != x, когда H(x')=H(x), называется коллизией хэш-функции.

Сильной хэш-функцией называется односторонняя функция H(x), удовлетворяющая условиям 1-3 для слабой хэш-функции и свойству 4': 4') вычислительно невозможно найти любую пару x' != x, такой что H(x')=H(x). Поскольку из свойств 1-2 следует, что множество определения хэш-функции значительно шире множества значений, то коллизии должны существовать. Свойство 4 требует, чтобы найти их для заданного значения х было практически невозможно. Требование 4' говорит о том, что у сильной хэш-функции вычислительно невозможно вообще найти какую-либо коллизию.

Хэш-функцией с ключом (MAC) называется функция H(k,x) удовлетворяющая свойствами:

1.аргумент х функции H(k,x) может быть строкой бит произвольной длины;

2.значение H(k,x) должно быть строкой бит фиксированной длины;

3.при любых k и x легко вычислить H(k,x);

4.для любого х должно быть трудно вычислить H(k,x), не зная k;

5.должно быть трудно определить k даже при большом числе неизвестных пар {x, H(k,x)} при выбранном наборе х или вычислить по этой информации H(k,x') для x' !=

x.

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

Алгоритмы хэш-функций: MD2, MD4, MD5, SHA (Secure Hash Standard), ГОСТ Р34.11-94.

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

20

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