Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi] Программа скремблер 
:(
    Опции темы
Apollion
Дата 21.5.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 21.5.2009

Репутация: нет
Всего: нет



Уважаемые программисты, нужно написать программу шифрования  методом скремблирования. Не могу понять даже теорию.. помогите пожалуйста!!

Теория:
Скремблерами называются программные или аппаратные реализации алгоритма, позволяющего шифровать побитно непрерывные потоки информации. Скремблер представляет набор бит, изменяющихся на каждом шаге по определенному алгоритму. После выполнения каждого очередного шага на его выходе появляется шифрующий бит – либо 0, либо 1, который накладывается на текущий бит информационного потока операцией XOR (eXclusive OR). 
Суть скремблирования заключается в побитном изменении проходящего через систему потока данных. Практически единственной операцией, используемой в скремблерах является XOR – "побитное исключающее ИЛИ". Параллельно прохождению информационного потока в скремблере по определенному правилу генерируется поток бит – кодирующий поток. Как прямое, так и обратное шифрование осуществляется наложением по XOR кодирующей последовательности на исходную.
Генерация кодирующей последовательности бит производится циклически из небольшого начального объема информации – ключа по следующему алгоритму: 
Кодирующая последовательность бит формируется некоторым генератором псевдослучайной последовательности чисел, в дальнейшем ГПЧ. Один из вариантов его реализации может использовать сдвиговый регистр с обратной связью. Суть его работы заключается в следующем.
 Из текущего набора бит выбираются значения определенных разрядов и складываются по XOR между собой. Все разряды сдвигаются на 1 бит, а только что полученное значение ("0" или "1") помещается в освободившийся самый младший разряд. Значение, находившееся в самом старшем разряде до сдвига, добавляется в кодирующую 
                                  
последовательность, становясь очередным ее битом ( рис.1).
Из теории передачи данных криптография заимствовала для записи подобных схем двоичную систему счисления. В соответствии с этой системой, изображенный на рисунке ГПЧ записывается комбинацией (10011)2 – единицы соответствуют разрядам, используемых для формирования обратной связи. Для инициализации работы ГПЧ необходимо указать его начальное состояние – ключ. Как и в предыдущем случае, ключ определяется некотором двоичным кодом, например  (01111)2. 

Рассмотрим пример кодирования информационной последовательности 0101112 скремблером, использующим ГПЧ  1012 с  ключом 1102.
 ГПЧ     код.бит   инф.бит   рез-т
 1 1 0  _
  \ \    \_
 1 1 1  _  \_
  \ \    \_   0   XOR   0    =   0
 0 1 1  _  \_
  \ \    \_   1   XOR   1    =   0
 1 0 1     \_
  \ \         1   XOR   0    =   1
и т.д.

Декодирование заскремблированных последовательностей происходит по той же самой схеме, что и кодирование. Для этого в алгоритмах применяется результирующее кодирование по "исключающему ИЛИ" – схема, однозначно восстановимая при раскодировании без каких-либо дополнительных вычислительных затрат. 
Основная проблема шифров на основе скремблеров - синхронизация передающего (кодирующего) и принимающего (декодирующего) устройств. При пропуске или ошибочном вставлении хотя бы одного бита вся передаваемая информация необратимо теряется. 
Число бит, охваченных обратной связью, то есть разрядность устройства памяти для порождающих кодирующую последовательность бит называется разрядностью скремблера. Изображенный выше скремблер имеет разрядность 5. Можно отметить, что чем больше разрядность  ГПЧ скремблера, тем выше криптостойкость системы, основанной на его использовании. 
При достаточно долгой работе скремблера неизбежно возникает его зацикливание. По выполнении определенного числа тактов в разрядах ГПЧ создастся комбинация бит, которая в нем уже однажды оказывалась, и с этого момента кодирующая последовательность начнет циклически повторяться с фиксированным периодом. Данная проблема неустранима по своей природе, так как в N разрядах не может формироваться более 2N различных комбинаций бит, и, следовательно, максимум, через, 2N-1 циклов повтор комбинации обязательно произойдет. Комбинация "все нули" сразу же исключается из цепочки графа состояний скремблера – она приводит скремблер к такому же положению "все нули". Это указывает еще и на то, что ключ "все нули" неприменим для скремблера. Каждый генерируемый при сдвиге бит зависит только от нескольких бит хранимой в данный момент комбинации. Поэтому после повторения некоторой ситуации, однажды уже встречавшейся в скремблере, все следующие за ней будут в точности повторять цепочку, уже прошедшую ранее в скремблере.   
Возможны различные типы графов состояния ГПЧ. С позиций криптографии наиболее важным является случай, когда  все 2N-1 состояний системы образуют цикл. При этом  период повторения выходных комбинаций максимален, а корреляция между длиной цикла и начальным состоянием ГПЧ  - ключом  (приводящая к появлению более слабых ключей) отсутствует.
Следствием одной из теорем математики доказывается (в терминах применительно к скремблированию), что для ГПЧ любой разрядности N всегда существует такой набор охватываемых обратной связью разрядов, что генерируемая ими последовательность бит будет иметь период, равный 2N-1 битам. Такую последовательность называют последовательностью наибольшей длины (ПНД).Так, например, в 8-битном ГПЧ, при таком настройке  за время генерации последовательно проходят 255 возможных состояний, не повторяясь ни разу. 
Процедура поиска ПНД неразрывно связана с математической теорией неприводимых многочленов. 


PM MAIL   Вверх
THandle
Дата 21.5.2009, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 30
Всего: 372



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0456 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.