Создание программы для хранения паролей реферат

Обновлено: 08.07.2024

  • Для учеников 1-11 классов и дошкольников
  • Бесплатные сертификаты учителям и участникам

Муниципальное бюджетное образовательное учреждение

Городская научно-практическая конференция учащихся 9-11 классов

Исследовательская работа по информатике

Автор: Садиков Иван,

Руководитель: Гусева Л. А.,

Способы получения паролей……………………….….

Примеры программ для взлома паролей………….…..

Язык программирования Python…………..……….….

Возникновение языка Python……………..……….…..

Кто использует Python……………..……………….….

Сравнение языка Python с другими, наиболее часто используемыми языками программирования…………

Программа генератора паролей…………………..…….

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

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

Целью моей работы является разработка алгоритма генератора паролей на языке программирования Python 3.

Согласно цели я поставил перед собой задачи:

Изучить историю возникновения паролей, прочитав различные источники информации;

Больше узнать о создателе компьютерных паролей;

Сравнить эффективность языка программирования Python и других высокоуровневых языков программирования;

Разработать алгоритм программы.

История возникновения паролей

1.1 Слабые пароли

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

Идея создания защищенных учетных записей пришла в голову американского ученого по имени Фернандо Корбато. Он родился в далеком 1926 году и за свою долгую жизнь сделал множество открытий. В 1990 году он получил одну из самых престижных наград в научной сфере, а именно Премию Тьюринга за большой вклад в информатику.

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

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

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

В ходе интервью для газеты The Wall Street Journal Фернандо Корбато однажды объявил, что пароли стали настоящим кошмаром для Всемирной паутины. Из-за их большого количества пользователям приходится либо заводить толстые блокноты для их записи, либо использовать специальные программы, которые хранят пароли в зашифрованном виде. Количество паролей у Фернандо в 2014 году перевалило за сотню — они были записаны в трех бумажных листах.

При создании паролей пользователи часто выбирают на клавиатуре комбинации, которые легко запомнить и можно машинально повторить. Поэтому комбинации клавиш, расположенных рядом, завоевали популярность среди многих пользователей, не думающих о последствиях своего легкого выбора. Логично, что наиболее часто встречающимися паролями стали: qwerty; qwertyuiop; 1qaz2wsx; qazwsx; asdfgh и так далее.

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

1. Представители киберсекьюрити утверждают: длина пароля должна быть не менее 10 символов. По данным исследования Trustwave, комбинация пароля, состоящая из восьми символов, может быть взломана злоумышленником за один день. Тогда как пароль из 10 и более знаков заставит интернет-мошенника изрядно попотеть: на его взлом могут уйти несолько месяцев.

2. Пароль должен содержать разные символы – строчные и прописные буквы, цифры, знаки. Наименее уязвимыми считаются пароли, сгенерированные по случайному принципу, типа sdl@GK93m**Hlk. Популярные названия, собственные имена, даты рождения, номера телефонов – легкая добыча злоумышленников. Такие пароли быстро вычисляются в рамках брутфорс-атаки.

3. Никогда нельзя быть уверенным на 100% в том, что текущий пароль не перехвачен злоумышленником (хакер может им воспользоваться не сразу). Частая смена пароля снижает риски, что у кого-то кроме вас в настоящий момент есть доступ к вашей конфиденциальной информации.

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

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

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

10. Мы часто решаем деловые вопросы, подключаясь к сети в общественных местах. Однако работа в открытых Wi-Fi-сетях – кафе, торговых центрах или аэропортах – всегда сопряжена с риском перехвата ваших конфиденциальных данных программами-анализаторами трафика (снифферами). Что делать в таких случаях? Использовать безопасное VPN-подключение.

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

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

Так каким же образом наши пароли могут попасть в руки хакеров?

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

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

1.3 Способы получения паролей

Атака по словарю

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

Радужная таблица

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

Брутфорс

Гибридный подход

1.4 Примеры программ для взлома паролей

Cain and Abel — скорее всего, самый известный инструмент взлома паролей на планете. Написан он строго для Windows, может взламывать многочисленные типы хешей

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

2. Язык программирования Python

2.1 Возникновение языка Python

Все началось в 1990 году, когда сотрудник голландского института CWI, тогда еще мало кому известный Гвидо ван Россум участвовал в проекте создания языка ABC. Язык был предназначен для замены языка BASIC, для обучения студентов основным концепциям программирования.

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

Через некоторое время Гвидо переехал из Голландии в Америку. Его пригласили работать в корпорации CNRI. Он там работал, используя Python для тех проектов, которыми занималась корпорация, а в свободное рабочее время развивал язык и интерпретатор.

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

2.2 Кто использует Python?

Грош цена даже самому продвинутому языку программирования, если до него никому нет дела. Одним из составляющих успеха любой технологии является сообщество, созданное вокруг неё. Именно оно предопределяет будущий вектор развития путём совместных усилий. Сообщество вокруг Python одно из самых сильных в мире IT. Это сложный хорошо организованный и постоянно развивающийся организм. Помимо сотни тысяч индивидуальных разработчиков и небольших софтверных компаний, Python поддерживают такие гиганты IT как:

Подробнее о работе:

Оглавление

Введение
1. Объектно-ориентированный Паскаль.
1.1. Lazarus.
1.2. Шифр Виженера.
2. Создание программы для хранения пароля.
1.3. Подготовительный этап.
1.4. Описание продукта.
Заключение
Приложения
Глоссарий

Введение

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


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

Имея огромное количество паролей, пользователь сталкивается с такими проблемами как неверно введенный или вовсе забытый пароль, перепутанный login или email. Каждая проблема несет череду последствий, например, блокировкой данной учетной записи и созданием новой, что может повлечь потерю данных. Человеку свойственно что-либо забывать и он будет хранить данные для входа на бумажных носителях (в записной книжке, листочках и т.п.), что чревато возможностью кражи или потери данных.

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

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

  1. Легко ли выучить язык Lazarus?
  2. Возможно ли создать хранилище в данной оболочке?
  3. Проста ли оболочка в использовании с точки зрения интерфейса?

Проблема: как написать программу для хранения неограниченного количества паролей для разных программ и сервисов для 1-го пользователя, используя оболочку Lazarus.

Противоречие: буфер обмена Windows может запомнить единовременно один пароль, а нужно оперативно переключаться между разными паролями для разных программ (любая база данных ограничена в работе в фоновом режиме и после превышения ограничения автоматически закрывается, требует нового ввода пароля)

Актуальность проекта: Данная работа актуальна тем, что продуктом является программа, в которой безопасно будут храниться пароли для авторизации в различных ресурсах. Это облегчит работу пользователя с паролями

Потенциальная трудность: ограничение возможностей оболочки программы

  • Конкретность: четко сформулирована цель проекта о создании программы для хранения паролей
  • Контролируемость: указаны сроки работы и кому адресовано
  • Реалистичность: цель содержит точный способ осуществления этой работы
  • Актуальность: за последние несколько лет в жизни людей появилось очень много ресурсов, требующих защиты данных. Защитой стали индивидуальные для учетной записи логин и пароль. Для пользователя стало проблемой большое количество таких паролей. Они теряются или вовсе забываются, что в некоторых случаях может повлечь серьезные последствия. Данная работа направлена на предотвращение таких ситуаций путем создания программы, хранящей пароли.
  • Побудительность: данный проект может разжечь интерес к информатике, различным шифрам и программированию.


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

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

Имея огромное количество паролей, пользователь сталкивается с такими проблемами как неверно введенный или вовсе забытый пароль, перепутанный login или email. Каждая проблема несет череду последствий, например, блокировкой данной учетной записи и созданием новой, что может повлечь потерю данных. Человеку свойственно что-либо забывать и он будет хранить данные для входа на бумажных носителях (в записной книжке, листочках и т.п.), что чревато возможностью кражи или потери данных.

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

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

Аналоговый анализ

2) Spyrix Keylogger Free - кейлоггер, который обещает быть полностью необнаружимым антивирусным программным обеспечением. Этот регистратор нажатий клавиш, как иногда называют его разработчик, может управляться удаленно из любого места и с любого устройства с современным веб-браузером через безопасный веб-интерфейс. Это устраняет необходимость посещать контролируемый компьютер для получения файлов журнала или удаления регистратора нажатий клавиш. Является нежелательным ПО.

3) Elite Keylogger для Windows - пользователи Elite Keylogger высоко оценивают простоту установки и использования. В случае возникновения проблем с Elite Keylogger, они могут связаться с удаленной поддержкой, которая доступна круглосуточно, чтобы помочь с любыми проблемами. Иногда необходимо регистрировать ключи, не будучи обнаруженными, и Elite Keylogger выделяется в этом отношении, работая тихо в фоновом режиме, не влияя на производительность системы.

4) Best Free Keylogger - это удобное решение для записи всех действий на вашем компьютере, включая нажатия клавиш, чаты, веб-активность или запущенные приложения. Самая выдающаяся особенность этого кейлоггера называется Smart Read, и его целью является преобразование непонятных последовательностей нажатий клавиш в легко читаемый текст. Best Free Keylogger может затем доставить вам форматированный текст, используя несколько методов доставки, включая электронную почту и FTP. К сожалению, эти и другие варианты доставки доступны только в Pro-версии Best Free Keylogger


5) Wolfeye Keylogger - немецкий кейлоггер для Windows 10, 8, 7, Vista и даже XP, который перестал получать дальнейшую поддержку или обновления безопасности. Wolfeye Keylogger, созданный с учетом создания социальных сетей, может одним нажатием кнопки регистрировать действия в Facebook, электронной почте, чате и веб-действиях и отправлять записанные нажатия клавиш в удаленное местоположение по электронной почте или по FTP. Wolfeye Keylogger получил немецкую награду в области ИТ-инноваций и был выбран в качестве самого выгодного программного обеспечения 2017 года для малого и среднего бизнеса.

6) Ardamax Keylogger компактен, но способен. Что отличает его от многих других лучших программ для кейлоггеров для Windows, так это его способность использовать микрофон для записи звука и веб-камеру для записи видео. В сочетании с возможностью фиксировать нажатия клавиш из любого приложения Ardamax Keylogger представляет собой очень мощное решение для мониторинга активности компьютеров, которое может отслеживать не только то, что происходит на компьютере, но и то, что происходит перед ним.

7) All In One Keylogger Keylogger Keylogger - этот многофункциональный кейлоггер Windows 10 может записывать все приложения, работающие на компьютере, а также записывать текст, который был скопирован в буфер обмена, захватывать обе стороны интернет-разговоров, делать скриншоты, записывать звук с помощью микрофона, делать снимки с веб-камеры, сохранить названия печатных документов и многое другое. Тем не менее, за такое количество функций в одном приложении приходится платить, и эта цена представлена ​​в виде сложного пользовательского интерфейса.

8) Free Keylogger предлагает ряд уникальных функций, которые делают его отличным кейлоггером для Windows. Для начала, он может расшифровать длинные последовательности нажатий клавиш и сделать их читаемыми с помощью функции Easy Read. Он также может отслеживать только выбранные приложения, что может значительно сократить количество зафиксированных нажатий клавиш и, таким образом, облегчить поиск значимой информации. И последнее, но не менее важное: Free Keylogger можно настроить на автоматическое удаление, чтобы элегантно избавиться от всех свидетельств записи нажатий клавиш.

9) StupidKeyLogger, несмотря на название, является одним из лучших кейлоггеров для Windows. Его главная сила заключается в его простоте. Он имеет только самые важные функции и сохраняет записанные нажатия клавиш в виде простого текста в файле с именем Record.log, который должен быть расшифрован с помощью утилиты, включенной в StupidKeyLogger, чтобы стать читабельным.

10 ) Elite Keylogger для Mac не обнаруживаем, прост в использовании и невероятно мощен. Он может отслеживать практически любые действия, от электронных писем до чатов, имен пользователей и паролей. Информация взята с сайта Топ 10 бесплатных Кейлоггеров от WIDESTEP GROUP

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

Пояснительная записка содержит 32 с., 2 рис., 4 источника, 4 прил.

MICROSOFT VISUAL С++, ПРОГРАММА, ПАРОЛЬНАЯ СИСТЕМА, КОЛИЧЕСТВЕННАЯ ОЦЕНКА СТОЙКОСТИ ПАРОЛЯ.

Объектом исследования является парольные системы.

Целью работы является разработка программы, генерирующей пароли пользователей с учётом количественной оценки стойкости пароля.

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

В результате работы была разработана программа, генерирующая пароли пользователей (её текст приведён в приложении).

1. Количественная оценка стойкости пароля

2.1 Понятие интерфейса и его назначение

2.2. Выбор интерфейса

3. Разработка алгоритма программы

4. Создание программы на базе разработанного алгоритма

5. Экспериментальная проверка количественных оценок стойкости пароля

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

Список использованных источников

ПРИЛОЖЕНИЕ А. Алгоритм программы

ПРИЛОЖЕНИЕ Б. Текст программы

ПРИЛОЖЕНИЕ В. Random.cpp

ПРИЛОЖЕНИЕ Г. PassGenDlg.cpp

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

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

Несанкционированный доступ (Н.С.Д.) к информации - доступ к информации, нарушающий установленное правило разграничения доступа и осуществляемый с использованием нештатных средств, предоставляемых автоматизированной системой.

Выделяют 2 типа методов защиты от Н.С.Д.:

1) организационные меры - определяются документально.

2) Технические меры - группа методов, которые реализуются программными, аппаратными и программно - аппаратными средствами.

Существуют 3 группы методов аутентификации, которые основаны на обладании некоторого свойства или объекта

1) обладание определённым объектом;

2) основано на знании информации известной пользователю и проверяющей стороне;

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

Общие подходы к построению парольных систем.

1. с использованием хранимой копии пароля;

2. некоторое проверочное значение;

3. парольная система без непосредственной передачи информации, о пароле проверяющей стороне;

4. использование пароля для получения криптографического ключа.

Идентификатор пользователя - некоторая уникальная информация, позволяющая различать индивидуальных пользователей парольной системы. Часто идентификатор пользователя называют именем пользователя. Пароль - некоторая секретная информация, которая известна только пользователю и парольной системе, которая предъявляется для прохождения процедуры идентификации.

Учётная запись пользователя - совокупность его идентификатора и пароля. База данных пользователей парольной системы содержит учётные записи пользователей парольной системы. Под парольной системой понимается программно-аппаратный комплекс, реализующий идентификацию и аутен-тификацию пользователей автоматизированной системы на основе одноразовых и многоразовых паролей.

Угрозы для парольной системы.

1. разглашение параметров учётной записи

а) подбор пароля;

б) визуальное наблюдение;

в) перехват пароля в сети.

2. вмешательство в функционирование парольной системы

а) использование программных закладок;

б) выведение из строя парольной системы;

в) использование ошибок и недоработок в парольной системе.

Выбор паролей

Требования к выбору паролей:

требования к выбору пароля

ограничение минимальной длины

1 усложняется подбор методом прямого перебора

2 усложняется подсматривание

Использование различных групп символов

усложняется подбор методом прямого перебора

проверка и отбраковка по словарю

затруднение подбора пароля по словарю

установление срока действия пароля

усложняется подбор методом прямого перебора и подстановки старого

ведение журнала историй пароля

повышается эффективность предыдущего

ограничение количества попыток ввода

препятствует подбору пароля

поддержка режима принудительной смены пароля

увеличение эффекта выполнения требования касающегося смены пароля

принцип смена пароля после 1-ой регистрации

защита от злоумышленных действий администратора

запрет на выбор пароля самим пользователем

защита от выбора пользователем лёгкого пароля

Задержка при вводе неправильного пароля

затрудняется подбор пароля когда он вводится с клавиатуры непосредственно за компьютером

1. Количественная оценка стойкости пароля

“А”-мощность алфавита паролей

могут применяется для обеспечения требуемого значения S=A L

“S”-мощность пространства паролей

определяется на основе заданных значений P,T,V

“V”-скорость подбора паролей

скорость обработки 1-ой попытки регистрации

“T”- срок действия пароля

определяется из параметра Р.

“P”- вероятность подбора пароля в течение срока его действия (подбор идёт неправильно в течение всего времени)

Произведём количественную оценку пароля при заданных параметрах:

-вероятность подбора пароля Р-10 -4 ;

-период действия пароля Т, минут-30;

-длина пароля L, 6 символов;

-мощность алфавита паролей А – прописные и строчные латинские буквы и цифры от 0 до 9 т.е. 62 символов;

Необходимо найти скорость подбора пароля.

Для нахождения скорости подбора пароля воспользуемся формулой P=V*T/S, причем мощность пароля равна S=A L . Период действия выразим в секундах (Т=30 мин.* 60 сек. =1800 сек.). Таким образом получаем V=P*A L /T. Подставив значения получили V= 10 -4 *62 6 /1800=3155 пар./сек.

Подсчитав, мы получили величину скорости подбора пароля равную 3155 пар./сек.

2. Интерфейс

2.1 Понятие интерфейса и его назначение

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

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

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

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

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

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

В настоящее время можно считать доказанным, что главная задача проектирования интерфейса пользователя заключается не в том, чтобы рационально "вписать" человека в контур управления, а в том, чтобы, исходя из задач управления объектом, разработать систему взаимодействия двух равноправных партнёров (человек- оператор и аппаратно- программный комплекс АСУ), рационально управляющих объектом управления.

2.2 Выбор интерфейса

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

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

Интерфейс приведен на рисунке 1.

3. Разработка алгоритма программы

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

Прежде чем начать разработку, вводим несколько ограничений:

- программа должна исключать подбор пароля по словарю;

- программа должна обеспечивать взаимодействие с пользователем посредством графического интерфейса;

- процесс выполнения генерации паролей должен быть реализован в интегрированной среде разработки Microsoft Visual C++ v. 6.0.

- символы не должны повторяться.

После запуска программы и нажатия на клавишу “Генерировать код” должен генерироваться случайно первый символ из заранее созданного массива символов PassAlfavit[], после чего данный символ записывается в другой массив passwrd[]. Далее генерируется второй и происходит проверка, не повторяются ли символы. Если выполняется данное условие, то происходит удаление последнего символа, если же нет, то происходит запись в массив passwrd[] со следующим символом.

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

После завершения генерации пароля он должен быть выдан в специальном поле.

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

4. Создание программы на базе разработанного алгоритма

В данном разделе приводится описание текста программы выполняющей генерацию паролей пользователей. Данная программа реализована на языке программирования С++ при помощи интегрированной среды обработки Visual С++.

Работа с элементами управления

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

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

Откроем диалоговое окно Edit Properties. В тестовое поле раскрывающего списка ID: (Идентификатор ресурса) вместо идентификатора IDC_EDIT1 введём идентификатор IDGEN, а в поле caption введём слово Generirowanie.

Клавишу Cancel которую создал MFC AppWizard оставим без изменений но укажем новое местоположение.

На этом этап формирования диалогового окна можно считать законченным. Дело в том, что одновременно с производимыми нами действиями программная оболочка Visual C++ фиксировала все вносимые изменения в файлах PassGen.rc и resource.h.

Создание класса диалога

Приступим к созданию класса диалога. Очень большую долю работы по созданию этого класса уже выполнил мастер AppWizard, а еще некоторую часть работы возьмет на себя мастер ClassWizard.

Оболочка Visual C++ сама создаст Password.cpp и Random.cpp. Далее необходимо будет заменить данные файлы, на файлы, приведённые в приложении Б и В соответственно.

Далее остаётся только сохранить и откомпилировать данную программу.

На этом создание программы на языке С++ закончилось.

5. Экспериментальная проверка количественных оценок

Данную экспериментальную проверку будем осуществлять, изменяя скорость подбора паролей, и фиксировать время, за которое не будет скомпрометирован пароль, при этом значения P и S изменяться не будут.

- вероятность подбора пароля P=10 -3 ;

- мощность пространства паролей S=1,6*10 12

Время, за которое данный пароль не будет скомпрометирован, вычисляется по следующей формуле: T=(P * S) / V

1 Скорость подбора пароля V, паролей /сек-1*10 5 ;

T=(10 -3 *1.6*10 12 ) / 10 5 = 1600 секунд => 4.44 часа

2 Скорость подбора пароля V, паролей /сек-2*10 5 ;

T=(10 -3 *1.6*10 12 ) / 2*10 5 = 8000 секунд => 2.22 часа

3 Скорость подбора пароля V, паролей /сек-2,5*10 5 ;

T=(10 -3 *1.6*10 12 ) / 2,5*10 5 = 6400 секунд => 1.77 часа

4 Скорость подбора пароля V, паролей /сек-3*10 5 ;

T=(10 -3 *1.6*10 12 ) / 3*10 5 = 5333 секунд => 1.48 часа

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

Для того, что бы точно скомпрометировать пароль за три часа, необходима скорость подбора паролей V=1.5*10 8 паролей /сек. Время взлома также уменьшается от вида атаки и от степени осведомлённости злоумышленника. Так простейшая программа для взлома паролей архиватора RAR “Advanced RAR Password Recovery” предусматривает 3 типа атаки:

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

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

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

В процессе выполнения курсового проекта была разработана программа, генерирующая пароли пользователей. Программа была написана при помощи интегрированной среды разработки Visual C++. Программа соответствует всем функциональным требованиям, заданным на курсовое проектирование. Взаимодействие с пользователем осуществляется с помощью графического интерфейса.

Таким образом, задание на курсовое проектирование было полностью выполнено.

Список использованных источников

3 Келецкий Я. Энциклопедия языка Си/ Пер. с англ.- М.: Мир, 1992. -687с.

4 Керниган Б., Ричи Д., Фьюер А. Язык программирования Си. Задачи по языку С/ Пер. с англ. - М.: Финансы и статистика, 1985.-279с.

ПРИЛОЖЕНИЕ А


Случайное генерирование 1-го символа из массива PassAlfavit[]


--------------[на лист 2

Рисунок А.1. Алгоритм программы


---------------------------------------[с листа 1




Рисунок А.1. Лист №2

ПРИЛОЖЕНИЕ Б

// Password.cpp: implementation of the Password class.

static char THIS_FILE[]=__FILE__;

passwrd = new char [length+1];

dicstr = new char [length+1];

PassAlfavit = new char [36];

HowMuchn = new int [length];

for (int index=0;index 1)

MessageBox(0,"Не удается открыть словарь", "ошибка", MB_APPLMODAL|MB_OK|MB_ICONSTOP);

for (int index =0;index

static char THIS_FILE[]=__FILE__;

int Random::NextR(int x)

ПРИЛОЖЕНИЕ Г

// PassGenDlg.cpp : implementation file

static char THIS_FILE[] = __FILE__;

CPassGenDlg::CPassGenDlg(CWnd* pParent /*=NULL*/)

// NOTE: the ClassWizard will add member initialization here

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

void CPassGenDlg::DoDataExchange(CDataExchange* pDX)

// NOTE: the ClassWizard will add DDX and DDV calls here

// CPassGenDlg message handlers

// Set the icon for this dialog. The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control>

// If you add a minimize button to your dialog, you will need the code below

// to draw the icon. For MFC applications using the document/view model,

// this is automatically done for you by the framework.

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

dc.DrawIcon(x, y, m_hIcon);>

// The system calls this to obtain the cursor to display while the user drags

Слайды и текст этой презентации

Программы для хранения паролейЗанятие № 1Тема 4

Программы для хранения паролей

Занятие № 1
Тема 4

ЧТО такое пароль?Пароль (фр. parole — слово) — условное слово или набор знаков, предназначенный для подтверждения личности или полномочий.Пароли часто используются для защиты информации от несанкционированного

ЧТО такое пароль?

Первые паролиПервые пароли появились еще в древнем Риме.Компьютерные пароли впервые начали использовать в MIT в 60-е годы

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



Как увеличить сложность пароля?Пароль не должен быть слишком коротким, поскольку это упрощает его взлом полным перебором. Наиболее

Как увеличить сложность пароля?

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

Перебор Паролей (bruteforcing)Перебор — это система, позволяющая по порядку перебрать множество вариантов возможного пароля. Допустим, вы используете в пароле 5 цифр.

Перебор Паролей (bruteforcing)

Перебор — это система, позволяющая по порядку перебрать множество вариантов возможного пароля.
Допустим, вы используете в пароле 5 цифр. Это всего 100 тысяч комбинаций (105 = 100000).
Пароли длиной 4–5 знаков сдаются злоумышленнику за считанные секунды, но каждый новый символ замедляет процесс в десятки раз. То же самое касается различных регистров букв, добавления специальных символов и цифр – наличие их в пароле существенно снижает шансы взлома перебором паролей.
Хорошие почтовые сервисы обычно не позволяют бесконечно вводить неправильные пароли, но такая система есть не везде.

Бессмысленный набор букв

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

Как придумать Стойкий парольДля начала придумайте кодовую фразу, которую вы точно не забудете. Это может быть любимая

Как придумать Стойкий пароль

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

Я помню чудное мгновенье:
Передо мной явилась ты,
Как мимолетное виденье,
Как гений чистой красоты.

Как придумать Стойкий парольСокращаем все слова до первой буквыяпчм:пмят,кмв,кгчкЯ помню чудное мгновенье:Передо мной явилась ты,Как мимолетное виденье,

Как придумать Стойкий пароль

Сокращаем все слова до первой буквы

Я помню чудное мгновенье:
Передо мной явилась ты,
Как мимолетное виденье,
Как гений чистой красоты.

Как придумать Стойкий парольЗамена символовЗаменяем все буквы на латинские, попутно для повышения стойкости пароля, заменяем некоторые буквы

Как придумать Стойкий пароль

Как придумать Стойкий пароль

Как придумать Стойкий пароль

https://password.kaspersky.com/ru/

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

Слишком много паролей

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

Программы для хранения паролейМенеджер паролей — программное обеспечение, которое помогает пользователю работать с паролями и PIN-кодами. У подобного программного обеспечения обычно имеется

Программы для хранения паролей

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

Google smart lockПозволяет настроить Android-устройство так, чтобы в определенных условиях блокировка экрана снималась автоматически. Если вы находитесь

Google smart lock

Google smart lock

Google smart lockНесколько примеров, почему Smart Lock может вам навредить.Пример 1Если вы подключили разблокировку по местоположению и

Google smart lock

Как ни странно, но только 1% пользователей браузера используют специализированные расширения для хранения паролей (LastPass, KeePass, 1Password, . ). Безопасность паролей всех остальных пользователей зависит от браузера. Cегодня мы расскажем читателям Хабрахабра, почему наша команда отказалась от архитектуры защиты паролей из проекта Chromium и как разработала собственный менеджер паролей, который уже тестируется в бете. Вы также узнаете, как мы решили проблему сброса мастер-пароля без расшифровки самих паролей.


С точки зрения безопасности, на каждом сайта рекомендуется использовать свой уникальный пароль. Если злоумышленники украдут один пароль, то только к одному сайту они и получат доступ. Проблема в том, что запомнить десятки надёжных паролей очень сложно. Кто-то честно придумывает новые пароли и записывает их руками в блокнот (а потом теряет вместе с ним же), другие – используют один и тот же пароль на всех сайтах. Трудно сказать, какой из этих вариантов хуже. Решением проблемы для миллионов обычных пользователей может быть встроенный в браузер менеджер паролей, но его эффективность зависит от того, насколько он прост и надёжен. И в этих вопросах у предыдущего решения были пробелы, о которых мы и расскажем ниже.

Почему мы создаем новый менеджер паролей?

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

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

Каким бы безопасным ни был новый менеджер паролей, его популярность зависит от того, насколько просто им пользоваться. Напомним, что те же 1Password, KeePass и LastPass даже в сумме используют не более процента пользователей (хотя LastPass мы предлагаем в нашем встроенном каталоге дополнений). Или другой пример. Вот так в старой реализации Браузер предлагает сохранить пароль:


Опытные пользователи или согласятся, или откажутся, или сделают хоть что-то с этим уведомлением. Но в 80% случаев его просто не замечают. Многие пользователи даже не знают, что в браузере можно сохранять пароли.

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

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

Почему мы не взяли готовое решение?

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

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

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

А ещё любое стороннее решение в любом случае пришлось бы серьезно дорабатывать, чтобы нативно интегрировать в браузер (переписать на C++ и Java) и сделать его достаточно простым для пользователей (полностью заменить весь интерфейс). Как бы удивительно это ни звучало, но написать новую архитектуру хранения и шифрования паролей проще, чем сделать всё остальное. Поэтому логичнее не пытаться связать два изначально несовместимых продукта в один, а доработать свой.

Новая архитектура с использованием мастер-пароля

В хранении самих записей нет ничего необычного. Мы используем надежный и быстрый алгоритм AES-256-GCM для шифрования паролей и примечаний, адреса и логины не шифруем для удобства применения, но подписываем для защиты от подмены. Похожим образом устроена схема хранилища в том же 1Password.

Самое интересное – это защита 256-битного ключа encKey, который необходим для расшифровки паролей. Это ключевой момент безопасности паролей. Если злоумышленник узнает этот ключ, то легко взломает всё хранилище независимо от сложности алгоритма шифрования. Поэтому защита ключа основана на следующих базовых принципах:

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

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

Далее ключ encKey зашифровывается с помощью асимметричного алгоритма RSA-OAEP. Для этого Браузер создает пару ключей: открытый pubKey и закрытый privKey. Ключ encKey защищается с помощью открытого ключа, а расшифровать его можно только с помощью закрытого.

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

Чтобы было проще разобраться во всём этом, приведем схему расшифровки паролей:


У подобной архитектуры с использованием мастер-пароля есть ряд преимуществ:

– 256-битный ключ шифрования хранилища генерируется случайно и обладает высокой криптостойкостью по сравнению с паролями, придуманными человеком.
– При брутфорсе мастер-пароля злоумышленник не узнает результат, если не пройдется по всей цепи (пароль-PBKDF2-RSA-AES). Это очень долго и очень дорого.
– Если функция хэширования будет скомпрометирована, мы в любой момент можем перейти на альтернативный вариант хэширования с сохранением обратной совместимости.
– Если злоумышленник узнает мастер-пароль, то сменить его можно без сложной и рискованной процедуры расшифровки всего хранилища, потому что ключ шифрования данных не связан с мастер-паролем, а значит, не скомпрометирован.
– Ключ шифрования хранится в зашифрованном виде. Ни Яндекс, ни злоумышленник, похитивший пароль от Яндекса, не смогут получить доступ к синхронизированным паролям, поскольку для этого нужен мастер-пароль, который нигде не хранится.

Как сбросить мастер-пароль без раскрытия паролей?

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

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


Если поместить расшифрованный privKey в облако, то безопасность паролей будет зависеть от аккаунта Яндекса. А ровно этого мы и не хотели допускать. Если же хранить его в явном виде локально, то вся защита с мастер-паролем теряет какой-либо смысл. Нет такого места, где можно было бы безопасно хранить этот ключ в явном виде. Значит, его надо шифровать. Для этого Браузер создает случайный 256-битный ключ, которым защищает дубликат privKey. Теперь самое интересное. Этот случайный ключ отправляется на хранение в облако Яндекс.Паспорта. А зашифрованный дубликат остается храниться в локальном профиле Браузера. Получается, что ни в облаке, ни на компьютере нет готовой пары для расшифровки паролей, и безопасность не страдает.

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

Браузер запросит ключ у Яндекс.Паспорта, расшифрует им дубликат ключа privKey, с его помощью расшифрует ключ от хранилища encKey, а дальше создаст новую пару pubKey и privKey, последний из которых будет защищён новым мастер-паролем. Хранилище паролей при этом не расшифровывается, что снижает риск потери данных. К слову, принудительно сменить encKey и перешифровать данные тоже можно: достаточно отключить и заново включить мастер-пароль в настройках.

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

Новая архитектура и мастер-пароль – не единственные изменения в новом менеджере. Как мы уже рассказывали выше, удобство в использовании и расширенные возможности важны не меньше.

Новый менеджер паролей

Прежде всего, мы отказались от незаметной серой панели с предложением сохранить пароль. Теперь пользователь увидит предложение рядом с полем пароля. Не заметить такое уже трудно.


Да и сам менеджер теперь не надо искать в настройках: кнопка доступна в главном меню. Список сохранённых аккаунтов теперь поддерживает сортировку по логину, адресу и примечанию. Мы также добавили редактирование записей.

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


А ещё Браузер теперь помогает создавать уникальные пароли.


В первой бета-версии мы успели далеко не всё. В будущем мы поддержим экспорт и импорт паролей для совместимости с популярными сторонними решениями. Также у нас есть идея добавить настройки генератору паролей.


Мобильный менеджер паролей

Конечно же, новая логика и поддержка мастер-пароля появятся не только на компьютере, но и в версиях Яндекс.Браузера для Android и iOS. С небольшой адаптацией. К примеру, можно использовать не только мастер-пароль, но и отпечаток пальца. Мы также запретили программно делать скриншоты на странице со списком паролей – можно не бояться вредоносных приложений.


Сегодня новый менеджер паролей можно попробовать в бета-версии Яндекс.Браузера для Windows и macOS (версия для Linux традиционно собирается на базе стабильного кода, поэтому выйдет чуть позже). В ближайшее время он также заработает в альфа-версии Браузера для Android (а ещё через некоторое время появится и в бете для iOS).

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

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

Читайте также: