Для противодействия атаки типа подбор паролей, необходимо генерировать пароль который сможет оказать сопротивление попыткам его подбора. Сгенерированный пароль должен состоять из букв разного регистра, цифр и спецсимволов. Выбор символов при генерации пароля должен осуществляется произвольно, без использования какой бы то ни было системы. Однако необходимо учитывать и вопросы практического использования пароля.
Очень длинные пароли сложно запоминаемые, и не представляется возможным осуществление быстро ввода длинного пароля.
При генерации пароля число различных вариантов пароля должно быть не меньше числа различных ключей. Чтобы стойкость защиты была не ниже стойкости ГОСТа, при шифровании файла с помощью алгоритма ГОСТ, и при использовании для пароля только строчные английские буквы, длина пароля должна быть не меньше, чем log262256 = 54,46298970967, где 2256- число различных ключей ГОСТ, а 26 - число различных английских букв. В данном случае пароль будет состоять из 55 букв.
При использовании в качестве пароля не хаотичную последовательность букв, а осмысленную фразу, то необходимо сделать поправку на избыточность языка. Если в пароль входят не только строчные буквы, но и заглавные, то для обеспечения необходимого числа ключей ГОСТ достаточно 51 символа. Некоторые программы шифрования, получив пароль, преобразуют все его буквы к одному регистру. Например, программа Diskreet делает все английские буквы, входящие в пароль, заглавными. Также, не все программы шифрования корректно работают с русскими паролями.
В таблице 1.4 приведена сравнительная оценка требуемой длины сгенерированного пароля в различных ситуациях.
Таблица 1.4. Сравнительная оценка требуемой длины сгенерированного пароля в различных ситуациях
Алфавит |
Мощность алфавита |
Количество вариантов 6-символьного пароля |
Длина пароля для достижения |
|
|
|
|
стойкости
DES
|
стойкости
ГОСТ
|
строчные английские буквы |
26 |
|
12 |
55 |
строчные русские буквы |
33 |
|
12 |
51 |
строчные и заглавные английские буквы |
52 |
|
10 |
45 |
строчные и заглавные английские буквы и цифры |
62 |
|
10 |
43 |
строчные и заглавные русские буквы |
66 |
|
10 |
43 |
строчные и заглавные русские буквы и цифры |
76 |
|
9 |
41 |
строчные и заглавные английские буквы, цифры и знаки препинания |
94 |
|
9 |
40 |
строчные и заглавные русские буквы, цифры и знаки препинания |
108 |
|
9 |
38 |
все алфавитно-цифровые символы русифицированной клавиатуры |
160 |
|
8 |
35 |
В данной таблице, в качестве пароля берется сгенерированная равномерно распределенная случайная последовательность символов. При использовании в качестве пароля только осмысленные слова и фразы, количество возможных вариантов пароля будет гораздо меньше. Если в качестве пароля используется длинная фраза русского языка, то при приближенной оценки количество возможных вариантов будет равно не 33n , где n - число символов во фразе, а 2n. В данном случае для достижения стойкости DES необходимо генерировать пароль длиной 56 символов, а для достижения стойкости ГОСТ - 256 символов.
Для создания паролей используются специальные генераторы паролей, которые создают случайным образом легко запоминающиеся и трудноподбираемые пароли.
Одна из таких программ Advanced Password Generator позволяет создавать пароли с помощью генератора случайных чисел либо по задаваемому пользователем ключевому слову, а также содержит алгоритм создания слов, наиболее близких к естественному языку (русскому или английскому). Сложный алгоритм генерации запоминаемых паролей в APG использует многие варианты по многочисленным правилам. Программ позволяет генерировать не имеющие смысла благозвучные комбинации символов, например PV24*KK4.
Уникальность сгенерированного подобного рода программами пароля напрямую зависит от степени случайности используемого для этих целей генератора.
Генератор паролей криптографически небезопасен, если пароли оказались недостаточно случайными. По-настоящему случайную последовательность можно получить только лишь с применением дорогостоящих аппаратных средств (шумящих диодов и т.д.). Всякая программа есть конечный автомат, которая не может воспроизвести случайную последовательность. Однако, с практической точки зрения для генерации паролей достаточно применения генератора псевдослучайной последовательности, то есть детерминированной последовательности, очень похожей на случайную.
Качественный генератор псевдослучайной последовательности, ориентированный на использование в системах защиты информации, должен удовлетворять следующим требованиям:
- криптографическая стойкость;
- хорошие статистические свойства, псевдослучайная последовательность по своим статистическим свойствам не должна существенно отличаться от истинно случайной последовательности;
- большой период формируемой последовательности: например, при шифровании для преобразования каждого элемента входной последовательности необходимо использовать свой элемент псевдослучайной гаммы;
- эффективная аппаратная и программная реализация.
Под криптографической стойкостью понимается отсутствие у злоумышленника возможности предсказать следующий бит на основе известных ему предыдущих с вероятностью, отличающейся от 0,5.
В настоящее время неизвестно, существует ли криптографически стойкий генератор. Имеются лишь претенденты на это звание, например, генератор, названный по фамилиям его создателей BBS (Блюма-Блюма-Шуба).
Практически криптостойкость оценивается статистическими методами. Национальный Институт Стандартов и Технологий (НИСТ) США разработал Руководство по проведению статистических испытаний генераторов псевдослучайных последовательностей, ориентированных на использование в задачах криптографической защиты информации.
Статистически безопасный генератор псевдослучайных последовательностей должен удовлетворять следующим требованиям:
- ни один статистический тест не обнаруживает в псевдослучайной последовательности каких-либо закономерностей, то есть, не отличает эту последовательность от истинно случайной;
- при инициализации случайными значениями генератор порождает статистически независимые псевдослучайные последовательности.
Проведения статистических тестов помогает выяснить отличается или нет исследуемая последовательность по своим свойствам от свойств последовательности, полученной в результате подбрасывания монеты, со сторонами, помеченными как "0" и "1" при этом результаты исходов независимы друг от друга: результат предыдущего не влияет на результат последующего. Все элементы последовательности генерируются независимо друг от друга, и значение следующего элемента в последовательности не может быть предсказано, независимо от того, сколько элементов уже было произведено.
В мировой практике считается, что пароль, как единственное и самостоятельное средство защиты, применяется при низких требованиях к системе безопасности. Одна из причин такого подхода в том, что пользователи записывают пароли не предназначенных для этого местах (перекидной календарь, записная книжка, пропуск и т.п.). Некоторые пользователи кредитных карточек записывают свой PIN-код на обратной стороне самой карточки. Большинство пользователей уделяют мало внимания к хранению своих паролей, что часто отрицательно сказывается на безопасности всей компьютерной системы. Отсюда возникает проблема хранения паролей пользователей. Основные принципы хранения пароля должны быть такими:
- максимально затруднить злоумышленнику получение пароля;
- пароли всех пользователей системы не могут храниться в одном месте или у одного человека, либо они должны храниться в опечатанных конвертах, в сейфе сотрудника службы безопасности, а вскрывать конверт можно только в присутствии нескольких лиц (например, сотрудник службы безопасности и начальник отдела того сотрудника, чей пароль необходим);
- в случае если пользователь не может или не хочет исполнять свои обязанности, т.е. возникает экстремальная ситуация (заболел, начал шантажировать руководство и т.п.), его пароль может получить ограниченный круг лиц при выполнении ими определенных условий.
Самый идеальный и однозначно правильный вариант, когда пользователь должен запомнить свой пароль. Если пользователь не может запомнить пароль, а он выдан ему на бумаге (в конверте), то хранить эту запись надо так, чтобы не допустить его компрометации (например, в личном сейфе). Это же относится и к дискете, на которой пароль может быть записан, а также любому другому его физическому носителю.
В руках одного человека не должны быть пароли всех пользователей системы, иначе он становится потенциальным объектом воздействия со стороны возможных злоумышленников, либо субъектом воздействия в лице злоумышленника.
Система хранения паролей пользователей должна быть разделенная. Например, один сотрудник генерирует пароли и подготавливает их к выдаче, но он не знает, кому какой попадет (например, раскладывает по конвертам и запечатывает их), а другой выдает конверты конкретным пользователям, также, не зная, кому какой пароль достанется. Например, начальник отдела выдает пароли сотрудникам, получая их от службы безопасности или администратора системы. Он получает по два неподписанных запечатанных конверта на каждого сотрудника. Определив каждому сотруднику пару конвертов, он их раздает: один - сотруднику, а второй - в свой сейф. За сохранность полученного пароля отвечает сотрудник. В экстремальной ситуации (внезапная болезнь, шантаж и т.п.) начальник отдела вскрывает конверт с паролем сотрудника в присутствии работника службы безопасности, а если таковой не произошло, то по истечении срока действия пароля конверт с ним уничтожается и заменяется новым.
Система с хранением пароля в конверте не так уж и сложна в организации, зато может во многом облегчить жизнь организации в случае непредвиденных обстоятельств.
Наиболее надежные системы те, в которых пароль используется как дополнение к ключевому элементу. В подобных системах возникает проблема надежности, хранения, некопируемости данного ключевого элемента. Она решается как его выбором, так и организацией работы.
В случае, когда в качестве ключевого элемента применяются флеш-носители, как наиболее распространенный вариант, хотя и очень легко копируемый, должна быть четко продумана система подготовки, хранения, обращения с пользовательскими флеш-носителями. Подобный принцип (ключевой флеш-носитель и пароль) применяется во многих компьютерных системах. В качестве не копируемых ключевых элементов применяют различные типы идентификаторов Touch Memory, электронные ключи, смарт-карточки. При их применении уровень защиты систем высок, так как они обладают очень важным свойством – некопируемостью.
Ключевой элемент не должен находиться у сотрудника постоянно. Утром, по приходу на работу, сотрудник (только он и никто другой) получает его, а вечером сдает на хранение. Вынос ключевых элементов за пределы учреждения должен быть строго запрещен. Это избавит от проблем с утерей, кражей или копированием ключевых элементов. Например, на пропуск сотрудника прикрепляется идентификатор Touch Memory, который может определять как права доступа сотрудника в помещения, так и его права в компьютерной системе.
В случае же утери или реального разглашения пользователем своего пароля (например, при физическом давлении) злоумышленник не сможет войти в компьютерную систему, не завладев ключевым элементом. Оказывать одновременно давление на несколько различных людей возможно, но уже гораздо сложнее, чем на одного. С другой стороны, хранитель ключевых элементов не может ими воспользоваться, так как не знает паролей.
При проверке введенного пароля на правильность множество систем построено так, что в оперативной памяти присутствует истинный пароль. Получить пароль в данном случае возможно, если снять дамп памяти. Очевидно, что при способе, когда оба пароля сравниваются как строки, надежно защитить истинный пароль невозможно. В этом случае один из вариантов хранить пароль в зашифрованном виде, и расшифровывать его непосредственно перед сравнением, или сравнивать зашифрованные строки, после чего сразу же уничтожать из памяти, независимо от результата - совпал он или нет.
Другой способ хранения пароля компьютерной системой состоит в том, что хранится не сам пароль, а его образ. При вводе пароля пользователя, компьютерная система создает образ пароля и сравнивает его с образом, который хранит компьютерная система. Если образы совпадают - значит, введенный пароль правильный. Такой подход дает гарантию того, что, снимая дамп оперативной памяти, никогда нельзя получить истинный пароль.
Возможен еще один вариант. Пароль находится в зашифрованном виде на некопируемом носителе (электронном ключе, магнитной или смарт-карточке, идентификаторе Touch Memory и т.п.). Он же одновременно является и своеобразным ключом для запуска компьютерной системы, так как без него система не работает. На этом же носителе, если его память позволяет, может храниться и список паролей, уже использованных однажды или вообще запрещенных к использованию.
Есть вариант хранения пароля, когда каждый символ записывается в разных местах одного файла или вообще в разных файлах, а само место хранения меняется по определенному алгоритму, причем все остальные символы файла являются побочными, которые при смене пароля полностью меняются.
Самым безопасным вариантом хранения паролей пользователей компьютерной системой является комплексный вариант – хэширование и последующее шифрование паролей.
Для противодействия попыткам подбора паролей, подсистему аутентификации необходимо настроить таким образом, чтобы вводить пароль можно было только вручную, особенно в процедурах установления связи или в макрокомандах. Ручной вариант ввода пароля резко сокращает возможность его подбора. На набор на клавиатуре одного миллиона вариантов потребуется большое количество времени, к тому же, система должна еще проверить пароль на правильность и как-то отреагировать, если он неправильный.
Множество подсистем аутентификации реагируют на неверный введенный пароль выводом на монитор компьютера простого сообщения типа "Неправильный пароль. Повторите еще раз." В такой ситуации злоумышленнику нетрудно подбирать пароль, не привлекая внимания окружающих, даже на машине законного пользователя.
Эмпирическим методом выявлено, что парольная система должна давать две, максимум, три попытки ввода пароля. Если они неудачны, должны срабатывать ответные действия системы защиты на попытку несанкционированного доступа. Но даже с первой попытки ввода пароля, парольная система может контролировать его на подбор. В парольной системе должен быть предусмотрен логический анализ введенного пароля для сравнения с истинным.
Например, истинный пароль "jH75Hjkf". Одно дело, когда набирают "kjH75Hjkf " или "jH75Hjk", а другое - "ung765jg". В первом и втором вариантах вполне логично предположить ошибку оператора (буква "j" на клавиатуре рядом с "k", а во втором случае не хватает последнего символа), но в третьем варианте - явная попытка подбора, так как нет совпадающих символов.
Можно даже сформулировать примерное условие проверки: если истинный и введенный пароли отличаются на один символ и эти символы расположены рядом на клавиатуре, либо вариант, когда пароль набирается на другом регистре, либо пропущен один из символов, можно повторить запрос, но не более двух раз. В противном случае имеется попытка подбора пароля, на что парольная система должна принимать ответные действия:
1) Парольная система обязательно должна зафиксировать в системном журнале попытку несанкционированного доступа и сообщить в службу безопасности или администратору. Причем желательно в системном журнале фиксировать не только попытки НСД, но и ошибки при наборе пароля - под ними, иногда можно маскировать попытки подбора пароля;