СПОСОБ ШИФРОВАНИЯ ИНФОРМАЦИИ
METHOD OF CODING INFORMATION

Изобретение относится к области стеганографии и шифрованию информации, а именно к способу шифрования путём вычисления необратимых сигнатур фрагментов сообщения с использованием ключевой строки, и записи полученных сигнатур-контейнеров, например, в файл. И последующей расшифровки такого сообщения путём перебора вариантов фрагментов сообщения, вычисления необратимых сигнатур упомянутых фрагментов с использованием ключевой строки, и сравнения их с сигнатурами-контейнерами из файла. Изобретение может быть использовано для организации хранения, и передачи конфиденциальной информации по открытым каналам связи.
Уровень техники
Известны способы стенографической защиты информации, основанные на внедрении дополнительной информации в растровые изображения путем замены младших значащих битов в байтах цветового представления исходного изображения битами добавляемой информации [1,3].
Известен способ внедрения дополнительной информации в цифровые изображения, в котором для противодействия статистическим методам анализа используется только часть младших значащих битов в байтах цветового представления исходного изображения, а оставшиеся биты используются для последующей коррекции наиболее важных статистических параметров [2].
Известен способ внедрения дополнительной информации в цифровые изображения [4], заключающийся в том, что исходное цифровое изображение раскладывают на битовые слои, для записи дополнительной информации выбирают один из полученных битовых слоев, который представляют в виде битовой последовательности, запись дополнительной информации осуществляют с помощью кода, при этом в полученной битовой последовательности биты, расположенные на границах всех переходов одинаковых последовательностей нулей и единиц, заменяют в соответствии с битами записываемой дополнительной информации оставшиеся биты нижележащих битовых слоев при необходимости используют для коррекции исходного изображения или для записи другой дополнительной информации.
Наиболее близким по технической сущности к заявляемому изобретению (прототипом) является способ встраивания сжатого сообщения в цифровое изображение[5], заключающийся  в том, что в способе встраивания сообщения в цифровое изображение, применена процедура сжатия встраиваемого сообщения относительно самого цифрового изображения. Сжатие встраиваемого сообщения осуществляют путем поиска совпадений фрагментов сообщения и части цифрового изображения, не содержащей наименее значащие биты, методом «скользящего окна», замены совпавших фрагментов сообщения указателями на адреса их положения в цифровом изображении, формирования упорядоченного списка адресов и последующей передачи таблицы адресов, которая не несет семантической информации и объем которой значительно меньше объема исходного сообщения.
Недостатком перечисленных способов является отсутствие процедур шифрования передаваемого сообщения непосредственно в процессе встраивания сообщения в другой цифровой объект. Более того, из уровня техники не известно способов обратимого шифрования сообщений с использованием необратимых алгоритмов - все алгоритмы для обратимого шифрования изначально обратимы, то есть путем сложных вычислений можно узнать и алгоритм и ключ, вопрос состоит только в том, сколько времени потребует этот процесс.
Целью настоящего изобретение является повышение уровня защиты конфиденциальной информации во время ее хранения и передачи по открытым каналам связи, при невозможности расшифровки этой информации любыми методами в актуальные сроки. Устранение того общего недостатка, что все алгоритмы для обратимого шифрования изначально обратимы за счёт использования в качестве контейнеров для фрагментов информации необратимых сигнатур.
Поставленная цель достигается тем, что необратимые сигнатуры используют в качестве контейнера для фрагментов конфиденциальной информации. Так, при зашифровке исходную информацию разбивают на фрагменты одинаковой оговоренной длины. Каждый такой фрагмент встраивают в тело оговоренной ключевой строки или потока на оговоренную позицию и вычисляют необратимую сигнатуру-контейнер, изменённой ключевой строки или потока, например, по алгоритму MD5. После чего записывают полученную сигнатуру в зашифрованный поток. При расшифровке сигнатуры считывают из зашифрованного потока и передают переборщику. Переборщик в циклической последовательности согласно оговоренной длине фрагмента и набору символов генерирует предполагаемое значение фрагмента, после чего встраивает его в тело ключевой строки или потока на оговоренную позицию и вычисляет сигнатуру изменённой ключевой строки или потока, затем сравнивает её с прочитанной из зашифрованного потока сигнатурой-контейнером. Если сигнатуры совпадают, переборщик останавливается и возвращает текущее значение фрагмента, а если нет, цикл повторяется с изменением предполагаемого значения фрагмента на один шаг перебора. Когда переборщик возвращает значение, это значение записывают в расшифрованный поток и считывают следующую сигнатуру из зашифрованного потока. При зашифровке перед вычислением сигнатуры изменённой ключевой строки к строке добавляют порядковый номер фрагмента в исходном потоке - для исключения повторения сигнатур в зашифрованном потоке, а при расшифровке - порядковый номер сигнатуры, находящейся в процессе расшифровки, для коррекции ключевой строки. Возможна чрезвычайно редкая ситуация, при которой одну и ту же сигнатуру будут иметь два разных объекта, такую ситуацию называют «коллизия». Для преодоления ситуации - когда после в целом, успешной расшифровки какой-то фрагмент расшифрованного текста не вписывается в текст - грамматически, или по смыслу, можно применить режим полного перебора. Режим полного перебора заключается в том, что при расшифровке переборщик проводит перебор всех предполагаемых значений фрагмента, и в случае обнаружения более одного совпадения, возвращает второе и последующие значения фрагмента, например, в фигурных скобках. Очерёдность обработки сигнатур или фрагментов информации в процессе зашифровки и расшифровки, определяется конкретной программной реализацией настоящего способа - для ещё большего усложнения процесса расшифровки информации, в случае её перехвата. Если при обработке очередной сигнатуры из зашифрованного потока переборщик, дойдя до конца перебора, не возвращает значение, то в расшифрованный поток записывают фрагмент, например, «xxx» и считывают следующую сигнатуру из зашифрованного потока. Если ситуация, описанная выше, повторяется более трёх раз подряд с начала расшифровки, то при выбранных параметрах перебора расшифровку считают невозможной.
Алгоритм MD5 использован в качестве примера, на практике с успехом можно использовать любой алгоритм семейства SHA-2. Однако известно, что любой алгоритм семейства SHA-2 затрачивает больше времени на вычисление сигнатур, чем алгоритм MD5, это особенно важно при расшифровке.
Известно, что MD5 сигнатура является необратимым уникальным отпечатком любого цифрового объекта, это может быть, строка, файл, буфер памяти, поток, словом, все что угодно. MD5 сигнатура представляет собой 32-разрядное шестнадцатеричное число в диапазоне от 0 до FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF (шестнадцатеричное) или от 0 до 1 на 16 в 32-й степени (десятичное). Можно утверждать, что строка «мак» имеет сигнатуру 704F9BF8041A69A517606FF7D3E40DC9, а строка «рак» имеет сигнатуру 0D7EE8668EF3999D4C02F16DBBEB1310, и перепутать эти две строки по сигнатуре невозможно, больше того по сигнатуре почти никак нельзя узнать, какая это была строка. Однако если искомая строка имеет длину в пределах 15 максимум в 20 символов, то ее можно восстановить / обратить путем прямого перебора. Но необратимая сигнатура тем и хороша, что она необратима - провести её прямую расшифровку в короткие сроки практически невозможно, на обычных компьютерах прямой подбор строки длиной более 20 символов полной кодовой таблицы занимает несколько лет. Если попытаться обратить прямым перебором сигнатуру CF2F116B82B011B2DF3127698D2182D3 какой-то строки, и  предположить, что в её составе присутствуют только русские маленькие буквы, а её длина составит максимум 20 символов, то перебор строки длиной в один символ - это 33 операции, длиной в два символа - это уже 33 в квадрате, а в три символа - это 33 в кубе и так далее. Видно, что удлинение искомой строки дает лавинообразное увеличение количество необходимых операций перебора. Примерно через 10 месяцев перебор дойдёт до 17-го знака, а потом окажется, что искомая строка есть «боЧка». Ясно, что многомесячный процесс перебора прошел даром только потому, что не учитывалась возможность присутствия большой буквы, а с учётом возможности присутствия всех символов кодовой таблицы переборщику пришлось бы выполнить, в пределе, 1 на 256 в 20-й степени операций перебора. Не зная условия перебора, обратить сигнатуру строки длиной более 20 символов на обычных компьютерах практически невозможно.
Однако если вычислить MD5 сигнатуру фразы, например, «Платон мне [рак] друг, но истина дороже» (647BD38D58B893BF7BAE193A19B949C5), то естественно, она  будет отличаться от сигнатуры строки «рак» (0D7EE8668EF3999D4C02F16DBBEB1310). Тогда, пытаясь расшифровать сигнатуру (647BD38D58B893BF7BAE193A19B949C5), не зная ключевой фразы «Платон мне [] друг, но истина дороже» внутри которой находится маленькая строчка «рак», мы можем перебирать сколь угодно долго, а зная эту фразу, перебор трехбуквенного значения займет секунды. Другими словами, если ключевая фраза неизвестна, то расшифровка / обращение сигнатуры сводится к прямому перебору неизвестной последовательности байтов, неизвестной кодовой таблицы и неизвестной длины, а это очень сложная задача для любой вычислительной системы, независимо от её мощности.
Если в качестве ключевого потока будет использоваться какой-то общеизвестный текст относительно большой длины (в сотни килобайт), изменённый по договоренности перед шифрованием (например, в этом тексте можно все пробелы заменить цифрой 0). А MD5 сигнатура, как известно это всего 32 буквы, то подбор того, что же это был за текст, займёт неприемлемо много времени.
Можно заметить, что суперкомпьютеры, предназначенные, например, для расчета погоды или для моделирования ядерных испытаний, или, может быть, кларковые компьютеры, в глубокой теории могут обратить сигнатуру длинной строки очень быстро. Но если предположить, что для расшифровки могут применяться такие компьютеры, можно использовать другой алгоритм шифрования, необратимый для них, главное, чтобы это был необратимый алгоритм.
Более того, решающее значение имеет также позиция встраивания фрагмента в ключевой строке, не зная её, расшифровать зашифрованный фрагмент невозможно.
Понятно, что шифровать длинный текст по три буквы на сигнатуру малопроизводительно, а по шесть и более в принципе можно, но чем длиннее сегмент текста, тем больше времени займёт расшифровка. Для простых компьютеров можно принять четыре буквы, это производительно, но не слишком медленно при расшифровке.
Сущность изобретения поясняется примерами.
Пример 1
Ключ шифрования: «Платон мне [****] друг, но истина дороже» (где «*» место для очередного фрагмента текста)
Шифрованный текст:
Результат расшифровки: «Любовь - послание небес, она не всем дана на свете.»
Пример 2
Ключ шифрования: «Платон мне [****] друг, но истина дороже» (где «*» место для очередного фрагмента текста)
Шифрованный текст:
Результат расшифровки: «Счастье - нежная мечта.»
Пример 3
,
Ключ шифрования: «Платон мне [****] друг, но истина дороже» (где «*» место для очередного фрагмента текста)
Шифрованный текст:
Результат расшифровки: «Счастье - нежная мечта.»
Пример 4
Ключ шифрования: засекречен
Шифрованный текст:
Результат расшифровки: расшифровка невозможна
И в самом деле, уважаемые господа эксперты, скажите, что здесь написано? - Наверняка, Вы быстро не скажете.
Способ осуществляется следующим образом.
Очевидно, что для передачи шифрованных данных из пункта А в пункт Б необходимо соблюдение как минимум 3-х условий:
1) наличие в пунктах А и Б специализированного программного обеспечения (шифратора и дешифратора, для удобства выполненных в виде объединённой программы),
2) наличие в пунктах А и Б информации о ключе шифрования,
3) наличие в пунктах А и Б информации о параметрах шифрования.
Параметры шифрования - это, например, длина фрагмента, позиция встраивания фрагмента, договоренность о порядке изменения ключа и другая информация, уточняющая условие перебора.
В общем случае процесс передачи данных выглядит так.
При зашифровке. текста в пункте А шифратор разбивает исходный шифруемый текст на фрагменты согласно параметрам шифрования, затем согласно этим же параметрам встраивает каждый очередной фрагмент в тело ключевой строки (как показано в примерах) и вычисляет MD5 сигнатуру изменённой ключевой строки, после чего записывает эту сигнатуру в выходной шифрованный поток с сохранением его в файл после окончания процесса зашифровки. Таким образом, MD5 сигнатура является необратимым контейнером для каждого фрагмента текста. Такой шифрованный файл, можно передавать в пункт Б по любым каналам связи, включая открытые, при этом желательно, чтобы ключ шифрования изменялся по договоренности достаточно часто, в идеале, каждый шифрованный текст должен иметь уникальный ключ (например, можно к оговорённому ключу приписывать дату и час шифрования).
Такой шифрованный файл, в случае его перехвата, предстанет перед криптоаналитиком  в виде неповторяющихся необратимых сигнатур неизвестных цифровых объектов, подобно примеру 4.
При расшифровке в пункте Б дешифратор считывает очередную сигнатуру из потока, в который был открыт шифрованный файл, и передает её встроенному переборщику. Переборщик в циклической последовательности согласно параметрам шифрования генерирует предполагаемое значение фрагмента текста, после чего согласно этим же параметрам встраивает его в тело ключевой строки и вычисляет MD5 сигнатуру изменённой ключевой строки, затем сравнивает её с прочитанной из потока сигнатурой. Если сигнатуры совпадают, переборщик останавливается и возвращает текущее значение фрагмента дешифратору, а если нет, цикл повторяется с изменением предполагаемого значения фрагмента на 1 шаг перебора. Когда переборщик возвращает значение, дешифратор записывает это значение в выходной расшифрованный поток и переходит к считыванию следующей сигнатуры из потока с возможным сохранением расшифрованного потока в файл после окончания процесса расшифровки.
Изобретение не ограничивается изложенными применениями.
Технический результат изобретения выражается в обеспечении возможности хранения и передачи конфиденциальной информации при невозможности расшифровки этой информации любыми методами в актуальные сроки благодаря использованию необратимых алгоритмов шифрования. Можно также сказать, что при шифровании одного и того же текста разными ключами, различающимися всего на одну букву, результат шифрования будет совершенно различен, сравните  примеры 2 и 3. Более того, даже зная какой-то фрагмент расшифрованного текста, расшифровать весь текст по этому фрагменту будет невозможно.
Список использованных материалов
1. Bender W., Gruhl D., Morimoto N., Lu A., Techniques for data hiding, IBM system journal, VOL 35 (3&4): pp. 313-336, 1996.
2. Provos N. Defending Against Statistical Steganalysis, Proceeding of the 10 USENIX Security Symposium, 2001, pp. 323-335.
3. RU 2002135272 A, Класс МПК: G09C5/00, Опубликовано: 10.07.2004.
4. RU 2288544 C2, Класс МПК: H04L9/00, Опубликовано: 27.11.2006.
5. RU 2467486 C1, Класс МПК: H04L9/00, Опубликовано: 20.11.2012.