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

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

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

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

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

Скремблер (от англ. 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 .

Что в итоге?

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

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

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

Similar posts

Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 6

    0
    Есть ли какие-нибудь примеры как это реализуется? А то уж больно теоретическая статья получается.
    «Иногда возникает необходимость зашифровать трафик...»

    И что надо делать? Я так понимаю, что это хороший способ организовать действительно секретный канал, а то всё распространённое слушается кем не надо.
      +2
      На сколько я знаю(и уже заметили ниже), скремблеры не являются криптографически стойкими алгоритмами и для шифрования применимы, как сказал автор, только если хотим забелить сигнал или защифровать не так уж и нужно. Но скремблеры точно очень популярны в usb/sd контроллерах, которые работают с памятью типа nand flash, например. Это нужно для равномерного износа flash памяти. Т.е. скремблер есть в контроллере, когда информация проходит с ПК через контроллер, она скремблируется и в nand-e уже хранится псевдослучайные последовательности) Ну и учитывая, что преобразование обратимо — контроллер также восстанавливает данные, когда ПК их запросит.
      +6

      все приведённые в статье скремблеры основаны на LFSR и являются линейными (используют только операцию XOR). они не являются криптографически стойкими и их нельзя ни в коем случае применять для шифрования и, стало быть — теги неправильные.


      но зато их можно с успехом применять для 'забеливания' сигнала и его спектра при передаче, равномерно и шумообразно распределяя в нём единицы и нолики, если исходный сигнал в виде потока битов не обладает такими свойствами. например такие скремблеры (а конкретно самосинхронизирующийся вариант) применяются в pci express (начиная с gen3), usb3, 10g ethernet (в варианте с 1 проводом/волокном с битрейтом в нём 10 гбит/с). профиты от такого скремблирования включают в себя возможность вставлять конденсаторы в разрыв линии передачи (в каждый провод) и простое восстановление тактовой частоты такого сигнала на PLL (т.н. clock recovery), т.к. фронты в таком зашумленном сигнале довольно часты.

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

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

        Очередная статья очередного студента. Поток пошел «так себе статей».
        По видимому курсовые… А плюсы к статье, скорее всего сокурсники ставят.
        Ну не надо загаживать курсовыми хабр. Ну пожалуйста!
          +5
          Все авторы «так себе статей» с тегами «Информационная безопасность, Криптография, Алгоритмы» зарегистрированы приблизительно в одно время. 15-20 декабря 2020 года. Все статьи имеют похожий стиль изложения (как реферат) и представляют простую компиляцию информации. Причем, зачастую даже не особо утруждаясь изложить своими словами прочитанное.

          Судя по количеству "+" (около 20) которые появляются практически одновременно в момент публикации и в похожих количествах — это группы одного потока.

          Студенты а так же их преподаватели. Ну имейте же совесть!
          Найдите другую площадку для публикации рефератов и манипуляций с лайками!

          Или у вас преподаватели такие идиоты, что ведутся на такое?
            0

            а может наоборот преп попался 'креативный' :)

          Only users with full accounts can post comments. Log in, please.