Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Эл-ты_криптологии-лек.doc
Скачиваний:
24
Добавлен:
24.11.2019
Размер:
757.76 Кб
Скачать

2. Традиционные криптосистемы

2.1. Некоторые особенности криптосистем. Примеры традиционных криптосистем

Традиционными принято называть криптосистемы с симметричным ключом.

В качестве первого примера приведем одну из самых древних криптоситем – шифр Цезаря [2]. В этом шифре каждая буква сообщения заменяется на другую, номер которой в алфавите на 3 больше, при условии, что алфавит представляет собой циклическую структуру. Например, применительно к русскому алфавиту (буква ё выброшена) слово ПЕРЕМЕНА зашифруется как слово ТИУИПИРГ. В последующем этот шифр модифицировали, например, использовали смещение на четыре, пять и т.п. букв. В общем случае такое правило шифрования может быть формализовано так:

Ek(M) : с = (m + k) mod mA , (2.1)

где m, c – номера букв сообщения и шифртекста;

mA =32 – мощность русского алфавита (без буквы ё);

k – некоторое целое число (в данном случае это ключ шифра; в шифре Цезаря k=3).

Чтобы дешифровать зашифрованный текст, необходимо применить обратный алгоритм:

Dk(С) : m = (ck) mod mA . (2.2)

Если предположить, что справедливо правило Керкхоффса, то противник может предпринять простейшую криптоатаку – перебор всех возможных ключей с применением дешифратора (2.2). При этом в процессе расшифровки при фиксированном ключе не обязательно расшифровывать все слово, если по первым буквам ясно, что перевод лишен смысла. Результаты такой криптоатаки, в случае если перехваченное зашифрованное сообщение имеет вид ТИУИПИРГ, приведены в таблице 1.1.

Таблица 1.1

k

M

k

M

k

M

k

M

1

СТЗ

9

ЙЯ

17

БЧ

25

ЩП

2

РЖС

10

ИЮЙ

18

АЦБ

26

ШОЩ

3

ПЕРЕМЕНА

11

ЗЭИ

19

ЯХА

27

ЧН

4

ОДП

12

ЖЬ

20

ЮФ

28

ЦМ

5

НГ

13

ЕЫ

21

ЭУ

29

ХЛЦ

6

МВ

14

ДЪ

22

Ь

30

ФК

7

ЛБМ

15

ГЩ

23

Ы

21

УЙ

8

КАЛАЗ

16

ВШГ

24

Ъ

32

ТИУИПИРГ

Полученные результаты показывают, что был применен ключ k = 3.

Как дальнейшее усложнение алгоритма Ek(М) можно принять, например, следующее: отправитель сообщения A и получатель R договорились иногда менять ключ. Таким образом, источник ключа по какому-либо алгоритму, известному A и R, генерирует новые ключи. Например, новый ключ применяется через каждые 10 символов исходного сообщения. Это несколько затруднит действия противника , однако, ясно, что не принципиально.

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

Предположим, что A и R договорились вместо букв русского алфавита использовать какие-то абстрактные символы. Чтобы сделать пример более наглядным, предположим, что A спрятал нечто в ячейке камеры хранения с пятизначным десятичным кодом, а использованный код зашифровал по схеме:

Ek(M) : с = (m + k) mod 10 , (2.3)

В данном случае ключ k может принимать десять значений 1, …, 10 или, что тоже, 1, …9, 0.

В этом случае попытки противника найти ключ прямым перебором без дополнительных действий будут безрезультатными. Пусть, например, шифртекст, пересылаемый от A к R и перехваченный , таков: с = 26047. Тогда результаты расшифровки можно представить в виде табл. 1.1а.

Таблица 1.1а

k

m

k

m

1

15936

6

60481

2

04825

7

59370

3

93714

8

48269

4

82603

9

37158

5

71592

0

26047

В данном случае уже не может "забраковать" ни одного полученного слова, так как все они "осмысленны". То есть нужны дополнительные действия – реальная проверка этих 10 вариантов в камере хранения. В то же время польза от расшифровки очевидная: вместо 105 всевозможных цифровых комбинаций противнику следует испытать только 10. То есть и здесь передаваемое сообщение защищено не очень хорошо.

В то же время анализ этого примера и сопоставление его с предыдущим примером позволяет сделать некоторые важные выводы.

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

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

Рассмотрим еще несколько примеров традиционных криптосистем.

Шифр Цезаря, как и более общая его модификация (2.1), фактически, является шифром простой подстановки, когда при фиксированном ключе каждая данная буква алфавита заменяется на строго определенную букву этого же или, в более общем случае, другого алфавита.

Примером более сложного шифра простой подстановки является модификация шифра (2.1), называемая модулярным шифром:

Eа,k(M) : с = (am + k) mod mA , (2.4)

где a – число взаимно простое с модулем mA (это условие необходимо для обратимости шифра).

В этом шифре ключом является пара чисел (a, k). Нумерацию символов нужно проводить с нуля.

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

Таблица 1.2

буква

частота,%

буква

частота,%

буква

частота,%

E

12,31

L

4,03

B

1,62

T

9,59

D

3,65

G

1,61

A

8,05

C

3,20

V

0,93

O

7,94

U

3,10

K

0,52

N

7,19

P

2,29

Q

0,20

I

7,18

F

2,28

X

0,20

S

6,59

M

2,25

J

0,10

R

6,03

W

2,03

Z

0,09

H

5,14

Y

1,88

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

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

Таблица 1.3

Буква

Варианты кодов буквы, входящих в гомофонию

A

17 19 34 41 56 60 67 83

I

08 22 53 65 88 90

L

03 44 76

N

02 09 15 27 32 40 59

O

01 11 23 42 54 70 80

P

33 91

T

05 10 20 29 45 58 64 78 99

Тогда текст PLAIN PILOT может быть зашифрован, например, так:

91 44 56 65 59 33 08 76 28 78

Гомофонические шифры не скрывают всех статистических свойств текстов. Компьютер, используя атаку только по шифрованному тексту, тратит на расшифровку ~ несколько секунд (ссылки см. в [7]).

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

Рассмотрим, например, шифр Плейфера. Образуем из английского алфавита квадрат 55. Именно этот квадрат будет ключом шифра, следовательно, он должен храниться в секрете. Пусть, например, сформирован, следующий квадрат:

H A R P S

I C O D B

E F G K L

M N Q T U

V W X Y Z

Здесь буква J не употребляется или отождествляется с буквой I.

Замена биграммы m1m2 кодом производится по следующим правилам:

  • если буквы m1 и m2 находятся в одной строке таблицы, то биграмма m1m2 кодируется биграммой с1с2, где с1 и с2 являются правыми соседями букв m1 и m2. Если правого соседа нет, то берут первую букву строки;

  • если буквы m1 и m2 находятся в одном столбце таблицы, то берутся нижние соседи (с аналогичной оговоркой);

  • если m1 = m2, то в незашифрованном тексте между ними вставляется незначащая буква (например, Х);

  • при нечетном количестве букв в незашифрованном тексте к нему дописывается незначащая буква;

  • в наиболее вероятном случае, когда m1 и m2 расположены в разных столбцах и строках, буквы с1 и с2 выбирают по следующей схеме:

m1  с1 с2  m2 с1  m1 m2  с2

∶ ∶ ∶ ∶ ∶ ∶ ∶ ∶

с2  m2 m1  с1 m2  с2 с1  m1

Рассмотрим пример применения этих правил:

M = RE NA IS SA NC EX

EK(M) = HG WC BH HR WF GV

Существуют другие биграммные криптосхемы.

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

Таблица 1.4

биграмма

частота,%

биграмма

частота,%

биграмма

частота,%

TH

6,3

AK

2,0

HA

1,7

IN

3,1

EN

2,0

OU

1,4

ER

2,7

TI

2,0

IT

1,4

RE

2,5

TE

1,9

ES

1,4

AN

2,2

AT

1,8

ST

1,4

HE

2,2

ON

1,7

OR

1,4

В многоалфавитном подстановочном шифровании задается d шифров простой подстановки, определяемых функциями f1, f2, …, fd, а сообщение

М = m1 m2 md md+1 md+2 m2d

шифруется по правилу:

Ek(M) = f1(m1) f2(m2) … fd(md ) f1(md+1) f2(md+2) … fd(m2d) …

Примером такого шифра является шифр Виженера. Рассмотрим случай, когда исходное сообщение задается в английском алфавите.

В шифре Виженера каждая функция fi i-го шифра задается как криптосхема вида (2.1). При этом ключ ki для этого i-го шифра задается в буквенном виде: берется та буква английского алфавита (она называется ключевой), которая получается по шифру вида (2.1), если преобразовывается первая буква английского – a. Соответственно, из исходных числовых ключей формируется ключевое слово. Например, при d = 9 последовательности ключей

k1 k2 k3 k4 k5 k6 k7 k8 k9 = 3 4 2 4 15 19 8 21 4

соответствует ключевое слово deceptive. На практике оперируют именно ключевыми словами, а не их числовыми аналогами.

В процессе шифрования открытому тексту нужно сопоставить последовательность, состоящую из повторяющегося ключевого слова и далее каждую букву открытого текста закодировать с помощью схемы (2.1) в соответствии с тем, какая ключевая буква ей сопоставлена. Приведем пример [5]:

к люч: d e c e p t i v e d e c e p t i v e d e c e p t i v e

откр. текст: w e a r e d i s c o v e r e d s a v e y o u r s e l f (2.5)

шифр. текст: Z I C V T W Q N G R Z G V T W A V Z H C Q Y G L M G J

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

a

Буквы открытого текста

. . . e . . . r s . . . z

a

b

Буквы ключевого слова

p

t

z

A . . . E . . . R S . . . Z

B . . . F . . . S T . . . A

. . . . . . . . . . . . . . .

P . . . T . . . G H . . . O

. . . . . . . . . . . . . .

T . . . X . . . K L . . . S

. . . . . . . . . . . . . .

Z . . . D . . . Q R . . . Y

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

При реализации классической системы секретной связи (рис. 1.1) табло Виженера известно всем, шифрованный текст передается по открытому каналу, а ключевое слово – по секретному каналу.

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

Для иллюстрации возможностей и недостатков шифра Виженера рассмотрим сугубо качественно один из методов взлома шифра (криптоатаки) [5].

Будем полагать, что криптоаналитик знает, что текст зашифрован или с помощью простой подстановки, или с помощью шифра Виженера.

Чтобы выяснить, какой из видов шифра был использован, нужно определить частотности букв в шифрованном тексте. Если текст достаточно велик и использован шифр простой подстановки, то в шифртексте должна встретиться буква с частотой ~12,3%, буква с частотой ~9,6% и т.д. (см. табл. 1.2). Если это действительно будет так, то мы имеем дело с простой подстановкой, после чего шифр разгадывается достаточно легко.

В противном случае предполагаем, что использован шифр Виженера.

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

В примере (2.5) имеется две подпоследовательности "red", причем начало второй оказывается на 9 символов дальше начала первой. Следовательно, в обоих случаях подслово "red" будет зашифровано одним и тем же подсловом "VTW" (см. (2.5)).

Таким образом, криптоаналитик, имеющий в своем распоряжении только зашифрованный текст обнаружит в нем два одинаковых подслова "VTW" со смещением в 9 символов и поэтому он может предположить, что длина ключевого слова равна либо 3 либо 9. Разумеется, при небольшом объеме шифрованного текста это может быть случайным совпадением, то есть подслово "VTW" в разных точках зашифрованного текста может соответствовать разным подсловам в открытом тексте. Однако, при достаточно больших текстах таких повторений может быть достаточно много и далеко не все они будут случайными. Таким образом, появляется весьма определенная информация для оценки длины ключевого слова.

Предположим, что длина ключевого слова установлена и равна N. То есть шифр может состоять из N простых подстановочных шифров. Например. если используется ключевое слово deceptive, то буквы открытого текста, стоящие на 1-й, 10-й 19-й и т.д. позициях будут шифроваться одним и тем же шифром простой подстановки. Следовательно по отношению к подпоследовательности этих букв может быть применена частотная криптоатака. Аналогично можно проанализировать буквы, стоящие на 2-й, 11-й 20-й и т.д. позициях. И так далее – для всех девяти простых подстановочных шифров.

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

к люч: d e c e p t i v e w e a r e d i s c o v e r e d s a v

откр. текст: w e a r e d i s c o v e r e d s a v e y o u r s e l f (2.6)

шифр. текст: Z I C V T W Q N G K Z E I I G A S X S T S L V V W L A

Однако выяснилось, что и эта схема уязвима: поскольку и в ключевой строке и в открытом тексте частоты распределения букв будут одинаковы, то статистические методы применимы и в этом случае. Например, шифробраз буквы "е", шифрованной с помощью ключевой буквы "е", будет встречаться с вероятностью (0,123)2 = 0,015, шифробраз буквы "d", шифрованной с помощью ключевой буквы "t", будет встречаться с вероятностью примерно в два раза меньшей и т.д. Такая информация также позволяет взломать шифр.

[Таким образом, технология взлома шифра Виженера не слишком сложна. В то же время в одной из статей журнала Scientific American в 1917 г. этот шифр был охарактеризован как "неподдающийся раскрытию". Основанием для такого заявления, по-видимому, служила огромная мощность множества ключей шифра. Данный пример показывает, что следует с большой осторожностью относиться к оценкам стойкости шифров].