Графическая аутентификация в Linux

 

Федеральное агентство по образованию

Государственное общеобразовательное учреждение

высшего профессионального образования

"Челябинский государственный университет"

Кафедра компьютерной безопасности и прикладной алгебры









ДИПЛОМНАЯ РАБОТА

Графическая аутентификация в Linux

Направление 075200 Компьютерная безопасность



Выполнила студентка гр. МК-601

Будко Е.Г.

Научный руководитель,

инженер ОЭУС компании

"Интерсвязь Артемова Э.Л.






Челябинск 2011 г.

Содержание


Введение

I. Схемы графической аутентификации

Буквенно-цифровые пароли

Простая схема графического пароля

Схема треугольника

Схема подвижной рамки

Другие специальные геометрические конфигурации

II. Описание PAM-модуля pam_triangle

III. Описание PAM-модуля pam_diagonal

IV. Исследование удобства и простоты использования

V. Исследование безопасности

Атака методом нажатия наудачу на схему треугольника

Атака методом нажатия наудачу на схему диагоналей

Атака методом полного перебора на схему треугольника

Атака методом полного перебора на схему диагоналей

Заключение

Список литературы

Приложения

Введение


Человеческие существа живут и взаимодействуют в среде, где восприятие зрением преобладает для большинства видов деятельности, поэтому наш мозг способен обрабатывать и хранить большие объемы графической информации с легкостью. Хотя нам, возможно, будет очень трудно вспомнить строку из пятидесяти символов, мы можем легко вспомнить лица людей, мест, которые мы посетили, и вещи, которые мы видели. Эти графические данные в электронном виде представляют миллионы байтов информации и обеспечивают большие возможности для уникальности выбора пароля. Таким образом, графические схемы паролей дают способ сделать пароли более понятными человеку при одновременном повышении уровня безопасности.

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

I. Схемы графической аутентификации


Пароли являются наиболее часто используемым методом для аутентификации пользователей в компьютерных и коммуникационных системах. Как правило, пароли состоят из букв и цифр, т.е. буквенно-цифровые. Такие пароли имеют большой недостаток: их трудно запомнить.

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


Буквенно-цифровые пароли


Буквенно-цифровые пароли были впервые введены в 1960-е годы в качестве решения проблемы безопасности, когда была разработана первая многопользовательская операционная система. Буквенно-цифровой пароль - просто строка из букв и цифр. Хотя почти любая строка может служить в качестве пароля, эти пароли обеспечивают высокую безопасность, пока они сложны настолько, что они не могут быть выведены или угаданы. Обычно используются следующие принципы для буквенно-цифровых паролей:

ØПароль должен быть не менее 8 символов.

ØПароль не должен иметь отношение к пользователю (например, фамилия, дата рождения).

ØПароль не должен быть словом, которое можно найти в словаре.

ØВ идеале, пользователь должен использовать верхний и нижний регистры букв и цифры.

графическая аутентификация linux пароль

Другим недостатком буквенно-цифровых паролей является возможность атаки по словарю. Из-за трудности в запоминании случайных строк символов, большинство пользователей выбирают общеизвестное слово или имя. К сожалению, есть несколько инструментов, которые позволяют взломать пароль путем автоматического тестирования всех слов, которые встречаются в словарях или общественных каталогах. Это нападение, как правило, не вскрывает пароль предопределенного пользователя, но исследования показали, что это нападение, как правило, успешно в поиске действительных паролей некоторых пользователей данной системы.

Атака по словарю на графические пароли недостижима частично из-за большого пространства паролей, и, главное, потому что не существует доступных для поиска словарей для графической информации. Также трудно реализовать автоматизированную атаку. Тогда как мы можем узнать лицо человека менее чем за секунду, компьютер затратит немалое количество времени, обрабатывая миллионы байт графической информации.

Рассмотрим графические пароли, которые состоят из каких-либо действий, которые пользователь выполняет на изображении.


Простая схема графического пароля


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

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

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


Схема треугольника


Система случайным образом рассеивает N изображений на экране. На практике, число N может быть несколько сотен или несколько тысяч, и объекты должны быть разными настолько, что пользователь может различать их. Кроме того, есть подмножество K парольных изображений (например, K=10), которые предварительно выбрал и запомнил пользователь. При входе система будет случайным образом выбирать размещение N изображений. Однако, система сначала случайным образом выбирает участок, который покрывает половину экрана, и случайно размещает К выбранных изображений на этом участке.

Для того чтобы войти, пользователь должен найти 3 парольные изображения и кликнуть мышкой внутри невидимого треугольника, созданного этими 3 изображениями. Кроме того, при каждом входе эта задача повторяется несколько (например, 10) раз, используя различные отображения некоторых объектов N. Таким образом, вероятность случайного нажатия на правильный регион в каждой задаче является очень низкой.

Схема подвижной рамки


Используя те же идеи и предположения, как и в предыдущей схеме, пользователь должен теперь найти 3 из K парольных изображений. Но на этот раз, 3 парольные изображения отображаются в любой момент времени, и лишь одно из них находится в подвижной рамкой, как показано ниже. Изображения, которые отображается в рамке, комплектуются совершенно произвольно.

Задача пользователя состоит в перемещении рамки (и изображений внутри нее, как ленты) с помощью мыши вокруг кадра до тех пор, пока парольное изображение в рамке не выстроится по линии с двумя другими парольными изображениями. Как и прежде, эта процедура повторяется несколько раз, чтобы свести к минимуму вероятность войти в систему, наугад двигая рамку.


Другие специальные геометрические конфигурации


Используя те же идеи, можно добиться более сложных путей, объясняющих пользователю, куда кликать за счет увеличения числа парольных изображений, которые отображаются одновременно. Эта схема использует пересечение невидимых линий, образованных 4 парольными изображениями (из К ранее выбранных парольных изображений). Пользователь должен кликнуть мышью вблизи пересечения этих двух невидимых линий, внутри выпуклого четырехугольника образованными 4 парольными изображениями.



Сравнение различных схем аутентификации

СхемаИспользованиеБезопасностьПроцесс аутентификацииЗапоминаемостьМножество паролейВозможные методы атакиБуквенно-цифровые паролиПечатание символов, может быть очень быстрым. Зависит от пароля. Длинные и случайные запомнить сложно. 96n (всего 96 печатных символов, n - длина пароля) Атака со словарем, атака методом полного перебора, подглядывание через плечо. Простая схема графического пароля Пользователь должен кликнуть мышкой внутри 4 выделенных областей на изображении. Зависит от изображения. Может быть как очень простым для запоминания, так и довольно тяжелым. nk (n - количество пикселей или других минимальных участков изображения, k - количество областей в пароле пользователя) Атака методом полного перебора, атака методом нажатия наудачу, подглядывание через плечо. Схема подвижной рамкиПользователь должен перемещать рамку вокруг кадра пока парольное изображение в рамке не выстроится по линии с двумя другими парольными изображениями. Для большинства людей достаточно просто. (n - общее число изображений, k - число парольных изображений) Атака методом полного перебора, атака методом нажатия наудачу. Схема треугольникаПользователь должен найти 3 парольные изображения и кликнуть мышкой внутри невидимого треугольника, созданного 3 изображениями. Для большинства людей достаточно просто. (n - общее число изображений, k - число парольных изображений) Атака методами полного перебора, атака методом нажатия наудачу. Пересечение диагоналей четырехугольникаПользователь должен найти 4 парольных изображения и кликнуть мышкой на пересечении невидимых линий, образованных 4 парольными изображениямиДля большинства людей достаточно просто. (n - общее число изображений, k - число парольных изображений) Атака методом полного перебора, атака методом нажатия наудачу. II. Описание PAM-модуля pam_triangle


В модуле pam_triangle реализован метод графической аутентификации, называемый схемой треугольника. При использовании этой схемы пользователь может не опасаться, что стоящий за его спиной человек увидит его пароль или что его пароль будет снят на видеокамеру.

Алгоритм работы

Программа passwd-triangle предназначена для создания графического пароля. При запуске получает от пользователя его имя и выводит на экран изображения в случайном порядке. Номера изображений, которые выбрал пользователь для своего пароля, сохраняются в файле /etc/triangle/passwords.

Файл passwords состо5ит из строк вида:

имя_пользователя номер_изображения_1. номер_изображения_5

Изображения с именами 1. png,

. png, … хранятся в директории /etc/triangle/pictures.

Модуль pam_triangle начинает работать при запуске сервиса (login, su или др.). Модуль считывает из файла /etc/triangle/passwords номера парольных изображений, выводит на экран в случайном порядке 154 изображения, три из которых являются изображениями, которые пользователь выбрал для своего пароля. После нажатия кнопки пользователем, модуль получает ее координаты. Выбранная пользователем точка будет принадлежать треугольнику, если синусы углов образованные векторами, направленными из нажатой точки к вершинам треугольника, будут одного знака. Для нахождения знака синусов углов воспользуемся псевдовекторным произведением.

Псевдоскалярным произведением векторов a и b на плоскости <#"27" src="doc_zip4.jpg" />. Если , , то их псевдоскалярное произведение равно определителю матрицы, составленной из координат векторов, выписанных в строки матрицы.



Для нахождения знаков синусов углов, образованных векторами, достаточно посчитать следующие выражения:


(x1-x0) * (y2-y1) - (x2-x1) * (y1-y0)

(x2-x0) * (y3-y2) - (x3-x2) * (y2-y0)

(x3-x0) * (y1-y3) - (x1-x3) * (y3-y0)


Здесь (x1, y1), (x2, y2), (x3, y3) - вершины треугольника, (x0, y0) - координаты выбранного изображения.

Знаки синусов углов и выписанных выражений будут совпадать.

Если все синусы одного знака, то выбранное изображение попадает в область треугольника, если разного - нет. Если хотя бы один синус равен нулю, то выбранная точка попала на сторону треугольника.

Для реализации pam-модуля был использован инструментарий разработки ПО qt4. Языке программирования С++. Для тестирования был использован дистрибутив Ubuntu 10.10 с версией ядра Linux 2.6.35.

Установка модуля

Для установки модуля требуется:

·добавить в начало файла с названием сервиса (login, su или др.), расположенного в каталоге /etc/pam. d/ строку вида:

auth <флаг_контроля> pam-triangle. so

Для отключения стандартной аутентификации операционной системы необходимо также закомментировать в этом же файле строку:

@include common-auth

В Linux-PAM существует всего четыре флага контроля:

Ørequired. Если модуль выдал ошибку, то цепочка продолжит выполняться, но запрос будет отклонен.

Ørequisite. Если произошла ошибка модуля, то цепочка немедленно заканчивается, и запрос отклоняется.

Øsufficient. Если модуль выполнился нормально, и никакой предыдущий модуль в цепочке не потерпел неудачу, то цепочка заканчивается, и принимается положительное решение о предоставлении доступа. В случае ошибки модуль игнорируется, и выполняется остальная часть цепочки.

Øoptional. Модуль с этим флагом не критичен для аутентификации и используется как дополнительный, то есть модуль будет выполнен, но его результат игнорируется.

·выполнить скрипт triangle. sh

·запустить программу passwd-triangle, чтобы создать пароли для пользователей.

Руководство пользователя

Для создания пароля запускаем программу passwd-triangle. В появившемся окне вводим имя пользователя.

Появляется окно ввода пароля. Пользователю нужно выбрать пять различных парольных изображения для своего графического пароля из 399 предложенных.



Если пользователь забудет пароль, администратор системы сможет ему помочь, запустив программу passwd-triangle.



При запуске сервиса (login, su или др.), вместо ввода пароля появляется окно для ввода графического пароля, состоящее из 154 различных изображений.



Для аутентификации пользователь должен выполнить следующее:

.Найти три изображения, которые составляют его пароль.

2.Представить треугольник, образованный этими изображениями.

.Кликнуть в область треугольника.

Следующий рисунок наглядно показывает пример аутентификации в схеме треугольника.


III. Описание PAM-модуля pam_diagonal


В PAM-модуль pam_diagonal реализован метод графической аутентификации, называемый схемой пересечения диагоналей четырехугольника. При использовании этой схемы пользователь может не опасаться, что стоящий за его спиной человек увидит его пароль или что его пароль будет снят на видеокамеру.

Алгоритм работы

Программа passwd-diagonal предназначена для создания графического пароля. При запуске получает от пользователя его имя и выводит на экран изображения в случайном порядке. Номера изображений, которые выбрал пользователь для своего пароля, сохраняются в файле /etc/diagonal/passwords.

Файл passwords состоит из строк вида:

имя_пользователя номер_изображения_1 номер_ изображения_2 номер_ изображения_3 номер_изображения_4 номер_изображения_5

Изображения с именами 1. png,

. png, … хранятся в директории /etc/diagonal/pictures.

Модуль pam_diagonal начинает работать при запуске сервиса (login, su или др.). Модуль выводит на экран 154 изображения в случайном порядке. Из них четыре являются парольными изображениями пользователя, которые модуль считывает из файла /etc/diagonal/passwords. Парольные изображения заведомо будут образовывать невырожденный выпуклый четырехугольник. После клика мышью пользователем, модуль получает его координаты и проверяет, лежит ли выбранное изображение на пересечении диагоналей четырехугольника или нет.

Для реализации pam-модулей был использован инструментарий разработки ПО qt4. Языке программирования С++. Для разработки и тестирования был использован дистрибутив Ubuntu 10.10 с версией ядра Linux 2.6.35.

Установка модуля

Для установки модуля требуется:

·добавить в начало файла с названием сервиса (login, su или др.), расположенного в каталоге /etc/pam. d/ строку вида:

auth <флаг_контроля> pam-triangle. so

·выполнить скрипт diagonal. sh

·запустить программу passwd-diagonal, чтобы создать пароли для пользователей.

Руководство пользователя

Для создания пароля запускаем программу passwd-diagonal. В появившемся окне вводим имя пользователя.

Появляется окно ввода пароля. Пользователю нужно выбрать пять различных парольных изображения из 399 предложенных.



Если пользователь забудет пароль, администратор системы сможет ему помочь, запустив программу passwd-diagonal.



Теперь при запуске сервиса (login, su или др.), вместо ввода пароля будет появляться окно ввода графического пароля, содержащее 154 изображений.



Для аутентификации пользователь должен выполнить следующее:

.Найти 4 свои парольные картинки.

2.Мысленно образовать из них четырехугольник.

.Кликнуть на изображение, которое находится на пересечении диагоналей четырехугольника.

Точно так, как показано на рисунке:


IV. Исследование удобства и простоты использования


В исследовании приняли участие 15 человек. Десять человек - женщины и пять мужчин. Средний возраст участников 22,4 года. Участники являются компьютерными пользователями, которые используют компьютер, по крайней мере, 5 часов в день для работы и личных нужд.

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

. Пользователям сначала были объяснена суть схемы треугольника и схемы пересечения диагоналей. Участников предупредили, что в схеме треугольника нужно нажимать не на сами парольные изображения, а в пределах треугольника, задаваемого этими изображениями. Также участников предупредили о том, что нельзя перемещать курсор от одного изображения к другому, чтобы проследить границы фигур в схемах треугольника и пересечения диагоналей, так как это может позволить украсть парольные изображения мошеннику.

. При запуске обоих программ пользователю предлагается представиться и создать пароль. При создании пароля используется окно, в котором в произвольном порядке располагаются 399 различных изображений. Участникам было предложено создать свой графический пароль, а затем попробовать запустить игру. При запуске игры появляется поле уже с 154 изображениями, несколько из которых являются парольными изображениями пользователя.

Три раунда, состоящих из ввода пароля пользователем, заканчиваются сообщением, справился ли он с задачей или нет. Был достигнут результат, что каждый участник в обеих программах мог успешно пройти аутентификацию. Работа с обучающими программами заняла примерно 20 минут.

. На последующей сессии одну неделю спустя участникам было предложено ввести свой пароль. Сессия продлилась около 5 минут.

Результаты.

Все участники достигли критерия десяти правильных вводов пароля. Десять участников достигли критерия сразу же. Другие пять участников сделали от 2 до 5 ошибок, в общей сложности 15 неправильных вводов пароля у всех участников. Эти люди продолжали вводить их пароль, пока они не достигли десяти правильных ответов подряд. Средний процент от правильных входов в систему для схемы треугольника 90,2%, для схемы диагоналей - 80,7%.

Среднее время для ввода пароля для схемы треугольника составило 28 секунд, а для схемы пересечения диагоналей - 36 секунд.


Время ввода пароля одного из участников.

№ попытки12345678910Время ввода пароля для схемы треугольника, с34322730242736282524Время ввода пароля для схемы пересечения диагоналей, с4093842413735373233

На второй сессии, одну неделю спустя, все участники были в состоянии правильно ввести свой пароль за меньшее время.

Были проанализированы данные интервью, чтобы понять, насколько удобна та и другая схемы. Десять участников сообщили, что они действительно нашли это забавным. Троим участникам ввод пароля не показался забавным, наоборот, они нашли его скучным и однообразным. Двое участников не имели конкретного мнения о предложенных схемах.

Когда участники определили местоположение своих парольных изображений, они должны были мысленно сформировать треугольник в схеме треугольника или диагонали четырехугольника в схеме диагоналей. Участники заметили, что формирование треугольника проще и занимает меньше времени, чем формирование четырехугольника и его диагоналей. Кроме того, важно внимательно выбрать точку пересечения диагоналей и не ошибиться, иначе игры будет проиграна.

Я считаю, что если пользователи будут использовать графические пароли непрерывно, то время ввода пароля заметно сократится и процесс станет автоматическим.

V. Исследование безопасности


Атака методом нажатия наудачу на схему треугольника


Злоумышленник всегда может попытаться войти в систему, нажимая на изображения наугад. Чтобы оценить вероятность этой атаки, нужно посчитать число всевозможных треугольников n, посчитать площадь каждого треугольника Si (i=1…n). Вероятность входа будет рассчитываться по формуле:


(где S - площадь окна для ввода пароля).


Для того чтобы посчитать вероятность случайного входа в систему была написана программа, которая считает вероятность случайным кликом мыши попасть в площадь треугольника. То есть рассматривался каждый из возможных треугольников (учитывая все выше приведенные ограничения по площади), высчитывалась его площадь и вероятность попасть случайным образом по нему.

Чтобы сделать вероятность случайного входа в систему минимальной, нужно:

·"перемешивать изображения от раунда к раунду;

·при генерации окна ввода пароля должна отслеживать площадь треугольника; когда площадь треугольника превышает треть всей площади окна ввода пароля, расположение изображений генерировать заново;

·увеличивать числа раундов парольной схемы.


Атака методом нажатия наудачу на схему диагоналей


При входе в систему пользователю предлагается поле из 154 изображений (14х11). Из них 108 изображений (12х9) могут содержать точку пересечения диагоналей (крайние изображения не могут содержать его, поскольку в программе заведомо не может быть вырожденного четырехугольника). Таким образом, вероятность атаки методом нажатия наудачу на схему диагоналей четырехугольника для трех раундов составляет


.


Чтобы сделать вероятность случайного входа в систему для нескольких раундов минимальной, нужно:

·"перемешивать изображения от раунда к раунду;

·увеличивать числа раундов парольной схемы.


Атака методом полного перебора на схему треугольника


Количество возможных паролей есть "биномиальный коэффициент" (выбор любых К объектов среди N). При N = 399, К = 5 (числа N и K выбраны, исходя из соображений удобства пользователей), число возможных паролей равно . Это немного больше, чем число буквенно-цифровых паролей длины 5 . Кроме того, можно ожидать, что пользователь выберет К изображений довольно случайным образом, или, по крайней мере, злоумышленник не сможет предсказать, много о том, какие К изображений выберет пользователь. С другой стороны, большое число возможных буквенно-цифровых паролей является иллюзией: пользователи выбирают совсем не случайные буквенно-цифровые пароли.

После того, как атакующий видит одно нажатие на экран пользователем, злоумышленник узнает, что K парольных изображений таковы, что их треугольник, образованный ими, содержит выбранное пользователем изображением. Это исключает все K кортежи, которые не содержат выбранное изображение в треугольнике, образованном ими.

Нападающий может попытаться сделать запись всех возможных комбинаций изображений, которые не принадлежат паролю. После многих последовательных наблюдений он может исключить все больше кортежей. Для того чтобы предположить реальность такого нападения, была написана программа, которая эмулировала последовательный ввод пароля пользователем и каждый раз "вычеркивала" те комбинации, которые содержат эти изображения и, следовательно, точно не могут принадлежать паролю. То есть, если всего 399 изображений, из которых пользователь выбрал 5 для своего пароля, то может быть всего комбинаций парольных изображений из миллиардов всевозможных комбинаций. Программа составляет список всех возможных комбинаций и при каждом вводе пароля вычеркивает те, которые точно ему не принадлежат. Для этого вначале проводим горизонтальную прямую линию, содержащую место клика мышкой. Любые комбинации из 3 изображений, расположенных выше этой прямой явно не принадлежат паролю. Аналогично вычеркиваем все комбинации, содержащие любые комбинации из 3 изображений, расположившихся ниже этой прямой. Далее также точно проводится вертикальная прямая и отбрасывается еще часть комбинаций.

Результат выполнения этой программы показал, что нужно около 800 полноценных записей входа в систему, чтобы определить пароль пользователя. То есть если пользователь будет входить в систему каждый день в среднем по 2 раза, включая выходные и праздники, злоумышленнику придется подсматривать за ним почти 5 месяцев. За это время можно несколько раз сменить пароль. Таким образом, нападение с помощью атаки методом полного перебора практически неосуществимо.


Атака методом полного перебора на схему диагоналей


Аналогичным образом подсчитаем вероятность атаки методом полного перебора на схему пересечения диагоналей четырехугольника. Количество возможных паролей равно


.


После того, как атакующий видит одно нажатие на экран пользователем, злоумышленник узнает, что K парольных изображений таковы, что их четырехугольник, образованный ими, содержит выбранное пользователем изображением. Это исключает все K кортежи, которые не содержат выбранное изображение в четырехугольнике, образованном ими.

Вероятность атаки на схему диагоналей четырехугольника рассчитывается аналогично расчету вероятности данной атаки на схему треугольника - "вычеркиванием" всех кортежей явно не принадлежащих паролю. То есть, если всего 399 изображений, из которых пользователь выбрал 5 для своего пароля, то может быть всего комбинаций парольных изображений из миллиарда всевозможных комбинаций. Программа составляет список всех возможных комбинаций и при каждом вводе пароля вычеркивает те, которые точно ему не принадлежат. Для этого вначале проводим горизонтальную прямую линию, содержащую место клика мышкой. Любые комбинации из 4 изображений, расположенных выше этой прямой явно не принадлежат паролю. Аналогично вычеркиваем все комбинации, содержащие любые комбинации из 4 изображений, расположившихся ниже этой прямой. Далее также точно проводится вертикальная прямая и отбрасывается еще часть комбинаций.

Результат выполнения этой программы показал, что нужно около 1000 полноценных записей входа в систему, чтобы определить пароль пользователя. То есть если пользователь будет входить в систему каждый день в среднем по 2 раза, включая выходные и праздники, злоумышленнику придется подсматривать за ним почти 6 месяцев. За это время можно несколько раз сменить пароль. Таким образом, нападение с помощью атаки методом полного перебора практически неосуществимо.

Чтобы сделать вероятность успешной атаки методом полного перебора на схемы треугольника и схемы диагоналей четырехугольника минимальной, нужно:

·увеличить общее количество изображений N, а при запросе пароля отображать только N изображений (N ? N ? 2 N);

·увеличить число парольных изображений K, а при запросе пароля отображать только K изображений (3?K?K);

·не рисовать невидимый треугольник или четырехугольник мышкой при вводе пароля;

·периодически (раз в 3 месяца) менять пароль пользователя.

Заключение


Графические схемы аутентификации - это попытка разработать нововведение в безопасности, принимая во внимание особенности восприятия людей. Можно назвать их примером "удобной безопасности".

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

Эти методы аутентификации могут использоваться для аутентификации в персональном компьютере, карманном компьютере или для web-аутентификации.

Список литературы


1."A Password Scheme Strongly Resistant to Spyware. D. Hong, B. Hawes, M. Mattews.

2."A Shoulder-Surfing Resistant Password Scheme - WIW. S. Man, D. Hong, M. Mattews.

."Design and Evalution of a Shoulder-Surfing Resistant Graphical Password Scheme. S. Wiedenbeck, J. Waters, L. Sobrado, J. - C. Birget.

."Graphical passwords. L. Sobrado, J. - C. Birget.

5.Э. Таненбаум. Современные операционные системы. - М.: Питер, 2002.

Приложения


Приложение 1. Код PAM-модуля pam_triangle


pam_triangle. cpp

#include <security/pam_modules. h>

#include <security/pam_appl. h>

#include <stdio. h>

#include <string. h>

#include <time. h>

#include <QApplication>

#include <QString>

#include <QPushButton>

#include <QIcon>

#include <QLabel>

#include <QWidget>

#include <QGridLayout>

#include <QTextStream>

#include <QDataStream>

#include <QMessageBox>

#include <QFile>

#include "Counter. h"

#define PAM_SM_AUTH

#define n 399

#define n_pass 5

#define m 154

#define row 14

#define rounds 3square (int x1, int y1, int x2, int y2, int x3, int y3)

{s= (x2-x1) * (y3-y2) - (x3-x1) * (y2-y1);

if (s<0)=s* (-1);s;

}_EXTERN int pam_sm_authenticate (pam_handle_t *pamh, int flags, int argc,const char **argv)

{(time (NULL));char *user;retval;ind_i [n];pictures [m];(int i=0; i<n; i++)_i [i] =i;= pam_get_user (pamh, &user, 0);d=0, f;(int i=0; i<n; i++)

{=rand () %n;=ind_i [i];_i [i] =ind_i [d];_i [d] =f;

}b;file ("/etc/triangle/passwords");. open (QIODevice:: ReadOnly);in (&file);username;

int k [n_pass] ={0,0,0,0,0};p [n_pass] ={0,0,0,0,0};

QString uname (user);(! in. atEnd ())

{>> username >> k [0] >> k [1] >> k [2] >> k [3] >> k [4];

if (username==uname)

{(int i=0; i<n_pass; i++)

{[i] =k [i];

}

}

}locate [3];

int passwd_pictures [3];x1=0,y1=0,x2=0,y2=0,x3=0,y3=0,x0,y0;

float s;app (argc, (char **) argv);(int round=0; round<rounds; round++)

{

{

{(int i=0; i<3; i++)

{[i] =rand () %m;

}=locate [0] %row; y1=locate [0] /row;=locate [1] %row; y2=locate [1] /row;=locate [2] %row; y3=locate [2] /row;

}(locate [0] ==locate [1] || locate [1] ==locate [2] || locate [2] ==locate [0]);

s=square (x1,y1,x2,y2,x3,y3);

}(s<10 && s<50);

{(int i=0; i<3; i++)

{_pictures [i] =rand () %n_pass;

}

}(passwd_pictures [0] ==passwd_pictures [1] || passwd_pictures [1] ==passwd_pictures [2] || passwd_pictures [2] ==passwd_pictures [0]);closed [n];(int i=0; i<n; i++)[i] =0;(int i=0; i<m; i++)

{j;(i! =locate [0] && i! =locate [1] && i! =locate [2])

{

{=rand () %n+1;

}(j==p [0] || j==p [1] || j==p [2] || j==p [3] || j==p [4] || closed [j-1] ==1);[i] =j;[j-1] =1;

}

}[locate [0]] =p [passwd_pictures [0]];[locate [1]] =p [passwd_pictures [1]];[locate [2]] =p [passwd_pictures [2]];

double sin1,sin2,sin3;=locate [0] %row; y1=locate [0] /row;

x2=locate [1] %row; y2=locate [1] /row;=locate [2] %row; y3=locate [2] /row;*widget=new QWidget ();>move (0,0);*layout=new QGridLayout ();*button;(int i=0; i<m; i++)

{= new QPushButton ("");=i%row;

y0=i/row;= (x1-x0) * (y2-y1) - (x2-x1) * (y1-y0);= (x2-x0) * (y3-y2) - (x3-x2) * (y2-y0);= (x3-x0) * (y1-y3) - (x1-x3) * (y3-y0);( (sin1>=0 && sin2>=0 && sin3>=0) || (sin1<=0 && sin2<=0 && sin3<=0))

{:: connect (button, SIGNAL (clicked ()),&b,SLOT (auth_ok ()));

}

{:: connect (button, SIGNAL (clicked ()), &b, SLOT (auth_err ()));

}(round==0):: connect (button, SIGNAL (clicked ()),&app,SLOT (quit ()));:: connect (button, SIGNAL (clicked ()),widget,SLOT (hide ()));result;(&result) << "/etc/triangle/pictures/" << pictures [i] <<". png";>setIcon (QIcon (result));>setIconSize (QSize (32,32));>addWidget (button, i/row, i%row);

}*label = new QLabel ("1. Find your 3 password's pictures. \n2. Imagine a triangle formed from them. \n3. Click on the picture that belong to the triangle's area.", widget);>addWidget (label, m/row,m%row,1,-1);>setLayout (layout);>show ();

}. exec ();a=b. auth ();(a>=rounds)

{PAM_SUCCESS;

}

{PAM_AUTH_ERR;

}

}_EXTERN int pam_sm_setcred (pam_handle_t * pamh, int flags, int argc, const char **argv)

{PAM_SUCCESS;

}

#ifdef PAM_STATICpam_module _pam_test_modstruct = {

"pam_triangle",_sm_authenticate,_sm_setcred,,,,,

};

#endif

Counter. cpp

#include <QFile>

#include <QTextStream>

#include <QString>

#include "Counter. h"Counter:: auth_ok ()

{_num++;

}Counter:: auth_err ()

{_num=0;

}

Counter. h

#ifndef COUNTER_H

#define COUNTER_H

#include <QObject>

#include <QString>Counter: public QObject

{_OBJECT:() { auth_num=0; }auth () const {return auth_num; }slots:auth_ok ();auth_err ();:auth_num;

};

#endif

Приложение 2. Код PAM-модуля pam_diagonal

pam_diagonal. cpp

#include <security/pam_modules. h>

#include <security/pam_appl. h>

#include <stdio. h>

#include <string. h>

#include <time. h>

#include <QApplication>

#include <QString>

#include <QPushButton>

#include <QIcon>

#include <QLabel>

#include <QWidget>

#include <QGridLayout>

#include <QTextStream>

#include <QDataStream>

#include <QMessageBox>

#include <QFile>

#include "Counter. h"

#define PAM_SM_AUTH

#define n 399

#define n_pass 5

#define m 154

#define row 14

#define rounds 3triangle (int x1, int y1, int x2, int y2, int x3, int y3, int x0, int y0)

{check=0;sin1= (x1-x0) * (y2-y1) - (x2-x1) * (y1-y0);sin2= (x2-x0) * (y3-y2) - (x3-x2) * (y2-y0);sin3= (x3-x0) * (y1-y3) - (x1-x3) * (y3-y0);( (sin1>=0 && sin2>=0 && sin3>=0) || (sin1<=0 && sin2<=0 && sin3<=0))

check=1;check;

}square (int x1, int y1, int x2, int y2, int x3, int y3)

{s= (x2-x1) * (y3-y2) - (x3-x1) * (y2-y1);

if (s<0)=s* (-1);s;

}_EXTERN int pam_sm_authenticate (pam_handle_t *pamh, int flags, int argc,const char **argv)

{(time (NULL));char *user;retval;ind_i [n];pictures [m];(int i=0; i<n; i++)_i [i] =i;= pam_get_user (pamh, &user, 0);d=0, f;(int i=0; i<n; i++)

{=rand () %n;=ind_i [i];_i [i] =ind_i [d];_i [d] =f;

}b;file ("/etc/diagonal/passwords");. open (QIODevice:: ReadOnly);in (&file);username;

int k [n_pass] ={0,0,0,0,0};p [n_pass] ={0,0,0,0,0};

QString uname (user);(! in. atEnd ())

{>> username >> k [0] >> k [1] >> k [2] >> k [3] >> k [4];

if (username==uname)

{(int i=0; i<n_pass; i++)

{[i] =k [i];

}

}

}locate [4];

int passwd_pictures [4];x1=0,y1=0,x2=0,y2=0,x3=0,y3=0,x4=0,y4=0;

int check;app (argc, (char **) argv);(int round=0; round<rounds; round++)

{

{

{=0;

{(int i=0; i<4; i++)

{[i] =rand () %m;

}

}(locate [0] ==locate [1] || locate [1] ==locate [2] || locate [2] ==locate [0] || locate [0] ==locate [3] || locate [1] ==locate [3] || locate [2] ==locate [3]);=locate [0] %row; y1=locate [0] /row;=locate [1] %row; y2=locate [1] /row;=locate [2] %row; y3=locate [2] /row;=locate [3] %row; y4=locate [3] /row;

check+=triangle (x1,y1,x2,y2,x3,y3,x4,y4);+=triangle (x1,y1,x2,y2,x4,y4,x3,y3);+=triangle (x1,y1,x3,y3,x4,y4,x2,y2);+=triangle (x2,y2,x3,y3,x4,y4,x1,y1);

}(check>0);

}(square (x1,y1,x2,y2,x3,y3) <7 || square (x1,y1,x2,y2,x4,y4) <7 || square (x1,y1,x3,y3,x4,y4) <7 || square (x2,y2,x3,y3,x4,y4) <7);

do

{(int i=0; i<4; i++)

{_pictures [i] =rand () %n_pass;

}

}(passwd_pictures [0] ==passwd_pictures [1] || passwd_pictures [1] ==passwd_pictures [2] || passwd_pictures [2] ==passwd_pictures [0] || passwd_pictures [0] ==passwd_pictures [3] || passwd_pictures [1] ==passwd_pictures [3] || passwd_pictures [2] ==passwd_pictures [3]);closed [n];(int i=0; i<n; i++)[i] =0;(int i=0; i<m; i++)

{j;(i! =locate [0] && i! =locate [1] && i! =locate [2] && i! =locate [3])

{

{=rand () %n+1;

}(j==p [0] || j==p [1] || j==p [2] || j==p [3] || j==p [4] || closed [j-1] ==1);[i] =j;[j-1] =1;

}

}[locate [0]] =p [passwd_pictures [0]];[locate [1]] =p [passwd_pictures [1]];[locate [2]] =p [passwd_pictures [2]];[locate [3]] =p [passwd_pictures [3]];buff;X [] ={0, 0, 0, 0}; float Y [] ={0,0,0,0};

X [0] =x1; X [1] =x2; X [2] =x3; X [3] =x4;[0] =y1; Y [1] =y2; Y [2] =y3; Y [3] =y4;

for (int k=0; k<4; k++)

{(int i=0; i<3; i++)

{(X [i] > X [i+1])

{=X [i];[i] =X [i+1];[i+1] =buff;=Y [i];[i] =Y [i+1];[i+1] =buff;

};

};

};(int i=0; i<3; i++)

{( (X [i] ==X [i+1]) && (Y [i] >Y [i+1]))

{=X [i+1];[i+1] =X [i];[i] =buff;=Y [i+1];[i+1] =Y [i];[i] =buff;

};

};(Y [0] >Y [1])

{=X [0];[0] =X [1];[1] =buff;=Y [0];[0] =Y [1];[1] =buff;

};(Y [3] >Y [2])

{=X [3];

X [3] =X [2];[2] =buff;=Y [3];

Y [3] =Y [2];[2] =buff;

};xp,yp,k1,k2,b1,b2;= (Y [0] - Y [2]) / (X [0] - X [2]);= (Y [1] - Y [3]) / (X [1] - X [3]);= (X [0] *Y [2] - Y [0] *X [2]) / (X [0] - X [2]);= (X [1] *Y [3] - Y [1] *X [3]) / (X [1] - X [3]);= (b1-b2) / (k2-k1);= (k2*b1-k1*b2) / (k2-k1);

int x0,y0;*widget=new QWidget ();>move (0,0);*layout=new QGridLayout ();*button;(int i=0; i<m; i++)

{= new QPushButton ("");=i%row;=i/row;(xp-x0<2 && xp-x0>-2 && yp-y0<2 && yp-y0>-2)

{:: connect (button, SIGNAL (clicked ()),&b,SLOT (auth_ok ()));

}

{:: connect (button, SIGNAL (clicked ()), &b, SLOT (auth_err ()));

}(round==0):: connect (button, SIGNAL (clicked ()),&app,SLOT (quit ()));:: connect (button, SIGNAL (clicked ()),widget,SLOT (hide ()));result;(&result) << "/etc/diagonal/pictures/" << pictures [i] <<". png";>setIcon (QIcon (result));>setIconSize (QSize (32,32));>addWidget (button, i/row, i%row);

}*label = new QLabel ("1. Find your 4 password's pictures. \n2. Imagine a quadrangle formed from them. \n3. Click on the picture that contain the point of intersection quadrangle's diagonals.", widget);>addWidget (label, m/row,m%row,1,-1);>setLayout (layout);>show ();

}. exec ();a=b. auth ();(a>=rounds)

{PAM_SUCCESS;

}

{PAM_AUTH_ERR;

}

}_EXTERN int pam_sm_setcred (pam_handle_t * pamh, int flags, int argc, const char **argv)

{PAM_SUCCESS;

}

#ifdef PAM_STATICpam_module _pam_test_modstruct = {

"pam_diagonal",_sm_authenticate,_sm_setcred,,,,,

};

#endif

counter. cpp

#include <QFile>

#include <QTextStream>

#include <QString>

#include "Counter. h"Counter:: auth_ok ()

{_num++;

}Counter:: auth_err ()

{_num=0;

}

counter. h

#ifndef COUNTER_H

#define COUNTER_H

#include <QObject>

#include <QString>Counter: public QObject

{_OBJECT:() { auth_num=0; }auth () const {return auth_num; }slots:auth_ok ();auth_err ();:auth_num;

};

#endif


Федеральное агентство по образованию Государственное общеобразовательное учреждение высшего профессионального образования "Челябинский государстве

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ