Rambler's Top100 Service
Поиск   
 
Обратите внимание!   BOAI: наука должна быть открытой Обратите внимание!
 
  Наука >> Математика >> Алгебра, математическая логика и теория чисел | Книги
 Написать комментарий  Добавить новое сообщение
Next: А можно ли обойтись Up: 6.3. Как зашифровать файл? Previous: Как проверять правильность ключа? Contents: Содержание

Какой должен быть пароль?

Какой длины должен быть пароль, чтобы защита была стойкой? Число различных вариантов пароля должно быть не меньше числа различных ключей. Если вы шифруете файл с помощью алгоритма ГОСТ, а для пароля используете только строчные английские буквы и хотите, чтобы стойкость защиты была не ниже стойкости ГОСТа, то длина пароля должна быть не меньше, чем $ \log_{26} 2^{256}=54{,}46298970967$. (Здесь $ 2^{256}$ - число различных ключей ГОСТ, а 26 - число различных английских букв.) Так что вам придется придумывать 55-буквенный пароль. К тому же учтите, что если вы используете в качестве пароля не хаотичную последовательность букв, а осмысленную фразу, то нужно сделать поправку на избыточность языка. Если в пароль входят не только строчные буквы, но и заглавные, то для обеспечения необходимого числа ключей ГОСТ достаточно 51 символа. Только имейте в виду, что некоторые программы шифрования, получив пароль, преобразуют все его буквы к одному регистру. Например, Diskreet делает все английские буквы, входящие в пароль, заглавными. Вы можете использовать в пароле русские буквы, но будьте осторожны! Не все программы шифрования корректно работают с русскими паролями. Таблица 1 поможет вам оценить требуемую длину пароля в различных ситуациях.


Таблица 1.
Алфавит Мощность алфавита Количество вариантов 6-символьного пароля Длина пароля для достижения
      стойкости DES = $ 2^{56}=7{,}21 \cdot 10^{16}$ стойкости ГОСТ = $ 2^{256}=1{,}16 \cdot 10^{77}$
строчные английские буквы 26 $ 3{,}09 \cdot10^8$ 12 55
строчные русские буквы 33 $ 1{,}29 \cdot10^9
$ 12 51
строчные и заглавные английские буквы 52 $ 1{,}97 \cdot 10^{10}
$ 10 45
строчные и заглавные английские буквы и цифры 62 $ 5{,}68 \cdot10^{10}$ 10 43
строчные и заглавные русские буквы 66 $ 8{,}27 \cdot10^{10}$ 10 43
строчные и заглавные русские буквы и цифры 76 $ 1{,}93 \cdot10^{11}$ 9 41
строчные и заглавные английские буквы, цифры и знаки препинания 94 $ 6{,}90 \cdot10^{11}$ 9 40
строчные и заглавные русские буквы, цифры и знаки препинания 108 $ 1{,}59 \cdot10^{12}$ 9 38
все алфавитно-цифровые символы русифицированной клавиатуры 160 $ 1{,}68 \cdot10^{13}$ 8 35


Имейте в виду, что данные в этой таблице относятся к тому случаю, когда в качестве пароля берется равномерно распределенная случайная последовательность символов. Если в качестве пароля вы используете только осмысленные слова и фразы, количество возможных вариантов пароля будет гораздо меньше. Если в качестве пароля используется длинная фраза русского языка, то, как показывают теоретико-информационные исследования, количество возможных вариантов будет равно не $ 33^n$, где $ n$ - число символов во фразе, а всего лишь $ 2^n$ (эта приближенная оценка верна только для больших $ n$). Так что в этом случае для достижения стойкости DES придется брать пароль длиной 56 символов, а для достижения стойкости ГОСТ - 256 символов.

Так стоит ли вообще использовать для шифрования пароль, вводимый с клавиатуры? Для ответа на этот вопрос надо определить для себя - от кого вы собираетесь защищать информацию. Если ваш противник умеет только подбирать пароль с клавиатуры, то в качестве пароля лучше всего взять осмысленное слово длиной 6-8 символов. Главное, чтобы злоумышленнику было трудно догадаться до этого слова. При этом надо помнить, что нельзя использовать в качестве пароля:

  • свое имя (фамилию, отчество, прозвище, ...);
  • свою дату рождения (номер телефона, номер паспорта, ...);
  • имя того файла, который вам надо зашифровать;
  • и все другие пароли, которые легко угадать.

Если ваш противник, от которого вы защищаете информацию, умеет программировать, то он может написать программу, которая будет подбирать пароль автоматически. Даже если противник не умеет программировать, он может взять такую программу из Internet - там таких программ много. В этом случае пароль не должен быть осмысленным словом. В современном английском языке обычно употребляется всего около 100000 слов, в русском - чуть больше. Перебрать 100000 паролей можно очень быстро. Если в качестве шифра используется DES, на процессоре Pentium можно перебрать все английские слова-пароли всего за несколько секунд.

Даже если пароль представляет собой слово, которого нет в словаре, его все равно можно легко угадать. Вы уже знаете, что порядок букв в словах и фразах естественного языка подчиняется определенным статистическим закономерностям. Например, в русском языке комбинация букв ий встречается часто, а оь - никогда. Для большинства естественных языков статистика встречаемости символов документирована. Если программа перебора вначале подбирает наиболее вероятные пароли, а менее вероятные оставляет на потом, то перебор сокращается в десятки и сотни раз. Один из авторов видел, как подобная программа подобрала пароль natenok на компьютере с процессором 386DX-40 всего за 10 минут. Общая сложность перебора была равна $ 8{,}03 \cdot10^9$. Вот другие известные авторам случаи удачного подбора паролей:

Сложность перебора
Имеется в виду сложность тотального перебора. Поскольку реально проводился оптимизированный перебор, его сложность была гораздо меньше. Этим и объясняется несоответствие сложности перебора и времени подбора.
Время подбора Тип процессора
$ 2{,}08 \cdot10^{11}$ 15 минут 486DX/4-100
$ 5{,}68 \cdot10^{10}$ 8 часов Pentium-120

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

Лучший результат по подбору ключа был достигнут в 1997 году, когда в сети Internet был дешифрован файл, зашифрованный с помощью DES. В подборе ключа участвовали десятки тысяч пользователей Internet. Все множество ключей было разбито на непересекающиеся подмножества и каждый перебирал ключи из своего подмножества. Перебор длился несколько недель. Руководил работой добровольной ``виртуальной'' бригады взломщиков со своего сервера программист Рокки Версер - автор программы, перебирающей ключи. Общая сложность перебора составляла $ 7{,}21\cdot 10^{16}$, но ключ был найден после перебора всего 25% ключей. При этом ``расколол'' сообщение компьютер с процессором Pentium/90 c 16 Мбайт оперативной памяти. Оно гласило: ``Надежная криптография делает мир безопасным''.


Next: А можно ли обойтись Up: 6.3. Как зашифровать файл? Previous: Как проверять правильность ключа? Contents: Содержание


Написать комментарий
 Copyright © 2000-2015, РОО "Мир Науки и Культуры". ISSN 1684-9876 Rambler's Top100 Яндекс цитирования