Защита информации в электронных платежных системах

Методы защиты информации в компьютерных системах и сетях

Показывать лекцию целиком

3.1. Угрозы безопасности информационных систем

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

  • несанкционированный доступ (НСД) к секретной или конфиденциальной информации;
  • представление себя в качестве другого лица с целью уклонения от ответственности, либо отказа от обязательств, либо с целью использования прав другого лица для:
  • отправки фальсифицированной информации,
  • искажения имеющейся информации,
  • НСД с помощью фальсификации или кражи идентификационных данных или их носителей,
  • фальсифицированной авторизации транзакций или их подтверждения;
  • уклонение от ответственности за созданную информацию;
  • фальсификация источника информации или степени ответственности, например заявление о получении некоторой информации от другого абонента, хотя на самом деле информация была создана самим нарушителем;
  • фальсификация времени отправки или самого факта отправки информации;
  • отрицание факта получения информации или искажение сведений о времени ее получения;
  • расширение своих полномочий нарушителем, например на получение доступа, создание информации, ее распространение и т.п.;
  • несанкционированное создание учетных записей или изменение (ограничение или расширение) полномочий других пользователей;
  • использование скрытых каналов передачи данных, например сокрытие наличия некоторой тайной информации в другой информации (стеганографическое скрытие информации);
  • внедрение в линию связи между другими абонентами в качестве активного тайного ретранслятора;
  • слежение за особенностями информационного обмена и анализ различных характеристик (объекты и субъекты доступа, время доступа и пр.) передаваемых данных;
  • дискредитация защищенного протокола информационного взаимодействия, например, путем разглашения сведений, которые, согласно этому протоколу, должны храниться в секрете;
  • изменение функций ПО (обычно с помощью добавления скрытых функций);
  • провоцирование других участников информационного взаимодействия на нарушение защищенного протокола, например, путем предоставления неправильной информации;
  • препятствование взаимодействию других абонентов, например, путем скрытого вмешательства, вызывающего отказ в обслуживании или прекращение легального сеанса как якобы нелегального и пр.
  • 3.2. Типы атак на протоколы информационного взаимодействия

    Атаки на протоколы информационного обмена можно классифицировать так, как показано на рис 3.1.

    (рис 3.1) Классификация атак на информационные системы

    3.3. Службы защиты

    Можно выделить следующий основной набор функций защиты:

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

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

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

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

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

    Аутентификация пользователей (субъектов) может быть основана на следующих принципах:

  • на предъявлении пользователем пароля;
  • на предъявлении пользователем доказательств, что он обладает секретной ключевой информацией, в том числе, возможно, хранящейся на смарт-карте;
  • на предъявлении пользователем некоторых признаков, неразрывно связанных с ним;
  • на установлении подлинности пользователя некой третьей, доверенной стороной.
  • Невозможность отказа от факта отправки или получения сообщения. Если сообщение было отправлено не внушающим доверия отправителем, получатель должен иметь возможность доказать, что сообщение было действительно отправлено. И наоборот, если сообщение было отправлено не внушающему доверия получателю, отправитель должен иметь возможность доказать, что сообщение этим адресатом получено.

    На рис 3.2 показана модель системы защиты информационного взаимодействия по каналам связи.

    (рис 3.2) Модель системы защиты удаленного взаимодействия двух абонентов

    .

    (рис 3.3) Модель системы защиты от РПВ

    3.4. Криптографические методы защиты

    3.4.1. Основные термины и определения

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

  • криптосистемы с секретным ключом (классическая криптография);
  • криптосистемы с открытым ключом;
  • криптографические протоколы.
  • Введем некоторые понятия, необходимые в дальнейшем:

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

    3.4.2. Оценка надежности криптоалгоритмов

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

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

    Методы оценки качества криптоалгоритмов, используемые на практике:

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

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

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

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

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

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

    Основные объекты изучения классической криптографии показаны на рис 3.4, где А и В - законные пользователи, W - противник или криптоаналитик. Учитывая что схема на рис 3.4а фактически является частным случаем схемы на рис 3.4б при В = А, в дальнейшем будет рассматриваться только она.

    (рис 3.4) Криптографическая защита: а - при хранении; б - при передаче информации по каналу связи

    Процедуры зашифрования E (encryption) и расшифрования D (decryption) можно представить в следующем виде:

    $$C = E (M) = K_e \{M\};$$

    $$M = D (C) = K_d \{C\},$$

    где M (message) и C (ciphertext) - открытый и зашифрованный тексты;
    $$K_e$$ и $$K_d$$ - ключи зашифрования и расшифрования.

    Функции за- и расшифрования взаимно обратные, иначе говоря, для любого текста X справедливо:

    $$D (E (X)) = Kd \{K_e \{X\}\} = X;$$

    $$E (D (X)) = Ke \{K_d \{X\}\} = X.$$

    На рис 3.5 приведена классификация методов шифрования информации. Различают два типа алгоритмов шифрования симметричные (с секретным ключом) и асимметричные (с открытым ключом). В первом случае обычно ключ расшифрования совпадает с ключом зашифрования, т.е.

    $$K_d = K_e = K,$$

    либо знание ключа зашифрования позволяет легко вычислить ключ расшифрования. В асимметричных алгоритмах такая возможность отсутствует: для зашифрования и расшифрования используются разные ключи, причем знание одного из них не дает практической возможности определить другой. Поэтому, если получатель А информации сохраняет в секрете ключ расшифрования $$K_{dA} = SK_A$$, ключ зашифрования $$K_{eA} = PK_A$$ может быть сделан общедоступным (SK - secret key, PK - public key).

    (рис 3.5) Классификация методов шифрования информации

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

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

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

    Идея, лежащая в основе итерационных блочных шифров, состоит в построении криптостойкой системы путем многократного применения относительно простых криптографических преобразований, в качестве которых К. Шеннон предложил использовать преобразования замены (подстановки) (substitution) и перестановки (permutation); схемы, реализующие эти преобразования, называются SP-сетями. Действие таких шифров аналогично "алгоритму", к которому прибегают, когда месят тесто:

    РАСКАТАТЬ
    СЛОЖИТЬ
    РАСКАТАТЬ
    СЛОЖИТЬ
    РАСКАТАТЬ
    СЛОЖИТЬ
    . . . . . . .

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

    (рис 3.6) Схема простейшего итерационного шифра

    Рассеивание и перемешивание предполагают:

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

  • позволяет скрыть статистическую зависимость между знаками открытого текста, иначе говоря, перераспределить избыточность исходного языка посредством распространения ее на весь текст;
  • не позволяет восстанавливать неизвестный ключ по частям;
  • не позволяет на основе статистического анализа шифротекста получать информацию об использованном ключе.
  • Самые известные блочные шифры - DES (Data Encryption Standard), старый американский стандарт шифрования, созданный в 1974 г., де-факто многолетний неофициальный мировой стандарт шифрования; российский стандарт криптозащиты ГОСТ 28147-89 и новый американский стандарт шифрования AES (Advanced Encryption Standard), принятый в 2001 г. в результате многолетнего открытого международного конкурса.

    Структура раундового преобразования DES и ГОСТ носит название петли Фейстеля, схема которой приведена на рис 3.7, а структура функций за- и расшифрования - сеть Фейстеля. Структура AES носит название "Квадрат".

    (рис 3.7) Схема петли Фейстеля, f — раундовая функция

    DES работает с блоками данных разрядностью 64 бита с использованием 56-разрядного ключа, из которого по специальному фиксированному алгоритму, использующему перестановки и сдвиги, вырабатываются раундовые ключи. Применяемые преобразования - поразрядное сложение по модулю 2, подстановки и перестановки, число раундов равно 16, перед началом первого раунда выполняется начальная фиксированная перестановка IP, после 16-го раунда выполняется обратная перестановка $$IP^{–1}$$. Следуя рекомендациям Шеннона, в каждом раунде выполняется один шаг перемешивания (с использованием соответствующего раундового ключа и S-блоков (блоков замены), после которого следует шаг рассеивания, не зависящий от ключа.

    Интересно отметить, что в первоначальной схеме, предложенной IBM, все шестнадцать 48-разрядных раундовых ключей выбирались независимо, т.е. размер ключа был равен 768 битам. Однако по требованию Агентства национальной безопасности США (АНБ), во-первых, размер ключа был уменьшен до 64 бит, из которых только 56 являются секретными, во-вторых, в алгоритме определены перестановки лишь специального вида, не зависящие от ключа, что наводило критиков этого алгоритма на мысль, будто АНБ могла использовать известные ей слабости алгоритма для его взлома. На протяжении последних десятилетий DES подвергался интенсивному и всестороннему исследованию и по современным понятиям уже не считается надежным, в первую очередь из-за небольшой разрядности ключа.

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

    ГОСТ 28147-89. Ключевая информация ГОСТа представляет собой два массива данных: собственно ключ K и таблицу замен H. Ключ - это массив из восьми 32-разрядных элементов $$K = K_0 K_1 … K_7$$. Таким образом, размер ключа составляет 256 битов или 32 байта. Таблица замен - это набор из восьми одномерных массивов, так называемых узлов замены, каждый из которых определяет логику работы четырехразрядного блока подстановок (S-блока) и по этой причине содержит 16 четырехразрядных двоичных наборов (от 0 до 15), расположенных в произвольном порядке. Таким образом, объем таблицы замен равен 8 * 16 * 4 = 512 битов, или 64 байта. Таблица замен H в отличие от ключа К может являться долговременным ключевым элементом. Она, например, может быть общей для всех процедур шифрования в рамках одной системы криптографической защиты.

    В качестве исходных данных раундовая функция шифрования ГОСТа получает 64-разрядный блок данных D = (L, R) и 32-разрядный раундовый ключ, в качестве которого используется один из элементов ключа Кi. В ходе выполнения преобразования левая L и правая R половины блока данных рассматриваются как отдельные 32-разрядные элементы данных, в качестве которых они подвергаются следующим преобразованиям:

  • сложение по модулю $$2^{32}$$ полублока R и элементом ключа;
  • разбиение результата S на восемь четырехбитовых блоков, поблочная замена по таблице замен, формирование из получившихся блоков нового значения S;
  • циклический сдвиг результата S на 11 разрядов влево;
  • поразрядное сложение по модулю 2 (XOR) результата S и полублока L;
  • элемент R становится новым значением элемента L, значение результата предыдущей операции становится новым значением элемента R.
  • Полученные значения элементов L и R выдаются в качестве результата шага раундового преобразования.

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

    3.4.4. Абсолютно стойкий шифр. Гаммирование

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

    (рис 3.8) Схема однократного использования

    Формируется m-разрядная случайная двоичная последовательность - ключ шифра, известный отправителю и получателю сообщения. Отправитель производит побитовое сложение по модулю 2 ключа и m-разрядной двоичной последовательности, соответствующей пересылаемому сообщению:

    где $$M_i$$, $$K_i$$ и $$С_i$$ - очередной i-й бит соответственно исходного сообщения, ключа и зашифрованного сообщения;
    m - число битов открытого текста.

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

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

    Целью противника может являться раскрытие криптосистемы, нахождение ключа, в крайнем случае, дешифрование какого-либо закрытого сообщения. Однако он может быть удовлетворен, получив даже некоторую вероятностную информацию об исходном тексте сообщения. Например, известный криптоаналитику факт написания текста некоторого сообщения на английском языке предоставляет ему некоторую априорную информацию об этом сообщении даже до анализа шифровки. В этом случае он заранее знает, что слово "HELLO" является более вероятным началом сообщения, чем набор букв "FGHKM". Поэтому одной из целей криптоанализа может являться увеличение информации, относящейся к каждому возможному сообщению таким образом, чтобы правильный текст был более вероятен. Предположим, противник перехватил шифровку "ABCCD" и знает (или предполагает), что использованный шифр - это шифр простой замены. Анализ шифровки позволяет сделать вывод, что исходное сообщение состоит из пяти букв, причем на третьей и четвертой позициях стоит одна и та же буква, а остальные отличны от нее и различны между собой. Противник не может считать, что это сообщение "HELLO", потому что имеются и другие возможные сообщения, например "TEDDY". Однако апостериорные вероятности таких открытых текстов возрастают относительно их априорных вероятностей. В то же время апостериорная вероятность таких открытых текстов, как "PEACE" или "GATES", снижается до нуля вне зависимости от их априорной вероятности. По К. Шеннону, в совершенно секретных криптосистемах после анализа закрытых текстов апостериорные вероятности возможных открытых текстов остаются такими же, какими были их априорные вероятности.

    Необходимые и достаточные условия абсолютной стойкости шифра:

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

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

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

    (рис 3.9) Шифрование информации методом гаммирования

    Гаммированием называют процедуру наложения на входную информационную последовательность гаммы шифра, т.е. последовательности с выходов генератора псевдослучайных последовательностей (ПСП) G. Последовательность называется псевдослучайной, если по своим статистическим свойствам она неотличима от истинно случайной последовательности, но в отличие от последней является детерминированной, т.е. знание алгоритма ее формирования дает возможность ее повторения необходимое число раз. Если символы входной информационной последовательности и гаммы представлены в двоичном виде, наложение чаще всего реализуется с помощью операции поразрядного сложения по модулю 2. Надежность шифрования методом гаммирования определяется качеством генератора гаммы.

    3.4.5. Генераторы псевдослучайных последовательностей

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

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

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

    Можно выделить следующие функции генераторов ПСП в системах защиты информации:

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

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

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

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

    представлены обе вышеназванные схемы.

    (рис 3.10) Генераторы ПСП: а - общая схема; б - частные случаи (режимы OFB и Counter); в - классификация криптографических генераторов ПСП

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

  • преобразование $$F_{fb}$$ является двухпараметрическим, при этом нет никакой гарантии, что при всех значениях секретного параметра K (ключа) формируемая последовательность будет иметь достаточно большой период;
  • при возникновении ошибки на каком-то шаге выполнения нелинейного преобразования $$F_{fb}$$ искажаются все последующие элементы ПСП.
  • На рис 3.10в показана классификация криптографических генераторов ПСП. Роль нелинейных функций $$F_{out}$$ или $$F_{fb}$$ в рассматриваемой ситуации выполняет функция зашифрования E одноключевой (с секретным ключом) или двухключевой (с открытым ключом) криптосистемы. Непредсказуемость криптографических генераторов основывается на предположениях о том, что у аналитика не хватит ресурсов (вычислительных, временных или стоимостных) для того, чтобы инвертировать нелинейную функцию обратной связи или нелинейную функцию выхода генератора ПСП.

    По совокупности вышеперечисленных требований наиболее приемлемое решение - генераторы ПСП, использующие многораундовые преобразования при построении функций $$F_{out}$$ или $$F_{fb}$$.

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

    3.4.6. Поточные шифры

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

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

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

    3.5. Криптосистемы с секретным ключом

    3.5.1. Модель симметричной криптосистемы

    В системе, показанной на рис 3.11, в информационных отношениях принимают участие три действующих лица: отправитель (абонент А) и получатель информации (абонент В), а также противник W. Современные одноключевые криптосистемы предполагают использование взаимно обратных преобразований E и D блоков данных фиксированной длины. Для задания блочной криптосистемы необходимо определить:

  • числовые параметры криптоалгоритма - разрядность n шифруемых блоков данных, объем ключевой информации, размер раундового ключа, число раундов шифрования;
  • раундовую функцию F шифрования;
  • алгоритм получения раундовых ключей из исходного ключа $$K_{AB}$$.
  • (рис 3.11) Модель криптосистемы с секретным ключом

    Задача абонента А заключается в том, чтобы передать получателю конфиденциальное сообщение M, состоящее из m блоков длины n, т.е.:

    $$M = M_1 M_2, \ldots, M_i, \ldots M_m, i = 1, \ldots, m.$$

    Задача абонента В заключается в том, чтобы, получив переданное сообщение

    $$C = C_1 C_2, \ldots, C_i, \ldots, C_m, i = 1, \ldots, m,$$

    понять его содержание. Для того чтобы только получатель мог прочитать посланное сообщение, отправитель преобразует открытый текст M с помощью функции зашифрования Е и секретного (известного только А и В) ключа $$K_{AB}$$ в шифртекст C:

    $$C = E (M) = K_{AB} \{M\},$$

    который и поступает в канал связи. Получатель восстанавливает исходный текст сообщения с помощью функции расшифрования D и того же секретного ключа $$K_{AB}$$:

    $$M = D (C) = K_{AB} \{C\}.$$

    Для реализации такого информационного обмена должен существовать надежный канал, по которому происходит предварительный обмен секретными ключами, а у одного из его законных участников должен быть генератор, формирующий качественные ключи $$K_{AB}$$, обеспечивающие гарантированную стойкость системы.

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

    3.5.2. Классификация угроз противника. Основные свойства криптосистемы

    Таким образом, имеют место три возможных типа угроз со стороны противника:

  • нарушение секретности информации - дешифрование (полное или частичное) переданного сообщения или получение информации о его сути;
  • нарушение целостности информации - внесение в сообщение искажений, которые законный получатель не смог бы обнаружить;
  • нарушение подлинности информации - формирование ложных сообщений, которые законный получатель В принял бы за подлинные, пришедшие от А.
  • Дешифрование переданного сообщения противником возможно в случае вычисления им секретного ключа либо нахождения алгоритма, функционально эквивалентного D и не требующего знания $$K_{AB}$$.

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

    3.5.3. Классификация атак на криптосистему с секретным ключом

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

  • атака на основе только шифротекста (ciphertext-only attack): противнику известны n шифротекстов, зашифрованных на одном и том же ключе K;
  • атака на основе известного (невыбранного) открытого текста (known-plaintext attack): противнику известны n шифротекстов, зашифрованных на одном и том же ключе K, а также соответствующие им открытые тексты;
  • атака на основе выбранного открытого текста (chosen-plaintext attack): противник может выбрать необходимое число открытых текстов и получить соответствующие им шифровки (при этом в случае простой атаки такого типа все открытые тексты могут быть выбраны до получения первой шифровки; в случае адаптивной атаки противник выбирает очередной открытый текст, зная шифровки всех предыдущих);
  • атака на основе выбранного шифротекста (chosen-ciphertext attack): противник может выбрать необходимое количество шифровок и получить соответствующие им открытые тексты (в случае простой атаки такого типа все шифровки должны быть выбраны до получения первого открытого текста; в случае адаптивной атаки противник выбирает очередную шифровку, зная открытые тексты всех предыдущих);
  • атака на основе выбранного текста (chosen-text attack): противник может атаковать криптосистему "с обеих сторон", т.е. выбирать шифровки и дешифровать их, а также выбирать открытые тексты и шифровать их (атака такого типа может быть простой, адаптивной, простой с одной стороны и адаптивной - с другой).
  • В каждом случае противник должен либо определить ключ K, либо выполнить дешифрование некоторого нового шифротекста, зашифрованного на том же ключе, что и сообщения, предоставленные ему для исследования на начальной стадии криптоанализа.

    Атаки перечислены в порядке возрастания их силы. Различие в степени действенности, например, атак первых трех уровней можно показать на примере шифра простой (одноалфавитной) замены. При анализе на основе только шифротекста для раскрытия этого простейшего шифра требуется провести некоторую работу, аналогичную той, которую провели герои произведений Э. По ("Золотой жук") и А. Конан-Дойля ("Плящущие человечки"). В случае атаки на основе известного открытого текста раскрытие шифра становится тривиальным в особенности после того, как в открытых текстах встретятся большинство символов используемого алфавита. При атаке на основе выбранного открытого текста в случае использования английского алфавита шифр будет вскрыт сразу после получения шифровки $$K \{ABC, ..., XYZ\}$$.

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

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

    Наиболее очевидное решение задачи закрытия сообщений, состоящих из нескольких блоков, заключается в независимом шифровании каждого блока на одном и том же ключе $$K_{AB}$$. Данная классическая схема блочного шифрования, приведенная на рис 3.12, известна под названием режима электронной кодовой книги (Electronic Code Book - ECB). В ГОСТ 28147-89 данный режим назван режимом простой замены.

    (рис 3.12) Шифрование в режиме ECB

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

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

    Все остальные режимы реализуют комбинированные схемы шифрования (см. параграф 3.4) и обеспечивают зависимость каждого блока шифротекста не только от соответствующего блока открытого текста, но и от его номера. На рис 3.13 показана схема шифрования в режиме сцепления блоков шифротекста (Ciphertext Block Chaining - CBC), где секретность n-разрядного блока $$С_0$$ (синхропосылки или вектора инициализации (IV - initialization vector)) не является обязательной.

    (рис 3.13) Режим шифрования СВС: а - зашифрование, б - расшифрование

    Отличительными особенностями режима CBC являются зависимость при зашифровании i-го блока шифротекста от всех предшествующих блоков открытого текста и зависимость при расшифровании каждого блока открытого текста $$M_i$$ только от двух блоков $$M_{i–1}$$ и $$M_i$$ шифротекста. Первое свойство делает пригодным использование режима для решения задач контроля целостности информации. Второе свойство делает режим самосинхронизирующимся: одиночная ошибка при передаче (ошибка при передаче одного блока) может привести к неправильному расшифрованию только двух блоков. Как будет видно в дальнейшем, этот режим используется и в криптосистемах с открытым ключом в том случае, если размер шифруемого сообщения больше, чем размер блока.

    Схема самосинхронизирующегося поточного режима блочного шифрования, ,

    где $$S_0$$ - синхропосылка (начальное состояние элементов памяти генератора ПСП),
    Q - элементы памяти генератора ПСП, разрядность блоков исходного текста t <= n.

    (рис 3.14) Режим шифрования CFB: а - зашифрование, б - расшифрование

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

    Схема синхронного поточного режима блочного шифрования, . Эта схема может рассматриваться как частный случай схемы щифрования информации методом гаммирования, приведенной выше на рис 3.9. Гамма шифра снимается с выходов генератора ПСП, реализованного на основе регистра разрядности n, в цепи обратной связи которого используется функция зашифрования E. Последовательность $$g = g_1 g_2 \ldots g_i \ldots g_m$$ не зависит от открытого текста, и поэтому всякий раз при фиксированных $$K_{AB}$$ и $$S_0$$ будет вырабатываться одна и та же гамма. Данный факт требует при шифровании на одном ключе двух различных массивов данных использовать различные синхропосылки.

    (рис 3.15) Режим шифрования OFB: а - зашифрование, б - расшифрование

    При синхронном поточном шифровании в режиме .

    (рис 3.16) Режим шифрования Counter: а - зашифрование, б - расшифрование

    Первая ступень - это либо n-разрядный счетчик, изменения состояния которого задаются формулой $$S_i = S_{i – 1} + 1$$, либо генератор n-разрядных кодов, единственное требование к которому - максимально возможный период выходной последовательности. Каждый n-разрядный двоичный набор с выхода счетчика или генератора кодов первой ступени поступает на вход функции зашифрования E, результатом действия которой становится очередной элемент гаммы:

    $$g_i = E (S_{i – 1}) = K_{AB} {S_{i – 1}}.$$

    Так же как и в режимах CFB и OFB, для обратимости процедур шифрования при зашифровании и расшифровании должна использоваться одна и та же синхропосылка.

    В ГОСТ 28147-89 аналогичный режим называется режимом гаммирования.

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

  • при зашифровании и расшифровании используется одна и та же функция E;
  • любой элемент (бит, байт, блок и т.п.) информационной последовательности шифруется независимо от других;
  • изменение любого бита шифротекста на противоположное значение приводит после расшифрования к аналогичному изменению соответствующего бита открытого текста;
  • повторное наложение той же гаммы g на зашифрованную последовательность С дает на выходе исходную последовательность M;
  • шифрование нулевой последовательности дает на выходе гамму;
  • если известны две последовательности $$С ^{(1)}$$ и $$С ^{(2)}$$, зашифрованные с использованием одной и той же гаммы, и известна последовательность $$M ^{(1)}$$, то последовательность $$M ^{(2)}$$ может быть легко вычислена по формуле
  • Третье свойство режимов гаммирования дает возможность противнику, не обладающему секретным ключом, воздействуя лишь на биты шифротекста, вносить предсказуемые, а в некоторых случаях даже целенаправленные, изменения в получаемый после расшифрования открытый текст. Однако это свойство гаммирования нельзя считать недостатком, так как обеспечение секретности, с одной стороны, и обеспечение целостности и подлинности (аутентичности) информации, с другой, суть различные свойства шифров.

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

    Приведенные пять режимов использования блочных шифров являются наиболее распространенными. Более того, первые четыре из них в свое время были официально утверждены Национальным бюро стандартов (NBS) США в качестве режимов использования алгоритма DES.

    3.5.5. Стандарт криптографической защиты AES-128

    Лучшим на сегодняшний день можно признать блочный шифр Rijndael, который в 2001 г. победил в открытом международном конкурсе на принятие нового американского стандарта AES (Аdvanced Encryption Standard). AES заменил морально устаревший (в первую очередь из-за низкой разрядности ключа и неэффективной реализации на современных платформах) DES.

    На рис 3.17 показана схема функции зашифрования AES-128.

    (рис 3.17) Функция зашифрования шифра AES-128

    Разрядность блока данных AES-128 равна 128 битам, число раундов преобразования равно 10. Функция E построена с использованием новой архитектуры "квадрат". Промежуточные результаты преобразований, выполняемых в рамках криптоалгоритма AES-128, называются состояниями. Состояние и раундовые ключи шифрования можно представить в виде квадратного массива байтов, имеющего четыре строки и четыре столбца. Разрядность исходного секретного ключа, из которого формируются раундовые ключи, равна 128.

    Рассеивающие и перемешивающие свойства шифра иллюстрирует рис 3.18, из которого видно, что два раунда обеспечивают полное рассеивание и перемешивание информации.

    (рис 3.18) Рассеивание и перемешивание информации в AES-128

    В состав раунда AES-128 входят следующие преобразования:

  • побайтовая замена байтов состояния с использованием фиксированной таблицы замен размером 8 x 256 (SubBytes);
  • побайтовый циклический сдвиг строк результата - i-я строка сдвигается на i байтов влево, i = 0, ..., 3 (ShiftRows);
  • перемешивание столбцов результата (MixColumns);
  • поразрядное сложение по модулю 2 (XOR) результата с раундовым ключом (AddRoundKey).
  • 10-й раунд отличается от остальных - в нем отсутствует предпоследняя операция.

    Основные особенности AES-128:

  • новая архитектура "Квадрат", обеспечивающая быстрое рассеивание и перемешивание информации, при этом за один раунд преобразованию подвергается весь входной блок;
  • байт-ориентированная структура, удобная для реализация на 8-разрядных микроконтроллерах (МК);
  • все раундовые преобразования суть операции в конечных полях, допускающие эффективную аппаратную и программную реализацию на различных платформах.
  • 3.5.6. Поточный шифр RC4

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

  • работа по принципу stop-and-go;
  • перемешивание двух ПСП под управлением третьей;
  • многоступенчатая структура;
  • использование S-блоков с изменяющейся в процессе работы таблицей замен;
  • использование блоков пространственного сжатия информации;
  • использование в качестве строительных блоков генераторов, функционирующих в конечных полях.
  • Одним из лучших поточных шифров является .

    (рис 3.19) Схема генератора ПСП RC4

    Рассмотрим алгоритм работы 8-разрядного генератора ПСП RC4, иными словами, процедуру генерации очередного байта гаммы. Допустим S (i) и g - содержимое ячейки с адресом i таблицы замен S-блока и очередной байт гаммы.

    Один шаг работы генератора ПСП RC4 (формирование очередного байта ПСП):

  • такт работы счетчика: $$Q1 = (Q1 + 1) mod 2^8$$;
  • такт работы регистра: $$Q2 = (Q2 + S (Q1) mod 2^8$$;
  • ячейки таблицы замен S-блока с адресами Q1 и Q2 обмениваются своим содержимым: $$S (Q1) <-> S (Q2)$$;
  • вычисление суммы содержимого ячеек таблицы замен S-блока с адресами Q1 и $$Q2: T = (S (Q1) + S (Q2)) mod 2^8$$;
  • считывание содержимого ячейки таблицы замен S-блока с адресом Т в качестве выходного байта - очередного элемента гаммы: $$g = S (T)$$.
  • Таблица замен S-блока медленно изменяется при использовании, при этом счетчик Q1 обеспечивает изменение каждого элемента таблицы, а Q2 гарантирует, что элементы таблицы изменяются случайным образом.

    Алгоритм инициализации таблицы замен S-блока.

  • Запись в каждую ячейку таблицы замен S-блока ее собственного адреса:
  • Заполнение байтами ключа другой 256-байтовой таблицы:
  • Инициализация индекса j : j = 0.
  • Перемешивание таблицы замен S-блока:
  • 3.6. Криптосистемы с открытым ключом

    Основной проблемой, возникающей при использовании криптосистем с секретным ключом, рассмотренных в разделе 3.5, является проблема распределения ключей. Учитывая что процедуры зашифрования и расшифрования выполняются с помощью одного и того же ключа, в системе с n абонентами потребуется n (n – 1) : 2 ключей, которые не только должны быть сгенерированы, но и надежным образом распределены среди всех участников информационного обмена. Необходимость наличия недоступных для противника секретных каналов для обмена ключами делает такой подход к построению системы секретной связи чрезвычайно дорогостоящим мероприятием, практически не применимым в коммерческих сетях связи, в региональных и глобальных информационных системах и естественно абсолютно недоступным частным лицам. Еще в 40-х гг. ХХ в. К. Шеннон предложил строить шифр таким образом, чтобы задача его вскрытия была эквивалентна решению некоей математической задачи, требующей объема вычислений, недоступного для современных компьютеров. Реализация этой идеи стала возможной, когда в 70-х гг. Диффи и Хеллман предложили принципиально новый способ организации секретной связи без предварительного обмена ключами, так называемое шифрование с открытым ключом. При этом для зашифрования и расшифрования используются разные ключи, и знание одного из них не дает практической возможности определить второй. В результате ключ зашифрования может быть сделан открытым без потери стойкости шифра, и лишь ключ расшифрования держится получателем в секрете.

    3.6.1. Односторонние функции

    Базовым понятием нового направления в вычислить значение этой функции F(x) можно, в то же время определение x из F(x) задача вычислительно неразрешимая. Теоретически x по известному значению F(x) можно найти всегда, проверяя по очереди все возможные значения x до тех пор, пока соответствующее значение F(x) не совпадет с заданным. Однако практически при значительной размерности множества X такой подход неосуществим.

    Итак, односторонней функцией называется функция , обладающая двумя свойствами:

  • задача нахождения значений F (x) вычислительно разрешима;
  • задача инвертирования F (x) вычислительно неразрешима.
  • До сих пор ни для одной функции, кандидата на звание односторонней, не доказано свойство 2.

    Примером кандидата на звание односторонней функции является модульное возведение в степень, т.е. функция $$F (x) = w^x mod p$$, где p - большое простое число, w - примитивный элемент поля GF (p). То что эта функция может быть эффективно вычислена даже при разрядности параметров в несколько сот знаков, можно показать на примере. $$w^{25}$$ можно вычислить с помощью всего лишь шести операций умножения (умножением считается и возведение в квадрат), так как

    Далее при вычислении $$wx mod p$$ взятие модуля во избежание получения очень больших чисел следует делать после каждого умножения.

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

    Односторонняя функция в качестве функции зашифрования неприменима, так как, хотя F (x) - надежно зашифрованное сообщение x, никто, в том числе и законный получатель, не сможет восстановить x. Обойти эту проблему можно с помощью односторонней функции с секретом (one-way trapdoor function).

    Такова, например, функция $$E_K: X - > Y$$, имеющая обратную $$E_K: Y - > X$$, однако узнать обратную функцию только по $$E_K$$ без знания секрета K вычислительно невозможно.

    Таким образом, односторонней функцией с секретом K называется функция $$E_K: X -> Y$$, зависящая от параметра K и обладающая тремя свойствами:

  • при любом K задача нахождения значений $$E_K(x)$$ вычислительно разрешима;
  • при неизвестном K задача инвертирования $$E_K$$ вычислительно неразрешима;
  • при известном K задача инвертирования $$E_K$$ вычислительно разрешима.
  • Функцию $$E_K$$ можно использовать для зашифрования информации, а обратную ей функцию $$D_K$$ - для расшифрования, так как при всех справедливо:

    $$D_K (E_K (x)) = x$$.

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

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

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

    .

    (рис 3.20) Модель криптосистемы с открытым ключом

    Теперь если пользователь A хочет послать B секретное сообщение M, то он находит в справочнике $$PK_B$$, а затем вычисляет

    $$C = PK_B \{M\}$$

    и посылает шифротекст C по открытому каналу пользователю B. Последний, зная секрет $$SK_B$$, т.е. умея инвертировать $$E_В$$, определяет M по полученному C, вычисляя

    $$M = SK_B \{C\}$$.

    Противник, не зная ключа $$SK_B$$, в силу второго свойства односторонней функции с секретом не сможет прочитать секретную информацию. В отличие от криптосистемы с секретным ключом, если абонент A, зашифровав некоторое сообщение M для абонента B, сохранит шифротекст C, но потеряет M или забудет его содержание, он не будет иметь никаких преимуществ перед противником в раскрытии исходного текста M по известному C.

    Атаки на криптосистему с открытым ключом аналогичны атакам на криптосистемы с секретным ключом, однако следует помнить, что в первом случае противник всегда знает открытый ключ, а значит, всегда возможна атака на основе выбранного открытого текста. Кроме того, возможна так называемая атака с проверкой текста (verifiable text attack): если число возможных открытых текстов невелико, противник, зная открытый ключ, может заранее заготовить соответствующие им шифротексты, а затем, сравнивая с ними перехваченные шифровки, получать соответствующие последним открытые тексты. Исключить такой вид атак на криптосистему позволяет вероятностное шифрование.

    Шифрование с открытым ключом может использоваться в тех из рассмотренных в параграфе 3.5 режимах (например, ECB и CBC), которые для зашифрования и расшифрования используют разные функции, соответственно E и D.

    Наиболее известные системы с открытым ключом:

  • криптосистема RSA;
  • криптосистема, основанная на свойствах эллиптических кривых (Elliptic Curve Cryptosystem (ECCS).
  • Криптосистема RSA, многолетний неофициальный стандарт на шифрование с открытым ключом, будет рассмотрена ниже. Краткие сведения о лучшей на сегодняшний день криптосистеме ECCS даны в Приложении 5. Именно эта система послужила основой для создания российского, немецкого и американского стандартов электронной подписи, о которой речь пойдет ниже.

    3.6.3. Открытое распределение ключей

    Помимо принципа построения асимметричных криптосистем Диффи и Хеллман предложили протокол выработки общего секретного ключа, т.е. процедуру взаимодействия по открытому каналу связи удаленных абонентов A и B, обладающую следующими свойствами:

  • в конце процедуры у A и B появляется общая секретная информация (общий секретный ключ), которой до начала действия протокола не было;
  • противник, который способен перехватывать все сообщения и знает цель протокола, не может восстановить сформированный секретный ключ.
  • Этот на первый взгляд невозможный протокол основывается на задаче дискретного логарифмирования, рассмотренной выше. Противник, который хочет узнать формируемый секретный ключ, вынужден решать именно эту трудную математическую задачу. Допустим, p - большое простое число, w - примитивный элемент поля GF (p). Числа p и w считаются общедоступными. Тогда процедура получения общей секретной информации имеет следующий вид.

    Протокол выработки общего секретного ключа Диффи—Хеллмана.

    .

    (рис 3.21) Схема протокола выработки общего секретного ключа Диффи—Хеллмана (I вариант)
  • Абоненты A и B независимо друг от друга вырабатывают два случайных числа соответственно $$X_A$$ и $$X_B$$, которые держат в секрете.
  • Абоненты A и B вычисляют значения и
  • Абоненты A и B обмениваются сообщениями $$Y_A$$ и $$Y_B$$.
  • Абонент A, получив сообщение $$Y_B$$, вычисляет значение абонент B, получив сообщение $$Y_A$$, вычисляет значение
  • Число, равное , объявляется общим секретным ключом $$K_{AB}$$.
  • Второй вариант

  • Абоненты A и B независимо друг от друга вырабатывают два случайных числа соответственно $$X_A$$ и $$X_B$$, которые держат в секрете.
  • Абоненты A и B вычисляют значения и
  • Абоненты A и B публикуют соответственно $$Y_A$$ и $$Y_B$$ в качестве своих открытых ключей.
  • Абонент A для обмена секретными сообщениями с абонентом В использует общий секретный ключ абонент B для обмена секретными сообщениями с абонентом A использует общий секретный ключ
  • 3.6.4. Электронная подпись

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

    Если $$E_K$$ - односторонняя функция с секретом, то подписанное сообщение можно представить в виде пары:

    $$(M, sign M) = (M, \{M\}SK) = (M, D_K (M))$$,

    где M - подписываемый документ,
    sign M - подпись на документе М;
    SK - секретный ключ;
    $$D_K$$ - функция, обратная $$E_K$$.

    Из определения односторонней функции с секретом следует, что для такой подписи характерны следующие особенности:

  • подписать сообщение M может только обладатель секретного ключа SK, т.е. подделать подпись практически невозможно;
  • проверить подпись может любой абонент, знающий функцию $$E_K$$ и открытый ключ PK, так как проверка подписи заключается в проверке равенства

    $$M = \{sign M\}PK$$

    или, что то же самое,

    $$М = E_K (D_K (M))$$;

  • при возникновении споров относительно авторства сообщений отказаться от подписи нельзя из-за невозможности ее подделки;
  • подпись позволяет контролировать целостность подписанных документов, а значит, их можно безо всякого ущерба пересылать по открытым каналам связи.
  • Если необходимо обеспечить секретность, можно применить следующий протокол электронной цифровой подписи. Допустим, у двух абонентов A и B имеются взаимно обратные функции зашифрования E и расшифрования D и у каждого из них пара (открытый/закрытый) ключей - соответственно $$PK_A /SK_A$$ и $$PK_В /SK_B$$. Если абонент А хочет послать подписанное сообщение абоненту В, он, используя сначала свой секретный ключ, а затем открытый ключ получателя, вычисляет

    $$C = E_В (D_A (M))$$,

    где $$E_В$$ - функция шифрования на открытом ключе абонента В;
    $$D_A$$ - функция шифрования на секретном ключе абонента А,

    или

    $$С = PK_В\{SK_A \{M\}\}$$

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

    $$M = E_A (D_B(C))$$,

    где $$E_A$$ - функция шифрования на открытом ключе абонента А;
    $$D_В$$ - функция шифрования на секретном ключе абонента В,

    или

    $$M = PK_A\{SK_B \{M\}\}$$.

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

    $$D_A (M) = D_B (C)$$.

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

    Приведенный протокол заставляет быть честным и абонента В. Для того чтобы исказить принятое сообщение M на M`, ему необходимо изменить и подпись $$SK_A\{M\}$$ на $$SK_A\{M`\}$$. Но для этой операции необходим секретный ключ $$SK_A$$ абонента А, которого у В нет.

    Приведенная последовательность применения функций $$D_A$$ и $$E_B$$ единственно возможна. Если абонент А попытается послать В "подписанное" сообщение вида

    $$C = D_A (E_B (M))$$

    или

    $$С = SK_A\{PK_B\{M\}\}$$,

    противник W, перехватив это сообщение, используя открытый ключ абонента А, сможет вычислить $$E_A (C) = E_B (M)$$, а затем, используя свой закрытый ключ, послать якобы подписанное им сообщение

    $$C` = D_W (E_B (M))$$,

    где DW - функция шифрования на секретном ключе абонента W,

    или

    $$С` = SK_A\{PK_B\{M\}\}$$.

    Тогда В, вычислив

    $$D_B (E_W (C`)) = SK_B\{PK_W\{C`\}\}$$,

    был бы убежден, что M подписано именно W. Таким образом, в рассматриваемой ситуации противник всегда может подписывать сообщения, содержимое которых он сам прочитать не в состоянии.

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

    3.6.5. Криптосистема RSA

    Система RSA, название которой происходит от первых букв фамилий авторов, Р. Ривеста, А. Шамира и Л. Адлемана (R. Rivest, A. Shamir, L. Adleman), является наиболее распространенной и изученной криптосистемой с открытым ключом. Она основана на использовании того факта, что легко перемножить два больших простых числа, в то же время крайне трудно разложить на множители их произведение. В результате произведение может быть использовано в качестве элемента открытого ключа зашифрования. Исходные простые числа необходимы для расшифрования, при этом задача их восстановления до сих пор сопротивляется всем атакам криптоаналитиков. Таким образом, имеются предпосылки для построения односторонней функции с секретом.

    Выберем два больших различных простых числа p и q и число e, взаимно простое с числом $$(p – 1) (q – 1)$$. Вычислим $$N = pq$$ и найдем d, такое, при котором

    $$de = 1 mod (p – 1) (q – 1)$$.

    В результате для любого X < N будет справедливо:

    $$X^{ed} mod N = X$$.

    Тогда рассматриваемая криптосистема выглядит следующим образом.

    Криптосистема RSA.

    Открытый ключ зашифрования: числа N и e.

    Закрытый ключ расшифрования: числа p, q и d.

    Алгоритм зашифрования сообщения M:

    $$C = PK\{M\} = E (M) = M^e mod N$$.

    Алгоритм расшифрования закрытого сообщения C:

    $$M = SK\{C\} = D (C) = C^d mod N$$.

    Единственный способ для противника найти алгоритм расшифрования D при известных e и N состоит в том, чтобы разложить на простые множители число N, найти p и q, а следовательно, и d. Правильный выбор разрядности чисел p и q (первоначально авторы RSA предлагали в качестве p и q использовать не менее чем 40-разрядные десятичные числа) делает задачу факторизации N практически неосуществимой.

    Пример шифрования по приведенной схеме показан на рис 3.22.

    (рис 3.22) Пример шифрования по схеме RSA

    Авторы RSA при описании принципов функционирования своей системы выбрали в качестве исходного текста фразу

    "ITS ALL GREEC TO ME" ("Для меня все это совершенно непонятно").

    Для того чтобы преобразовать этот текст в одно большое число, закодировали пробел между словами 0, букву А - 1, букву В - 2, букву С - 3, ..., букву Z - 26. На представление каждого символа выделили пять двоичных разрядов. В результате приведенной фразе стало соответствовать число

    M = 09201900011212000718050511002015001305.

    Для шифрования авторы выбрали e = 9007 и

    $$N = 114381625757888867669235779976146612 \\ 0102182967212423625626518429357069352457 \\ 3389783059712356395870505898907514759929 \\ 0026879543541$$

    После зашифрования получили число

    $$C = 199935131497805100452317122740260647 \\ 4232040170583914631037037174062597160894 \\ 8927504399209626725826750128935544613538 \\ 23769748026$$

    Число N было произведением 64-значного и 65-значного простых чисел p и q, выбранных случайным образом.

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

    При разработке криптосистемы сначала выбираются два различных простых числа p и q. Для этого произвольно выбирается нечетное число r подходящего размера (например, сторазрядное) и проверяется на простоту. В случае если тест дает отрицательный результат, проверяется число r + 2 и т.д. Вероятность успеха одного конкретного теста проверки на простоту случайно выбранного числа равна приблизительно 0,00868. После того как p и q выбраны, кандидаты на e проверяются с помощью алгоритма Евклида. Когда e удовлетворяет условию (e, j (N)) = 1, т.е. числа e и j (N) = (p – 1) (q – 1) взаимно просты, цепочка равенств, получаемых в результате применения алгоритма Евклида, дает нам и значение d. Процедура шифрования суть модульное возведение в степень, эту операцию следует осуществлять методом последовательного возведения в квадрат, т.е. после каждого возведения в квадрат результат берется по модулю N. При этом никогда не возникают числа большие $$N^2$$.

    3.6.6. Гибридные криптосистемы

    Несмотря на все преимущества и 3.24.

    (рис 3.23) Первый вариант схемы гибридного шифрования (рис 3.24) Второй вариант схемы гибридного шифрования

    В схеме, показанной на рис 3.23, на начальном этапе участники информационного обмена (абоненты А и В), используя протокол выработки общего секретного ключа, формируют общую секретную информацию (сеансовый ключ $$K_{АВ}$$). На следующем этапе для обмена зашифрованными сообщения используется криптосистема с секретным ключом.

    Схема, показанная на рис 3.24, предполагает наличие у каждого участника информационного обмена двух ключей: открытого PK и закрытого SK. Рассмотрим процесс пересылки некоего документа M. Отправитель (абонент А) вырабатывает секретный ключ - случайное число, используемое только один раз и поэтому называемое одноразовым или сеансовым ключом. Этот ключ используется для зашифрования документа M при помощи симметричного криптоалгоритма. Сеансовый ключ зашифровывается на открытом ключе получателя (абонент В) и присоединяется к ранее зашифрованному документу. Сформированное таким образом сообщение отсылается получателю. Последний, получив сообщение, повторяет те же процедуры, но в обратном порядке. С помощью своего секретного ключа получатель восстанавливает сеансовый ключ, а затем с его помощью расшифровывает и сам документ.

    3.7. Криптографические протоколы

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

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

    3.7.1. Основные понятия

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

  • прикладные протоколы, решающие конкретную задачу, которая может возникнуть на практике;
  • примитивные протоколы, которые используются в качестве своеобразных строительных блоков при создании прикладных протоколов.
  • Типы протоколов приведены на рис 3.25.

    (рис 3.25) Типы примитивных криптографических протоколов

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

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

    Существенное влияние на разработку многих криптографических протоколов оказали исследования двух математических моделей - интерактивной системы доказательств (Interactive Proof System) и доказательств с нулевым разглашением знаний (Zero-Knowledge Proofs).

    Интерактивная система доказательств суть протокол (P, V, S) взаимодействия двух субъектов: доказывающего (претендента) P и проверяющего (верификатора) V. Абонент P хочет доказать V, что утверждение S истинно. При этом считается, что абонент V самостоятельно проверить утверждение S не в состоянии, что абонент V не может быть противником, а абонент P может быть противником, пытающимся доказать истинность ложного утверждения S. Протокол, состоящий из некоторого числа раундов обмена сообщениями между P и V, должен удовлетворять двум условиям:

  • полнота - если S действительно истинно, то доказывающий убедит проверяющего признать это;
  • корректность - если S ложно, то доказывающий не сможет убедить проверяющего в обратном.

    Если предположить, что V может быть противником, который хочет получить информацию об утверждении S, необходим протокол (P, V, S), называемый доказательством с нулевым разглашением, удовлетворяющий помимо перечисленных еще и следующему условию:

  • нулевое разглашение - в результате работы протокола абонент V не увеличит своих знаний об утверждении S.
  • Иными словами, в результате реализации протокола абонент P сможет доказать абоненту V, что он владеет некоторой секретной информацией, не разглашая ее сути.

    Упрощенно процедуру доказательства с нулевым разглашением можно представить следующим образом. Проверяющий задает серию случайных вопросов, каждый из которых допускает ответ "да" или "нет". После первого вопроса проверяющий убеждается в том, что доказывающий заблуждается с вероятностью 1/2. После второго вопроса проверяющий убеждается в том, что доказывающий заблуждается с вероятностью 1/4, и т.д. (после каждого вопроса знаменатель удваивается). После 100 вопросов вероятность того, что доказывающий заблуждается или не располагает доказательством (не владеет секретной информацией), становится настолько близкой к нулю, что даже у самого "недоверчивого" проверяющего не должно остаться сомнений в справедливости доказываемого утверждения. После 300 вопросов знаменатель достигает величины, которая превосходит число атомов во Вселенной.

    Роль доказательств с нулевым разглашением особенно велика при реализации протоколов аутентификации. Допустим, например, Р - алгоритм, реализованный в интеллектуальной карточке клиента (абонент А) банка, V - программа, выполняемая компьютером банка (абонент В). Перед выполнением любой операции банк должен убедиться в подлинности карточки и идентифицировать ее владельца. Если для этой цели использовать протокол (P, V, S), свойство полноты позволит карточке доказать свою аутентичность; свойство корректности защитит интересы банка от злоумышленника, который попытается воспользоваться фальшивой карточкой; свойство нулевого разглашения защитит клиента от злоумышленника, который попытается пройти аутентификацию под именем абонента А, воспользовавшись информацией, перехваченной во время предыдущих раундов аутентификационного обмена. Аналогичных результатов можно добиться, используя методы доказательств с нулевым разглашением для создания не поддающихся подделке удостоверений личности.

    3.7.3. Протоколы разделения секрета

    Эффективным методом защиты является разделение доступа (не путать с разграничением доступа), разрешающее доступ к секретной информации только при одновременном предъявлении своих полномочий участниками информационного взаимодействия, не доверяющих друг другу. Протоколы или схемы разделения секрета (СРС) (Secret Sharing Scheme) позволяют распределить секрет между n участниками протокола таким образом, чтобы заранее заданные разрешенные множества участников могли однозначно восстановить секрет, а неразрешенные - не получали бы никакой информации о возможном значении секрета. Выделенный участник протокола, распределяющий доли (share) секрета, обычно называется дилером (D).

    Пусть M - защищаемая информационная последовательность (битовая строка) длиной m. Простейшая схема разделения секрета между тремя абонентами A, B и C имеет следующий вид.

  • Дилер D вырабатывает две случайные битовые строки $$R_A$$ и $$R_B$$ длиной m и вычисляет
  • D передает абоненту A информационную последовательность $$R_A$$, абоненту B - информационную последовательность $$R_B$$ и абоненту C - информационную последовательность $$R_C$$.
  • Чтобы прочитать информацию M абонентам А, В и С необходимо предъявить свои доли секрета $$R_A$$, $$R_B$$ и $$R_С$$ длиной m и вычислить .
  • Шаги 1 и 2 - это стадия распределения долей секрета. Шаг 3 - стадия восстановления секрета. Каждая доля секрета сама по себе не имеет никакого смысла, но если их сложить, смысл исходной информационной последовательности полностью восстанавливается. При правильной реализации приведенный протокол полностью безопасен, так как для закрытия информации применяется абсолютно стойкий шифр, описанный ранее, и поэтому никакие вычисления не смогут помочь при попытке определить секрет по одной или двум его частям. Аналогичную схему можно легко реализовать для любого числа участников.

    Рассмотрим схему разделения доступа Шамира. Пусть n - число участников протокола, GF (p) - конечное поле из p элементов, p - простое, p > n. Поставим в соответствие каждому i-му участнику ненулевой элемент поля $$a_i, i = 1, ..., n$$ и, положим, $$a_0 = 0$$.

    Схема разделения доступа Шамира.

  • Стадия распределения долей секрета $$S_0$$. Дилер СРС вырабатывает t – 1 независимых равномерно распределенных на GF (p) случайных чисел

    $$R_0 R_1, \ldots, R_j, \ldots, R_t – 1$$

    и посылает каждому i-му участнику соответствующее ему значение

    $$S_i = F (X)$$

    многочлена

    $$F (X) = R_{t – 1} X^{t – 1} + R_{t – 2} X^{t – 2} + \ldots + R_1 X + R_0$$, где $$R_0 = S_0$$.

  • Стадия восстановления секрета. Учитывая, что любой многочлен степени t – 1 однозначно восстанавливаются по его значениям в произвольных t точках, то любые t участников могут восстановить многочлен F (X), а значит, найти значение секрета по формуле $$S_0 = F (0)$$. По этой же причине для любых t – 1 участников, любых значений $$S_i$$ и любого секрета $$S_0$$ существует только один соответствующий им многочлен, для которого справедливо

    $$S_i = F (a_i) и S_0 = F (0)$$.

  • Схемы подобного типа находят применение при построении пороговых структур доступа и носят название (n, t)-пороговых СРС. Такие схемы, например, позволяют владельцу некоей секретной информации распределить эту информацию при хранении на n своеобразных ее дубликатов таким образом, что ему для восстановления секрета достаточно получить доступ к любым t из них. При этом никакие t – 1 дубликатов не предоставляют никакой информации об этом секрете.

    3.8. Контроль целостности информации

    3.8.1. Аутентичность. Задача аутентификации информации

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

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

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

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

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

    3.8.2. Имитозащита информации. Контроль целостности потока сообщений

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

    Для обнаружения искажений в распоряжении законного пользователя (например, получателя информации при ее передаче) должна быть некая процедура проверки Т (М), дающая на выходе 1 (если в массиве данных М отсутствуют искажения) или 0, если такие искажения имеют место. С целью ограничения возможностей противника по подбору информационной последовательности М` (M`M), где М - правильная последовательность (без искажений), для которой Т (М`) = 1, идеальная процедура такой проверки должна обладать следующими свойствами:

  • невозможно найти сообщение М` способом, более эффективным, чем полный перебор по множеству допустимых значений М` (такая возможность в распоряжении противника имеется всегда);
  • вероятность успешно пройти проверку у случайно выбранного сообщения М` не должна превышать заранее установленного значения.
  • Учитывая, что в общем случае все возможные значения М могут являться допустимыми, второе условие требует внесения избыточности в защищаемый массив данных. При этом чем больше разница N между размером преобразованного избыточного М* и размером исходного М-массивов, тем меньше вероятность принять искаженные данные за подлинные - эта вероятность равна $$2^{–N}$$.

    На рис 3.26 показаны некоторые возможные варианты внесения такой избыточности. В роли неповторяющегося блока данных nrb могут выступать метка времени, порядковый номер сообщения и т.п. В роли контрольного кода могут выступать имитоприставка (код МАС) или электронная подпись. Имитоприставкой принято называть контрольный код, который формируется и проверяется с помощью одного и того же секретного ключа.

    (рис 3.26) Схемы контроля целостности: а - с использованием зашифрования; б - с формированием контрольного кода; в - с формированием контрольного кода и зашифрованием

    Использование блока nrb позволяет контролировать целостность потока сообщений, защищая от повтора, задержки, переупорядочения или их утраты. При использовании в качестве nrb порядкового номера получатель, приняв (i + 1)-е сообщение, проверяет равенство $$nrb_{i + 1} = nrb_i + 1$$, т.е. его номер на единицу больше номера предыдущего i-го сообщения. При использовании в качестве nrb метки времени получатель контролирует соответствие времени отправки и приема сообщений. Они должны соответствовать друг другу с учетом задержки в канале связи и разности показаний часов отправителя и получателя. Целостность потока сообщений можно также контролировать, используя зашифрование со сцеплением сообщений, схема которого приведена на рис 3.27.

    (рис 3.27) Контроль целостности потока сообщений

    Самый естественный способ преобразования информации с внесением избыточности - это добавление к исходным данным контрольного кода S фиксированной разрядности N, вычисляемого как некоторая функция от этих данных:

    $$М* = (М, F (М)), |S| = N.$$

    В этой ситуации выделение исходных данных из преобразованного массива М* суть простое отбрасывание контрольного кода S. Проверка же целостности заключается в вычислении для содержательной части М` полученного массива данных контрольного кода $$S` = F (M`)$$ и сравнении его с переданным значением S. Если они совпадают, сообщение считается подлинным, в противном случае - ложным, т.е.

    T (M`) = 1, если S = F (M`), и T (M`) = 1, если S F (M`).

    Функция F формирования контрольного кода должна удовлетворять следующим требованиям:

  • она должна быть вычислительно необратимой, т.е. подобрать массив данных под заданный контрольный код можно только путем полного перебора по пространству возможных значений М;
  • у противника должна отсутствовать возможность сформировать ложный массив данных (или ложное сообщение) М` и снабдить его корректно вычисленным контрольным кодом S = F (M`).
  • Второе свойство можно обеспечить двумя способами: либо сделать функцию F зависимой от некоторого секретного параметра (ключа), либо пересылать контрольный код отдельно от защищаемых данных.

    Простейшим примером кода S является контрольная сумма блоков массива данных. Например, если

    $$М = М_1, М_2, \ldots М_i, \ldots, М_n$$,

    то

    где k - разрядность блоков.

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

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

    еще одним блоком

    3.8.3. Криптографические методы контроля целостности

    Можно выделить три основных криптографических подхода к решению задачи защиты информации от несанкционированных изменений данных:

  • формирование (в режимах CBC или CFB) с помощью функции зашифрования E блочного шифракода аутентификации сообщений MAC (Message Authentication Code);
  • формирование с помощью необратимой функции сжатия (хеш-функции) информации кода обнаружения манипуляций с данными MDC (Manipulation Detection Code);
  • формирование контрольного кода HMAC (hashed MAC) путем последовательного выполнения операций хеширования и шифрования.
  • Три основных криптографических подхода в виде схемы приведены на рис 3.28.

    (рис 3.28) Схемы формирования контрольных кодов целостности: а - МАС, б - MDC (с использованием функции зашифрования блочного шифра), в - НМАС

    В таблице 3.1 приведена сравнительная характеристика трех указанных подходов.

    Сравнительная характеристика MAC, MDC и НМАС
    Параметр MAC MDC HMAC
    Используемое преобразование Функция зашифрования Е блочного шифра Хеш-функция h (x) Функция зашифрования Е блочного шифра и хеш-функция h (x)
    Секретная информация Секретный ключ K Нет Секретный ключ K
    Возможность для противника вычислить контрольный код Отсутствует Присутствует Отсутствует
    Хранение и передача контрольного кода Вместе с защищаемыми данными Отдельно от защищаемых данных Вместе с защищаемыми данными
    Дополнительные условия Требует предварительного распределения ключей Необходим аутентичный канал для передачи контрольного кода Требует предварительного распределения ключей
    Предпочтительная область использования Защита при передаче данных Защита при разовой передаче данных, контроль целостности хранимой информации Защита при передаче данных
    Относительное быстродействие Низкое Высокое (при использовании быстродействующих хеш-функций) Среднее (при использовании быстродействующих хеш-функций)

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

    Код обнаружения манипуляций с данными. MDC есть результат действия хеш-функции. Иначе говоря, MDC - это хеш-образ (дайджест) сообщения М, к которому применили хеш-функцию, т.е. S = h (M). Основное требование к хеш-функции: не должно существовать способа определения массива данных М, имеющего заданное значение хеш-образа h (M), отличного от перебора по всему множеству возможных значений p. Наиболее простой способ построения хеш-функции основан на использовании вычислительной необратимости относительно ключа К функции зашифрования Е любого блочного шифра. Даже при известных блоках открытого М и закрытого С = Е (М) текстов ключ К не может быть определен иначе как перебором по множеству всех возможных значений. Итак, схема формирования хеш-образа сообщения М, обладающая гарантированной стойкостью, равной стойкости используемого шифра, может быть следующей:

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

    $$М = М_1, М_2, \ldots, М_i, \ldots, М_n, | М_1 | = | М_2 | = | М_{n – 1} | = |К|, 0 < | М_n | < = К |$$;

  • если последний блок $$М_n$$ неполный, он дополняется каким-либо образом до нужного размера |К|;
  • хеш-образ сообщения вычисляется следующим образом:
    где $$S_0$$ - синхропосылка, обычно выбирают $$S_0 = 0$$.
  • Задача подбора массива данных:

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

    достаточно решить только одно уравнение S относительно :

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

    К сожалению, приведенная схема формирования MDC не учитывает наличия так называемых побочных ключей шифра. Если для К` К справедливо

    $$К` \{М_i\} = K \{М_i\}$$,

    где $$М_i$$ - некоторый блок открытого текста,

    то такой К` и является побочным ключом, т.е. ключом, дающим при зашифровании блока $$М_i$$ точно такой же результат, что и истинный ключ К. Обнаружение противником побочного ключа при дешифровании сообщения не является особым успехом, так как с вероятностью, близкой к 1, на этом найденном побочном ключе он не сможет правильно расшифровать другие блоки закрытого текста, учитывая, что для различных блоков побочные ключи в общем случае также различны.

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

    Для уменьшения вероятности навязывания ложных данных в результате нахождения побочных ключей при преобразовании применяются не сами блоки исходного сообщения, а результат ихрасширения по некоторому алгоритму. Под расширением понимается процедура получения блока данных большего размера из блока данных меньшего размера. Например, для криптоалгоритма, в котором размер ключа равен 256 битам, возможна следующая схема расширения 128-битового блока в 256-битовый:

    исходный блок: $$M_i= (b_1, b_2, b_3, \ldots, b_{16})$$;

    расширенный блок:

    $$= (b_1, b_2, b_3, \ldots, b_{16}, b_1, b_4, b_7, \ldots, b_{16}, b_2, b_5, b_8, \ldots, b_{14}, b_3, b_6, b_9, \ldots, b_{15})$$,

    где $$b_i$$ - байты блока данных.

    Код HMAC. Метод предполагает последовательное использование операций хеширования и шифрования с секретным ключом. При использовании для формирования НМАС быстродействующих специализированных хеш-функций (например, MD5, которая будет рассмотрена в разделе 3.10), быстродействие процедуры формирования контрольного кода можно существенно повысить, сохранив при этом все свойства, присущие MAC.

    3.9. Методы аутентификации информации

    3.9.1. Идентификация, аутентификация и авторизация

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

    Если бы идентификация не дополнялась аутентификацией, то сама идентификация теряла бы всякий смысл. Аутентификация пользователя может быть основана на следующих принципах:

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

    (рис 3.29) Процессы идентификации, аутентификации и авторизации

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

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

    Существуют различные механизмы реализации разграничения доступа. Например, каждому ресурсу (или компоненту) системы может быть сопоставлен список управления доступом ACL (Access Control List), в котором указаны идентификаторы всех пользователей, которым разрешен доступ к данному ресурсу, а также определено, какой именно доступ разрешен. При обращении пользователя к конкретному ресурсу система проверяет наличие у данного ресурса списка управления доступом и, если он существует, выясняет, разрешено ли этому пользователю работать с данным ресурсом в запрошенном режиме. Другим примером реализации механизма авторизации пользователя является профиль пользователя - список, ставящий в соответствие всем идентификаторам пользователей перечень объектов, к которым разрешен доступ данному пользователю с указанием типа доступа. Может быть организована системная структура данных, так называемая матрица доступа, которая представляет собой таблицу, столбцы которой соответствуют идентификаторам всех системных ресурсов, а строки - идентификаторам всех зарегистрированных пользователей. На пересечении i-го столбца и j-й строки таблицы администратор системы указывает разрешенный тип доступа владельца i-го идентификатора к j-му ресурсу.

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

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

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

    3.9.2. Аутентификация субъекта

    Цель субъекта взаимодействия при аутентификации - доказать верификатору подлинность предъявленного идентификатора.

    Классическим средством аутентификации субъекта являются парольные схемы. При этом для устранения последствий несанкционированного доступа противника к информации, хранящейся в памяти компьютера верификатора, хранится не сам пароль PW (password), а его хеш-образ q = h (PW).

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

    (рис 3.30) Парольная схема аутентификации, защищенная от повтора

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

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

    Проверка подлинности предполагает использование:

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

    Механизм "запрос-ответ" предполагает включение пользователем А в сообщение для пользователя В запроса $$x_A$$ - некоторого случайного числа. Перед ответом пользователь В обязан выполнить над числом $$x_A$$ некоторую операцию, например вычислить хеш-образ $$h (x_A)$$. Получив ответ с правильным результатом вычислений, пользователь А может быть уверен, что В - подлинный. Процедура рукопожатия заключается во взаимной проверке ключей, используемых субъектами взаимодействия. Последние признаются законными партнерами, если докажут друг другу, что обладают правильными ключами. На рис 3.31 схематично представлен процесс опознания субъекта при задействовании механизма "запрос - ответ".

    (рис 3.31) Механизм «запрос - ответ» и процедура handshake

    3.9.3. Симметричные методы аутентификации субъекта

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

    На рис 3.32 показана схема процедуры взаимной аутентификации субъектов А и В с использованием доверенной третьей стороны - субъекта С, обладающего секретными ключами $$K_{AC}$$ и $$K_{BC}$$ соответственно для взаимодействия с А и В.

    (рис 3.32) Схема симметричной аутентификации с доверенной третьей стороной

    Протокол Нидхема—Шредера:

  • субъект А, который хочет взаимодействовать с субъектом В, посылает С сообщение, содержащее идентификаторы субъектов запрашиваемого взаимодействия

    $$\{ID_A, ID_B\}$$;

  • субъект С, получив сообщение,формирует сеансовый ключ KAB для взаимодействия субъектов А и В и посылает А зашифрованное сообщение

    $$K_{AC}\{ID_B, K_{AB}, K_{BC}\{ID_A, K_{AB}\}\}$$,

    содержащее сеансовый ключ для работы с В и шифровку, которая по сути является разрешением для А на работу с В;

  • субъект А, расшифровав полученное сообщение, определяет ключ $$K_{AB}$$ и разрешение

    $$K_{BC}\{ID_A, K_{AB}\}$$,

    которое он расшифровать не может, так как не знает ключа KBC; после этого А отправляет В сообщение

    $$K_{AB}\{ID_A, x_A\}, K_{BC}\{ID_A, K_{AB}\}$$,

    содержащее зашифрованный запрос $$x_A$$ и разрешение, полученное от С;

  • субъект В, прочитав шифровку

    $$K_{BC}\{ID_A, K_{AB}\}$$,

    узнает идентификатор субъекта взаимодействия и сеансовый ключ $$K_AB$$ для работы с ним, читает запрос $$x_A$$; после этого В формирует ответ на запрос $$h (x_A)$$ и отправляет А сообщение

    $$K_{AB}\{ID_A, h (x_A)\}$$;

  • субъект А, получив сообщение, расшифровывает его и проверяет ответ В; в случае положительного результата проверки, процесс аутентификации успешно завершается.
  • 3.9.4. Схема Kerberos

    Решение задачи аутентификации в современных информационных системах, представляющих собой совокупность реализованных на различных аппаратно-программных платформах, территориально разнесенных компонентов, в соответствии с технологией клиент/сервер заключается в использовании специального сервера аутентификации. В настоящее время на роль фактического стандарта сервера аутентификации претендует Kerberos, продукт разработанный в Массачусетском технологическом институте (MIT) в середине 1980-х гг. и претерпевший с тех пор ряд принципиальных изменений. Широкому распространению Kerberos способствовало то, что его версия, реализованная в MIT, является свободно распространяемым продуктом. Программные средства, выполняющие аутентификацию по схеме Kerberos, разработаны для всех популярных ОС. Поддержка службы Kerberos предусмотрена в некоторых современных сетевых ОС. Схема Kerberos является типичным примером реализации симметричных методов аутентификации, она приведена на рис 3.33.

    (рис 3.33) Схема Kerberos

    Схема предусматривает взаимодействие между тремя программными компонентами - клиентом С, сервером Kerberos и прикладным сервером S. ПО сервера Kerberos разделено по своим функциям на две части: сервер аутентификации AS (Authentication Server) и сервер выдачи разрешений (билетов) TGS (Ticket Granting Server). Клиент С - это компьютер, на котором установлено клиентское ПО, способное участвовать во взаимодействии по протоколу Kerberos, и зарегистрирован какой-либо пользователь. В некоторых случаях прикладной сервер может являться клиентом некоторого другого сервера, например сервер печати может пользоваться услугами файлового сервера. Сервер S - субъект, предоставляющий ресурсы сетевым клиентам.

    Клиент С, который хочет обратиться к прикладному серверу для получения его услуг, должен получить разрешение от AS. Разрешение - это зашифрованная информация, которую клиент передает серверу S или серверу TGS. Разрешение позволяет серверу убедиться в подлинности клиента. Все разрешения, кроме первого, клиент получает от сервера TGS. Первое разрешение, разрешение на доступ к самому TGS, клиент получает от сервера AS. Разрешение - это шифровка, полученная на секретном ключе, известном только серверу S и серверу Kerberos, поэтому первый, получив разрешение, может быть уверен, что оно поступило именно от сервера Kerberos. Разрешения являются многоразовыми, имеющими определенный срок жизни (несколько часов). Когда этот срок истекает, клиент должен вновь пройти процедуру аутентификации. При установлении каждого соединения используется временная метка, поэтому в сети должна действовать служба единого времени. Необходимость в сервере TGS объясняется стремлением сократить число сообщений, зашифрованных с использованием секретного ключа клиента, которому требуются услуги нескольких серверов. Именно поэтому сервер Kerberos "раздваивается" на сервер AS, с которым клиент взаимодействует при помощи секретного ключа $$K_{C, AS}$$, и сервер TGS, с которым клиент осуществляет дальнейшее взаимодействие при помощи только сеансовых ключей $$K_{C, TGS}$$. Компрометация сеансового ключа, имеющего очень короткое время жизни, вещь значительно менее опасная, чем раскрытие секретного ключа.

    Процесс аутентификации состоит из пяти (односторонняя аутентификация) или шести (взаимная аутентификация) шагов.

  • Клиент С посылает серверу аутентификации сообщение, содержащее идентификаторы клиента $$ID_C$$ и требуемого сервера выдачи разрешений $$ID_{TGS}$$, отвечающего за представление соответствующей услуги, а также информацию $$n_C$$, предназначенную для идентификации конкретного запроса: время, свой сетевой адрес и т.п.
  • Сервер аутентификации осуществляет поиск в базе данных Kerberos по идентификатору клиента и идентификатору услуги, находит соответствующие ключи $$K_{C, AS}$$ и $$K_{AS, TGS}$$, формирует сеансовый ключ $$K_{C, TGS}$$ для взаимодействия клиента и сервера выдачи разрешений. После этого сервер AS посылает ответ клиенту. Этот ответ содержит две шифровки. Первая, полученная на секретном ключе клиента $$K_{C, AS}$$, содержит сеансовый ключ $$K_{C, TGS}$$ для работы с сервером выдачи разрешений, идентификатор последнего $$ID_{TGS}$$ и срок жизни $$lt_{C, TGS}$$ разрешения клиенту на работу с сервером TGS. Вторая шифровка, полученная на ключе $$K_{AS, TGS}$$, - это разрешение $$T_{C, TGS}$$ (ticket-granting ticket) клиенту на взаимодействие с сервером TGS. В состав второй шифровки, которую клиент прочесть не может, так как не знает ключа $$K_{AS, TGS}$$, входят идентификаторы $$ID_C$$ и $$ID_{TGS}$$, сеансовый ключ $$K_{C, TGS}$$ и срок жизни этого разрешения $$lt_{C, TGS}$$.
  • Получив сообщение, клиент расшифровывает первую его половину на ключе $$K_{C, AS}$$, проверяет отметку $$n_C$$, узнает сеансовый ключ $$K_{C, TGS}$$ и срок жизни разрешения на работу с сервером TGS. Таким образом, в результате обмена сообщениями с сервером AS клиент получает разрешение на работу с сервером TGS. Затем клиент посылает запрос серверу выдачи разрешений. Сообщение для сервера TGS включает в себя две шифровки. Первая, полученная на сеансовом ключе $$K_{C, TGS}$$, включает в себя идентификаторы $$ID_C$$ и $$ID_S$$, идентификатор запроса $$n_C$$ и временную метку $$ts_{C, TGS}$$. Вторая - это "запечатанное" ключом $$K_{AS, TGS}$$ разрешение $$T_{C, TGS}$$.
  • Сервер выдачи разрешений расшифровывает разрешение $$T_{C, TGS}$$, узнает сеансовый ключ $$K_{C, TGS}$$, с помощью которого читает первую часть пришедшего сообщения и проверяет идентификатор $$n_C$$ и временную метку $$ts_{C, TGS}$$. Удостоверившись в подлинности клиента, сервер TGS вырабатывает сеансовый ключ $$K_{C, S}$$ для взаимодействия клиента С и сервера S. На знании этого ключа и будет основываться в будущем взаимная аутентификация C и S. После этого сервер отправляет сообщение клиенту, содержащее зашифрованные на ключе $$K_{C, TGS}$$ сеансовый ключ и срок жизни разрешения клиенту на работу с сервером, а также само это разрешение $$T_{C, S}$$, зашифрованное на секретном ключе $$K_{S, TGS}$$.
  • Клиент, получив сообщение, расшифровывает первую его часть, из которой извлекает сеансовый ключ $$K_{C, S}$$ для работы с сервером S и срок жизни разрешения на взаимодействие с сервером S. Само "запечатанное" ключом $$K_{S, TGS}$$ разрешение $$T_{C, S}$$ клиент прочесть не может. Таким образом, в результате обмена с сервером выдачи разрешений клиент получает разрешение на дальнейшее взаимодействие уже с прикладным сервером. Наконец, клиент посылает серверу S сообщение, содержащее зашифрованные на сеансовом ключе $$K_{C, S}$$ свой идентификатор $$ID_C$$, идентификатор $$n_C$$ и временную метку $$ts_{C, S}$$, а также разрешение $$T_{C, S}$$, полученное от сервера TGS.
  • Приняв сообщение от клиента и "распечатав" разрешение $$T_{C, S}$$, целевой сервер узнает сеансовый ключ $$K_{C, S}$$ и с его помощью проводит аутентификацию клиента, проверяя идентификатор $$n_C$$ и временную метку $$ts_{C, S}$$. Ответ сервера клиенту посылается в том случае, когда требуется взаимная аутентификация. Ответ прикладного сервера в этом случае содержит зашифрованный на ключе $$K_{C, S}$$ результат преобразования $$h (ts_{C, S})$$ метки $$ts_{C, S}$$.
  • Сервер Kerberos имеет доступ к базе данных, содержащей идентификаторы и секретные ключи субъектов. Запись каждого пользователя и каждого прикладного сервера в базе данных Kerberos содержит следующие компоненты:

  • идентификатор субъекта;
  • секретный ключ субъекта;
  • дату истечения срока действия секретного ключа;
  • максимальной срок жизни разрешений, выдаваемых субъекту;
  • номер версии секретного ключа субъекта;
  • дату последней модификации записи;
  • другую служебную информацию.
  • Секретные ключи субъектов шифруются мастер-ключом Kerberos. Когда секретный ключ изменяется нормальным образом, т.е. не в результате компрометации, то старый ключ следует сохранять до тех пор, пока остаются годными билеты, выданные с его помощью, так как возможна ситуация, когда один субъект имеет несколько активных ключей. Субъекту, обладающему несколькими активными ключами, соответствует несколько записей в базе данных. При выдаче разрешений и при начальной аутентификации в сервере AS всегда используется самый свежий ключ.

    Помимо серверов AS и TGS в системе имеется объект, отвечающий за управление базой данных, называемый диспетчером базы данных Kerberos DBM (Database Manager), а также сервер распространения ключей Kerberos KDS (Key Distribution Server).

    3.9.5. Несимметричные методы аутентификации субъекта

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

    Протокол Диффи—Хеллмана. Несимметричные методы аутентификации могут быть основаны на использовании механизма электронной подписи. Классическим примером несимметричной аутентификации может служить схема Диффи-Хэллмана, представляющая собой совокупность процедуры выработки общего секретного ключа и взаимной аутентификации субъектов взаимодействия. Допустим, w - примитивный элемент поля Галуа GF (p), где p - простое число. Абонент А владеет парой ключей: $$PK_A$$ - открытым и $$SK_A$$ - закрытым. Абонент В владеет парой ключей: $$PK_B$$ - открытым и $$SK_B$$ - закрытым. Тогда последовательность взаимной аутентификации состоит из трех шагов.

    Схема аутентификации Диффи—Хеллмана.

  • Абонент А вырабатывает случайное число $$X_A$$ и отправляет абоненту В сообщение

    (здесь и далее предполагается, что все операции выполняются по модулю p).

  • Абонент В вырабатывает случайное число $$X_B$$, вычисляет , на своем секретном ключе создает подпись

    сообщения

    Затем В вычисляет сеансовый ключ

    зашифровывает подпись на этом ключе и отправляет А сообщение

    , $$y_B$$,

    где

  • Абонент А вычисляет сеансовый ключ

    с помощью своего секретного ключа создает подпись

    сообщения

    зашифровывает ее на ключе $$K_{AB}$$ и отправляет В сообщение

  • Если проверка подписи В абонентом А завершилась успешно, т.е. А убедился в справедливости равенства

    он может быть уверен в подлинности абонента В.

  • Если проверка подписи А абонентом В завершилась успешно, т.е. В убедился в справедливости равенства он в свою очередь может быть уверен в подлинности абонента А.
  • Протокол Фиата—Шамира. Рассмотрим простейшую схему аутентификации с нулевым разглашением знаний. Подобные протоколы используются интеллектуальными картами. Личность владельца карты признается подлинной, если претендент доказывает свое знание секретного ключа.

    Для реализации схемы необходим центр доверия, который выбирает и публикует целое число вида N = pq, где p и q - простые числа, которые держатся в секрете. Предположим, абонент А является доказывающим, абонент В - проверяющим. Абонент А (или центр доверия) формирует открытый и секретный ключи:

  • выбирает m случайных чисел $$s_i$$ $$Z_n$$, i = 1, ..., m, и объявляет их секретным ключом $$SK_A$$;
  • вычисляет m чисел $$n_i$$, удовлетворяющих условию
  • и объявляет их открытым ключом $$PK_A$$.

    Протокол аутентификации Э. Фиата и А. Шамира состоит в t-кратном повторении следующих шагов.

    Схема Фиата—Шамира.

  • Абонент А выбирает случайное число $$x_A$$$$Z_n$$, вычисляет

    и посылает его В.

  • Абонент В выбирает случайную двоичную последовательность

    $$b_1, b_2, \ldots, b_m, b_j$$ {0, 1}, j = 1, ..., m

    и посылает ее А.

  • Абонент А вычисляет

    и посылает его В.

  • Абонент В проверяет равенство
  • Абонент В принимает доказательство, если проверка закончилась успешно во всех t циклах. Вероятность обмана равна $$Ѕ^{mt}$$.

    3.9.6. Аутентификация объекта

    В процессе аутентификации объекта, иногда называемой аутентификацией источника данных, проверяется подлинность идентификатора, представленного с некоторыми данными. В отличие от аутентификации субъекта в этой ситуации претенденту не нужно быть активным участником процесса аутентификации. Данный тип аутентификации по сути ничем не отличается от процедуры контроля целостности. Для аутентификации объекта применяются шифрование симметричным алгоритмом, выработка кода МАС или НМАС, формирование электронной подписи. Первые два варианта применяются в том случае, когда претендент и верификатор доверяют друг другу. Если необходимо иметь возможность доказательства подлинности идентификатора третьей стороне (при условии, что верификатор не имеет возможности изменить массив данных М), например необходима юридическая значимость пересылаемых электронных документов, требуется электронная подпись.

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

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

    Существуют различные механизмы реализации разграничения доступа. Например, каждому ресурсу (или компоненту) системы может быть сопоставлен список управления доступом ACL (Access Control List), в котором указаны идентификаторы всех пользователей, которым разрешен доступ к данному ресурсу, а также определено, какой именно доступ разрешен. При обращении пользователя к конкретному ресурсу система проверяет наличие у данного ресурса списка управления доступом и, если он существует, выясняет, разрешено ли этому пользователю работать с данным ресурсом в запрошенном режиме. Другим примером реализации механизма авторизации пользователя является профиль пользователя - список, ставящий в соответствие всем идентификаторам пользователей перечень объектов, к которым разрешен доступ данному пользователю с указанием типа доступа. Может быть организована системная структура данных, так называемая матрица доступа, которая представляет собой таблицу, столбцы которой соответствуют идентификаторам всех системных ресурсов, а строки - идентификаторам всех зарегистрированных пользователей. На пересечении i-го столбца и j-й строки таблицы администратор системы указывает разрешенный тип доступа владельца i-го идентификатора к j-му ресурсу.

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

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

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

    3.10. Электронная подпись

    3.10.1. Схема классической электронной подписи

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

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

    Схема электронной подписи включает в себя:

  • параметр безопасности n, в качестве которого может выступать длина подписи, длина подписываемых блоков данных и т.п.;
  • пространство исходных сообщений;
  • максимальное число подписей (signature bound), которые могут быть получены в данной схеме без замены секретной информации;
  • алгоритм G генерации ключей, формирующий по заданному параметру n пару
  • $$(SK_A, PK_A)$$,

    где $$SK_A$$ - секретный ключ подписывающего (абонента А),
    $$PK_A$$ - соответствующий открытый ключ проверяющего (абонента В);

  • алгоритм S формирования подписи, вырабатывающий по заданным исходному сообщению M и секретному ключу $$SK_A$$ подпись sign для сообщения M;
  • алгоритм V проверки (verification), дающий на выходе при заданных сообщению M, открытому ключу $$PK_A$$ и подписи либо значение 1, когда подпись сообщения принимается, либо 0, когда подпись отвергается.
  • Подпись $$sign = \{M\}SK_A$$ называется допустимой для сообщения M, если она принимается алгоритмом V с вероятностью, близкой к 1. Подделкой подписи сообщения M называется нахождение противником, не имеющим секретного ключа подписывающего, допустимой подписи для этого сообщения.

    В общем случае неинтерактивный протокол электронной подписи имеет следующий вид.

    Схема электронной подписи документа M.

  • Отправитель А вычисляет

    $$(SK_A, PK_A) = G (n)$$

    и посылает $$PK_A$$ получателю В, сохраняя $$SK_A$$ в секрете.

  • Для получения подписи документа M отправитель А вычисляет

    $$sign = S (M, SK_A)$$

    и посылает M и sign получателю В.

  • Получатель В вычисляет

    $$V (M, sign, PK_A)$$

    и в зависимости от результата принимает или отвергает подпись sign сообщения M.

  • В классической схеме электронной подписи, приведенной на рис 3.34, предполагается, что подписывающий (абонент А) знает содержание документа M, который он подписывает; проверяющий (абонент В), зная открытый ключ проверки подписи, может проверить правильность подписи в любое время без какого-либо разрешения или участия претендента А.

    (рис 3.34) Классическая схема создания и проверки электронной подписи

    При создании электронной подписи по классической схеме претендент А выполняет следующую последовательность действий:

  • применяет к исходному сообщению M хеш-функцию h и формирует хеш-образ сообщения h (M) (при необходимости дополняя входную информационную последовательность до требуемой длины);
  • при необходимости дополняет хеш-образ до требуемой длины, формируя h* (M) = ext h (M);
  • вычисляет электронную подпись sign с использованием несимметричного криптоалгоритма D и секретного ключа создания подписи $$SK_A$$:

    $$sign = \{h* (M)\} SK_A$$.

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

    Последовательность действий абонента В, получившего подписанное сообщение:

  • верификатор В применяет к тексту полученного сообщения хеш-функцию; дополняет в случае необходимости хеш-образ сообщения до требуемой длины (на рис 3.34 рассматривается случай, когда расширение ext h (M) не требуется);
  • применяет к полученной подписи sign несимметричный криптоалгоритм E с использованием открытого ключа проверки подписи $$PK_A$$ и сравнивает полученное значение $$PK_A\{sign\}$$ с найденным на предыдущем шаге h* (M), при положительном результате сравнения подпись признается, в противном случае отвергается.
  • 3.10.2. Хеш-функции

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

    К функции h (х) предъявляются четыре основных требования:

  • результат работы хеш-функции должен зависеть от всех двоичных символов исходного сообщения, а также от их взаимного расположения, т.е. h (х) должна быть чувствительна к любым изменениям входной информационной последовательности;
  • хеш-функция должна быть стойкой в смысле обращения;
  • хеш-функция должна быть стойкой в смысле нахождения коллизий;
  • хеш-функция должна быть стойкой в смысле нахождения второго прообраза.
  • Второе, третье и четвертое требования означают, что задачи нахождения последовательности M по заданному хеш-образу h (M), нахождения двух различных сообщений, имеющих одинаковые хеш-образы, и нахождения для заданной последовательности M другой последовательности M`, M` M, такой что h (M`) = h (M), должны быть вычислительно неразрешимы.

    Области использования хеш-функций:

  • защита паролей при их передаче и хранении;
  • формирование контрольных кодов MDC и НМАС;
  • получение сжатого образа сообщения перед формированием электронной подписи;
  • необратимое преобразование случайного запроса при аутентификации по принципу запрос-ответ;
  • оперативный контроль хода программ (concurrent checking of program flow).
  • Наиболее известные алгоритмы получения хеш-образов сообщений - MD5, SHA, TIGER.

    MD5 — представитель семейства алгоритмов вычисления хеш-функций MD (Message Digest Algorithm), предложенного Р. Ривестом; разработан в 1991 г.; преобразует информационную последовательность произвольной длины в хеш-образ разрядностью 128 бит. Самый быстродействующий алгоритм хеширования.

    TIGER - разработан Р. Андерсоном и Э. Бихэмом; предназначен для реализации на 64-разрядных компьютерах; преобразует информационную последовательность произвольной длины в хеш-образ разрядностью 192 бита.

    3.10.3. Secure Hash Algorithm (SHA)

    Алгоритм SHA является частью стандарта SHS (Secure Hash Standard), принятого в 1993 г. Национальным институтом стандартов и технологий США (NIST) и Агентством национальной безопасности США. SHA использует принципы, предложенные ранее Р. Ривестом при разработке своих алгоритмов MD4 и MD5.

    Рассмотрим версию SHA-1, в которой осуществляется преобразование информационной последовательности произвольной длины в хеш-образ разрядностью 160 бит.

    На первом этапе информационная последовательность дополняется до длины, кратной 512 битам. Сначала информационная последовательность дополняется до длины на 64 двоичных разряда меньшей числа, кратного 512: к концу последовательности (сообщения) приписывается 1, а затем необходимое количество нулей. После этого приписывается 64-разрядный код длины сообщения. Если длина исходного сообщения больше $$2^{64}$$, используются только 64 младших разряда этого кода.

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

    $$М = М_1, М_2, \ldots, М_i, \ldots М_k, i= 1, ..., k, |М_i| = 512$$.

    На вход i-го основного цикла $$SHA_i$$ преобразования поступает i-й блок информационной последовательности и результат работы предыдущего цикла $$SHA_{i – 1}$$, т.е.:

    $$SHA_i = h (М_i, SHA_{i – 1})$$.

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

     — исходный блок,

     — расширенный блок, при этом

    $$ = w_j$$ для j = 1, ..., 16,

    для j = 17, ..., 80,

    где Rol - операция циклического сдвига на один разряд влево.

    Перед началом первого цикла инициализируются пять 32-разрядных переменных

    A = 67452301h; B = EFCDAB89h; C = 98BADCFEh;

    D = 10325476h; E = C3D2E1F0h,

    при этом стартовый вектор хеширования (синхропосылка) есть результат конкатенации этих переменных, т.е.:

    $$SHA_0 = (A, B, C, D, E)$$.

    Конкатенация новых значений этих переменных, полученных в конце i-го цикла, объявляется результатом работы цикла $$SHA_i$$. Схема одного шага алгоритма хеширования приведена на рис 3.35.

    (рис 3.35) Схема одного шага алгоритма SHA

    В начале каждого цикла создаются копии входных переменных:

    $$AA = A, BB = B, CC = C, DD = D, EE = E$$.

    Затем выполняется 80 шагов алгоритма, на каждом из которых происходит выполнение следующих операций:

    $$Temp = Rol^5A + f_i (B, C, D) + E + M_{ij} + cj$$,

    $$E = D$$,

    $$D = C$$,

    $$C = Rol^{30}B$$,

    $$A = Temp$$,

    где $$Rol^n$$ - операция циклического сдвига на n разрядов влево;
    $$f_i$$ - шаговая функция;
    $$M_{ij}$$ - j-е слово i-го блока $$M_i$$;
    $$c_j$$ - шаговая константа;
    j = 1, ..., 80;
    i = 1, ..., k.

    В первом раунде (при j = 1, ..., 20) используются функция

    $$f_i (X, Y, Z) = XY v \sim XZ$$,

    где $$\sim$$ - операция отрицания,

    и константа

    $$c_j= 5A827999h$$;

    во втором раунде (при j = 21, ..., 40) используются функция

    $$f_i (X, Y, Z) = X$$ Y Z

    и константа

    $$c_j = 6ED9EBA1h$$;

    в третьем раунде (при j = 41, ..., 60) используются функция

    $$f_i (X, Y, Z) = XZ v XY v ZY$$

    и константа

    $$c_j= 8F1BBCDCh$$;

    в четвертом раунде (при j = 61, ..., 80) используются функция

    $$f_i (X, Y, Z) = X$$ Y Z

    и константа

    $$c_j = CA62C1D6h$$;

    Цикл завершается сложением по модулю $$2^{32}$$ полученных значений A, B, C, D и E соответственно с AA, BB, CC, DD и EE:

    $$A = A + AA, B = B + BB, C = C + CC, D = D + DD, E = E + EE$$;

    конкатенация полученных значений A, B, C, D и E является результатом работы основного цикла.

    В настоящее время существуют версии алгоритма SHA-256, SHA-384, SHA-512.

    3.10.4. Протокол электронной подписи RSA

    Допустим, $$E (x) = x^e mod N$$ - открытая функция зашифрования, а $$D (x) = x^d mod N$$ - секретная функция расшифрования, где $$(e, N) = PK_A$$ - открытый ключ абонента А, $$d = SK_A$$ - секретный ключ абонента А.

    Схема электронной подписи RSA.

  • Абонент А (претендент) вычисляет хеш-образ h (M) сообщения M.

  • Абонент А зашифровывает полученное значение h (M) на своем секретном ключе $$SK_A$$, вычисляя подпись

    $$sign_A (M) = \{M\} SK_A = h (M)^d mod N$$,

    и отправляет абоненту В пару документ-подпись $$(M, sign_A (M))$$.

  • Абонент В (верификатор) расшифровывает $$sign_A (M)$$ на открытом ключе $$PK_A$$ отправителя, т.е. вычисляет

    $$PK_A\{sign_A (M)\} = (sign_A (M))^e mod N$$.

  • Абонент В вычисляет хеш-образ h (M) полученного сообщения и проверяет равенство

    $$h (M) = (sign_A (M))^e mod N$$.

  • В случае положительного результата проверки подпись принимается, в противном случае - отвергается.

    3.10.5. Классификация атак на схемы электронной подписи

    Стойкость схемы электронной подписи зависит от стойкости используемых криптоалгоритмов и хеш-функций и определяется относительно пары угроза-атака.

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

  • атака на основе известного открытого ключа (key-only attack) - самая слабая из атак, практически всегда доступная противнику;
  • атака на основе известных подписанных сообщений (known-message attack) - в распоряжении противника имеется некоторое число пар (M, sign (M)), где M - некоторое сообщение, а sign (M) - допустимая подпись для него, при этом противник не может влиять на выбор M;
  • простая атака с выбором подписанных сообщений (generic chosen-message attack) - противник имеет возможность выбрать некоторое количество подписанных сообщений, при этом открытый ключ он получает после этого выбора;
  • направленная атака с выбором сообщений (directed chosen-message attack) - выбирая подписанные сообщения, противник знает открытый ключ;
  • адаптивная атака с выбором сообщений (adaptive chosen-message attack) - противник знает открытый ключ, выбор каждого следующего подписанного сообщения он может делать на основе знания допустимой подписи предыдущего выбранного сообщения.
  • Каждая атака направлена на достижение определенной цели. Можно выделить следующие виды угроз для схем электронной подписи (в порядке возрастания силы):

  • экзистенциальная подделка (existential forgery) - создание противником подписи для какого-нибудь, возможно бессмысленного, сообщения M`, отличного от перехваченного;
  • селективная подделка (selective forgery) - создание подписи для заранее выбранного сообщения;
  • универсальная подделка (universal forgery) - нахождение эффективного алгоритма формирования подписи, функционально эквивалентного S;
  • полное раскрытие (total break) - вычисление секретного ключа, возможно отличного от $$SK_A$$, соответствующего открытому ключу $$PK_A$$, что дает возможность формировать подписи для любых сообщений.
  • Наиболее стойкими являются схемы, стойкие против самой слабой из угроз на основе самой сильной из атак, т.е. против экзистенциальной подделки на основе атаки с выбором подписанных сообщений. Справедливо следующее утверждение. Схемы электронной подписи, стойкие против экзистенциальной подделки на основе атаки с выбором подписанных сообщений, существуют тогда и только тогда, когда существуют односторонние функции.

    3.10.6. Процедура разрешения споров

    Для практического применения схем электронной подписи помимо алгоритмов формирования подписи и ее верификации требуется процедура арбитража, т.е. разрешения споров. Арбитраж необходим, когда один из абонентов, например В, предъявляет сообщение и подпись $$(M, sign_A (M))$$, утверждая, что эта пара сообщение-подпись была получена от абонента А, а А отказывается признавать эту подпись своей. С юридической точки зрения основанием для разрешения подобных споров в суде является подписание (обычным образом) каждым пользователем при подключении к системе специального документа, в котором пользователь принимает все "правила игры" вплоть до судебной ответственности. При разборе дела в суде арбитр выступает в качестве эксперта, дающего заключение о подлинности электронной подписи.

    Алгоритм арбитража.

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

  • секретный ключ сформирован не самим абонентом А, а специальным центром генерации ключей;
  • аппаратура, на которой выполняется алгоритм генерации или проверки подписи, содержит какие-либо элементы, не контролируемые пользователем ("черные ящики", защищенные участки памяти и т.п.).
  • Наконец, возможны безвыходные ситуации, в которых арбитр не может принять никакого обоснованного решения. Например, абонент В предъявляет $$sign_A (M)$$ и утверждает, что это подпись под документом M. Абонент А признает, что это его подпись, но под документом M`M, при этом выясняется, что хеш-образы этих документов совпадают, т.е. $$h (M`) = h (M)$$. Арбитр понимает, что кто-то из двоих нашел коллизию для применяемой в схеме электронной подписи хеш-функции, и оказывается в патовой ситуации. Выход из положения возможен только в том случае, если заранее обговорен порядок разрешения спора в такой ситуации.

    3.10.7. Особые схемы электронной подписи

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

  • схема слепой подписи, когда абонент А подписывает документ, не зная его содержимого;
  • схема групповой подписи, которая позволяет верификатору убедиться в принадлежности полученного сообщения некоторой группе претендентов, но кто именно из членов группы подписал документ, верификатор определить не в состоянии;
  • схема разделяемой подписи, которая формируется только при участии определенного количества участников протокола, иначе говоря, данная схема является объединением классической схемы подписи и схемы разделения секрета;
  • схема конфиденциальной (неотвергаемой) подписи, которая не может быть проверена без участия сформировавшего ее участника протокола;
  • схема неоспоримой подписи, в которой подделка подписи может быть доказана.
  • 3.11. Управление ключами

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

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

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

    3.11.1. Разрядность ключа

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

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

    Длины ключей для криптосистем с секретным и открытым ключами
    Длина ключа, бит
    Криптосистема с секретным ключом Криптосистема с открытым ключом
    56 384
    64 512
    80 768
    112 1 792
    128 2 304

    Примечание. На практике в гибридных криптосистемах долговременный ключ для асимметричного алгоритма выбирают более стойким, чем сеансовый ключ для симметричного.

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

  • сложность атаки полного перебора;
  • требуемое быстродействие криптоалгоритма в тех случаях, когда увеличение размера ключа увеличивает время работы операций шифрования;
  • время жизни защищаемой информации и ее ценность;
  • возможности противника.
  • Если технические возможности противника известны, сложность атаки путем полного перебора по всему ключевому пространству оценить достаточно просто. Например, при разрядности ключа симметричной криптосистемы, равной 64 битам, объем ключевого пространства равен 264. Компьютер, который может перебирать 106 ключей в секунду, потратит на проверку всех возможных ключей более пяти тысяч лет. Современная вычислительная техника позволяет за время около нескольких дней при финансовых затратах около нескольких сотен тысяч долларов находить методом полного перебора 56-разрядные ключи симметричных криптосистем.

    Несколько лет назад международной группе исследователей удалось вскрыть шифр RSA с ключом длиной 512 бит. Именно такой ключ используется для защиты Интернет-транзакций, а также в шифрах многих коммерческих банков. Интересно также отметить, что 512 двоичных разрядов - это максимальная длина ключа, которую правительство США разрешает использовать в экспортируемых программных продуктах. Работа по подбору двух простых сомножителей числа, содержащего 155 десятичных цифр, велась в течение семи месяцев с привлечением ресурсов параллельно работающих 292 компьютеров, находящихся в 11 различных географических точках. В это количество входят 160 рабочих станций SGI и Sun, работающих на тактовых частотах 175—400 МГц, восемь компьютеров Origin 2000 SGI, работающих на частоте 250 МГц, 120 ПК с процессорами Pentium II (350—450 МГц) и четыре процессора, работающих на частоте 500 МГц, производства Digital/Compaq. Общие затраты вычислительных ресурсов составили около восьми тысяч MIPS-лет.

    3.11.2. Генерация ключей

    Согласно принципу Кирхгофа, стойкость криптоалгоритма определяется секретностью ключа. Это означает, что, если для генерации ключей используется криптографически слабый алгоритм, независимо от используемого шифра вся система будет нестойкой. Качественный ключ, предназначенный для использования в рамках симметричной криптосистемы, представляет собой случайный двоичный набор. Если требуется ключ разрядностью n, в процессе его генерации с одинаковой вероятностью должен получаться любой из $$2^n$$ возможных кодов. Генерация ключей для асимметричных криптосистем - процедура более сложная: так, ключи, применяемые в таких системах, должны обладать определенными математическими свойствами. Например, в случае системы RSA модуль шифрования есть произведение двух больших простых чисел.

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

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

    На рис 3.36 показана схема генерации сеансовых ключей в стандарте ANSI X9.17, где E - функция зашифрования DES, K - ключ, $$V_0$$ - секретная синхропосылка, $$T_i$$ - временная отметка, $$R_i$$ - сеансовый ключ. Очевидно, что данная схема может применяться совместно с любым другим блочным шифром. Очередной сеансовый ключ формируется в соответствии с уравнением

    $$R_i = E (E (T_i)$$ $$Vi) = K\{K\{T_i\}$$ $$V_i\}$$.

    Новое значение $$V_{i + 1}$$ определяется следующим образом:

    $$V_{i + 1} = E (E (T_i)$$ $$R_i) = K\{K\{T_i\}$$ $$R_i\}$$.

    (рис 3.36) Схема генерации ключей в стандарте ANSI X9.17

    3.11.3. Хранение ключей

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

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

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

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

    (рис 3.37) Схема аутентификации мастер-ключа

    Мастер-ключ - $$K_m$$

    В памяти компьютера хранится пара (M, C), где M - некоторый массив данных, $$C = K_m\{M\}$$ - результат его зашифрования на мастер-ключе $$K_m$$. Всякий раз, когда требуется проверка аутентичности мастер-ключа, берется код M из памяти и подается на вход криптомодуля. Полученная с выхода последнего шифрограмма C` сравнивается с шифрограммой, хранящейся в памяти. При положительном результате сравнения, аутентичность мастер-ключа считается установленной.

    При генерации сеансовых ключей код с выхода генератора ПСП рассматривается как шифрограмма $$K_m \{K_S\}$$ сеансового ключа $$K_S$$, полученная с использованием мастер-ключа $$K_m$$, и поэтому он может храниться в том виде, в котором был получен. На рис 3.38 приведена схема защиты ключа.

    (рис 3.38) Схема защиты сеансового ключа

    Сеансовый ключ - $$K_S$$

    При шифровании сообщения на вход криптомодуля подается шифрограмма $$K_m \{K_S\}$$ и сообщение M. Криптомодуль сначала "восстанавливает" сеансовый ключ, а затем с его помощью шифрует сообщение.

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

  • запоминание пароля PW и в случае необходимости автоматическое получение из него ключа K с использованием хеш-функции h (x) по формуле $$K = h \(PW\}$$;
  • запоминание начального заполнения качественного генератора ПСП, формирующего ключ;
  • использование пластикового ключа с размещенным на нем ПЗУ (ROM-key) или интеллектуальной карточки.
  • Следует помнить, что в первых двух случаях объем ключевого пространства зависит не только от длины пароля или ключевой фразы, но и от ограничения на вид используемых символов. В таблице 3.3 приведено количество возможных ключей при использовании 8-символьной ключевой фразы и время полного перебора при скорости перебора 106 ключей в секунду в зависимости от ограничений на используемые символы. Также следует помнить о возможности проведения противником так называемой атаки со словарем, включающем в себя наиболее вероятные ключевые слова. Пароли и символьные строки начального заполнения генератора ПСП следует выбирать случайным образом, а не только на основе критерия простоты запоминания.

    Количество возможных ключей и время их полного перебора при различных ограничениях на используемые символы
    Символы ключа Число символов Число возможных ключей Время полного перебора
    Заглавные буквы 32 $$1,1 x 10^{12}$$ 13 дней
    Заглавные буквы и цифры 42 $$9,7 x 10^{12}$$ 112 дней
    Все 8-разрядные коды 256 $$1,9 x 10^{19}$$ 600 000 лет

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

    3.11.4. Распределение ключей

    Распределение ключей между участниками информационного обмена в сети реализуется двумя способами, представленными на рис 3.39:

  • использованием одного или нескольких центров распределения или трансляции ключей;
  • прямым обменом сеансовыми ключами между пользователями сети.
  • (рис 3.39) Возможные варианты построения схемы распределения ключей: а - прямой обмен между пользователями в сети (схема типа «точка-точка»); б - схемы с использованием центра распределения ключей (ЦРК); в - схемы с использованием центра трансляции ключей (ЦТК); А, В, С - участники информационного обмена; К - ключ

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

    Примерами первого подхода является схема Kerberos, второго - схема Диффи—Хеллмана, рассмотренные ранее.

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

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

    $$(PK_W, SK_W)$$,

    подменил своим открытым ключом открытый ключ $$PK_А$$ абонента А. В результате у противника появляются следующие возможности:

  • он может читать все сообщения, адресованные А, так как обладает секретным ключом $$SK_W$$ из фальшивой пары ключей;
  • он может снова зашифровать расшифрованное им сообщение настоящим ключом $$PK_A$$ и отправить его абоненту А, при этом никто ничего не заметит;
  • он может формировать от имени А электронную подпись, которая будет казаться подлинной, так как все для ее проверки будут использовать фальшивый ключ.
  • Учитывая вышеизложенное, одна из важнейших функций центра доверия - сертификация открытых ключей взаимодействующих абонентов. Например, сертификат $$cert_A$$ открытого ключа абонента А суть шифрограмма, полученная на секретном ключе центра распределения С, которая содержит метку времени ts, время действия сертификата lt, идентификатор $$ID_A$$ и открытый ключ $$PK_A$$, т.е.:

    $$\{ts, lt, ID_A, PK_A\}SK_C$$,

    где $$SK_C$$ - секретный ключ центра С.

    В самом общем случае функциями центра доверия могут являться:

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

    (рис 3.40) Процедура модификации ключей

    3.11.5. Время жизни ключей

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

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

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

    Стандарт Х.509 ITU появился в 1988 г. Позже в нем были исправлены некоторые недостатки в защите. Вторая версия была опубликована в 1993 г. Сейчас действует третья версия.

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

    Документ Х.509 определяет каркас схемы предоставления услуг аутентификации каталогом Х.500 своим пользователям. Этот каталог может хранить сертификаты открытых ключей. Каждый сертификат содержит открытый ключ пользователя и подписывается секретным ключом центра сертификации. Кроме того, Х.509 определяет возможные протоколы аутентификации, построенные на использовании сертификатов открытых ключей.

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

    Структура сертификатов и протоколов аутентификации, определяемая в Х.509, может использоваться в самых различных ситуациях. Например, формат сертификата Х.509 принят в протоколах S/MIME, IPSec, SSL/TLS и SET.

    3.12.1. Сертификаты

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

    На рис 3.41 показан формат сертификата Х.509.

    (рис 3.41) Формат сертификата Х.509

    Как видно из рис 3.41, формат включает достаточное большое количество элементов.

  • Версия формата сертификата. По умолчанию выбирается версия 1. Если указан уникальный идентификатор инициатора (Initiator Unique Identifier) или уникальный идентификатор субъекта (Subject Unique Identifier), то значение версии должно быть равно 2. Если имеется одно или несколько расширений, должна быть указана версия 3.
  • Порядковый номер. Целое число, уникальное для данного ЦС, однозначно связанное с данным сертификатом.
  • Идентификатор алгоритма подписи вместе со всеми необходимыми параметрами.
  • Имя (по стандарту Х.500) ЦС, создавшего и подписавшего сертификат.
  • Срок действия - даты начала и окончания действия сертификата.
  • Имя субъекта. Имя пользователя, открытый ключ которого удостоверяет сертификат.
  • Информация об открытом ключе субъекта: собственно открытый ключ субъекта и идентификатор алгоритма, с которым должен использоваться этот ключ.
  • Уникальный идентификатор ЦС, выдавшего сертификат. Необязательный элемент. Используется, когда имя Х.500 применяется для разных ЦС.
  • Уникальный идентификатор субъекта. Необязательный элемент, используемый для однозначной идентификации субъекта, когда имя Х.500 применяется для разных субъектов.
  • Расширения. Одно или несколько полей, добавленные в версию 3.
  • Подпись. Ставится на всех остальных полях сертификата.
  • Два поля уникальных идентификаторов были включены в версию 2 для обеспечения возможности многократного использования имен субъектов или объектов, выдавших сертификат. Эти поля используются редко.

    Для определения сертификата стандарт использует следующую формулу:

    $$Y<<X>>$$,

    т.е. удостоверение центра сертификации Y открытого ключа абонента X.

    3.12.2. Получение сертификата

    Сертификат пользователя, формируемый ЦС, имеет следующие свойства:

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

    Предположим, что абонент А получил сертификат от уполномоченного ЦС Z, а абонент В - от уполномоченного ЦС W. Если А не знает открытого ключа центра W, то сертификат абонента В окажется бесполезным, так как А не сможет проверить подпись W на сертификате. Однако если центры Z и W по какой-то защищенной схеме обменялись своими открытыми ключами, то следующая процедура дает возможность А получить открытый ключ абонента В:

  • абонент А получает из каталога сертификат W, подписанный Z. Поскольку А знает открытый ключ Z, из полученного сертификата А может извлечь открытый ключ W и проверить его подлинность, проверим подпись Z;
  • абонент А обращается к каталогу и получает сертификат В, подписанный центром W. Поскольку теперь А знает открытый ключ W, он может проверить подпись W на сертификате В и получить таким образом заверенный открытый ключ В.
  • В рассмотренном случае А использовал цепочку сертификатов

    $$Z<<W>>W<<B>>$$,

    чтобы получить открытый ключ В. Точно так же В может получить открытый ключ А по обратной цепочке

    $$W<<Z>>Z<<A>>$$.

    На рис 3.42 показан пример иерархии ЦС.

    (рис 3.42) Пример иерархии ЦС

    В данном случае А может построить следующий сертификационный маршрут к В:

    $$X<<W>>W<<V>>V<<Y>>Y<<Z>>Z<<B>>.$$

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

    $$Z<<Y>>Y<<V>>V<<W>>W<<X>>X<<A>>.$$

    Если предположить, что ЦС X и Z взаимно сертифицировали друг друга, сертификационные маршруты от А к В и от В к А укорачиваются и принимают соответственно вид:

    $$X<<Z>>Z<<B>>,$$

    $$Z<<X>>X<<A>>.$$

    3.12.3. Отзыв сертификата

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

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

    Каждый список отозванных сертификатов (CRL, Certificate Revocation List), размещаемый в каталоге, подписывается центром сертификации и включает в себя имя ЦС, дату создания списка, дату выхода следующей версии CRL и отдельные записи по каждому из отозванных сертификатов. Каждая такая запись включает в себя порядковый номер сертификата и дату его отзыва. Учитывая, что для отдельно взятого ЦС порядковый номер уникален, для распознавания сертификата его указания достаточно.

    Получив сертификат в сообщении, пользователь обязан выяснить, не был ли этот сертификат отозван. Формат списка, необходимый при отзыве сертификата, приведен на рис 3.43.

    (рис 3.43) Формат списка отозванных сертификатов

    3.12.4. Процедуры аутентификации

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

    Одношаговая аутентификация предполагает передачу одного сообщения от А к В, которое устанавливает следующее:

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

  • аутентичность В;
  • аутентичность ответа В;
  • что ответ предназначен А;
  • целостность ответа;
  • оригинальность ответа.
  • 3.12.5. Версия 3 стандарта Х.509

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

    Можно выделить три категории расширений:

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

    Область включает в себя следующие поля.

  • Идентификатор ключа ЦС. Позволяет различать разные ключи одного ЦС. Используется при обновлении пары ключей ЦС.
  • Идентификатор ключа субъекта. Позволяет пользователю иметь несколько ключей (и соответственно несколько сертификатов) для различных целей (например, для подписи и для шифрования). Полезно при обновлении пар ключей субъекта.
  • Ограничения на использование сертифицированного открытого ключа. Возможные варианты: электронная подпись, невозможность отказа от авторства, шифрование ключей, шифрование данных, соглашения о ключах, проверка подписи ЦС в сертификатах, проверка подписи ЦС в CRL.
  • Срок использования секретного ключа. Поле необходимо, учитывая, что во многих случаях срок действия секретного ключа меньше срока действия соответствующего открытого ключа, например в случае ключей соответственно для формирования и проверки подписи.
  • Политика сертификации. Поле предполагает наличие списка политик, распознаваемых данным сертификатом, а также дополнительную уточняющую информацию.
  • Отображение политик. Используется только в сертификатах ЦС, выданных другими ЦС. Позволяет ЦС выяснить, является одна или несколько таких политик эквивалентными другой политике, используемой в домене ЦС, выступающего в качестве субъекта сертификации.
  • Субъект сертификации и атрибуты ЦС. Расширение обеспечивает поддержку альтернативных имен в альтернативных форматах для субъектов и ЦС. Может содержать дополнительную информацию о субъекте сертификации (почтовый адрес, занимаемая должность в компании, фотография и пр.).

    Область включает в себя следующие поля.

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

  • Основные ограничения. Указывает на то, может ли субъект выступать в качестве ЦС. Если да, то могут быть заданы ограничения на длину маршрута сертификации.
  • Ограничения имен. Указывает рамки, в которых должны находиться имена субъектов в последующих сертификатах маршрута.
  • Ограничения политик. Задает ограничения, которые может требовать явно указанная политика сертификации.
  • 3.13. Вероятностное шифрование

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

    Схема одного из возможных вариантов вероятностного блочного шифрования в режиме ECB показана на рис 3.44, где на вход функции зашифрования E поступает "расширенный" блок  полученный в результате конкатенации блока открытого текста $$M_i$$ и двоичного набора $$R_i$$ той же разрядности с выхода генератора ПСП.

    (рис 3.44) Пример вероятностного шифрования. E и D - функции за- и расшифрования симметричной или асимметричной криптосистемы

    В результате зашифрования получается блок $$С_i$$ закрытого текста, разрядность которого больше разрядности блока $$M_i$$. В результате при зашифровании одинаковых блоков на одном и том ключе получаются различные блоки шифротекста. При расшифровании часть $$R_i$$ блока, полученного на выходе функции D, просто отбрасывается.

    Можно выделить следующие достоинства вероятностного шифра:

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

    3.14. Причины ненадежности криптосистем

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

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

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

  • человеческий фактор;
  • особенности реализации.
  • Самое ненадежное звено системы - человек. Типичные ошибки пользователей, нарушающих безопасность всей системы защиты:

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

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

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

    Многие качественные криптографические средства подпадают под действие экспортных ограничений, искусственно снижающих качество этих средств. Например, в США запрещен экспорт криптоалгоритмов с длиной ключа более 56 бит. Все программные средства, произведенные в США и легально экспортируемые за рубеж, обеспечивают ослабленную криптографическую защиту. Аналогичная ситуация имеет место и в Европе. Так, например, существуют две версии алгоритма поточного шифрования А5 (стандарт GSM) - надежная А5/1 и существенно менее стойкая А5/2 для поставок в развивающиеся страны.

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

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

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

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

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

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

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

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

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

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

  • несанкционированное копирование и съем секретной информации;
  • приведение в неработоспособное состояние или разрушение компонентов системы защиты;
  • уничтожение или модификация секретной информации;
  • наблюдение за процессами обработки секретной информации и принципами функционирования средств защиты;
  • постоянная или кратковременная (что опаснее) подмена или понижение стойкости используемых криптоалгоритмов;
  • постоянное или кратковременное изменение степени защищенности секретной информации;
  • создание скрытых каналов передачи информации;
  • инициирование ранее внедренных РПВ;
  • инициирование режимов работы, увеличивающих объем остающихся после обработки фрагментов секретной информации.
  • Еще более разнообразны пути внедрения РПВ. Можно выделить следующие средства, предназначенные для борьбы с РПВ, без которых любая программная реализация криптоалгоритма практически беззащитна:

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

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

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

  • Поиск по таблицам - неуязвим для временных атак.
  • Фиксированные сдвиги - неуязвимы для временных атак.
  • Булевы операции - неуязвимы для временных атак.
  • Сложение/вычитание - трудно защитить от временных атак.
  • Умножение/деление - наиболее уязвимые для временных атак операции.
  • Стойкость к атакам такого рода, направленным не на криптоалгоритм, а на его реализацию, также надо учитывать. Защищенность по отношению к временному анализу можно повысить путем введения дополнительных задержек. Более сложной является проблема защиты от анализа мощности, но ее можно решить несколькими путями. Это, во-первых, балансировка алгоритма (равномерное распределение различных операций по коду), во-вторых - введение специальных "шумовых" операций или просто выбор другого микропроцессора.

    С недавних пор получили распространение атаки на аппаратуру криптосистем, основанные на анализе электромагнитного излучения и других побочных источников информации.

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

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

    К моменту выхода этого курса в большинстве существующих систем обеспечения безопасности произойдет замена криптоалгоритмов с секретным и открытым ключом на лучшие на сегодняшний день - соответственно AES и ECCS, которые были описаны в данной главе. Поэтому в последующих главах везде, где будет идти речь об алгоритмах блочного шифрования DES, Triple DES (3DES) и других, следует учитывать скорее всего уже свершившийся переход к AES; везде, где речь идет об алгоритме открытого шифрования RSA, следует учитывать скорее всего уже свершившийся переход к ECCS.

    Вернуться к учебному плану