Скачиваний:
170
Добавлен:
02.05.2014
Размер:
412.16 Кб
Скачать
    1. Устойчивость, линейная и единичная состоятельность

Пусть свойство Iвыражается уравнениемI(x1,...,xk)=0, где кортеж (x1,...,xk) выбирается с распределениемEиз пространстваDk. Пара (I,E) характеризует семейство функцийF, гдеfFтогда и только тогда, когда для всех (x1,...,xk) с ненулевой выборкой элементов кортежа изE,f(x1,...,xk)=0. Базовой техникой самотестирования является идентификация свойстваустойчивостидля семейства функцийF. Неформально (D,D)-устойчивостьпары (I,E) для семейства функцийGреализует, что если для программыPG, свойствоIP(x1,...,xk)=0 удовлетворяется с высокой вероятностью, когдаx1,...,xkвыбрано с распределениемEизDk, тогда существует функцияgFG, которая согласуется сPна большей части входов изD.

Рассмотрим некоторое свойство линейности (I,E), где свойствоf(x1,x2,x3) тождественноf(x1)+f(x2)=f(x3) иEозначает (x1RZp,x2RZp,x1+x2). Пара (I,E) характеризуетF={f(x)=cxcZp} – множество всех линейных функций надZp. В этом примереG– тривиальное множество всех функций и пара (I,E) устойчива для G.

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

Существует два базовых теста для самотестирующихся программ – тест линейной состоятельностиитест единичной состоятельности [BLR]. Продемонстрируем построение таких тестов на примере следующей тривиальной модулярной функции. Пустьx,R– положительные целые, тогдаfR(x)x (mod R), гдеR- фиксировано.

Пусть x1иx2случайно, равновероятно и независимо от других событий выбраны из ZR2nиxпринимает значение:x:x1+x2(mod R2n). Необходимо отметить, чтоfR(x)[fR(x1)+fR(x2)](modR) – линейная функция по всем входам (аргументам). Тогдатест линейной состоятельностизаключается в выполнении или не выполнении равенства:PR(x)[PR(x1)+PR(x2)](modR), аошибка линейной состоятельности– есть вероятность того, что данный тест не выполнился.

Пусть zслучайно выбрано из ZR2nв соответствии с распределениемиzпринимает значение:z:z+1(mod R2n). Отметим также, чтоfR(z)[fR(z)+1](modR). Тогдатест единичной состоятельностизаключается в выполнении или не выполнении равенства:PR(z)[PR(z)+1](modR), аошибка единичной состоятельности– есть вероятность того, что данный тест не выполнился.

    1. Метод создания самокорректирующейся процедуры вычисления теоретико-числовой функции дискретного экспоненцирования

      1. Обозначения и определения для функции дискретного возведения в степень вида gxmodulo m.

Пусть In=Zqпредставляет собой множество {1,...,q}, гдеq=(M) - значение функции Эйлера для модуляM, аZ*M- множество вычетов по модулюM, гдеn=log2M. Пусть распределениеDpесть равномерное распределение вероятностей. Оракульной программой, в данном случае, является программа вычисления функцииgxmoduloM, по отношению к исследуемым самотестирующейся и самокорректирующейся программам.

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

Пусть x[1,...,n] - двоичное представление положительного числаxиA,BиN- положительные целые числа вr-ичной системе счисления, тогда псевдокод алгоритмаAxmoduloN, реализованного программой Exp() имеет следующий вид.

Program Exp(x,N,A,R); {вход x,N,A, выход R}

begin

B:=1;

for i:=1 to n do

begin

B:=(B*B)modN;

if [i]=1 then B:=(A*B)modN;

end;

R:=B;

end.

Рис. 4.1. Псевдокод алгоритма AxmoduloN

Из описания алгоритма видно, что число обращений к операции вида (A*B)moduloNбудет logx+(x), где(x) число единиц в двоичном представлении операндаxили вес Хэммингаx.

Соседние файлы в папке Казарин О.В. Теория и практика защиты программ