Подальше положишь, поближе возьмешь

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

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

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

Каждый, кто использует систему сокрытия информации, должен иметь четкое представление о том, что ни одна система не дает 100% гарантии конфиденциальности. Народная мудрость гласит: "То, что сделал один, другой всегда может сломать". Вопрос только в том, какие силы и какое время потребуется для достижения поставленной цели.

К простым методам можно отнести защиту, базирующуюся на изменении порядка следования букв в алфавите, а также метод, основанный на выполнение логической операции исключающего ИЛИ кода символа и пароля.

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

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

Кроме того, существуют экзотические методы сокрытия информации. Например, секретная информация записывается в определенные места произвольной информации, в качестве которой используются картинки.

Взяв лучшее у рассмотренных систем, автор разработал собственный метод шифрования информации. Он базируется на известном методе "Решетка", имеющем древнюю историю - его использовали большевики, когда готовили октябрьскую революцию, и даже мы, когда играли в казаков-разбойников, войну и другие игры. Метод основан на перестановке единиц информации внутри сообщения по определенным правилам.

Для того, чтобы зашифровать и расшифровать информацию, необходимо иметь "решетку". "Решетка" представляет собой квадрат, поделенный на равные квадратики. Четверть квадратиков выбрана для специального использования. На рис.1 они помечены черным цветом.

Рис. 1. Решетка
для шифрования

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

Рис. 2. Сообщение
зашифровано

Титры фильма о приключениях Шерлока Холмса и доктора Ватсона зашифрованы по методу "решетка". Чтобы зритель мог их прочитать, на титры накладывают решетку, в выбранных квадратиках которой появляется связанный текст.

Чтобы создать "решетку", нужно сделать следующее:

  1. Разделить решетку на 4 равные части (рис.3).
  2. Квадратикам каждой части присвоить уникальный порядковый номер от 1 до 16 (рис.4) по следующим правилам:
    • в I части нумерация начинается с левого верхнего угла слева направо;
    • во II - с правого верхнего угла сверху вниз;
    • в III - с правого нижнего угла, справа налево;
    • в IV - с левого нижнего угла снизу вверх.
  3. Определить, в какой части будет находиться каждый из 16 квадратиков.
  4. Используя рис. 3 и 4, определить положение квадратика в решетке.
Рис. 3.
Расположение
частей
в решетке
Рис. 4. Расположение
квадратиков в решетке

Продемонстрируем это для нашего случая (табл.).

Таблица 1. Расположение квадратиков в решетке
Порядковый номер квадратика 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Номер части 1 3 2 3 4 1 2 4 1 2 4 4 2 3 1 3

Чтобы использовать компьютер в качестве чернорабочего, перейдем из мира образов в мир цифр. Исходное сообщение представляет собой линейный список единиц информации. При перестановке i-ой единицы информации ее новое местоположение j определяется по формуле:

j = (¦x(i, k)-1) * n + ¦y(i, k),

где ¦x и ¦y - функции определяющие местоположение квадратика в решетке; i - номер текущей единицы информации; k - номер части в которой находится бит; n - длина стороны решетки:

n = [Ц L ],

где L - длина сообщения, зашифровываемая за один раз, байт.

Криптостойкость метода определяется количеством вариантов возможных перестановок единиц информации. Каждый квадратик можно взять в 4 местах, поэтому, для приведенного примера, существует 42n варианта решеток. При n=8, это составит 4.29 * 109 вариантов. Много это или мало? Если дешифрование информации осуществлять вручную, затрачивая на проверку одного варианта решетки одну минуту, то полный перебор вариантов займет 8166 лет.

Если для дешифрования использовать вычислительную технику, которая будет проверять 1.000.000 вариантов в секунду, то информация будет дешифрована за 1 час 12 минут.

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

L = [Ц S ],

где S - длина всего сообщения, бит.

Это позволяет при зашифровывании сообщения длиной 64 байта увеличить размер решетки с 64 квадратиков до 512. В этом случае для дешифрования сообщения вычислительной машине потребуется перебрать 4128 вариантов, что, согласитесь, несколько больше.

Если кому-то и этого покажется мало, следует перейти от плоской решетки к объемной, от квадрата - к кубу. Куб состоит из слоев, расположенных перпендикулярно граням. Количество слоев на всех гранях одинаково и зависит от размера решетки. Зашифрование данных, перестановка битов осуществляется послойно. Порядок зашифровывания слоев произвольный, что увеличивает криптостойкость. Слой зашифровывается один раз.

Подведем итоги. Процесс зашифровывания/расшифровывания информации предлагаемым методом осуществляется в следующей последовательности:

  1. Определить размер решетки S.
  2. Определить количество слоев N в кубе.
  3. Выбрать слой.
  4. Определить начальную сторону квадрата.
  5. Переставить L/4 бит в слое.
  6. Повернуть квадрат.
  7. Повторить пункты 5 и 6 еще 3 раза.
  8. Выбрать другой слой.
  9. Повторять пункты 4 - 8, N - 1 раз.

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

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

Сергей ОСОКО

Версия для печатиВерсия для печати

Номер: 

34 за 1997 год

Рубрика: 

Азбука программирования
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!