Как стать автором
Обновить

Скремблер: надёжно и просто

Время на прочтение 5 мин
Количество просмотров 32K

Эта статья написана для того, чтобы рассказать читателю, что такое скремблеры, обозначить области их применения и затронуть некоторые практические тонкости, а также раскрыть секреты алгоритма скремблирования.

Зачем и почему?

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

Что же такое скремблер?

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

Как это работает?

У нас имеется передающая сторона, на которой выполняется скремблирование, а также принимающая сторона, на которой соответственно выполняется дескремблирование, то есть обратная операция. Исходная последовательность подается на вход скремблера, а также именно она выделяется дескремблером из принятой зашифрованной последовательности.

Главной частью скремблера является линейный n-каскадный регистр сдвига с обратными связями, генерирующий псевдослучайную последовательность (ПСП) максимальной длины 2^n-1. Основная операция, производимая при шифровании – сложение по модулю 2, то есть XOR (исключающее ИЛИ).

Типы скремблеров

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

СС-скремблер

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

Сам алгоритм скремблирования в этом случае можно рассмотреть на простейшем примере.

CC-скремблер
CC-скремблер

Несложно заметить, что при выполнении такого алгоритма большую опасность представляет "лавинный эффект" вследствие размножения ошибок. Это происходит именно из-за того, что для шифрования каждого следующего бита используется результат шифрования предыдущих. А значит, что при ошибке в одном бите мы получим уже n неправильно зашифрованных бита (где n – число обратных связей регистра), которые впоследствии приведут к ошибке в 2n и так далее. Другой проблемой самосинхронизирующихся скремблеров является то, что первые k битов входящей последовательности в принципе не будут зашифрованы. К счастью, этого легко избежать искусственным добавлением шума в начало последовательности.

АД-скремблер

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

Сам алгоритм скремблирования в этом случае можно рассмотреть на простейшем примере.

АД-скремблер
АД-скремблер

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

Синхронизация

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

Зацикливание и построение алгоритма

Разрядность скремблера – разрядность устройства памяти – идентична длине ключа для блочных шифров. От нее напрямую зависит криптостойкость данной системы. При длительном скремблировании неизбежно возникает зацикливание, то есть через определенное число тактов регистр возвращается в исходное состояние, после чего шифрование будет циклически повторяться. Это повторение происходит непосредственно из-за того, что в n ячейках регистра возможны только 2^n комбинаций бит, а значит, максимум через 2^n-1 комбинаций состояние станет идентичным начальному. А значит, мы хотим достигнуть именно этой максимальной длины.

К счастью, для скремблера любой разрядности n существует такая комбинация обратных связей, при которой период 2^n реализуем. То есть за 2^n-1 тактов значения в регистре ни разу не повторятся. Оказывается, для этого достаточно, чтобы скремблер был построен на основе неприводимого полинома степени n, не представимого по модулю 2 в виде произведения никаких других полиномов. Выбранные таким способом обратные связи и используются в схемах скремблирования, при этом мы получаем генератор последовательностей наибольшей длины (ПНД).

Алгоритм построения следующий:

  • находим неприводимый полином степени n

  • отбрасываем старший разряд в его двоичном представлении, так как он несет информацию только о степени этого полинома

  • по полученному двоичному представлению строим скремблер, 1 на соответствующих разрядах говорят о наличии обратной связи, 0 – об ее отсутствии

Так, например, для 15-ти разрядного регистра мы имеем неприводимый полином x^{15}+x+1с двоичным представлением 1000000000000011. После отбрасывания старшего бита получаем 000000000000011, то есть скремблер с алгоритмом: out = (r_{14} \oplus r_{15}) \oplus in .

Что в итоге?

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

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

Тем не менее скремблеры повсеместно применяются и сейчас, как из-за простоты реализации, так и из-за других очевидных преимуществ данного алгоритма.

Теги:
Хабы:
+27
Комментарии 6
Комментарии Комментарии 6

Публикации

Истории

Работа

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн