145. Противодействие методам социальной инженерии


Использование режимов OFB и CTR блочных шифров для получения псевдослучайных чисел



страница11/27
Дата29.11.2016
Размер1.54 Mb.
Просмотров6678
Скачиваний0
1   ...   7   8   9   10   11   12   13   14   ...   27

Использование режимов OFB и CTR блочных шифров для получения псевдослучайных чисел


Можно использовать любой блочный алгоритм, например AES или ГОСТ 28147-89, для поточного шифрования информации, используя режимы OFB и CTR блочных шифров.

Название режима OFB (Output FeedBack) переводится как "обратная связь по выходу".

Пусть минимальный блок данных, используемый для передачи, состоит из j бит; обычным значением является j=8 (то есть минимальной порцией передаваемых данных является 1 байт). В режиме OFB блочный шифр f на основе секретного ключа К и некоторого инициализирующего значения Y0 формирует псевдослучайную последовательность j-битовых чисел z1,z2,...,zk, которая затем может использоваться в качестве гаммы для шифрования сообщения. Результат зашифрования является входом процедуры шифрования следующего блока исходного сообщения. На каждом этапе шифрования из зашифрованного блока Yi выбирается j младших битов.

Таким образом, для получения псевдослучайной последовательности используется схема:

Yi=f(Yi-1,K),

zi=j младших бит Yi, 1<=i<=k

Если размер блока шифра равен N бит, то параметр j может принимать значения от 1 до N. Значение Y0 называют также инициализирующим вектором.

Последовательность чисел zi можно использовать в качестве гаммы для шифрования потока исходных данных, состоящего из символов хi:



в результате чего получится поток зашифрованных символов yi.

Так как значения yi не зависят от открытого текста xi, то каждый раз, используя одни и те же параметры К и Y0, мы получим одну и ту же последовательность гаммы zi. Поэтому рекомендуется менять значение ключа К для передачи каждого нового сообщения.

Расшифрование сообщений для описанного режима может производиться только с начала последовательности, так как невозможно получить произвольный элемент последовательности zi, не вычислив все предыдущие.

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

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

Название режима CTR происходит от слова "CounTeR" — "счетчик". Этот режим является модификацией режима OFB. Единственное отличие от OFB заключается в том, что в режиме CTR шифруется не предыдущий выход шифра, а счетчик, увеличиваемый на каждом шаге на 1. Первоначальное значение счетчика определяется некоторым инициализирующим значением Y0. Общая формула выглядит следующим образом:

Yi=f(Yi-1+1,K),

zi=j старших бит Yi

Преимущество режима CTR состоит в том, что любой элемент последовательности z может быть вычислен непосредственно. Этот факт связан с тем, что на каждом шаге Yi увеличивается на единицу, и, следовательно, если нам известен номер шага i, то значение Yi можно вычислить непосредственно, зная Y0 и i по формуле:

Yi=f(Y0+i,K),

Это дает возможность шифровать и дешифровать любые фрагменты сообщения независимо друг от друга.


Алгоритм RC4


Алгоритм RC4 разработан Р.Ривестом специально как генератор потока ключевой информации с ключом переменной длины. Генераторы псевдослучайных чисел, построенные с помощью таких алгоритмов, как RC4, как правило, значительно быстрее генераторов, основанных на блочных шифрах. Алгоритм RC4 широко применяется в различных системах защиты информации, в компьютерных сетях (например, в протоколе SSL, для шифрования паролей в Windows NT, и др.). Алгоритм RC4 довольно прост и мы полностью рассмотрим принцип его действия.

RC4 — фактически класс алгоритмов, определяемых размером его блока или слова – параметром n. Обычно n = 8, но можно использовать и другие значения. Для упрощения анализа алгоритма примемn=4. Внутреннее состояние RC4 состоит из массива размером 2n слов и двух счетчиков, каждый размером в одно слово. Два счетчика, оба при n=4 4-битовые, назовем i и j. Все вычисления проводятся по модулю 2n.

Массив используется как таблица замен, называемая S-бокс, и далее будет обозначаться как S. В каждый момент времени таблица S содержит все возможные n-битовые (в нашем случае 4-битовые) числа в перемешанном виде. Конкретная перестановка значений в таблице определяется ключом. Так как каждый элемент таблицы принимает значения в промежутке 0 до 15, то его можно трактовать двояко: либо как число, либо как номер другого элемента в таблице.

Алгоритм RC4 состоит из двух этапов. На первом, подготовительном этапе производится инициализация таблицы замен S. На втором, основном этапе вычисляются псевдослучайные числа.

Посмотрим, как инициализируется таблица S. Вначале она заполняется последовательно числами от 0 до 15. Ключ представляется в виде последовательности 4-битовых слов, которыми заполняется другой массив K, такого же размера, как S. Если ключ оказался короче, чем надо, он повторяется нужное число раз. Затем выполняются следующие действия ( алгоритм 1 ):

1. j = 0; i =0;

2. j = (j + Si + Ki) mod 16;

3. поменять местами Si и Sj;

4. i = i +1;

5. если i <16, то перейти на п.2

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

После того, как таблица S подготовлена, можно начинать генерацию случайных n-битовых слов. Для этого счетчикам i и j присваивается начальное значение 0. Затем для получения каждого нового значения zi выполняются следующие действия ( алгоритм 2 ):

i = (i + 1) mod 16;

j = (j + Si) mod 16;

поменять местами Si и Sj;

a = (Si + Sj) mod 16;

zi = Sa.

Полученное 4-битовое значение zi может использоваться в качестве ключа для шифрования очередного 4-битового блока входного потока данных.

Например, пусть секретный ключ состоит из шести 4-битовых значений (приведем их в десятичном виде): 1, 2, 3, 4, 5, 6. Попробуем сгенерировать последовательность чисел по алгоритму RC4.

Заполним таблицу S последовательно числами от 0 до 15.



Номер элемента

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Значение

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Затем подготовим таблицу K, записав в нее ключ необходимое количество раз:

Номер элемента

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Значение

1

2

3

4

5

6

1

2

3

4

5

6

1

2

3

4

Затем перемешаем содержимое таблицы S. Для этого будем использовать алгоритм 1, описанный выше. Процесс выполнения представим в виде трассировочной таблицы (таблица 8.2), в которой укажем все производимые действия. При выполнении вычислений необходимо помнить, что все операции сложения выполняются по модулю 16.

Таблица 8.2. Подготовительный этап (инициализация таблицы замен) алгоритма RC4




Номер пункта алг.

Выполняемое действие (по mod 16)

Новое значение i

Новое значение j

1

j = 0; i =0

0




2

j = j + Si + Ki = 0 + 0 + 1 = 1




1

3

Поменять местами Si и Sj, то есть S0 и S1







4

i = i +1

1




5

i < 16, поэтому перейти на п.2







2

j = j + Si + Ki = 1 + 1 + 1 = 3




3

3

Поменять местами Si и Sj, то есть S1 и S3







4

i = i +1

2




5

i < 16, поэтому перейти на п.2







2

j = (j + Si + Ki ) mod 16= (3 + 2 + 3) mod 16 = 8




8

3

Поменять местами Si и Sj , то есть S2 и S8







4

i = i +1

3




5

i < 16, поэтому перейти на п.2







2

j = (j + Si + Ki ) mod 16= (8 + 0 + 4) mod 16 = 12




12

3

Поменять местами Si и Sj , то есть S3 и S12







4

i = i +1

4




5

i < 16, поэтому перейти на п.2







2

j = (j + Si + Ki ) mod 16= (12 + 4 + 5) mod 16 = 5




5

3

Поменять местами Si и Sj , то есть S4 и S5







4

i = i +1

5




5

i < 16, поэтому перейти на п.2







2

j = (j + Si + Ki ) mod 16= (5 + 4 + 6) mod 16 = 15




15

3

Поменять местами Si и Sj , то есть S5 и S15







4

i = i +1

6




5

i < 16, поэтому перейти на п.2







2

j = (j + Si + Ki ) mod 16= (15 + 6 + 1) mod 16 = 6




6

3

Поменять местами Si и Sj , то есть S6 и S6







4

i = i +1

7




5

i < 16, поэтому перейти на п.2







2

j = (j + Si + Ki ) mod 16= (6 + 7 + 2) mod 16 = 15




15

3

Поменять местами Si и Sj , то есть S7 и S15







4

i = i +1

8




5

i < 16, поэтому перейти на п.2







2

j = (j + Si + Ki ) mod 16= (15 + 2 + 3) mod 16 = 4




4

3

Поменять местами Si и Sj , то есть S8 и S4







4

i = i +1

9




5

i < 16, поэтому перейти на п.2







2

j = (j + Si + Ki ) mod 16= (4 + 9 + 4) mod 16 = 1




1

3

Поменять местами Si и Sj , то есть S9 и S1







4

i = i +1

10




5

i < 16, поэтому перейти на п.2







2

j = (j + Si + Ki ) mod 16= (1 + 10 + 5) mod 16 = 0




0

3

Поменять местами Si и Sj , то есть S10 и S0







4

i = i +1

11




5

i < 16, поэтому перейти на п.2







2

j = (j + Si + Ki ) mod 16= (0 + 11 + 6) mod 16 = 1




1

3

Поменять местами Si и Sj , то есть S11 и S1







4

i = i +1

12




5

i < 16, поэтому перейти на п.2







2

j = (j + Si + Ki ) mod 16= (1 + 0 + 1) mod 16 = 2




2

3

Поменять местами Si и Sj , то есть S12 и S2







4

i = i +1

13




5

i < 16, поэтому перейти на п.2







2

j = (j + Si + Ki ) mod 16= (2 + 13 + 2) mod 16 = 1




1

3

Поменять местами Si и Sj , то есть S13 и S1







4

i = i +1

14




5

i < 16, поэтому перейти на п.2







2

j = (j + Si + Ki ) mod 16= (1 + 14 + 3) mod 16 = 2




2

3

Поменять местами Si и Sj , то есть S14 и S2







4

i = i +1

15




5

i < 16 , поэтому перейти на п.2







2

j = (j + Si + Ki ) mod 16= (2 + 7 + 4) mod 16 = 13




13

3

Поменять местами Si и Sj , то есть S15 и S13







4

i = i +1

16




5

i < 16 – неверно, поэтому закончить







После выполнения алгоритма 1 получим инициализированную и подготовленную к основному этапу таблицу S:

Номер элемента

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Значение

10

13

14

12

2

15

6

4

5

3

1

9

8

7

0

11

После того как таблица S подготовлена, можно начинать генерацию случайных 4-битовых слов. Вычислим первые 5 чисел псевдослучайной последовательности, используя алгоритм 2. Результаты вычисления последовательности значений также представим в виде таблицы (таблица 8.3)

Таблица 8.3. Основной этап (вычисление элементов псевдослучайной последовательности) алгоритма RC4







Выполняемое действие (по mod 16)

Новое знач. i

Новое знач. j

Новое знач. а

Вычисление z1

1. i = (i + 1) =0+1=1

1










2. j = (j + Si) mod 16=(0+13) mod 16=13




13







3. Поменять местами S1 и S13













4. a = (Si + Sj )mod 16=(7+13)mod 16=4







4




5. z1 = S4 =2










Вычисление z2

1. i = (i + 1) =1+1=2

2










2. j = (j + Si) mod 16=(13+14) mod 16=11




11







3. Поменять местами S2 и S11













4. a = (Si + Sj )mod 16=(9+14)mod 16=7







7




5. z2 = S7=4










Вычисление z3

1. i = (i + 1) =2+1=3

3










2. j = (j + Si) mod 16=(11+12) mod 16=7




7







3. Поменять местами S3 и S7













4. a = (Si + Sj )mod 16=(4+12)mod 16=0







0




5. z3 = S0=10










Вычисление z4

1. i = (i + 1) =3+1=4

4










2. j = (j + Si) mod 16=(7+2) mod 16=9




9







3. Поменять местами S4 и S9













4. a = (Si+ Sj )mod 16=(3+2)mod 16=5







5




5. z4= S5=15










Вычисление z5

1. i = (i + 1) =4+1=5

5










2. j = (j + Si) mod 16=(9+15) mod 16=8




8







3. Поменять местами S5 и S8













4. a = (Si+ Sj)mod 16=(5+15)mod 16=4







4




5. z5 = S4 =3










В результате первые пять значений получились следующие: 2, 4, 10, 15, 3. При необходимости получения большего количества случайных чисел можно продолжить вычисления дальше. При n=4 генерируемые числа будут иметь размер 4 бита, то есть иметь значения от 0 до 15.

В рассмотренном примере размер n слова или блока алгоритма принимался равным четырем. Это значение можно брать и другим, например 8 или 16. В случае использования n=8 таблица замен S должна состоять из 28=256 значений, а элементами таблицы замен должны быть числа от 0 до 255. Размер счетчиков i и j должен также изменить до восьми бит (максимальное значение – 255 ). Кроме того, все вычисления в случае n=8 необходимо выполнять по модулю 256. Аналогичные изменения в алгоритме необходимо производить и при других значениях параметра n.

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




Поделитесь с Вашими друзьями:
1   ...   7   8   9   10   11   12   13   14   ...   27


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал