ИБ – защищённость информации и поддерживающей её инфраструктуры от случайных или преднамеренных воздействий естественного или искусственного характера, которые могут нанести неприемлемый ущерб объектам информационных отношений.
Защита информации – комплекс мероприятий, направленных на обеспечение ИБ.
Основными категориями безопасности информационных систем являются:
Для защиты информационных ресурсов необходимо сочетать меры следующих уровней: законодательного, административного, процедурного (меры, направленные на людей) и программно-технического.
Основные типы угроз ИБ
Угроза – потенциальная возможность нарушить ИБ.
Попытка реализации угрозы называется атакой, а лицо, предпринимающее атаку – злоумышленник. Как правило, угроза является следствием наличия уязвимых мест в защите ИС.
Промежуток времени с момента появления уязвимого места до момента его ликвидации называется окном опасности. ОО ликвидируется либо мерами административного и процедурного характера, либо установкой соответствующих «заплат» в ПО.
Классификация угроз ИБ:
Угрозы доступности
Самыми частыми и самыми опасными с точки зрения ущерба являются непреднамеренные ошибки штатных пользователей системы.
Другие угрозы:
Основными источниками таких отказов являются: отступление от установленных правил эксплуатации; ошибка в конфигурировании системы; отказ ПО и аппаратного обеспечения; разрушение данных; повреждение аппаратуры.
Угрозы целостности
Выделяется понятие статической и динамической целостности.
Нарушение статической целостности: ввод неверных данных или изменение их злоумышленником (как правило, штатным сотрудником организации).
Примером угроз динамической целостности является изменение данных в процессе их передачи.
Угрозы конфиденциальности
Конфиденциальную информацию можно разделить на предметную и служебную.
Доступ к предметной информации очень часто производится не путем несанкционированного проникновения в ИС, а путем раскрытия служебной информации (пароли, ключи шифрования и т.д.). Подобного рода информация может оказаться либо легко угадываемой, либо хранение ее производится ненадлежащим образом.
Законодательный уровень – один из важнейших в комплексе обеспечения ИБ. На нём различают 2 группы мер:
Основные законы и правовые факторы
Уголовный кодекс содержит главу 28, «Преступление в сфере компьютерной информации». В ней имеются 3 статьи: о неправомерном доступе к компьютерной информации (272), о создании и распространении вредоносных программ для ЭВМ (273) и о нарушении правил эксплуатации ЭВМ, систем ЭВМ или их сети (274).
Базовые понятия
Открытый текст – исходное сообщение, подлежащее передаче.
Зашифрование – процесс преобразования исходного сообщения, позволяющее скрыть его суть.
Шифр-текст – зашифрованное сообщение.
Расшифрование – процесс преобразования шифр-текста в исходное сообщение.
Криптография – искусство и наука защиты сообщений.
Криптоанализ – искусство и наука вскрытия шифров.
Криптология – отрасль математики, объединяющая криптографию и криптоанализ.
Основные обозначения
Открытый текст: М или Р.
Шифр-текст: C.
Функция зашифрования: E(M) = C.
Функция расширования: D(E(M)) = M.
Основные задачи, решаемые с помощью криптографии:
Понятие криптоалгоритма и ключа
Криптографический алгоритм представляет собой математическую функцию, используемую для шифрования. Шифр, безопасность которого основывается на сохранение в тайне деталей его внутреннего устройства и реализации, называется ограниченным. Такие алгоритмы за счет узости круга, которому они известны, не допускают качественного контроля и стандартизации. Поэтому детали всех современных шифров общеизвестны, а безопасность обеспечивается применением ключа. Ключ – какое-либо число из множества допустимых значений, называемом пространством ключа. Безопасность одноключевых и двухключевых шифров зависти он ключей, а детали могут быть известны.
Криптоанализ
Позволяет восстанавливать из шифр-текста открытый текст без знания ключа, а также обнаруживать слабые места в шифре.
Атака – попытка криптоанализа.
Виды атак:
Стойкость алгоритма
Алгоритм является безусловно стойким, если раскрытие ключа невозможно при любом объеме шифр-текста, оказавшегося у криптоаналитика. Любой алгоритм можно вскрыть с использованием шифр-текста простым перебором ключей и проверки получившегося результата на осмысленность. Алгоритм является вычислительно стойким, если он не может быть взломан сейчас или в ближайшем будущем при любых прогнозах развития вычислительной техники.
До появления компьютеров все криптоалгоритмы оперировали с символами языка. Такие алгоритмы либо производили подстановки одних символов вместо других, либо переставляли их местами, т.е. существовало 2 основных типа шифров.
Подстановочным шифром называется шифр, который каждый символ открытого текста в шифротексте заменяет другим символом. Получатель инвертирует подстановку шифротекста, восстанавливая открытый текст. В классической криптографии существует четыре типа подстановочных шифров:
В перестановочном шифре меняется не открытый текст, а порядок символов. В простом столбцовом (вертикальном) перестановочном шифре открытый текст пишется горизонтально на разграфленном листе бумаги фиксированной ширины, а шифротекст считывается по вертикали. Дешифрирование представляет собой запись шифротекста вертикально на листе разграфленной бумаги фиксированной ширины и затем считывание открытого текста горизонтально.
Общим недостатком этих шифров является то, что они не скрывают или скрывают частично статистические свойства текста.
Одноразовый блокнот
Этот алгоритм представляет собой абсолютно стойкий алгоритм и был изобретен в 1917 году.
В классическом понимании одноразовый блокнот представляет собой большую случайную последовательность символов ключа, написанных на листах бумаги и склеенных в блокнот.
Каждый символ ключа используется только 1 раз для шифрования 1 символа открытого текста. Шифрование представляет собой сложение по модуля 26 или 33 (в зависимости от алфавита) символа ключа и символа открытого текста.
Блокнот имеется и у отправителя, и у получателя. Отправитель, зашифровав сообщение, уничтожает использованные страницы блокнота. Получатель, получив шифр-текст, использует такие же страницы для расшифрования и тоже их уничтожает.
При шифровании двоичных данных производится операция xor между битом открытого текста и битом ключа.
Безопасность этой схемы основана на однократном использовании ключа и случайности ключевой последовательности.
Классификация
Компьютерные криптоалгоритмы можно разделить на:
Симметричные алгоритмы используют один ключ для зашифрования и расшифрования. Отправитель и получатель должны предварительно согласовать этот ключ, на сохранении в тайне которого базируется безопасность алгоритма.
Потоковые шифры обрабатывают открытый текст побитно (иногда побайтно).
Блочные шифры получают на вход блок из n битов и выдают блок шифр-текста такой же длины.
Ассиметричные алгоритмы используют для зашифрования ключ, который общеизвестен (открытый). Расшифрование производится ключом, который известен только получателю (закрытый).
Другим вариантом использования ассиметричных алгоритмов является создание ЭЦП. Для этого сообщение зашифровывается закрытым ключом, а расшифровывается открытым.
Законодательные аспекты применения СКЗИ в РФ
Сертификацией и лицензированием средств защиты занимается ФАПСИ (федеральная служба спецификации связи) и ГосТехРегулирование при президенте. Их полномочия разграничивает положение о государственном лицензировании. За средства защиты, содержащей шифровальные средства, отвечает ФАПСИ.
Так же порядок применения и разработки СКЗИ регламентируют следующие законы:
Блочный шифр предполагает преобразование n-битного блока открытого текста в блок шифр-текста такой же длины.
Для того, чтобы в дальнейшем расшифровать шифр-текст необходимо чтобы каждый их 2 n блоков открытого текста преобразовывался в свой уникальный блок шифр-текста.
Базовой идеей создания стойких криптоалгоритмов является идея Клода Шеннона. Основными методами по Шеннону является перемешивание и рассеивание статистических свойств текста по широкому диапазону статистических характеристик шифр-текста. Это достигается тем, что один элемент открытого текста влияет на несколько элементов шифр-текста.
Фейстель первым реализовал идеи Шеннона. По его идеи: на вход алгоритма подается блок размером 2m бита и ключ К. Блок текста разделяется на две половины по m бит (L0, R0), которые последовательно проходят n раундов.
Для раунда i входными являются Li-1, Ri-1, полученные на предыдущем раунде и подключ Кi, полученный из общего К. В начале каждого раунда производится подстановка, которая заключается в применении к правой половине некоторой функции раунда F. Параметром F является Кi. Далее результат F складывается по модулю 2 с левой половиной. Затем происходит перестановка половин блока. После последнего раунда перестановка не производится.
Схема блочного шифрования:

Такая схема называется сетью Фейстеля.
При расшифровании используется тот же алгоритм, но на вход подается шифр-текст, а подключи берутся в обратном порядке. При этом не требуется чтобы функция F была обратима.
Стойкость и быстродействие практических реализаций сети Фейстеля зависит от:
Криптографический режим включает в себя базовый алгоритм, функцию обратной связи и ряд простых операций с шифр-текстом.
Режимы работы шифров позволяют получить дополнительные возможности, отсутствующие в базовом алгоритме. От выбора режима зависит рандомизирован ли вход в блочный шифр и какова помехоустойчивость шифра при передачи.
Четыре основных режима.
Режим электронной кодовой книжки (ЕСВ) или режим простой замены
Блоки шифруются отдельно (независимо). Недостатком такого режима является то, что при шифровании нескольких сообщений одним ключом, повторяющиеся фрагменты могут облегчить криптоаналитику задачу вскрытия шифра, если известны соответствующие им фрагменты открытого текста.
К достоинствам относится шифрование одним ключом без снижения безопасности, а так же возможность распараллеливания.
Так как базовый алгоритм зашифровывает только полный блок открытого текста, то в случае короткого последнего блока его конкатенируют с некоторым дополнением, оно представляет собой произвольную последовательность 0 и 1. В последний байт записывают длину дополнения, которую нужно отбросить при расшифровании.
Такой подход требует добавления еще одного блока даже в случае последнего полного.
В случае искажения одного бита шифр-текста, неверно расшифруется только лишь данный блок. Ошибка синхронизации не восстановима (выпадение бита).
Режим сцепления блоков шифр-текста (СВС)
Механизм обратной связи: результаты шифрования предыдущих блоков влияют на шифрование текущего.
Ci=Ek(Pi xor Ci-1)
Pi=Ci-1 xor Dk(Ci)
При зашифровании производиться предварительная операция xor с предыдущим блоком шифр-текста. При шифровании первого блока используется некоторый вектор инициализации (синхропосылка): это случайная величина, которая в секрете может не храниться. Желательно чтобы она была случайной.
Здесь требуется дополнение последнего короткого блока. При искажении одного бита шифр-текста будет искажен 1 блок и 1 бит открытого текста. Ошибка синхронизации невосстановима.
Режим обратной связи по шифр-тексту (CFB) или гаммирование с обратной связью
В данном режиме блочный шифр работает как самосинхронизирующийся потоковый шифр. При этом размер шифруемых данных может быть меньше размера блока вплоть до 1 бита.
В начале регистр заполняется вектором инициализации; содержимое регистра шифруется базовым алгоритмом с некоторым ключом К. Затем полученный шифр ксорится с блоком открытого текста. Получается блок шифр-текста, который передается и одновременно записывается в регистр.
Базовый алгоритм работает в режиме зашифрования. В случае искажения 1 бита шифр-текста блоки открытого текста при расшифровании будут искажаться до тех пор, пока ошибочный блок шифр-текста не покинет регистр сдвига. Ошибка синхронизации восстановима в случае утраты полного блока.
Режим обратной связи по выходу (OFB)
Похож на CFB. Отличие в том, что после сдвига регистра на некоторое количество разрядов в его младшие позиции записывается m битов результата зашифрования (до ксорения).
Главным достоинством является то, что ключевую последовательность можно сформировать автономно еще до появления на входе открытого текста. При искажении 1 бита будет неверно расшифрован 1 бит открытого текста. Ошибка синхронизации не восстановима.
Алгоритм является вариантом сети Фейстеля и имеет следующие параметры:
Каждый S-блок (узел замены) представляет собой массив из 16 4-битных значений, содержащий в произвольном порядке числа от 0 до 15. Общее количество S-блоков 8.
Совокупность S-блоков (таблица замен) может быть представлена в виде матрицы 8 на 16. Обычно S-блоки генерируются случайным образом и содержаться в секрете.
Структура раунда:
В начале правая (младшая) складывается по модулю 2 в 32 с подключом Кi. Затем производится подстановка через S-блок. Для этого 32-битное значение разбивается на 8 4-битных фрагментов, каждый из которых поступает на вход своего S-блока. Номер 4-битного фрагмента j будет представлять собой номер строки в матрице, а само значение Nj номер столбца. Далее 4-битный фрагмент заменяется элементом матрицы с указанными номерами строки и столбца. Далее результат объединяется в 32-битную переменную, которая циклически сдвигается на 11 разрядов влево. Результат сдвига складывается по модулю 2 с предыдущей левой половиной (старшей) и образуется новая правая половина, а предыдущая правая половина образует новую левую.
Порядок выбора ключей при зашифровании: 0..7, 0..7, 0..7, 7..0.
Порядок выбора ключей при расшифровании: 7..0, 7..0, 7..0, 0..7.
Цикл зашифрования/расшифрования
Зашифрование

Расшифрование аналогично циклу зашифрования, но для инверсной последовательности ключей. После 32-раундов производится перестановка левой и правой половин блока, отменяющая в соответствии со схемой Фейстеля перестановку последнего раунда.
Цикл выработки имитовставки выглядит следующим образом: 0..7, 0..7. В конце половины не перестанавливаются.
ГОСТ 28147-89 определяет следующие режимы шифрования:
Простая замена
Зашифрование в данном режиме заключается в применении цикла 32-З к блокам открытых данных, расшифрование – цикла 32-Р к блокам зашифрованных данных. Это наиболее простой из режимов, 64-битовые блоки данных обрабатываются в нем независимо друг от друга.
Недостатком такого режима является то, что при шифровании нескольких сообщений одним ключом, повторяющиеся фрагменты могут облегчить криптоаналитику задачу вскрытия шифра, если известны соответствующие им фрагменты открытого текста. К достоинствам относится шифрование одним ключом без снижения безопасности, а так же возможность распараллеливания. Так как базовый алгоритм зашифровывает только полный блок открытого текста, то в случае короткого последнего блока его конкатенируют с некоторым дополнением, оно представляет собой произвольную последовательность 0 и 1. В последний байт записывают длину дополнения, которую нужно отбросить при расшифровании. Такой подход требует добавления еще одного блока даже в случае последнего полного.
Гаммирование
Для избавления от недостатков режима простой замены необходимо сделать возможным шифрование блоков с размером менее 64 бит и обеспечить зависимость блока шифр-текста от его номера, иными словами, рандомизировать процесс шифрования. В ГОСТе это достигается двумя различными способами в двух режимах шифрования, предусматривающих гаммирование. Гаммирование – это наложение (снятие) на открытые (зашифрованные) данные криптографической гаммы, то есть последовательности элементов данных, вырабатываемых с помощью некоторого криптографического алгоритма, для получения зашифрованных (открытых) данных.
Гамма для этого режима получается следующим образом: с помощью некоторого алгоритмического рекуррентного генератора последовательности чисел (РГПЧ) вырабатываются 64-битные блоки данных, которые далее подвергаются зашифрованию в режиме простой замены, в результате получаются блоки гаммы.
РГПЧ, имеет следующие характеристики:
Гаммирование с обратной связью
Данный режим очень похож на режим гаммирования и отличается от него только способом выработки элементов гаммы – очередной элемент гаммы вырабатывается как результат преобразования по циклу 32-З предыдущего блока зашифрованных данных, а для зашифрования первого блока массива данных элемент гаммы вырабатывается как результат преобразования по тому же циклу синхропосылки. Этим достигается зацепление блоков – каждый блок шифр-текста в этом режиме зависит от соответствующего и всех предыдущих блоков открытого текста. Поэтому данный режим иногда называется гаммированием с зацеплением блоков. На стойкость шифра факт зацепления блоков не оказывает никакого влияния.
Выработка имитовставки
Имитовставка – это контрольная комбинация, зависящая от открытых данных и секретной ключевой информации. Целью использования имитовставки является обнаружение всех случайных или преднамеренных изменений в массиве информации.
Для потенциального злоумышленника две следующие задачи практически неразрешимы, если он не владеет ключевой информацией:
В качестве имитовставки берется часть блока, полученного на выходе, обычно 32 его младших бита. Используется синхропосылка, первоначальное значение которой равно 0.
Выработка имитовставки представляет собой процесс аутентификации.
В 1997 году американский институт NIST объявил конкурс на создание нового шифра Advanced Encryption Standard (AES), который должен был заменить DES.
Требования к шифру: симметричный блочный шифр; длина блока 128 бит; длина ключа 128, 192, 256 бит.
Пять финалистов: MARS (IBM), RC6 (R. Rivest), Rijndael (V. Rijnmen, J. Daemen), Serpent, Two Fish (Б. Штайер).
В 2000 г. Был объявлен победитель: Rijndael, которому было присвоено название AES.
Данный алгоритм является итеративным блочным шифром, построенным не на основе сети Фейстеля.
Длина блока и ключа может быть независимо выбрана: 128, 192, 256 бит.
Операции алгоритма Rijndael
Большинство операций производится с байтом. Байты рассматриваются как элементы конечного поля (поля Галуа): GF(28). Байт, состоящий из битов (b7..b0), представляется в виде полинома с коэффициентами из множества {0,1}: b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x1 + b0.
Сложение полиномов
В полиномиальном представлении сумма 2-х элементов поля – полином с коэффициентами, равными сумме по модулю 2 коэффициентов слагаемых. Т.о. сложение соответствует xor 2х байтов.
Умножение полиномов
Умножение производится по модулю неприводимого многочлена степени 8. Это m(x) = x8 + x4 + x3 + x + 1 или '11B' в шестнадцатеричном представлении. Результатом приведения по модулю m(x) всегда будет полином со степенью меньше 8.
Если умножить полином b(x) на полином х, мы будем иметь: b7x8 + b6x7 + b5x6 + b4x5 + b3x4 + b2x3 + b1x2 + b0x. b(x)x=m(x)C(x)+d(x) откуда d(x)=b(x)x-m(x).
Если бит b7=0, то необходимость в приведении отсутствует, в противном случае из получившегося результата вычесть (xor) полином m(x). Т.о. на уровне байта такая операция есть: сдвиг на 1 разряд влево и дальнейший xor с числом 1В, если это необходимо. Такая операция называется xtime. При умножении на большие степени х производится повторным применением xtime и складыванием промежуточных результатов.
Общий алгоритм умножения a(x)b(x)
xt0=a(x); xt1=xtime(xt0); xt2=xtime(xt1); …; xt7=xtime(xt6)
a(x)b(x)=b0*xt0 xor b1*xt1 xor … xor b7xt7
Структура алгоритма
Все преобразования выполняются над некоторым промежуточным результатом: состояние. Состояние рассматривается как двумерный массив байтов, имеющий 4 строки и различное число столбцов Nb – длина блока данных, деленная на 32. Ключ рассматривается как двумерный массив байтов, имеющий 4 строки и различное число столбцов Nк – длина ключа, деленная на 32.
Байты входных данных отображаются в байты состояния по столбцам. Ключ аналогично.
После шифрования байты состояния отображаются в байты выходных данных также по столбцам.
Число раундов обозначается Nr и зависти от длины блока и ключа:
Число раундов как функция от длины блока и длины ключа |
|||
Nr |
Nb = 4 |
Nb = 6 |
Nb = 8 |
Nk = 4 |
10 |
12 |
14 |
Nk = 6 |
12 |
12 |
14 |
Nk = 8 |
14 |
14 |
14 |
Каждый раунд состоит из 4 преобразований называемых слоями: подстановка через S-блок; линейное перемешивание строк; линейное перемешивание столбцов; сложение по модулю 2 состояния с подключом раунда.
В 1997 году американский институт NIST объявил конкурс на создание нового шифра Advanced Encryption Standard (AES), который должен был заменить DES.
Требования к шифру: симметричный блочный шифр; длина блока 128 бит; длина ключа 128, 192, 256 бит.
Пять финалистов: MARS (IBM), RC6 (R. Rivest), Rijndael (V. Rijnmen, J. Daemen), Serpent, Two Fish (Б. Штайер).
В 2000 г. Был объявлен победитель: Rijndael, которому было присвоено название AES.
Данный алгоритм является итеративным блочным шифром, построенным не на основе сети Фейстеля.
Длина блока и ключа может быть независимо выбрана: 128, 192, 256 бит.
Все преобразования выполняются над некоторым промежуточным результатом: состояние. Состояние рассматривается как двумерный массив байтов, имеющий 4 строки и различное число столбцов Nb – длина блока данных, деленная на 32. Ключ рассматривается как двумерный массив байтов, имеющий 4 строки и различное число столбцов Nк – длина ключа, деленная на 32.
Байты входных данных отображаются в байты состояния по столбцам. Ключ аналогично.
После шифрования байты состояния отображаются в байты выходных данных также по столбцам.
Число раундов обозначается Nr и зависти от длины блока и ключа.
Каждый раунд состоит из 4 преобразований называемых слоями: подстановка через S-блок; линейное перемешивание строк; линейное перемешивание столбцов; сложение по модулю 2 состояния с подключом раунда.
Схема зашифрования
В начале выполняется сложение по модулю 2 с заданным ключом, который занимает первые Nк столбцов в массиве подключей всех раундов (Nb*( Nr+1)). Затем выполняется Nr-1 основных раундов, состоящих из 4 слоев. В финальном раунде отсутствует слой перемешивания столбцов.
Функции раунда
Подстановка через S-блок
S-блок представляет собой массив 16 на 16. Каждый байт состояния обрабатывается независимо. Старшая шестнадцатеричная цифра в байте определяет номер строки, а младшая номер столбца. Далее байт состояния заменяется элементом S-блока, имеющим данные номер строки и номер столбца.
Циклический сдвиг строк на различное число байт
Строка с индексом 0 не сдвигается, а остальные сдвигаются влево на с1, с2 и с3 байт. Данные переменные зависят от Nb (для Nb=0 они равны 1, 2, 3).
Перемешивание столбцов
Столбцы состояния рассматриваются как полиномы в поле Галуа и умножаются на некоторый фиксированный полином: c(x) = '03' x3 + '01' x2 + '01' x + '02'
Над каждым столбцом производиться операция умножения его на матрицу справа. Умножение представляет собой операцию xtime.
Сложение с подключом раунда
Подключ раунда i представляет собой Nb столбцов матрицы подключей с индексами от i* Nb до (i+1)* Nb-1. Каждый байт состояния складывается по модулю 2 с байтом ключа.
Расширение ключа
Первые Nк столбцов матрицы подключей заполняются байтами ключа шифрования. Каждый последующий столбец с индексом i представляет собой результат сложения между столбцом i-1 и столбцом i- Nк. Для столбцов с номерами кратными Nк предварительно применяется преобразование, состоящее из циклического сдвига столбца вверх на 1 и выполнения подстановки через S-блок аналогично слою. Если длина ключа превышает 192 бита, то функция подстановка через S-блок применяется также к столбцам, индексы которых (i-4) кратны Nк. После этого производится сложение с константами раунда RCon (в данном массиве все элементы равны 0 кроме элементов первой строки; элемент (1,1) равен 1, каждый последующий равен умножению предыдущего на 2).
Схема расшифрования
Для CFB аналогична режиму зашифрования, для CBC используются инверсные функции. Так используется инверсный S-блок, циклический сдвиг вправо, обратное перемешивание столбцов (умножение на инверсную матрицу), сложение с подключом то же самое.
В теории, это шифрование может быть выполнено на любом уровне коммуникационной модели OSI. На практике, шифрование выполняется либо на самых нижних уровнях (физическом или канальном), либо на верхних уровнях (представительском или прикладном). Если оно происходит на нижних уровнях, оно называется канальным шифрованием, шифруется все, проходящее через конкретный канал данных. Если шифрование происходит на верхних уровнях, оно называется сквозным (оконечным) шифрованием, данные шифруются выборочно и остаются зашифрованными, пока их не расшифрует окончательный получатель. У каждого подхода есть свои преимущества и недостатки.
12.Случайные и псевдослучайные числа в криптографии. Области применения. Основные способы генерации случайных и псевдослучайных чисел.
Применение:
Компьютерные алгоритмы позволяют генерировать лишь псевдослучайные числа, для генерации истинно случайных чисел:
В отличии от истинно случайных последовательностей, псевдослучайные могут быть воспроизведены при подаче на вход одних и тех же параметров.
Генератор ПСЧ должен удовлетворять сл. условиям:
В реальных ИС ПСЧ инициализируют случайной величиной.
Принципы построения:
В настоящих ПСЧ как правило используются несколько РС.
13.Потоковые шифры A5 и RC4.
А5 – этот потоковый алгоритм используется для шифрования GSM.
Две версии шифра:
В алгоритме используются 3 РСЛОС с разрядностью 19, 22, 23 бит.
Описывать RC4 просто. Алгоритм работает в режиме OFB: поток ключей не зависит от открытого текста. Используется S-блок размером 8*8: S0, S1, . . . , S255. Элементы представляют собой перестановку чисел от 0 до 255, а перестановка является функцией ключа переменной длины. В алгоритме применяются два счетчика, iи j, с нулевыми начальными значениями.
Для генерации случайного байта выполняется следующее:
i = (i + 1) mod 256
j = (j + Si) mod 256
поменять местами Siи Sj
t= (Si + Sj) mod 256
K= St
Байт Kиспользуется в операции XOR с открытым текстом для получения шифротекста или в операции XOR с шифротекстом для получения открытого текста. Шифрование выполняется примерно в 10 раз быстрее, чем DES.
Общая задача состоит в нахождении x, такого что
1 = (a*x) mod n
В общем случае у уравнения a-1 º x (mod n) существует единственное решение, если a и n взаимно просты. Если a и n не являются взаимно простыми, то a-1 º x (mod n) не имеет решений. Если n является простым числом, то любое число от 1 до n -1 взаимно просто с n и имеет в точности одно обратное значение по модулю n.
Обратное значение a по модулю n можно вычислить с помощью алгоритма Эвклида. Иногда это называется расширенным алгоритмом Эвклида.
14.Элементы теории чисел. Простые и взаимно простые числа. Модулярная арифметика. Алгоритмы Евклида. Теоремы Ферма и Эйлера. Генерация простых чисел.
В основном, a º b (mod n), если a = b + kn для некоторого целого k. Если a неотрицательно и b находится между 0 и n, можно рассматривать b как остаток при делении a на n. Иногда, b называется вычетом a по модулю n. Иногда a называется конгруэнтным b по модулю n (знак тройного равенства, º, обозначает конгруэнтность). Одно и то же можно сказать разными способами.
Арифметика остатков очень похожа на обычную арифметику: она коммутативна, ассоциативна и дистрибутивна. Кроме того, приведение каждого промежуточного результата по модулю n дает тот же результат, как и выполнение всего вычисления с последующим приведением конечного результата по модулю n.
(a + b) mod n == ((a mod n) + (b mod n)) mod n
(a - b) mod n == ((a mod n) - (b mod n)) mod n
(a * b) mod n == ((a mod n) * (b mod n)) mod n
(a * (b+c)) mod n == (((a*b) mod n) + ((a*c) mod n)) mod n
Простым называется целое число, большее единицы, единственными множителями которого является 1 и оно само: оно не делится ни на одно другое число. Два - это простое число. Простыми являются и 73, 2521, 2365347734339 и 2756839-1. Существует бесконечно много простых чисел. Криптография, особенно криптография с открытыми ключами, часто использует большие простые числа (512 бит и даже больше).
Два числа называются взаимно простыми, если у них нет общих множителей кроме 1. Иными словами, если наибольший общий делитель a и n равен 1. Это записывается как:
НОД(a,n)=1
Взаимно просты числа 15 и 28. 15 и 27 не являются взаимно простыми, а 13 и 500 - являются. Простое число взаимно просто со всеми другими числами, кроме чисел, кратных данному простому числу.
Одним из способов вычислить наибольший общий делитель двух чисел является алгоритм Эвклида. Эвклид описал этот алгоритм в своей книге, Элементы, написанной в 300 году до нашей эры. Он не изобрел его. Историки считают, что этот алгоритм лет на 200 старше. Это самый древний нетривиальный алгоритм, который дошел до наших дней, и он все еще хорош
Существует другой способ вычислить обратное значение по модулю n, но его не всегда возможно использовать. Приведенным множеством остатков mod n называется подмножество полного множества остатков, члены которого взаимно просты с n. Например, приведенное множество остатков mod 12 - это {1, 5, 7, 11}. Если n - простое число, то приведенное множество остатков mod n - это множество всех чисел от 1 до n-1. Для любого n, не равного 1,число 0 никогда не входит в приведенное множество остатков.
Если m - простое число, и a не кратно m, то малая теорема Ферма утверждает
am-1 º 1 (mod m)
Функция Эйлера, которую также называют функцией фи Эйлера и записывают как f(n), - это количество элементов в приведенном множестве остатков по модулю n. Иными словами, f(n) - это количество положительных целых чисел, меньших n и взаимно простых с n (для любого n, большего 1).
Если n - простое число, то f(n) = n-1. Если n = pq, где p и q -простые числа, то f(n)= (p - 1)(q - 1). Эти числа появляются в некоторых алгоритмах с открытыми ключами, и вот почему. В соответствии с обобщением Эйлера малой теоремы Ферма, если НОД(a,n) = 1, то
af(n) mod n = 1
Теперь легко вычислить a-1 mod n:
x = af(n)-1 mod n
Например, какое число является обратным для 5 по модулю 7? Так как 7 - простое число, f(7) = 7 - 1 = 6. Итак, число, обратное к 5 по модулю 7, равно
56-1 mod 7 = 55 mod 7 = 3
Эти методы вычисления обратных значений можно расширить для более общей проблемы нахождения x (если НОД(a,n) = 1):
(a*x) mod n = b
Используя обобщение Эйлера, решаем
x = (b* af(n)-1 ) mod n
Используя алгоритм Эвклида, находим
x = (b* (a-1 mod n) ) mod n
В общем случае для вычисления обратных значений алгоритм Эвклида быстрее, чем обобщение Эйлера, особенно для чисел длиной порядка 500 бит. Если НОД(a,n) ¹ 1, не все потеряно. В этом общем случае (a*x) mod n=b, может иметь или несколько решений, или ни одного.
Но если так трудоемко разложение на множители, как может быть простой генерация простых чисел? Фокус в том, что ответить "да" или "нет" на вопрос "Является ли число n простым?" гораздо проще, чем ответить на более сложный вопрос "Каковы множители n?"
Генерация случайных чисел с последующей попыткой разложения их на множители - это неправильный способ поиска простых чисел. Существуют различные вероятностные проверки на простоту чисел, определяющие, является ли число простым, с заданной степенью достоверности. При условии, что эта "степень достоверности" достаточна велика, такие способы проверки достаточно хороши
Повсеместно используемым является простой алгоритм, разработанный Майклом Рабином (Michael Rabin), частично основанным на идеях Гэри Миллера [1093, 1284]. По сути, это упрощенная версия алгоритма, рекомендованного в предложении DSS proposal [1149, 1154].
Выберите для проверки случайное число p. Вычислите b - число делений p - 1 на 2 (т.е., 2b - это наибольшая степень числа 2, на которое делится p - 1). Затем вычислите m, такое что p = 1 + 2b * m.
В этом тесте вероятность прохождения проверки составным числом убывает быстрее, чем в предыдущих. Гарантируется, что три четверти возможных значений a окажутся свидетелями. Это означает, что составное число проскользнет через t проверок с вероятностью не большей (1/4)t, где t - это число итераций. На самом деле и эти оценки слишком пессимистичны. Для большинства случайных чисел около 99.9 процентов возможных значений a являются свидетелями [96].
Существуют более точные оценки [417]. Для n-битового кандидата в простые числа (где n больше 100), вероятность ошибки в одном тесте меньше, чем
. И для 256-битового n вероятность ошибки в шести тестах меньше, чем 1/251. Дополнительную теорию можно найти в [418].
15.Криптосистемы с открытым ключом. Принципы построения и отличия от симметричных криптосистем. Алгоритм с открытым ключом RSA.
Любой блочный шифр представл. Соб комб. Операций подстановки и перестановки. В отл. От них алгоритмы с откр ключом осн-ны на теории чисел и исп-ют однонаправленные ф-ции.
RSA относится к асимметричным криптосистемам. Ключ зашифрования (открытый ключ) общеизвестен и используется отправителем сообщения. Расшифровать зашифрованное сообщение может только лицо, владеющее закрытым (секретным) ключом. Для того чтобы обеспечить достаточный уровень безопасности асимметричных криптосистем, в них используются достаточно длинные ключи (1024 бит и более). Для подготовки пары ключей выполняются следующие действия:
Открытый ключ образует пара {e,n}, а закрытый – {d,n}. Числа p и q непосредственно при шифровании использоваться не будут, но должны сохраняться в секрете.
Открытый текст M шифруется блоками mi, каждый из которых содержит двоичное значение, меньшее числа n. Таким образом, длина блока выбирается равной k битам, так что 2k <n. Зашифрованное сообщение C состоит из блоков той же длины ci. Каждый блок шифротекста определяется по формуле:
ci=mie modn
Расшифрование каждого блока шифротекста осуществляется по формуле:
mi=cid modn
16.Управление ключами в симметричных и асимметричных криптосистемах. Генерация ключей. Обмен сеансовыми ключами средствами симметричной криптографии и криптографии с открытым ключом. Способы хранения ключей. Время жизни ключей.
Программное шифрование рискованно. Невозможно сказать, когда операционная система остановит работающую программу шифрования, запишет все на диск и разрешит выполняться какой-то другой задаче. Когда операционная система, наконец, вернется к шифрованию, чтобы там не шифровалось, картинка может оказаться весьма забавной. Операционная система записала программу шифрования на диск, и ключ записан вместе с ней. Ключ, незашифрованный, будет лежать на диске, пока компьютер не напишет что-нибудь в эту же область памяти поверх. Это может случиться через несколько минут, а может через несколько месяцев. Этого может и никогда не случиться, но ключ все же может оказаться на диске в тот момент, когда жесткий диск густо прочесывается вашим противником. Аппаратные реализации безопаснее. Многие из устройств шифрования разработаны так, чтобы любое вмешательство приводило бы к уничтожению ключа. Ряд коммуникационных приложений, например, телефонные шифраторы, могут использовать сеансовые ключи. Сеансовым называется ключ, который используется только для одного сеанса связи - единственного телефонного разговора - и затем уничтожается. Нет смысла хранить ключ после того, как он был использован. И если вы используете для передачи ключа от одного абонента другому некоторый протокол обмена ключами, то этот ключ не нужно хранить и перед его использованием. Это значительно снижает вероятность компрометации ключа.
Представьте себе шифрованный канал передачи данных, для которого вы хотите менять ключи каждый день. Иногда ежедневное распределение новых ключей является нелегкой заботой. Более простое решение - генерировать новый ключ из старого, такая схема иногда называется обновлением ключа.
Все, что нужно - это однонаправленная функция. Если Алиса и Боб используют общий ключ и применяют к нему одну и ту же однонаправленную функцию, они получат одинаковый результат. Они могут выбрать из результата нужные им биты и создать новый ключ.
Обновление ключей работает, но помните, что безопасность нового ключа определяется безопасностью старого ключа. Если Еве удастся заполучить старый ключ, она сможет выполнить обновление ключей самостоятельно. Однако, если старого ключа у Евы нет, и она пытается выпо отношению к шифрованному трафику полнить вскрытие с использованием только шифротекста, обновление ключей является хорошим способом защиты для Алисы и Боба.
Наименее сложными при хранении ключей являются проблемы одного пользователя, Алисы, шифрующей файлы для последующего использования. Так как она является единственным действующим пользователем системы, только она и отвечает за ключ. В некоторых системах используется простой подход: ключ хранится в голове Алисы и больше нигде. Это проблемы Алисы - помнить ключ и вводить его всякий раз, когда ей нужно зашифровать или расшифровать файл.
Другим решением является хранить ключ в виде карточки с магнитной полоской, пластикового ключа с встроенной микросхемой ROM.
Ключи, которые трудно запомнить можно хранить зашифрованными, используя что-то похожее на ключ шифрования ключей. Например, закрытый ключ RSA может быть зашифрован ключом DES и записан на диск. Для восстановления ключа RSA пользователь будет должен ввести ключ DES в программу дешифрирования.
В идеале, ключ никогда не должен оказываться вне шифровального устройства в незашифрованном виде. Эта цель не всегда достижима, но к этому нужно стремиться.
Ни один ключ шифрования нельзя использовать бесконечно. Время его действия должно истекать автоматически, подробно паспортам и лицензиям. Вот несколько причин этого:
Для любого криптографического приложения необходима стратегия, определяющая допустимое время жизни ключа. У различных ключей могут быть различные времена жизни. Для систем с установлением соединения, таких как телефон, имеет смысл использовать ключ только в течение телефонного разговора, а для нового разговора - использовать новый ключ.
Для систем, использующих специализированные каналы связи, все не так очевидно. У ключей должно быть относительно короткое время жизни, в зависимости от значимости данных и количества данных, зашифрованных в течение заданного периода. Ключ для канала связи со скоростью передачи 1 Гигабит в секунду возможно придется менять гораздо чаще, чем для модемного канала 9600 бит/с. Если существует эффективный метод передачи новых ключей, сеансовые ключи должны меняться хотя бы ежедневно.
Ключи шифрования ключей так часто менять не нужно. Они используются редко (приблизительно раз в день) для обмена ключами. При этом шифротекста для криптоаналитика образуется немного, а у соответствующего открытого текста нет определенной формы. Однако, если ключ шифрования ключей скомпрометирован, потенциальные потери чрезвычайны: вся информация, зашифрованная ключами, зашифрованными ключом шифрования ключей. В некоторых приложениях ключи шифрования ключей заменяются только раз в месяц или даже раз в год. Вам придется как-то уравновесить опасность, связанную с использованием одного и того же ключа, и опасность, связанную с передачей нового ключа.
Ключи шифрования, используемые при шифровании файлов данных для длительного хранения, нельзя менять часто. Файлы могут храниться на диске зашифрованными месяцами или годами, прежде чем они кому-нибудь снова понадобятся. Ежедневное дешифрирование и повторное шифрование новым ключом никак не повысит безопасность, просто криптоаналитик получит больше материала для работы. Решением может послужить шифрование каждого файла уникальным ключом и последующее шифрование ключей файлов ключом шифрования ключей. Ключ шифрования ключей должен быть либо запомнен, либо сохранен в безопасном месте, может быть где-нибудь в сейфе. Конечно же, потеря этого ключа означает потерю всех индивидуальных файловых ключей.
Время жизни закрытых ключей для приложений криптографии с открытыми ключами зависит от приложения. Закрытые ключи для цифровых подписей и идентификации могут использоваться годами (даже в течение человеческой жизни). Закрытые ключи для протоколов бросания монеты могут быть уничтожены сразу же после завершения протокола. Даже если считается, что время безопасности ключа примерно равно человеческой жизни, благоразумнее менять ключ каждую пару лет. Во многих четях закрытые ключи используются только два года, затем пользователь должен получить новый закрытый ключ. Старый ключ, тем не менее, должен храниться в секрете на случай, когда пользователю будет нужно подтвердить подпись, сделанную во время действия старого ключа. Но для подписания новых документов должен использоваться новый ключ. Такая схема позволит уменьшить количество документов, которое криптоаналитик сможет использовать для вскрытия.
17. Алгоритм обмена ключами Диффи-Хеллмана.
1976 г. – Уитфилд Мартин. Алгоритм непосредственно не производит шифрования, а позволяет двум пользователям независимо друг от друга сгенерировать секретные ключи, которые могут быть использованы в любом из блочных шифров.
Безопасность алгоритма основана на трудоемкости вычисления дискретных логарифмов конечного поля. Вычисление дискретного логарифма – задача обратная возведению в степень по модулю некоторого числа. Зная х:
. Вычисление х при котором
является более трудной задачей. При этом решения могут быть найдены не для всех дискретных логарифмов. Также нужно ввести понятие образующей. Если p – простое чмсло и q<p, то q является образующей по модулю p, если для каждого b от 1 до p-1 существует некоторое a, такое что
. q – называт примитивным корнем по модулю p. Для генерации ключа Алиса и боб выбирают большие простые числа n и g, так чтобы g был примитивным корнем по модулю n. Далее выполняется:
Фактически : ![]()
Несмотря, на то известны
вычислить k можно только после вычисления дискретного логарифма x,y. Число n должно быть как можно больше, т.к все методы вычисления дискретных логарифмов основаны разложении на множители числа n-1. Кроме того число (n-1)/2 должно быть также простым. Величина g не влияет на безопасность алгоритма. Данный алгоритм также как и протокол обмена открытыми ключами может быть подвергнут атаке “человек посередине”.
18. Однонаправленные хэш-функции. Назначение. Основные требования, предъявляемые к хэш-функциям. Хэш-функция MD5.
Хэш функции применяются в некоторых протоколах односторонней и двухсторонней аутентификации, а также во всех системах ЭЦП.
Однонаправленная функция H(M) применяется к сообщению произвольной длины M и возвращает значение фиксированной длины h.
h= H(M), где h имеет длину m
Многие функции позволяют вычислять значение фиксированной длины по входным данным произвольной длины, но у однонаправленных хэш-функций есть дополнительные свойства, делающие их однонаправленными [1065]:
Зная M, легко вычислить h.
Зная H, трудно определить M, для которого H(M)=h.
Зная M, трудно определить другое сообщение, M', для которого H(M)= H(M').
Смысл однонаправленных хэш-функций и состоит в обеспечении для M уникального идентификатора ("отпечатка пальца"). Если Алиса подписала Mс помощью алгоритма цифровой подписи на базе H(M), а Боб может создать M', другое сообщение, отличное от M, для которого H(M)= H(M'), то Боб сможет утверждать, что Алиса подписала M'.
В некоторых приложениях однонаправленности недостаточно, необходимо выполнение другого требования, называемого устойчивостью к столкновениям.
Должно быть трудно найти два случайных сообщения, Mи M', для которых H(M)= H(M').
Если длина хэш-кода – m, то чтобы найти сообщение М2 котрое приводит к генерации такого же хэш-кода что и М1 нудно проверить 2m сообщений( с вероятностью 0.5).
Следующий протокол, впервые описанный Гидеоном Ювалом (Gideon Yuval) [1635], показывает, как, если предыдущее требование не выполняется, Алиса может использовать вскрытие методом дня рождения для обмана Боба.
Алгоритм MD5.
После некоторой первоначальной обработки MD5 обрабатывает входной текст 512-битовыми блоками, разбитыми на 16 32-битовых подблоков. Выходом алгоритма является набор из четырех 32-битовых блоков, которые объединяются в единое 128-битовое хэш-значение.
Во первых, сообщение дополняется так, чтобы его длина была на 64 бита короче числа, кратного 512. Этим дополнением является 1, за которой вплоть до конца сообщения следует столько нулей, сколько нужно. Затем, к результату добавляется 64-битовое представление длины сообщения (истинной, до дополнения). Эти два действия служат для того, чтобы длина сообщения была кратна 512 битам (что требуется для оставшейся части алгоритма), и чтобы гарантировать, что разные сообщения не будут выглядеть одинаково после дополнения. Инициализируются четыре переменных:
A = 0x01234567
B = 0x89abcdef
C= 0xfedcba98
D= 0x76543210
Они называются переменными сцепления.
Теперь перейдем к основному циклу алгоритма. Этот цикл продолжается, пока не исчерпаются 512-битовые блоки сообщения.
Четыре переменных копируются в другие переменные: Aв a, B вb, C в c и D в d.
Главный цикл состоит из четырех очень похожих этапов (у MD4 было только три этапа). На каждом этапе 16 раз используются различные операции. Каждая операция представляет собой нелинейную функцию над тремя из a, b, c и d. Затем она добавляет этот результат к четвертой переменной, подблоку текста и константе. Далее результат циклически сдвигается вправо на переменное число битов и добавляет результат к одной из переменных a, b, c и d. Наконец результат заменяет одну из переменных a, b, c и d. См. Рис. Ошибка! Текст указанного стиля в документе отсутствует.-1 и Рис. Ошибка! Текст указанного стиля в документе отсутствует.-2. Существуют четыре нелинейных функции, используемые по одной в каждой операции (для каждого этапа - другая функция).

Рис. Ошибка! Текст указанного стиля в документе отсутствует.-1. Главный цикл MD5.

Рис. Ошибка! Текст указанного стиля в документе отсутствует.-2. Одна операция MD5.
F(X,Y,Z) = (X ÙY) Ú ((ØX) Ù Z)
G(X,Y,Z) = (X Ù Z) Ú (Y Ù (ØZ))
H(X,Y,Z) = XÅ Y Å Z
I(X,Y,Z) = Y Å(X Ú (ØZ))
(Å - это XOR, Ù - AND, Ú - OR, а Ø - NOT.)
Эти функции спроектированы так, чтобы, если соответствующие биты X, Y и Z независимы и несмещены, каждый бит результата также был бы независимым и несмещенным. Функция F - это побитовое условие: если X, то Y, иначе Z. Функция H - побитовая операция четности.
Если Mj обозначает j-ый подблок сообщения (от 0 до 15), а <<<s обозначает циклический сдвиг влево на s битов, то используются следующие четыре операции:
FF(a,b,c,d,Mj,s,ti) означает a= b+ ((a + F(b,c,d) + Mj + ti) <<<s)
GG(a,b,c,d,Mj,s,ti) означает a= b+ ((a + G(b,c,d) + Mj + ti) <<<s)
HH(a,b,c,d,Mj,s,ti) означает a= b+ ((a + H(b,c,d) + Mj + ti) <<<s)
II(a,b,c,d,Mj,s,ti) означает a= b+ ((a + I(b,c,d) + Mj + ti) <<<s)
Эти константы, ti, выбирались следующим образом:
На i-ом этапе tiявляется целой частью 232*abs(sin(i)), где i измеряется в радианах.
После всего этого a, b, c и d добавляются к A, B, C и D, соответственно, и алгоритм продолжается для следующего блока данных. Окончательным результатом служит объединение A, B, C и D.
19 Однонаправленные хэш-функции. Назначение. Основные требования, предъявляемые к хэш-функциям. Хэш-функция SHA-1.
Хэш функции применяются в некоторых протоколах односторонней и двухсторонней аутентификации, а также во всех системах ЭЦП.
Однонаправленная функция H(M) применяется к сообщению произвольной длины M и возвращает значение фиксированной длины h.
h= H(M), где h имеет длину m
Многие функции позволяют вычислять значение фиксированной длины по входным данным произвольной длины, но у однонаправленных хэш-функций есть дополнительные свойства, делающие их однонаправленными [1065]:
Зная M, легко вычислить h.
Зная H, трудно определить M, для которого H(M)=h.
Зная M, трудно определить другое сообщение, M', для которого H(M)= H(M').
Смысл однонаправленных хэш-функций и состоит в обеспечении для M уникального идентификатора ("отпечатка пальца"). Если Алиса подписала Mс помощью алгоритма цифровой подписи на базе H(M), а Боб может создать M', другое сообщение, отличное от M, для которого H(M)= H(M'), то Боб сможет утверждать, что Алиса подписала M'.
В некоторых приложениях однонаправленности недостаточно, необходимо выполнение другого требования, называемого устойчивостью к столкновениям.
Должно быть трудно найти два случайных сообщения, Mи M', для которых H(M)= H(M').
Если длина хэш-кода – m, то чтобы найти сообщение М2 котрое приводит к генерации такого же хэш-кода что и М1 нудно проверить 2m сообщений( с вероятностью 0.5).
Следующий протокол, впервые описанный Гидеоном Ювалом (Gideon Yuval) [1635], показывает, как, если предыдущее требование не выполняется, Алиса может использовать вскрытие методом дня рождения для обмана Боба.
Во первых, сообщение дополняется, чтобы его длина была кратной 512 битам. Используется то же дополнение, что и в MD5: сначала добавляется 1, а затем нули так, чтобы длина полученного сообщения была на 64 бита меньше числа, кратного 512, а затем добавляется 64-битовое представление длины оригинального сообщения.
Инициализируются пять 32-битовых переменных (в MD5 используется четыре переменных, но рассматриваемый алгоритм должен выдавать 160-битовое хэш-значение):
A = 0x67452301
B = 0xefcdab89
C= 0x98badcfe
D= 0x10325476
E = 0xc3d2e1fO
Затем начинается главный цикл алгоритма. Он обрабатывает сообщение 512-битовыми блоками и продолжается, пока не исчерпаются все блоки сообщения.
Сначала пять переменных копируются в другие переменные: Aв a, B вb, C в c, D в d и E в e.
Главный цикл состоит из четырех этапов по 20 операций в каждом (в MD5 четыре этапа по 16 операций в каждом). Каждая операция представляет собой нелинейную функцию над тремя из a, b, c, d и e, а затем выполняет сдвиг и сложение аналогично MD5. В SHA используется следующий набор нелинейных функций:
ft(X,Y,Z) = (X ÙY) Ú ((ØX) Ù Z) , для t=0 до 19
ft(X,Y,Z) = XÅY ÅZ , для t=20 до 39
ft(X,Y,Z) = (X ÙY) Ú(X ÙZ) Ú (Y Ù Z) , для t=40 до 59
ft(X,Y,Z) = XÅY ÅZ , для t=60 до 79
в алгоритме используются следующие четыре константы:
Kt = 0x5a827999, для t=0 до 19
Kt = 0x6ed9eba1 , для t=20 до 39
Kt = 0x8flbbcdc, для t=40 до 59
Kt = 0xca62c1d6, для t=60 до 79
(Если интересно, как получены эти числа, то:0x5a827999 = 21/2/4, 0x6ed9eba1 = 31/2/4, 0x8flbbcdc = 51/2/4, 0xca62c1d6 = 101/2/4.)
Блок сообщения превращается из 16 32-битовых слов (M0по M15) в 80 32-битовых слов (W0 по W79) с помощью следующего алгоритма:
Wt= Mt , для t = 0 по 15
Wt=(Wt-3 ÅWt-8 ÅWt-14 ÅWt-16) <<< 1, для t= 16 по 79
(В качестве интересного замечания, в первоначальной спецификации SHA не было циклического сдвига влево. Изменение "исправляет технический изъян, который делал стандарт менее безопасным, чем предполагалось" 1543]. NSA отказалось уточнить истинную причину изъяна.)
Если t - это номер операции (от 1 до 80), Wtпредставляет собой t-ый подблок расширенного сообщения, а <<<s- это циклический сдвиг влево на s битов, то главный цикл выглядит следующим образом:
FOR t= 0 to 79
TEMP= (a <<< 5) + ft(b,c,d)+ e+ Wt+ Kt
e= d
d= c
c= b <<< 30
b= a
a= TEMP
На Рис. показана одна операция. Сдвиг переменных выполняет ту же функцию, которую в MD5 выполняет использование в различных местах различных переменных.

Рис. 3. Одна операция SHA.
После всего этого a, b, c, d и e добавляются к A, B, C D и E, соответственно, и алгоритм продолжается для следующего блока данных. Окончательным результатом служит объединение A, B, C D и E.
20.Коды проверки подлинности сообщений (MAC).
MAC (Message Authentification Code) – имитовставка. МАС – это однонаправленная функция зависящая от ключа. Проверить подлинность сообщения может лицо которому известен ключ при создании MAC. Наиболее часто используются 2 способа:
Сообщение М конкретенируют с ключом А и вычисляют H(K,M). Если текст сообщения известен, то добавляя к нему другие блоки можно подобрать к сообщению блоки текста и подобрать значения хэш-кода. В этом случае поступают: H(K1, H(K2,M)); H(K, H(K,M)); H(K,P,M,K), где p – дополнение ключа до полного блока сообщения.
21.Электронная цифровая подпись. Назначение цифровой подписи. Требования к цифровым подписям. Общие принципы создания цифровых подписей. Алгоритм цифровой подписи DSA.
Цифровая подпись является аналогом подписи, сделанной от руки. ЦП должна обеспечивать
Требования к ЦП:
Для создания ЦП используется криптография с открытым ключом.
Создание подписи представляет собой зашифрование с открытым ключом пользователя. Проверка – расшифрование закрытым ключом и сравнение содержимого.
Наряду с самим сообщением можно шифровать его хеш-код, что ускоряет процесс шифрования. Получатель расшифровывает хеш-код и сравнивает его с хеш-кодом присланного сообщения.
Алгоритм DSA (Digital Signature Algorithm)
В отличии от алгоритма RSA, не предназначен для шифрования данных. Он используется только для подписи. Является национальным стандартом США.
Параметры, использующиеся в алгоритме:
P – простое число длиной L бит, где L кратно 64 и может иметь длину от 512 до 1024 бит
q – простое число, размером 160 бит – множитель (p-1)
g – число
, где h – любое число < P-1, для которого g>1
x – любое число < q
y = gx mod P
g, p и q являются открытыми и м.б. использованы несколькими пользователями.
В алгоритме используется хеш-функция Н(т). Подразумевается использование SHA
Для подписи сообщения М
r и s являются подписью.
Для проверки подписи:
X – закрытый ключ
У – открытый ключ
22.Электронная цифровая подпись. Назначение цифровой подписи. Требования к цифровым подписям. Общие принципы создания цифровых подписей. Алгоритм цифровой подписи ГОСТ Р 34.10-94.
Цифровая подпись является аналогом подписи, сделанной от руки. ЦП должна обеспечивать
Требования к ЦП:
Для создания ЦП используется криптография с открытым ключом.
Создание подписи представляет собой зашифрование с открытым ключом пользователя. Проверка – расшифрование закрытым ключом и сравнение содержимого.
Наряду с самим сообщением можно шифровать его хеш-код, что ускоряет процесс шифрования. Получатель расшифровывает хеш-код и сравнивает его с хеш-кодом присланного сообщения.
Алгоритм ГОСТ 134,10-94
Параметры:
Р – простое число длиной либо 509-512 бит, либо 1020-1024 бит
q – простое число. Является множителем р-1. Длина от 254 да 256 бит
а – любое число < p-1, для которого aq mod p = 1
х – число < q(закрытый ключ)
y = ax mod p (открытый ключ)
Исп-ся ф-хеш-функция Н(т) определяемая в ГОСТ З 34,11-94
р, q, a – открыты и м.б. использованы несколькими пользователями
Подпись:
Подпись - r mod2256иs mod2256
Проверка:
23.Протоколы односторонней и двухстронней аутентификации.
Задача односторонней аутентификации возникает, когда пользователь хочет воспользоваться услугами какого-либо сервера (хоста). Для этого пользователь передаёт нек. Секретную информацию, известную им двоим. Возможны следующие варианты протокола:
1-й Вариант:
Хосты хранят только хеш-коды паролей, бесполезные в случае взлома.
2-й Вариант
После исчерпания чисел происходит перерегистрация.
Также возможно исп-ть алгоритмы с откр ключом. (Хост хранит откр. Ключи, польз=ль - закрытые)
Протоколы 2-сторонней аутентификации и обмена ключами
SKA – закр. Ключ, подписывает…
Kp – пара = [закр, откр ключ]. Генерир-т Алиса.
L – время жизни сообщения
Посл. Шаг производится, если необх обоюдная аутентификация
Общ недостаток – центр распред-я м. б. перегружен; возм-ть взлома центра.. Один из способов реш-я этих проблем – исп-е сертификатов открытых ключей
24.Стандарт X.509. Структура сертификата открытого ключа. Принципы аутентификации с применением сертификатов X.509. Инфраструктуры открытых ключей.
Для использования в схеме проверки подлинности ISO, также известной как протоколы X.509, рекомендуется криптография с открытыми ключами. Эта схема обеспечивает проверку подлинности по сети. Хотя конкретный алгоритм не определен ни для обеспечения безопасности, ни для проверки подлинности, спецификация рекомендует использовать RSA. Однако возможно использование нескольких алгоритмов и хэш-функций. Первоначальный вариант X.509 был выпущен в 1988 г. После открытого изучения и комментирования он был пересмотрен в 1993 году, чтобы исправить некоторые изъяны в безопасности.
Версия |
Последовательный номер |
Идентификатор алгоритма |
Выдавшая организация |
Время действия |
Субъект |
Открытый ключ субъекта |
Подпись |
Рис. Ошибка! Текст указанного стиля в документе отсутствует.-4. Сертификат X.509.
Наиболее важной частью X.509 используемая им структура сертификатов открытых ключей. Имена всех пользователей различны. Доверенный Орган сертификации (Certification Authority, CA) присваивает каждому пользователю уникальное имя и выдает подписанный сертификат, содержащий имя и открытый ключ пользователя. Структура сертификата X.509 показана на Рис. Ошибка! Текст указанного стиля в документе отсутствует.-4.
Поле версии определяет формат сертификата. Последовательный номер уникален для конкретного CA. Следующее поле определяет алгоритм, использованный для подписи сертификата, вместе со всеми необходимыми параметрами. Выдавшей организацией является CA. Срок действия представляет собой пару дат, сертификат действителен в промежутке между этими двумя датами. Субъект - это имя пользователя. Информация об открытом ключе включает название алгоритма, все необходимые параметры и открытый ключ. Последним полем является подпись CA.
Если Алиса хочет связаться с Бобом, она сначала извлекает из базы данных его сертификат и проверяет его достоверность. Если у них общий CA, то все просто. Алиса проверяет подпись CA на сертификате Боба.
Если они пользуются различными CA, то все гораздо сложнее. Представьте себе древовидную структуру, в которой одни CA сертифицируют другие CA и пользователей. На самом верху находится главный CA. У каждого CA есть сертификаты, подписанные вышестоящим CA и нижестоящим CA. При проверке сертификата Боба Алиса использует эти сертификаты.
Такая схема продемонстрирована на Рис. Ошибка! Текст указанного стиля в документе отсутствует.-5. Сертификат Алисы заверен CAА, сертификат Боба заверен CAВ. Алиса знает открытый ключ CAА. У CAC есть сертификат, подписанный CAА, поэтому Алиса может проверить это. У CAС есть сертификат, подписанный CAD. И сертификат Боба подписан CAD. Подымаясь по дереву сертификации до общей точки, в данном случае CAD, Алиса может проверить сертификат Боба.

Рис. 5. Пример иерархии сертификации.
Сертификаты могут храниться в базах данных на различных узлах сети. Пользователи могут посылать их друг другу. Истечении срока действия сертификата он должен быть удален из всех общедоступных каталогов. Однако CA, выдавший сертификат, должен продолжать хранить его копию, которая может потребоваться при разрешении возможных споров.
Сертификаты также могут быть отозваны, либо из-за компрометации ключа пользователя, либо из-за того, что CA больше не хочет подтверждать сертификат данного пользователя. Каждый CA должен поддерживать список всех отозванных сертификатов, срок действия которых еще не закончился. Когда Алиса получает новый сертификат, она должна проверить, не был ли он отозван. Она может проверить базу данных отозванных ключей по сети, но скорей всего она проверит локально кэшируемый перечень отозванных сертификатов. В такой системе определенно вероятны злоупотребления, отзыв сертификатов возможно является самой слабой частью этой схемы.
Алисе нужно связаться с Бобом. Сначала она извлекает из базы данных последовательность сертификации от Алисы до Боба и открытый ключ Боба. В этот момент Алиса может инициировать однопроходный, двухпроходный или трехпроходный протокол проверки подлинности.
Однопроходный протокол представляет собой простую передачу данных Бобу Алисой. Протокол устанавливает личности и Алисы, и Боба, а также целостность информации, передаваемой Бобу Алисой. Кроме того, он обеспечивает защиту от вскрытия линии связи с помощью повтора.
PKI (Public Key) строится на основе Х.509
В PKI используется иерархическая модель построения ЦС. Между двумя цс могут быть определены отношения родительские дочерние при этом могут существовать разные не связанные между собой иерархии.
Могут быть PKI предприятия и региона. Модели могут встречаться промежуточные и выдающие ЦС.
Промежуточный ЦС не выдаёт сертификатов конечным пользователям, а только сертифицирует нижестоящие ЦС.
Выдающие- выдают сертификаты пользователю.
Для того, чтобы произвести проверку сертификата существует другой PKI. Их корневые ЦС должны обмениваться сертификатами . Чтобы снизить число обмена сертификатами используют Bridge CA (мостовые и шунтирующие)
Каждый корневой сертификант обращается к мосту, и тот связывается с нужным центром.
25.Система защиты электронной почты PGP.
PGP, или Pretty Good Privacy, — один из тех примеров успеха, что у всех на устах. В 1991 году Фил Зиммерман, один из лучших умов в области криптографии, разработал программное обеспечение шифрования. Оказавшись в Internet, оно было загружено тысячами людей по всему миру. (Зиммерман подвергался судебному преследованию, потому что его программа использует ключ длиной по крайней мере в 128 бит. В соответствии с американским законодательством продукты шифрования с длиной ключа свыше 56 бит нельзя экспортировать за пределы Северной Америки без разрешения правительства США.)
В течение многих лет сообразительные пользователи применяли PGP в своих целях (теперь же права на него принадлежат компании Network Associates). Так, многие компьютерщики помещали свои открытые ключи PGP на визитки.
PGP — так называлось оригинальное программное обеспечение; сейчас же рабочая группа IETF рассматривает протокол под названием Open PGP в контексте защиты электронной почты. Open PGP предусматривает несколько способов обеспечения целостности данных в сообщениях. Он поддерживает шифрование как с открытыми, так и с симметричными (секретными) ключами.
В модели с открытыми ключами данные шифруются с помощью однократного симметричного алгоритма, генерируемого отправителем. Этот однократный ключ тесно связан с сообщением, так как он используется только однажды. Затем он шифруется с помощью открытого ключа получателя и передается вместе с сообщением.
При получении сообщения Open PGP дешифрует однократный ключ, вложенный в сообщение, с помощью личного ключа получателя, имеющегося только у него. Затем Open PGP применяет дешифрованный однократный ключ для воссоздания полученного сообщения в первоначальном виде.
В модели с симметричными ключами пользователь может выбрать один из двух вариантов. Во-первых, сообщение можно зашифровать с помощью симметричного ключа, выводимого из пароля или другого общего секрета. Во-вторых, сообщение можно зашифровать по методу, напоминающему используемый в модели с открытыми ключами, когда однократный ключ шифруется с помощью симметричного алгоритма, выводимого из общего секрета.
Open PGP поддерживает также цифровые подписи, которые можно генерировать и вкладывать в сообщения. Сообщение и подпись шифруются затем с помощью однократного симметричного ключа, после чего однократный ключ шифруется с помощью открытого ключа и помещается перед всем зашифрованным блоком данных.
Крупные компании не торопятся с внедрением PGP, поскольку одна из его характерных особенностей — сеть доверительных отношений — аналогична иерархии доверительных отношений в PEM. Например, если пользователь А доверяет пользователю Б, а он, в свою очередь, доверяет пользователю В, то в соответствии с моделью доверительных отношений PGP пользователь В также доверяет пользователю А.
При всей своей эффективности при мелкомасштабных реализациях подобная модель грозит сущим кошмаром для компании с сотнями и тысячами пользователей.
Другой недостаток, из-за которого крупные компании неохотно идут на внедрение PGP, касается сертификатов X.509. Дело в том, что PGP использует собственный формат сертификатов, несовместимый с X.509. Однако Network Associates планирует изменить эту ситуацию.
В июне 1998 года Network Associates объявила о начале совместных с уполномоченным по выдаче сертификатов компанией Verisign работ над обеспечением совместимости между сертификатами X.509, которые выдает Verisign, и нестандартными сертификатами PGP.
Кроме того, в сентябре 1998 года Network Associates представила PGP Enterprise Security 3.0. Этот продукт делает гигантский шаг вперед в области поддержки стандартных протоколов и масштабируемости PGP для корпоративных решений. Вместе с тем с поддержкой сертификатов X.509 PGP становится гораздо более гибким в отношении цифровых подписей. Например, пользователи могут подписывать свои ключи с помощью цифровых подписей, срок действия которых истекает после предопределенного периода времени.
Харрел заявляет, что с каждой последующей версией PGP будет становиться все более совместимым с X.509. Как планирует компания, к февралю 1999 года комплект ее продуктов будет способен управлять сертификатами X.509 и станет полностью интегрирован с ними.
26.Система защиты электронной почты S/MIME.
Система S/MIME
Secure/Multipurpose Internet MailExpansion- защищённые много целевые расширения электронной почты.
MIME
Стандарт MIME является расширением базового стандарта RFC 821/822, определяющих параметры пересылки электронной почты
821 – SMTP
822 – описание формата сообщения
Стандарт MIME определяет 5 новых заголовков сообщения, а также несколько форматов содержимого для представления документов мультимедиа и стандартных кодировок. Среди 5 полей заголовка 3 являются обязательными:
1 MIME-Version (1;0)
2 Content-Type –описывает данные помещённые в теле сообщения
3 Content-Transfer-Encoding – указывает тип кодировки сообщения
Всего существует 7 типов содержимого, каждый из которых может иметь множество подтипов:
Поле типа кодировки может содержать следующие значения:
Типы S/MIME
В S/MIME защита объекта обеспечивается подписью, шифрованием или и тем и другим одновременно.
Использование того или иного алгоритма зависит от криптопровайдера установленного в системе.
В S/MIME определяется ряд подтипов относящихся к Multipart и Application.
27.Защищенные протоколы передачи данных IPSec и SSL.
Протокол IP версии 4 наиболее популярен в настоящее время. Полностью лишен средств аутентификации и обеспечения конфиденциальности передаваемых данных. В процессе разработки протокола следующего поколения IP web 6, параллельно разрабатывались спецификации защиты передаваемой информации, которые были оформлены в виде протокола IPSec.
Основным применением IPSecа явилась организация виртуальных частных сетей (VPN) для передачи данных между двумя локальными сетями, через внешнюю незащищённую сеть, например Internet.
Основу протокола составляют 3 инструментальных средства защиты:
эти протоколы основаны на алгоритме Диффи-Хеллмана
ПО протоколов может функционировать на серверах или ПК конечных пользователей. Однако чаще его устанавливают на маршрутизаторах или брандмаузерах, которые в архитектуре IPSec называются шлюзами безопасности.
Различают 2 режима использования протоколов:
- транспортный
- туннельный
В транспортном режиме зашифрованные данные передаются непосредственно между хостами, но защита распространяется только на данные вышестоящих уровней
В туннельном режиме данные передаются между двумя шлюзами безопасности, при этом клиентские станции могут вообще не поддерживать IPSec и передовать обычный IP трафик.
В шлюзе каждый IP пакет помещается в «оболочку» IPSec, т.е. зашифровывается всё сообщение вместе с исходным заголовком.
Шлюз снабжает эти данные новым IP заголовком, содержащим IP адрес другого шлюза.
Другой шлюз, получив пакет, расшифровывает пакет и передает адресату в неизменном виде.
Данная процедура называется туннелированием.
28.Стандарты информационной безопасности.
1) Критерий оценки доверенных компьютерных систем 1983 стандарт США «Оранжевая книга»
Степень доверия оценивается по двум основным критериям
Политика безопасности должна включать следующие элементы:
В Оранжевой книге определяются 4 уровня доверия A B C D.
D – отсутствие доверия. С1=>C2=>B1=>B2=>B3=>A1(требования ужесточаются).
Уровень С – произвольное управление доступом.
Уровень В – принудительное управление доступом.
Уровень А – унифицируемая безопасность.
2) Стандарт ISO/IEC. Критерий оценки безопасности ИТ. Международный стандарт 1999. В РФ в 2002 году принят ГОСТ ИСО похожий
В отличие от Оранж книги этот стандарт часто назывался общими критериями, не содержит предопределенных классов безопасности. Классы строятся исходя из требований к конкретной ИТ. Стандарт содержит библиотеки требований, которые используются в конкретных ИТ - профили защиты. Совокупность требований к конкретной разработке – задание по безопасности.
3) Руководящие документы гостехкомиссии России.
Существует 9 классов. Каждый класс характеризуется определенной совокупностью требований по защите.
3 группы:
А – работает один пользователь, имеющий доступ ко всей информации, размещенной на носителях одного уровня конфиденциальности.
Б – пользователь имеет одинаковый доступ к информации на носителях различного уровня конфиденциальности.
В – многопользовательская АС, в которой обработка информации на носителях разного уровня конфиденциальности.