Генерация ключей
Стойкость шифра должна определяться только секретностью ключа. Если для генерации ключей используется нестойкий алгоритм, криптосистема будет нестойкой. Вскрытию подвергнется не сам шифр, а алгоритм генерации ключей.
Сокращенные ключевые пространства
Длина ключа в DES-алгоритме составляет 56 бит. В принципе, в качестве ключа может быть использован любой 56-битный вектор. На практике это правило часто не соблюдается. Например, широко распространенная программа шифрования файлов Norton Discreet, входящая в пакет Norton Utilities (версии 8.0 или более младшей версии), который предназначен для работы в операционной системе DOS, предлагает пользователю программную реализацию DES-алгоритма. Однако при вводе ключа разрешается подавать на вход программы только те символы, старший бит представления которых в коде ASCII равен нулю. Более того, пятый бит в каждом байте введенного ключа является отрицанием шестого бита, и в нем игнорируется младший бит. Это означает, что мощность ключевого пространства сокращается до каких-то жалких 240 ключей. Таким образом из-за плохой процедуры генерации ключей программа Norton Discreet реализует алгоритм шифрования, ослабленный в десятки тысяч раз по сравнению с настоящим DES-алгоритмом.
В табл. 6.6 приведено количество возможных ключей в зависимости от различных ограничений на символы, которые могут входить в ключевую последовательность. Табл. 6.7 содержит сложность атаки методом тотального перебора при условии, что перебор ведется со скоростью 1 млн ключей в секунду.
Таблица 6.6. Количество возможных ключей в зависимости от ограничений на символы ключевой последовательности.
Символы ключа | 4 байта | 5 байт | 6 байт | 7 байт | 8 байт |
Строчные буквы (26) | 4.7·105 | 1.3·107 | 3.2·108 | 8.1·10э | 2.2·1011 |
Строчные буквы и цифры (36) | 1.8·10е | 6.1·107 | 2.3·109 | 7.9·1010 | 2.9·1012 |
Буквы и цифры (62) | 1.6·107 | 9.3·108 | 5.8·1010 | 3.6·1011 | 2.3·1014 |
Печатаемые символы (95) | 8.2·107 | 7.8·109 | 7.5·1011 | 7.1·1013 | 6.7·1015 |
Все ASCII-символы | 4.4·109 | 1.2·1010 | 2.9·1014 | 7.3·1016 | 1.9·1019 |
Таблица 6.7. Сложность атаки методом тотального перебора при условии, что перебор ведется со скоростью 1 миллион ключей в секунду.
Символы ключа | 4 байта | 5 байт | 6 байт | 7 байт | 8 байт |
Строчные буквы (26) | 0.6 сек. | 13 сек. | 6 мин. | 2.3 ч. | 2.5 дн. |
Строчные буквы и цифры (36) | 1.8 сек. | 2 мин. | 37 мин. | 23 ч. | 34 дн. |
Буквы и цифры (62) | 16 сек. | 16 мин. | 17ч. | 42 дн. | 7.0 лет |
Печатаемые символы (95) | 1.5 мин. | 2.2 ч. | 8.6 дн. | 2.3 лет | 211 лет |
Все ASCII-символы | 1.3 ч. | 14 дн. | 9.0 лет | 2400 лет | 590000 лет |
Из табл. 6.6 следует, что возможность опробовать 1 млн ключей в секунду позволяет в разумные сроки вскрывать 8-байтовые ключи из строчных букв и цифр, 7-байтовые буквенно-цифровые ключи, 6-байтовые ключи, составленные из печатаемых ASCII-символов, и 5-байтовые ключи, в которые могут входить любые ASCII-символы. А если учесть, что вычислительная мощь компьютеров увеличивается вдвое каждые полтора года, то для успешного отражения атаки методом тотального перебора в течение ближайшего десятилетия необходимо заблаговременно позаботиться о том, чтобы используемый ключ был достаточно длинным.