CL-ATSE

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

CL-Atse (англ. Constraint-Logic-based ATtack SEarcher) — это инструмент, который преобразует любое описание протокола безопасности на языке IF во множество предположений, которое затем может быть проанализировано на наличие атак на протокол.

Общее описание

[править | править код]

CL-Atse имеет следующие характеристики:

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

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

Алгоритм анализа, который используется в CL-Atse, спроектирован для конечного числа циклов, т.е. для конечного числа протокольных шагов. Так что, если описание протокола не имеет циклов, то все описание и анализируется, в противном случае пользователь должен предоставить целочисленное ограничение на максимальное число циклов.

При чтении IF файла, CL-Atse по умолчанию пытается упростить описание протокола. Цель этого – уменьшить количество протокольных шагов, которое необходимо проверять. Т.к. большая часть времени уходит на проверки всех возможных чередований протокольных шагов, это упрощение может оказаться очень полезным для больших протоколов. Идея в том, чтобы найти и отметить протокольные шаги, которые могут быть выполнены как можно раньше или как можно позже. Эта информация используется для уменьшения чередования шагов.

Экземпляры ролей: В CL-Atse каждая роль должна быть независима от других и использовать другие имена переменных. Отсюда следует, что каждая роль в IF файле обрабатывается во множество ролей, по одной на каждый “state_” факт в начальном состоянии. Эта обработка в действительности «запускает» роль участника, генерирует новые имена переменных и извлекает (минимальное) множество предположений, описывающее эту роль. Например, переменная GX у роли “Server” может стать GX(1) и GX(2) в двух экземплярах ролей этого “Server”’а. Также каждый одноразовый номер (Скажем, Na) генерируемый в описании заменяется различной константой в каждому экземпляре роли (Скажем, n1(Na) и n2(Na)). Для читаемости множество предположений представляющих каждый экземпляр роли отображается в следующем синтаксисе:

Шаг: Полученное сообщение => Отправленное сообщение [] &Неравенства &IF факты

Где – объединение предположений (т.е. множество равенств). Для краткости, символ & обозначает новую строку. Любой недетерминизм в выполнении роли представляется точкой выбора из множества ролей. Когда наступает точка выбора, система (В действительности, нарушитель) выбирает, какая ветвь будет исполняться. Наконец, роль образует дерево, где унарные вершины – протокольные шаги, а n-арные вершины - точки выборов. Выполнение роли – это путь в этом дереве.

IF факты: Каждый протокольный шаг содержит все факты, найденные для этого шага в IF файле (Исключая состояние). Тогда как их синтаксис может немного отличаться от оригинальных IF фактов из-за внутреннего представления CL-Atse, их семантика аналогична. Главные отличия:

  • Факты Contains(term, set) заменены на “Test term in set”, “Test term not in set”, “Add term to set” и “Remove term from set” в зависимости от позиции факта contains(..) в правиле. В остальном они следуют семантике contains(..).
  • Secret(term, mark, set) стали “Secret (term, set)”

Внутреннее устройство

[править | править код]

Термы могут быть атомами, переменными, конкатенацией (или парой), симметричным или асимметричным шифром (Обозначенные как и ). Также здесь [1] - инверсия для асимметричного шифра. Операторы и моделируют сложение по модулю 2 и показательную функцию.

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

Протоколы и системные состояния

[править | править код]

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

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

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

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

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

Упрощение и оптимизация протоколов

[править | править код]

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

Способ анализа

[править | править код]

CL-Atse выполняет протокол в каждой возможной последовательности шагов. Для того, что бы рассмотреть все возможные способы исполнения, алгоритм анализа полагается на 2 компонента: алгоритм объединения по модулю операций, таких как xor и экспонента, который предлагает все необходимые для каждого типа термов вычисления, и управление состояниями и предположениями при выполнении протокольного шага.

Объединение по модулю (включая xor и экспоненту)

[править | править код]

Ядро: выполнение протокольного шага

[править | править код]

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

Сокращение гипотез: гипотеза называется несокращенной, если не является переменной. Это полученное сообщение протокольного шага. Положим - системное состояние, где и уже сокращено. Тогда мы сокращаем в зависимости от , переписывая правила ). Например:

Примечания

[править | править код]
  1. Если случайный терм, то существует, но неизвестен для каждой из сторон