Идентификация и аутентификация пользователей и разграничение их доступа к компьютерным ресурсам Кандидат технических наук Морозов А.В., Чукляев И.И. (ВА ВПВО ВС РФ им. Маршала Советского Союза А.М. Василевского) Наиболее часто применяемыми методами идентификации и аутентификации пользователей являются методы, основанные на использовании паролей. В простейшем случае пароль представляет собой некоторую последовательность символов, сохраняемую в секрете и подъявляемую при обращении к компьютерной системе. Для ввода пароля, как правило, используется штатная клавиатура компьютерных систем (КС). В процессе ввода пароль не должен отображаться на экране монитора. Чтобы пользователь мог ориентироваться в количестве введенных символов, на экран выдаются специальные символы (например, звездочки). Пароль должен запоминаться субъектом доступа. Запись пароля значительно повышает вероятность его компрометации (нарушения конфиденциальности). Легко запоминаемый пароль должен быть в то же время сложным для отгадывания. Не рекомендуется использовать для этой цели имена, фамилии, даты рождения и т.п.. Желательным является наличие в пароле парадоксального сочетания букв, слов и т.п., полученного, например, путем набора русских букв пароля на латинском регистре. Другими словами, чем нетривиальнее пароль, тем сложнее он становится для отгадывания. Однако такой пароль труднее запомнить и его приходится записывать на бумаге. Для того, чтобы воспрепятствовать использованию злоумышленником похищенного пароля, в его тексте должны быть мысленно предусмотрены незаписываемые на бумаге пробелы или другие символы в начале, внутри, а также в конце основных символов пароля. В этом случае незаконно полученный лист бумаги с основными символами пароля не будет достаточным условием раскрытия пароля в целом. Вероятность подбора пароля уменьшается также при увеличении его длины и времени задержки между разрешенными попытками повторного ввода неправильно введенного пароля. Ожидаемое время раскрытия пароля ТР можно вычислить по следующей приближенной формуле: ТР = (АS ∙ t) / 2, где t = E / R – время, необходимое на попытку введения пароля; R – скорость передачи символов пароля (симв / мин); E – число символов в сообщении, передаваемом в систему при порытке получить к ней доступ (включая пароль и служебные символы); S – длина пароля; A – число символов в алфавите, из которых составляется пароль (например, 26 символов латинского алфавита). В приведенной формуле считается, что злоумышленник имеет возможность непрерывно осуществлять подбор пароля. Например, если А = 26, t = 2с и S = 6 символов, то ожидаемое время раскрытия ТР пароля приблизительно равно одному году. Если в данном примере после каждой неудачной попытки ввода пароля предусмотреть временную задержку в 10 секунд, то ожидаемое время раскрытия пароля увеличится в 5 раз. Следует также отметить, что на безопасное время раскрытия пароля оказывает существенное влияние длина пароля S (в степенной зависимости). Так, если для трехсимвольного пароля, выбранного из 26-символьного алфавита, время ТР составит 3 месяца, то для четырехсимвольного – 65 лет. Выбор необходимой длины пароля S можно производить исходя из заданной вероятности Р того, что данный пароль может быть раскрыт посторонним лицом за время М. Если мы хотим построить систему, где незаконный пользователь имел бы вероятность отгадывания правильного пароля не большую, чем заданная вероятность Р, то нам следует выбрать такое значение S, которое удовлетворяло бы формуле Андерсона: AS ≥ 4,32 ∙ 104 ∙ R ∙ M / E ∙ P, где, М – период времени, в течение которого предпринимаются попытки раскрытия пароля (в месяцах при ежедневном 24-часовом тестировании). Допустим, требуется используя стандартный латинский алфавит, установить пароль такой длины, чтобы вероятность его отгадывания не превысила 0,001 после трехмесячного систематического тестирования. Если за одну попытку доступа посылается 20 символов (Е = 20), а скорость их передачи R = 600 символов/мин, то по формуле Андерсена получаем: 4,32 ∙ 104 ∙ R ∙ M / E ∙ P = 4,32 ∙ 104 ∙ 3 ∙ 103 ∙ 600 / 20 = 3,888 ∙ 109. Для S = 6: 26S = 3,089 ∙ 108, т.е. < 3,888 ∙ 109; для S = 7: 26S = 8,03 ∙ 109, т.е. > 3,888 ∙ 109. Таким образом, при данных обстоятельствах следует выбрать длину пароля S = 7. При существенном увеличении длины пароля он может быть разбит на две части: запоминаемую пользователем и вводимую вручную, а также размещенную в зашифрованном виде на специальном носителе (например, дискете, магнитной карте и т.д.) и считываемую специальным устройством. Повышение стойкости системы защиты на этапе аутентификации можно достигнуть и увеличением числа символов алфавита, используемого при вводе пароля. Для этого при наборе символов пароля можно использовать несколько регистров клавиатуры, соответствующих, например, строчным и прописным латинским символам, а также строчным и прописным символам кириллицы. На степень информационной безопасности при использовании простого парольного метода проверки подлинности пользователей большое влияние оказывают ограничения на минимальное и максимальное время действия каждого пароля. Чем чаще меняется пароль, тем обеспечивается более высокая безопасность. Администратор службы безопасности должен постоянно контролировать своевременность смены паролей пользователей. Таким образом, для повышения надежности аутентификации пользователей следует, по возможности, использовать нетривиальные (уникальные) пароли и, кроме того, обеспечивать более частую их смену. С этой точки зрения являются достаточно эффективными методы, основанные на использовании динамически изменяющихся паролей. При смене пароля осуществляется его функциональное преобразование, зависящее от динамически изменяющихся параметров, например, суточного времени в часах, номера дня недели, месячной даты и т.д. Такая смена пароля производится либо периодически (ежедневно, каждые три дня или каждую неделю), либо при очередном обращении пользователя. Следует отметить, что в простейшем случае преобразование паролей может быть реализовано путем некоторой модификации традиционной парольной защиты. Для этого пользователю выделяется достаточно длинный пароль, причем при каждой аутентификации используется не весь набор символов пароля, а только его некоторая часть. При этом система с помощью датчика псевдослучайных чисел запрашивает каждый раз у пользователя ту или иную группу символов пароля. Такой процесс, получивший название гаммирования, обеспечивает с помощью гаммы псевдослучайных чисел очередное преобразование (шифрование) пароля. Наибольшая эффективность применения динамически изменяющихся паролей достигается при использовании функционального преобразования пароля в сочетании с гаммированием. В основе функционального преобразования пароля лежит так называемая односторонняя криптографическая функция F, удовлетворяющая следующим требованиям: - для заданного числа или слова Х легко вычислить Y = F (X); - при известных X и Y сложно или невозможно определить функцию преобразования F (отчего она называется односторонней или однонаправленной). Необходимым условием выполнения этих требований является наличие в функции F(X) динамически изменяющихся параметров, например, текущей даты. Пользователю сообщается: - исходный пароль – слово или число Х; - функция преобразования F(X), например F(X) = (X mod 100) ∙ D + W, где (X mod 100) – операция взятия остатка от целочисленного деления Х на 100, D – текущий номер дня недели, W – текущий номер недели в месяце; - периодичность смены исходного пароля, например, каждый день или каждую неделю. Для установленной последовательности периодов действия одного пароля пользовательскими паролями будут соответственно Х, F(X), F(F(X)) и т.д. Поэтому для того, чтобы вычислить очередной пароль по истечении периода действия используемого пароля, нужно лишь знать функцию F парольного преобразования, а также пароль, используемый до настоящего времени. С целью достижения более высокого уровня безопасности функция преобразования пароля, установленная для каждого пользователя, должна периодически меняться, например каждый месяц. При замене этой функции целесообразно устанавливать и новый исходный пароль Х. Для установления подлинности пользователей широко используется также процедура «рукопожатия». Эффективность данной процедуры особенно велика при ее применении в вычислительных сетях для подтверждения подлинности пользователей, пытающихся осуществить доступ к серверам или центральным ЭВМ, а также взаимодействующих между собой. В простейшем случае в системе заранее формируется и особо защищается массив вопросов, включающий в себя как вопросы общего характера, так и персональные вопросы, относящиеся к конкретному пользователю и касающиеся, например, известных только пользователю случаев из его жизни. Для подтверждения подлинности пользователя система последовательно задает ему ряд случайно выбранных вопросов, на которые он должен дать ответ. Опознание считается положительным, если пользователь правильно ответил на все вопросы. Процедура «рукопожатия», основанная на методе «вопрос – ответ», предполагает, что правильные ответы на вопросы знают только те пользователи, для которых эти вопросы предназначены. В процедуре «рукопожатия» может также использоваться одностороннее функциональное преобразование. При входе пользователя в КС системой защиты генерируется псевдослучайное число или псевдослучайная последовательность символов Х и вычисляется односторонняя функция F(X), установленная для данного пользователя. Если генерируемое системой псевдослучайное число состоит из семи цифр, то в качестве односторонней функции F может быть, например, функция вида F = (сумма 1-й, 2-й и 5-й цифр числа) – (сумма 3-й, 4-й, 6-й и 7-й цифр числа) + (сумма цифр текущего времени в часах). Далее число Х выводится пользователю, который также должен вычислить заданную для него функцию F*(X), и ввести полученное значение в систему. Значения F(X) и F*(X) сравниваются системой и если они совпадают, то пользователь получает доступ в КС. Для более высокой безопасности функцию «рукопожатия» целесообразно циклически менять через определенные интервалы времени, например устанавливать разные функции для четных и нечетных чисел месяца. Достоинством метода «рукопожатия» является то, что при этом между пользователем и КС не передается никакой конфиденциальной информации, что, как уже отмечалось, особенно важно при его применении в вычислительных сетях для аутентификации пользователей. К числу основных механизмов, препятствующих несанкционированному доступу к ресурсам КС, помимо идентификации и аутентификации пользователей, относится также разграничение их доступа к элементам защищаемой информации. Разграничение доступа к компьютерным ресурсам. Названное разграничение доступа заключается в том, чтобы каждому зарегистрированному пользователю предоставить возможности беспрепятственного доступа к информации в пределах его полномочий и исключить возможности превышения этих полномочий. С этой целью разработаны и реализованы на практике методы и средства разграничения доступа к устройствам ЭВМ, к программам обработки информации, к информационным массивам. Для каждого пользователя устанавливаются его полномочия в отношении файлов, каталогов, логических дисков и др.. Само разграничение может осуществляться несколькими способами, а именно: по уровням (кольцам) секретности; по специальным спискам; по, так называемым, матрицам полномочий; по специальным мандатам. Дадим краткую характеристику перечисленных способов. Разграничение доступа по уровням секретности заключается в том, что защищаемые данные распределяются по массивам (базам) таким образом, чтобы в каждом массиве (каждой базе) содержались данные одного уровня секретности (например, только с грифом «секретно», или только «совершенно секретно», или только «конфиденциально», или каким-либо другим). Каждому зарегистрированному пользователю устанавливается вполне определенный уровень допуска (например, «секретно», «совершенно секретно» и т.п.). Тогда пользователю разрешается доступ к массивам данных своего или более низких уровней и запрещается доступ к информационным массивам более высоких уровней. Разграничение доступа по специальным спискам заключается в том, что для каждого элемента защищаемых данных (файла, программы, базы) составляется список всех тех пользователей, которым предоставлено право доступа к соответствующему элементу, или, наоборот, для каждого зарегистрированного пользователя составляется список тех элементов защищаемых данных, к которым ему предоставлено право доступа. Разграничение доступа по матрицам полномочий предполагает формирование двумерной матрицы, по строкам которой содержатся идентификаторы зарегистрированных пользователей, а по столбцам – идентификаторы защищаемых элементов данных. Элементы матрицы содержат информацию об уровне полномочий соответствующего пользователя относительно соответствующего элемента данных. В качестве возможных полномочий можно назвать, например, такие, как: доступ запрещен; разрешено только чтение; разрешена только запись; разрешены как чтение, так и запись. Пользователь получает инициируемый им доступ к тому или иному элементу данных только в том случае, если соответствующий элемент матрицы содержит полномочия данного пользователя на выполнение необходимых действий. Недостатком метода разграничения доступа на основе матрицы полномочий является то, что с увеличением масштаба компьютерной системы данная матрица может оказаться слишком громоздкой. Преодолеть данный недостаток можно путем объединения либо пользователей, имеющих идентичные полномочия, либо ресурсов, полномочия на доступ к которым совпадают. Возможна также комбинация метода разграничения доступа на основе матрицы полномочий с методом разграничения доступа по уровням секретности. Разграничение доступа по мандатам является способом разового разрешения на допуск к защищаемым элементам данных. В этом случае каждому защищаемому элементу данных присваивается персональная уникальная метка, после чего доступ к этому элементу будет разрешен только тому пользователю, который в своем запросе предъявит данную метку элемента (мандат), которую ему может выдать администратор системы защиты или владелец этих данных. Очень эффективным механизмом защиты от несанкционированного доступа является создание функционально-замкнутых сред пользователей. Суть его состоит в следующем. Для каждого пользователя создается меню, в которое он попадает после загрузки операционной системы. В нем указываются программы, к выполнению которых допущен пользователь. После выполнения любой программы из меню пользователь снова попадает в меню. Если эти программы не имеют возможностей инициировать выполнение других программ, а также предусмотрена корректная обработка ошибок, сбоев и отказов, то пользователь не сможет выйти за рамки установленной замкнутой функциональной среды.