пятница, 18 апреля 2014 г.

Запись цифровой информации в колоду игральных карт

кодирование информации картами

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


В ЧЕМ ИДЕЯ?

Американский инженер и писатель Тим Уорринер (Tim Warriner) исследовал различные методы сокрытия цифровой информации в игральных картах и разработал два основных принципа хранения данных: базовый и рекурсивный.

Базовый метод заключается в том, что позиция каждой карты в колоде представляет собой двоичное значение — единицу или ноль. Зная заранее заданный порядок расположения карт, можно считать записанную информацию по наличию или отсутствию предполагаемой карты в наборе. Например, зная, что оригинальный порядок карт [2, 7, 4, 6, 8], и имея на руках набор из [2, 4, 6], можно получить данные вида 10110. Место «пропущенных» в известном наборе карт занимают нули.

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

В дополнение к базовому методу исследователь предлагает увеличить плотность хранения данных, используя рекурсивные алгоритмы. Принцип основывается на возможности сделать вывод о том, какие карты использовались для представления каких символов в предыдущей части закодированного сообщения, и в соответствии с этим в дальнейшем извлекать новые данные из уже расшифрованной части колоды. Так, с помощью различных комбинаций с повторным использованием карт и перемещения частей колоды вниз, Уорринер сумел добиться показателя в 550 бит на колоду: 55 символов 10-битными числами, то есть по 10,58 бит на карту.

ТАК ЛИ БЕЗОПАСНО?

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