![](/user_photo/2706_HbeT2.jpg)
Шифры побитовой обработки
С наступлением ХIХ века и шквалом изобретений в области электричества, а затем и радио криптография перешла на качественно новый уровень - началась эра цифровой криптографии. Представление символов сначала в виде чисел из некоторого диапазона, а затем и в виде двоичных сигналов (код Морзе: “точка/тире” “единица/ноль”. “сигнал/пауза’) открыло огромные возможности для шифрования.
Революционным шагом в криптографии стало предложение сотрудника телефонной компании Г. Вернама в 20 годах ХХ века автоматизировать шифрование телетайпных посланий по следующей схеме. Информация на телетайпной ленте представляла собой последовательность отверстий и не пробитых участков, соответствующих нулям и единицам. Вернам предложил на передающей стороне разместить замкнутую в кольцо ленту с довольно длинной последовательностью подобных же нулей и единиц — она играла роль пароля. В момент передачи очередного импульса в канал связи лента- пароль сдвигалась на одну позицию и с нее считывалось текущее двоичное значение. Если был считан 0, то исходный двоичный сигнал не изменялся, если на ленте-пароле в этом месте оказывалась 1, то исходный сигнал инвертировался. На приемной стороне должна была присутствовать точно такая же лента и, причем в том же начальном положении, как у отправителя. Процедура дешифрования точно соответствует процедуре шифрования.
Помимо того, что шифровальный аппарат Вернамабыл, по-видимому, первым полностью автоматическим электрическим шифратором, данная схема содержала две очень интересные идеи. Во-первых, в ней была применена операция сложения по модулю 2, ставшая базовой в цифровой криптографии. Заметим, что если примененную Вернамом операцию изменения одного бита в замости от значения другого представить, как сложение двух двоичных чисел с отбрасыванием старшего бита, то правило выполнится для всех четырех возможных комбинаций: 0Å0=0, 0Å1=1, 1Å0=1, 1Å1=0. Подобная операция имеет еще одно название — исключающее ИЛИ - и записывается двумя обозначениями: «Å» и ХОR– английским сокращением от исключающее ИЛИ (англ. eXclusiveOR). В отношении сложения по модулю 2 интересен еще один факт — обратной к нему , т.е. восстанавливающей операцией является кроме вычитания по модулю 2 еще и сама эта операция, т. е. для любых Х и У выполняется (ХÅУ)ÅУ=Х - это очень удобное свойство нередко используется в различных современных шифрах и схемах.
Вернам предполагал использовать ключ только один раз. Длина ключа равна длине шифруемого открытого текста. Впоследствии К. Шеннон доказал что такой шифр не раскрываем. Однако сложности формирования, хранения и передачи ключа, длина которого равна длине открытого текста, делают такой метод очень непрактичным и дорогостоящим.
Вторым интересным моментом оказалось то, что если ленту, склеенную у Вернама в кольцо, сделать потенциально бесконечно длинной, и равной длине сообщения, то данный шифр станет, абсолютно стойким. Не имея информации о ленте-пароле, третья сторона не сможет сделать никаких предположений о содержании исходного сообщения. Ведь, сам факт взлома шифра может быть установлен только в том случае, когда дешифровщик получит из перехваченного послания какое-либо осмысленное сообщение. А если пароль по длине равен самому сообщению, то существует огромное множество потенциальных паролей, которые при наложении на шифровку будут давать осмысленный текст — и все время разный. Из одного и того же послания, подбирая разные пароли, можно прочесть и «Я Вас люблю» “Уходи прочь”.
Недостатком такой системы является неудобство хранения большого пароля, а главное — одноразовость его использования. Ведь получается, что для каждого послания необходим свой пароль, а значит, отправителю и получателю нужно предварительно им обменяться. Решение состоит в заблаговременном обмене большим объемом ключей и надежном хранении их «до поры до случая». Естественно, в современном мире роль ленты пароля играет уже двоичная информация на цифровом носителе, а само преобразование выполняется вычислительной техникой. Но одноразовый блокнот, как теперь называют данную схему, все еще имеет очень широкое применение именно из-за своей 100%-й стойкости к взлому при перехвате шифровок третьей стороной.
Цифровые компьютеры положили начало новому методу шифрования, основывающемуся на обработке бит, составляющих символы исходного текста. Хотя побитовая обработка является вариацией шифра замены, концепции, методы и возможности отличаются столь значительно, что он должен рассматриваться, как отдельный вид шифра.
Шифры побитовой обработкихорошо подходят для применения в компьютерах, так как они используют операции, легко выполняемые компьютерами.
Шифры побитовой обработки преобразуют исходную информацию в шифрограмму, изменяя исходную битовую комбинацию каждого символа с помощью одного или нескольких следующих логических операторов:
AND OR NOT XOR
Простейший и наименее стойкий шифр использует только оператор NOT (напомним, что оператор NOTвызывает инверсию каждого бита в байте: 1 переходит в 0, а 0 в 1). Следовательно, байт, инвертированный дважды, равен исходному.
Существует два недостатка в данной простой схеме шифрования. Во-первых, программа шифрования не требует ключа для декодирования, следовательно, любой имеющий доступ к программе может декодировать файл. Во-вторых, и возможно это более важно, данный метод мог бы разгадать любой опытный программист.
В улучшенном методе кодирования с помощью побитовой обработки используется оператор XOR. Оператор XOR имеет следующую таблицу истинности:
XOR
-
0
0
0
0
1
1
1
0
1
1
1
0
Результат операции XOR равен TRUE (истина) тогда и только тогда, когда один оператор равен TRUE, а второй - false (ложь). Это дает XOR уникальные свойства: если выполнить операцию XOR над двумя байтами, один из которых называется ключем, а затем взять результат и ключ и снова применить к ним операцию XOR, то в результате получим исходный байт, как показано ниже:
1101 1001
XOR 0101 0011 /ключ/
1000 1010
равны
1000 1010