тик за время ¡0 может опробовать 50 % вариантов из всех возможных, то сведения считаются раскрытыми).
- зона относительной уязвимости КД определена в случае, когда
2 ' ^пр ( ^ ) < О'МПМ ,
тогда ру < 0,5, ^бс > 0,5 .
Рис. 2. Зависимость метрик уязвимости и безопасного состояния КД от вычислительной стойкости систем.
Рассмотренные метрики, в случае необходимости, позволяют численно задать требования к вычислительной стойкости разрабатываемых криптографических многопараметрических систем защиты информации с учетом конкретных потребностей заказчика и вычислительных возможностей криптоаналитика. Предложенная методика оценки вычислительной стойкости криптографических многопараметрических систем защиты информации на основе определения метрик подбора, уязвимости и безопасного состояния их КД позволяет получить вероятностные характеристики вычислительной стойкости для конкретных информационных систем и систем связи, использующие подобные системы защиты информации. Разработанная методика позволяет адекватно оценить вычислительную стойкость криптографических многопараметрических систем защиты информации, а следовательно и вычислительную стойкость информационных систем и систем связи различного назначения, в которых используются подобные системы защиты, в целом.
А.В. Бодров, Н.Д. Гуц, А.А. Молдовян, Е.В. Морозова
Россия, г. Санкт-Петербург, СЦПС ''СПЕКТР''
ГРАФИЧЕСКИЙ РЕДАКТОР СИСТЕМЫ ВИЗУАЛЬНОГО МОДЕЛИРОВАНИЯ КРИПТОАЛГОРИТМОВ
В настоящее время в СЦПС «Спектр» разрабатывается система визуального моделирования (СВМ) криптоалгоритмов. Система ориентирована на пользователя, хорошо знакомого с криптографией, но не являющегося специалистом в области программирования, и призвана дать такому пользователю возможность самому моделировать на компьютере криптоалгоритмы и проводить с ними модельные эксперименты. СВМ позволяет создавать («рисовать») блок-схемы криптоалгоритмов различной степени детализации (от самой общей до описания отдельной операции) в виде базовых криптографических примитивов, а также выполнять чи-
словые и символьные вычисления над ними. СВМ включает графический редактор, подсистему синтаксического контроля, подсистемы символьных, числовых и статистических вычислений, подсистему обработки результатов. Оболочка графического редактора включает в себя стандартную панель инструментов, основное меню, панель рисования и поле рисования. С помощью стандартной панели инструментов, пользователь может создавать новые модели, а также открывать, сохранять и закрывать уже существующие, распечатывать созданный рисунок, отменять только что произведенные действия, производить расчеты и просматривать результаты расчетов. Кнопки этой стандартной панели продублированы соответствующими командами основного меню, располагающегося над стандартной панелью инструментов. Основную часть окна занимает поле рисования, по умолчанию расчерченное для удобства сеткой. Слева от поля рисования находится панель рисования, на которой размещены пиктографические кнопки доступных компонентов криптоалгоритма. Эти компоненты делятся на два типа:
1. Компоненты-стрелки, назначением которых является передача данных (или ключей).
2. Компоненты-объекты, назначением которых является преобразование данных.
Набор реализованных компонентов представлен табл. 1.
Задание вида базового компонента происходит путем назначения компоненту файла с описанием этого компонента. Например, файл описания фиксированной перестановки будет содержать конкретную таблицу перестановок. Чтобы назначить базовому компоненту файл описания, надо в форме, появившейся после выбора пункта «Свойства» контекстного меню компонента, выбрать уже существующий файл описания или создать новый, нажав кнопку «Создать» и заполнив соответствующую таблицу.
- наличие файла с описанием; - наличие файла с алгоритмом вычислений; - наличие файла с алгоритмом вычислений или файла с описанием
Задание вида сложного компонента в данной системе подразумевает назначение конкретного алгоритма расчета для данного компонента. Эти конкретные алгоритмы можно создавать следующими способами:
1. Новый вид компонента создается также, как и модель, но при сохранении необходимо в раскрывающемся списке «тип файла» выбрать «файлы видов блоков». Имя файла должно формироваться следующим образом: НазваниеКомпонен-та_НазваниеВидаКомпонента. 8.
2. Новый вид компонента создается во время создания модели. Для этого необходимо выйти в контекстное меню того компонента, для которого надо создать новый вид, выбрать пункт «Свойства» и в появившемся окне нажать на кнопку «Создать». После этого пользователь перейдет в режим создания нового вида компонента. Окно этого режима выглядит аналогично окну режима создания модели, и действия пользователя аналогичны действиям режима создания модели: редактирует уже существующий вид, который можно загрузить командой «Открыть» или рисует новый вид компонента с помощью панели рисования. После завершения создания вида компонента пользователь нажимает команду «Назад» системного меню и, если новый вид компонента не был сохранен ранее, после сохранения, возвращается в создаваемую ранее модель. При этом рассматриваемый компонент приобретает только что созданный вид.
3. Данный вариант подразумевает знание псевдокода, использующегося в системе. Пользователь в любом текстовом редакторе записывает в псевдокоде алгоритм расчета нового вида компонента (т. е. делает то, что в двух предыдущих случаях за него автоматически делала система), сохраняет текстовый файл с псе-
водкодом по правилу: НазваниеКомпонента_НазваниеВидаКомпонента.г, и подключает этот файл с помощью кнопки «Загрузить» формы задания вида компонента. На рис.1 показана графическая оболочка СВМ с загруженной моделью шифра 8РЕСТК-И64. Цифры в выносках слева от рисунка соответствуют номерам компонентов в табл. 1.
Таблица 1.
Список компонентов СВМ
№ | Название компонента | Свойства
Компоненты передачи данных
1 Горизонтальная и вертикальная сплошные стрелки передачи данных Идентификатор (имя переменной) и размерность
2 Горизонтальная и вертикальная стрелки передачи управляющих данных Идентификатор (имя переменной) и размерность
Базовые компоненты (встроенные операции)
3 «Сложение по модулю 2» —
4 «Точка ветвления» —
5 «Поразрядное умножение» —
6 «Конкатенация» —
7 «Циклический сдвиг» Величина и направление сдвига
8 «Сдвиг с заполнением» Величина, направление сдвига, а также вид заполнения
9 «Инволюция» Вид инволюции *
10 «Обратная инволюция» Вид обратной инволюции
11 «Фиксированная перестановка» Вид перестановки *
12 «Фиксированная подстановка» Вид подстановки *
Сложные компоненты (модули, процедуры и функции), создаваемые на основе базовых
13 «Управляемая перестановка» Вид блока управляемых перестановок **
14 «Обратная управляемая перестановка» Вид обратного блока управляемых перестановок **
15 «Управляемый сумматор» Вид управляемого сумматора **
16 «Раундовая функция» Вид раундовой функции
17 «Нелинейная функция» Вид нелинейной функции **
18 «У меньшение размерности» Вид блока уменьшения размерности
19 «Увеличение размерности» Вид блока увеличения размерности **
20 «Управляемая подстановка» Вид блока управляемой подстановки
21 «Произвольный настраиваемый блок» Вид блока (создание собственного блока)
Следует отметить, что подсистема синтаксического контроля проверяет допустимость создаваемых пользователем конструкций как непосредственно при вводе модели, так и при попытке пользователя запустить модель на вычисление. Во время рисования блок-схемы модели для каждого компонента-объекта проверяется количество входных и выходных стрелок, а также согласованность размерностей входов и выходов, а для стрелок - уникальность идентификаторов (для промежуточных данных, не являющихся входными данными модели, и выходных данных модели). Кроме того, при рисовании блок-схемы пользователю предоставляются подсказки о возможных местах входа (выхода) стрелок в компонент. Синтаксическая проверка на наличие ошибок для всей модели в целом, проводится при нажатии пользователем кнопки «Расчет». Осуществляется поиск следующих ошибок:
1. Проверка на отсутствие контуров, т. е. проверка на отсутствие выходных данных, являющихся одновременно входными в компоненте-объекте, который их вычисляет.
2. Проверка на наличие всех необходимых идентификаторов и размерностей стрелок. В случае необходимости СВМ сама присваивает стрелкам идентификаторы, и расставляет размерности (если это возможно).
3. Проверка на отсутствие «висячих» стрелок, т. е. стрелок, не связанных ни с одним компонентом-объектом.
4. Проверка на наличие всех необходимых входных и выходных стрелок у каждого компонента-объекта.
Рис. 1 Система СВМ с загруженной моделью шифра SPECTR-H64.
/Var;
L{32}; Я{32}; A4{32}; A3{32}; {входные параметры}
и{32}; Я'{32}; {выходные параметры}
au6{32}; au7{32}; au8{32}; Щ32}; V{80}; X{32}; {локальные переменные}
W{32}; X'{32}; У{80}; и'{32}; У”{80}; Щ32};
/Begin;
U= L <<11;
W=L+A3;
L'=L;
и'= L <<11;
и= L<<17;
V=E 32 80(U); {Е 32 80 — файл описания алгоритма расширения блока}
X'=G 32^;
V''=G 32(Ц");
V'=E 32 80(и);
au6=P 32 80(R,V);
X=P_32_80(A4,V');
au7=X+au6;
au8=X'+au7;
R'=_P_32_80(au8,V'');
/End;
Рис. 2. Пример псевдокода модели одного раунда алгоритма SPECTR-H64 Компоненты, в графическом представлении которых была найдена ошибка, «подсвечиваются» красным цветом и на экран выводится сообщение об ошибке. Подсистема проверки синтаксических ошибок не допускает проведения расчетов с моделью, содержащей хотя бы одну из перечисленных выше ошибок. Если синтаксических ошибок не выявлено, СВМ по графическому представлению модели формирует аналитическое представление (так называемый псевдокод). Пример псевдокода, соответствующего модели одного раунда алгоритма SPECTR-H64 (рис.1), приведен на рис. 2. После создания псевдокода СВМ компилирует его и выполняет, причем вычисления могут производиться как в символьном, так и в численном виде (подсистема символьной математики).
В дальнейшем предполагается реализовать операторы цикла с тем, чтобы при расчете модели сделать изменяемым количество раундов, а также подключить к СВМ подсистему обработки результатов, которая позволит пользователю автоматизировать анализ и обработку результатов вычислений.
Система визуального моделирования криптоалгоритмов реализована в Бе1рЫ 6 под управлением операционной системы Windows 98.
Л.К. Бабенко, Т.А. Мазурова, И.Д. Сидоров, А.Г. Чефранов
Россия, г. Таганрог, ТРТУ
АЛГОРИТМЫ БЕЗЫЗБЫТОЧНОГО КОДИРОВАНИЯ ПЕРЕСТАНОВОК И ИХ ОБОСНОВАНИЕ
Известны генераторы (алгоритмы генерации) псевдослучайных последовательностей для получения бегущего ключа при поточном шифровании. При программной реализации наиболее эффективны те из них, состояние которых в текущий момент времени описывается перестановкой элементов некоторого множества, например RC4 или So1itare [1].
В [2] предложен один из подходов к генерации сверхдлинных псевдослучайных последовательностей на основе ортогональных матриц, полученных при помощи алгоритма их генерации, описанного в [3]. При этом последовательность образуется формированием перестановок комбинаций столбцов сгенерированной матрицы и записью их элементов в строку. В качестве начального состояния генератора (зерна) предлагается использовать некоторую исходную перестановку номеров строк матрицы. Однако при программной реализации предложенного подхода в качестве ключа, формирующего зерно, удобнее использовать битовую строку произвольной длины. Интерпретируя битовый ключ в качестве целого числа в двоичной системе счисления, мы можем поставить задачу перехода от целого числа к перестановке таким образом, чтобы перестановка зависела от всех бит ключа. При этом обозначим множество, из которого формируется перестановка, множеством А (|А|=п). Для решения этой проблемы предлагается следующий подход: нумеруются все возможные перестановки элементов множества А целыми числами от 0 до п!-1. Тогда проблема эффективного кодирования решается достаточно просто, так как ключ и представляет собой число в двоичной системе счисления. Для удобства дальнейших рассуждений положим, что множество А, из которого формируются перестановки, состоит из целых чисел 0..П-1. При этом не теряется общность рассуждений, так как элементам любого другого множества можно поставить в соответствие числа из этого интервала при помощи таблицы. Перенумеровывать перестановки естественно в том порядке, в котором они генерируются. Определим генератор перестановок как алгоритм, выдающий перестановки элементов заданного множества в порядке, определяемом природой алгоритма.
Рассмотрим два генератора перестановок [4]:
Генератор перестановок РегшСоипЙ. Алгоритм работает индуктивно, т. е. гарантирует получение всех перестановок из п элементов, если получены все перестановки из п-1 элементов.
Описание итерации алгоритма: имеется перестановка а1а2^ап-1. Подставляя п поочерёдно на все возможные места, получаем п перестановок: па1а2^ап-1, а1па2^ап-1, ..., а1а2^пап-1, а1а2^ап-1п. Применяя алгоритм рекурсивно, получаем алгоритм - перечислитель перестановок.