На псевдо-Си это выглядит следующим образом:
Rijndael (State, CipherKey)
{
KeyExpansion(CipherKey, ExpandedKey); // Рас-
ширение ключа
AddRoundKey(State, ExpandedKey); // Добавление циклового ключа
For ( i=1 ; i<Nr ; i++)
Round(State,ExpandedKey+Nb*i); // циклы FinalRound(State, ExpandedKey+Nb*Nr); // за-
ключительный цикл
}
Если предварительно выполнена процедура расширения ключа, то Rijndael будет выглядеть следующим образом:
Rijndael (State, CipherKey)
{
AddRoundKey(State, ExpandedKey); For ( i=1 ; i<Nr ; i++) Round(State,ExpandedKey+Nb*i);
FinalRound(State, ExpandedKey+Nb*Nr);
}
Замечание: Расширенный ключ должен всегда получаться из ключа шифрования и никогда не указывается напрямую. Нет никаких ограничений на выбор ключа шифрования.
3.МОДЕЛИ ОТКРЫТЫХ ТЕКСТОВ
3.1.Алфавиты открытых сообщений
Сообщения представляют собой последовательности знаков (или слова) некоторого алфавита. Различают естественные алфавиты (русский, английский,…), и специальные алфавиты – цифровые или буквенно-цифровые (двоичный алфавит, состоящий из символов 0 и 1).
Буквенный алфавит, в котором буквы расположены в их естественном порядке, обычно называют нормальным алфа-
30
витом. В противном случае говорят о смешанных алфавитах. В свою очередь смешанные алфавиты делят на система-
тически перемешанные алфавиты и случайные алфавиты.
К первым относятся алфавиты, полученные из нормального на основе некоторого правила, ко вторым – алфавиты, буквы которых следуют друг за другом в хаотическом порядке. Смешанные алфавиты обычно используются в качестве нижней строки подстановки, представляющей собой ключ шифра простой замены. Для запоминания ключа применяется несложная процедура перемешивания алфавита, например, основанная на
ключевом слове.
Полный русский алфавит состоит из 33 букв. Вместе с тем используются и сокращѐнные русские алфавиты, содержащие 32, 31 или 30 букв: можно отождествить буквы Е и Ё, И и Й, Ь и Ъ. Часто бывает удобно включить в алфавит знак пробела между словами.
Английский алфавит состоит из 26 букв. Иногда используется сокращѐнный 25-буквенный алфавит, в котором отождествлены буквы I и J.
Во французском и испанском языках практически не используются буквы K и W. Эти буквы встречаются только в некоторых словах иностранного происхождения (“kilo, wagon”). Поэтому часто используется 24-буквенный алфавит.
Внемецком языке исключительно редки буквы Q, X и Y. Они лишь в некоторых малоупотребительных словах иностранного происхождения (“quarta”). Помимо латинских букв немецкий алфавит использует ещѐ три буквы ö, ä, ë, которые заменяются эквивалентами OE, AE и UE соответственно. Поэтому часто обходятся 24 буквами.
Витальянском языке крайне редки буквы J, K, W, X, Y. Поэтому используется 21или 22-х буквенный алфавит.
Из известных специальных алфавитов можно выделить код Бодо, применяемый для передачи сообщений с помощью телетайпов и использующий 32-значный алфавит, а также код ASCII – американский стандартный код информационного обмена.
31
3.2. Частотные характеристики текстовых сообщений
Криптоанализ любого шифра невозможен без учѐта особенностей текстов сообщений, подлежащих шифрованию. Наиболее важной характеристикой текстов является избыточность текста, введѐнная Шенноном. Именно избыточность открытого текста, проникающая в шифртекст, является основной слабостью шифра.
Более простыми характеристиками текстов, используемые в криптоанализе, являются такие характеристики, как по-
вторяемость букв, пар букв (биграмм) и вообще k-грамм,
сочетаемость букв друг с другом, чередование гласных и согласных и некоторые другие. Такие характеристики изучаются на основе наблюдений текстов достаточно большой длины. Некоторая разница значений частот, приводимая в различных источниках, объясняется тем, что частоты существенно зависят не только от длины текста, но и от его характера. Например, редкая буква Ф может стать довольно частой в технических текстах (“функция”, “дифференциал”, “коэффици-
ент”,…).
Ещѐ большие отклонения от нормы в частоте употребления отдельных букв наблюдаются в некоторых художественных произведениях, особенно в стихах. Хотя подобные отклонения незначительны и в первом приближении ими можно пренебречь, для надѐжности определения средней частоты буквы желательно иметь набор различных текстов, заимствованных из различных источников. Однако, подобные отклонения незначительны, и в первом приближении ими можно пренебречь.
Для русского языка частоты (в порядке убывания) знаков алфавита, в котором также имеется знак пробела между словами приведены в табл.3.1 и на рис.3.1.
32
Таблица 3.1
- |
О |
Е,Ё |
А |
И |
Т |
Н |
С |
0.175 |
0.090 |
0.072 |
0.062 |
0.062 |
0.053 |
0.053 |
0.045 |
Р |
В |
Л |
К |
М |
Д |
П |
У |
0.040 |
0.038 |
0.035 |
0.028 |
0.026 |
0.025 |
0.023 |
0.021 |
Я |
Ы |
З |
Ь,Ъ |
Б |
Г |
Ч |
Й |
0.018 |
0.016 |
0.016 |
0.014 |
0.014 |
0.013 |
0.012 |
0.010 |
Х |
Ж |
Ю |
Ш |
Ц |
Щ |
Э |
Ф |
0.009 |
0.007 |
0.006 |
0.006 |
0.004 |
0.003 |
0.003 |
0.002 |
Имеется правило запоминания десяти наиболее частых букв русского алфавита. Эти буквы составляют слово СЕНОВАЛИТР.
Для европейских букв языков 10 наиболее частых букв приведены в табл.3.2.
|
|
|
|
|
|
|
|
|
|
Таблица 3.2 |
||
Французский |
E |
S |
A |
N |
T |
I |
R |
U |
L |
O |
79,9 |
|
% |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Немецкий |
E |
N |
I |
S |
T |
A |
H |
D |
U |
|
77,2 |
|
|
% |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Английский |
E |
T |
A |
I |
N |
R |
O |
S |
H |
D |
75,3 |
|
% |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Испанский |
E |
A |
O |
S |
I |
R |
N |
L |
D |
C |
78,3 |
|
% |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Итальянский |
I |
E |
A |
O |
N |
T |
R |
L |
S |
C |
79,9 |
|
% |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Для английского языка правило запоминания десяти наиболее частых букв: слово TETRIS-HONDA.
33
Я
Ю
Э 
Ь,Ъ 
Ы 
Щ
Ш
Ч 
Ц
Х
Ф 
У
Т 
С
Р
П 
О
Н
М
Л
К
Й 
И
З
Ж 
Е,Ё
Д
Г 
В
Б 
А
пробел 




0 |
0,02 |
0,04 |
0,06 |
0,08 |
0,1 |
0,12 |
0,14 |
0,16 |
0,18 |
Рис.3.1. Диаграмма встречаемости букв русского языка
34