Теория и практика защиты программ

       

Вводные замечания


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


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




Будем говорить, что инкрементальное шифрование является стойким относительно некоторой операции модификации, если (для данной последовательности шифртекстовЕ1,...,Et  над соответствующими открытыми данными Di, i=1,...,t и при инкрементальном получении каждой последовательности Еi, из предыдущих шифртекстов Ei-1) извлечение какой-либо информации об оригинальном документе D1, также как и его измененных версиях D2,.., Dt (за исключением того факта, что Di получено посредством применения этой операции модификации к открытым данным Di-1) не возможно. Аналогично, рассмотрим любые две последовательности А=(А1,...,Аt) и В=(В1,...,Bt) так, что A1,B1ÎSl, где S - используемый алфавит. Данные Аi

(отн., Вi) получены заменой единственного символа в Ai-1

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

и соответствующих «команд замены» данных В.




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

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






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

- произведение двух больших простых чисел, или на трудности вычисления дискретных логарифмов в поле GF(p), p

- большое простое число. Чтобы противостоять известным на данный момент методам решения этих задач операнды должны иметь длину порядка 512 или 1024 битов. Понятно, что выполнение вычислений над операндами повышенной разрядности (еще будет употребляться термин «операнды многократной точности» по аналогии с операндами однократной и двукратной точности [Кн]) требует высокого быстродействия рабочих алгоритмов криптографических схем.




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

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




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




www.kiev-security.org.ua

BEST rus DOC FOR FULL SECURITY

Основополагающей работой в области проверки программ, использующих некоторые присущие им внутренние свойства для контроля результатов своей работы, следует считать, написанную в 1989 г., работу [BK], в которой были формализованы основные идеи построения программных чекеров. Соответствующие определения самотестирующихся и самокорректирующихся программ

в 1993 г. были введены в работах [BLR,L1]. В свою очередь, методология самотестирования явилась результатом объединения трех основных идей из криптографии, вероятностных алгоритмов и тестирования программ [BK]. К ним относятся интерактивные системы доказательств и интерактивные системы доказательств с нулевым разглашением [GMR]. Кроме этого, большое значение имели работы М.О. Рабина по вероятностным вычислениям (см., например, [Ра]) и работа латышского математика Р. Фрейвалдса [F], написанная им еще в 1979 году. Он предложил простой и элегантный чекер для задачи умножения матриц, который можно также эффективно применить и для целочисленного умножения и для умножения полиномов.




В этом разделе рассматриваются теоретические аспекты защиты программ от копирования. Эта задача защиты может сводиться к задаче эффективного моделирования RAM-машины (машины с произвольным доступом к памяти(см. приложение и [АХУ]) посредством забывающей RAM-машины. Следует заметить, что основные результаты по данной тематике принадлежат О. Голдрайху и Р. Островски [GO,O] и эти исследования активно продолжаются в настоящее время.

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

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




Отметим, что тривиальное решение для забывающего моделирования RAM-машины заключается в полном сканировании фактической памяти RAMk-машины для каждой операции доступа к виртуальной памяти (которая должна быть выполнена для оригинальной RAM-машины). Далее описывается первое нетривиальное решение [GO,O] задачи забывающего моделирования RAMk-машины посредством вероятностной RAM'k'. Это решение еще называется решением задачи «Квадратного корня»[GO].

Пусть заранее известен объем памяти, обозначаемый m, требуемый для соответствующей программы. Ниже мы показываем, как моделировать такую RAM-машину посредством забывающей RAM-машиной с объемом памяти m+2

 таким образом, что t шагов оригинальной RAM-машины моделируются за O(t
) шагов на забывающей RAM-машине.

Всякий раз, когда мы говорим о доступе к виртуальном

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



Содержание раздела