Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции БОС_Магданов.docx
Скачиваний:
10
Добавлен:
01.03.2025
Размер:
460.85 Кб
Скачать

10.Шифр гаммирования.

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

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

Как происходит переход для шифров замен? Рассмотрим шифр Веженера, для алфавита, состоящего из 3х символов.

A

B

C

A

A

B

C

B

B

C

A

C

C

А

B



Представим коды символов их порядком в алфавите и заменим соответственно нашем тексте символы их кодами.

0-A, 1-B, 2-C

или 120=BCA – поразрядное сложение в троичной системе счисления

Таким образом, если брать алгоритм веженера, то алгоритм реализуется поразрядным сложением в n-ричной системе счисления, в частности если мы возьмем кодировку ASCI, то это будем поразрядное сложение в 256-ной системе счисления.

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

[-] – порязрядное вычитание в той же самой системе счисления.

Давайте вспомним, что для двоичной системы у нас есть операция поразрядного сложения по модулю 2. Ее таблица истинности:

X

Y

0

0

0

0

1

1

1

0

1

1

1

0

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

В 50х годах 20ого века был разработан в СССР шифр гаммирования и получил свое название по букве греческого алфавита гамма. Сам шифр реализуется по следующей схеме:

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

[TO1] [TO2] … [T0n]

Γ: [γ1] [γ2] … [γn]

[ТШ1] [ТШ2] … [TШn]

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

1) Нельзя шифровать стандартную информацию, а также допускать, чтобы у криптоаналитика был одновременно и шифротекст и открытый текст, т.е. можно без проблем узнать ключ.

2) Нельзя подавать нулевую информацию – получается ключ – невыключенная аппаратура шифрования. Если наша аппаратура шифрует все подряд, то специально подобранная информация приведет к тому, что на выходе аппаратуры будет ключевая информация. И не достаточно спрятать ключ только внутри программы, т.е. если наша программа допускает обработку произвольной информации, то из неё можно легко получить ключ. Это фундаментальная особенность преобразования.

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

110 000=110 – длина ключа 1 бит. L – нулевой ключ – прямое кодирование.

101 111=010 – код исходного символа изменился – просто происходит перекодировка.

Если длина ключа становится 1, то ключ вырождается и превращается в кодирующую систему. Системы шифрования отличаются от кодирующих систем, отличительным признаком которых является, что каждому объекту, которые они кодируют, взаимно-однозначно сопоставляется 1 код.

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

Шифрование чрезвычайно интелектуальная операция и роль человека в этом процессе очень высока.

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

[TO1] [TO2] … [T0n] TШ1=f(γ,TO1)

Γ: [γ1] [γ2=ТШ1] … [γn=ТШn-1] TШ2=f(γ,TO1,ТО2,ТШ1)

[ТШ1] [ТШ2] … [TШn] TШn = f(γ,TO1,…,ТОn,ТШn-1)

На самом деле из короткого ключа мы получаем длинный и в целом стойкий ключ. Длина ключа будет соответствовать длине текста. В схеме видно, что у такого гаммирования есть серьёзный фундаментальный недостаток – так как мы знаем шифротекст, то мы можем получить блок открытого текста (сдвинуть шифротекст относительно себя на один блок, блоки сложить и получить открытый текст). Чтобы избежать этого вставляются дополнительные функции шифрования. Каждый бит последнего блока функционально зависит от всех битов открытого текста, а это означает что стоит измениться одному биту открытого текста, как тут же изменится значение последнего блока ТШn, что позволяет нам контролировать целостность исходных данных. В то же время мы всегда работаем с блоками фиксированной длины, которая всегда известна. Таким образом мы получаем понятие хэш – функция, которое мы рассмотрим позже

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

При шифровании с симметричным ключом схема секретной связи:

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

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

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

S=L*t, где t – вектор, представляющий собой произвольную последовательность бит исходного текста, L – матрица случайного преобразования бит, S – битовая последовательность шифротекста.

Проблема возникает при обратном преобразовании. Det L≠0 – невырождена и с ростом n число невырожденных матриц быстро сокращается.

Число базовых циклов не равно трем. Обычно в сложение вставляется какая-либо функция.