при хранении и передаче, но не при обработке: как правило, данные обрабатываются, а программы выполняются в явном, незащищенном виде. Именно во время обработки информация наиболее уязвима для хакеров, программных закладок («троянских коней») и вирусов. Для обеспечения комплексной защиты информации при ее компьютерной обработке автором разработана стохастическая информационная технология, представленная в работах [1, 2, 3].

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

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

Краткое описание метода

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

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

Кодирование чисел

Непосредственно после ввода числа в компьютер вправо и влево от запятой в нем последовательно выделяются группы цифр по m разрядов (в неполные группы добавляется нужное число нулей). Затем каждая группа заменяется на уникальный стохастический индекс длиной L битов по кодовой таблице, содержащей такие индексы для всех чисел от 0 до 99...9 (m раз), и число превращается в последовательность случайных индексов.

Например, число 125627,829 при использовании таблицы, фрагмент которой показан на рис. 1, будет преобразовано в Iξ+ Iξ12 Iξ56 Iξ27 Iξ, Iξ82 Iξ90

Чтобы можно было представить все числа различными индексами, m и L должны удовлетворять соотношению 2L-1≥10m или L≥log2(10m+1)~mlog210

В нашем примере m=2, а L=8.

Рис. 1. Фрагмент стохастической
таблицы.
0 Iξ0 10110101
01 Iξ01 01101110
02 Iξ02 11010101
03 Iξ03 10101110
04 Iξ04 00111010
05 Iξ05 10101011
06 Iξ06 00011101
... ... ...
98 Iξ98 01010011
99 Iξ99 11100101
00 Iξ00 01101011
+ Iξ+ 10101100
- Iξ- 01101001
, Iξ, 10011101

Выбор значения m определяется требуемым уровнем защищенности числовой информации. Кодовую таблицу можно заполнить N=(10m)! способами, следовательно, при m=1 для раскодирования истинных значений чисел потребуется перебор 10! (3 628 800) при m=2 — N=(102)!>10100, а при m=3 — N=(103)!>>101000 вариантов. Тем самым, при m=1 степень защищенности (учитывая возможности современной вычислительной техники) низкая, в то время как при значениях начиная с 2 она вполне достаточна [4, 5]. Оптимальное соотношение защищенности и накладных расходов достигается при m=2.

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

Для вычитания используется таблица размером 10m х 2 х 10m, поскольку необходимо учитывать перенос старшего разряда из других индексов при отрицательном результате вычитания.

При повышении значения m необходимый объем памяти для таблиц резко возрастает. Например, при m=2 он составит около 4 х 104 байт, а при m=3 — уже около 5 х 106 байт. Правда, таблицы размером 10m х 10m и 10m х 2 х 10m могут быть сведены к m таблицам размером 10 х 10 или 10 х 20. Но при этом из-за усложнения кодирования и реализации вычислений значительно возрастает время обработки.

Рис. 2. Фрагмент стохастической таблицы умножения
Iξ07

Iξji

Iξ07 Iξ25 Iξ05 Iξ10 Iξ03 Iξ48
Iξ05 Iξ00  Iξ35
0110101111101101
Iξ01  Iξ25
0110111001101100
Iξ00  Iξ25
0110101101101100
Iξ00  Iξ50
0110101110101111
Iξ00  Iξ15
0110101111101111
Iξ02  Iξ40
1101010110100001
Iξ25 Iξ01  Iξ75
0110111010101011
Iξ06  Iξ25
0001110101101100
Iξ01  Iξ25
0110111001101100
Iξ02  Iξ50
1101010110101111
Iξ00  Iξ75
0101011110101011
Iξ12  Iξ00
0001000101101011
Iξ96 Iξ06  Iξ72
0001110110111111
Iξ24  Iξ00
1010110001101011
Iξ04  Iξ80
0011101011110101
Iξ09  Iξ80
0001001101110111
Iξ02  Iξ88
1101010111011011
Iξ46  Iξ08
1110110011011100
Iξ03 Iξ00  Iξ21
0110101100110011
Iξ00  Iξ75
0110101110101011
Iξ00  Iξ15
0110101111100111
Iξ00  Iξ36
0110101110101010
... ...
Iξ10 Iξ00  Iξ70
0110101111000101
Iξ02  Iξ50
1101010110101111
Iξ00  Iξ50
011010111010111
... ... ...

Реализация вычислений

Для выполнения сложения, вычитания и умножения каждое число представляется в виде суммы индексов с учетом разрядности индексируемых групп цифр. Затем по соответствующей таблице определяется результат операции для каждого разряда; поразрядные результаты складываются с использованием таблицы сложения, и таким образом формируется общий результат в индексном представлении. На рис. 3 приведен пример умножения двух чисел по таблице, показанной на рис. 2. Деление выполняется «столбиком» с применением таблиц умножения, вычитания и сложения. Единственное отличие от обычного алгоритма то, что в качестве разрядов выступают индексы, заменяющие группу из m цифр.

Рис. 3. Умножение закодированных чисел
Iξ+ Iξ07 Iξ48 Iξ25 . Iξ+ Iξ05 Iξ96 =
= ( Iξ+ Iξ07 Iξ00 Iξji + Iξ+ Iξ48 Iξ00 + Iξ+ Iξ25 ) . ( Iξ+ Iξ05 Iξ00 + Iξ+ Iξ96 ) =
= Iξ+  Iξ07 Iξ00 Iξ00 . Iξ+ Iξ05 Iξ00 + Iξ00 Iξ48 Iξ00 . Iξ+ Iξ05 Iξ00 + Iξ+ Iξ25 . Iξ+ Iξ05 Iξ00 + Iξ+ Iξ07 Iξ00 Iξ00 . Iξ+ Iξ96 + Iξ+ Iξ48 Iξ00 . Iξ+ Iξ96 + Iξ+ Iξ25 . Iξ+ Iξ96 =
= Iξ+ Iξ35 Iξ00 Iξ00 + Iξ+ Iξ02 Iξ40 Iξ00 Iξ00 + Iξ+ Iξ01 Iξ25 Iξ00 + Iξ+ Iξ06 Iξ72 Iξ00 Iξ00 + Iξ+ Iξ46 Iξ08 Iξ00 + Iξ+ Iξ24 Iξ00 =
101011000110101111101101011010110110101101101011 +
+ 1010110011010101101000010110101101101011 +
+ 10101100011011100110110001101011 +
+ 1010110000011101101111110110101101101011 +
+ 10101100111011001101110010101100 +
+ 10101100101011000110100101101001 +
+ 1010110011101111001101001011110101101011 = Iξ+ Iξ44 Iξ59 Iξ57 Iξ00

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

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

Литература

  1. Насыпный В.В. Развитие теории построения открытых систем на основе информационной технологии искусственного интеллекта. М., 1994, 248 с.
  2. Насыпный В.В. Синтез систем обработки информации с защитой от программных закладок и вирусов. М., 1997, 28 с.
  3. Насыпный В.В. Комплексная защита компьютерных систем. «Мир ПК», 1998 г., № 4, с. 68—69.
  4. Диффи У., Хэллмэн М.Э. Защищенность и имитостойкость: Введение в криптографию. ТИИЭР, т. 67, 1979 г., № 3, с. 71—109.
  5. Теория и практика обеспечения информационной безопасности/Под ред. П.Д. Зегжда, М., 1996, 126 с.