Приветствую тебя дорогой читатель.  Я хочу начать цикл статей о паролях и о том, какие проблемы они решают и вызывают в нашей жизни. Зачем? — спросите вы. Чтобы облегчить и улучшить нашу жизнь, — отвечу я. Именно поэтому мы занимаемся разработкой Meta Secret, который позволяет крутейшим образом решить некоторые самые критичные проблемы использования паролей, но об этом позже. Сейчас давайте поговорим о сложности и надежности паролей и механизмах, лежащих в основе проблемы, которая звучит так: люди очень плохо придумывают надежные пароли, а запоминают эти пароли ещё хуже. На днях меня посетила простая и очевидная мысль: чем сложнее пароль, тем выше вероятность, что владелец не сможет вспомнить его. Это обычная квадратичная зависимость. Если грубо, то каждая добавленная буква к паролю увеличивает сложность его запоминания человеком в 2 раза. Давайте потренируемся: 123 ab2^ 87joG8 Ri7!9O14Y&AQ Запомнили? Отлично! Возвращайтесь через неделю (шучу, вы даже через 5 минут не сможете вспомнить) и попробуйте вспомнить эти пароли без подсказки, удачи. Теперь становится понятно, что человеку по определению очень сложно пользоваться надежными паролями, не потому что он глуп или ленив, а потому что сложность этой процедуры растёт в геометрической прогрессии. А значит, если спроецировать этот факт на большое количество людей, то взлом облачных менеджеров паролей становится очень привлекательной идеей, потому что у большинства пользователей будут простые пароли, которые относительно легко взломать. И всеми любимый LostPass не стал медлить с тем чтобы нас всех порадовать по этому поводу. Вся надежда на PBKDF2 с 100100 итерациями который используется как основной механизм защиты мастер пароля пользователей. Имея базу данных на 30 миллионов аккаунтов, которую LastPass любезно предоставил хакерам, можно пройтись по всем аккаунтам и перебрать все самые часто встречающиеся пароли, и вот у нас уже сотни тысяч взломанных аккаунтов, что вполне себе неплохо. А ведь можно продолжить развлекаться и написать хороший брутфорсер, пользующийся всеми возможностями современных видеокарт, что сделает атаку перебора относительно дешевой. Любой ASIC считает триллионы SHA256 кешей в секунду (поправьте, если я не прав), у PBKDF2 мы делаем то же самое — что такое 100 тысяч операций, когда у нас производительность под сотню триллионов операций в секунду? Супер грубо ~ 1 миллиард PBKDF2 в секунду на оборудовании за пару тройку тысяч долларов). По случаю такого праздника, который устроил LastPass, 1Password, конечно же, не упустил возможность поддать дружеского пендаля коллегам. 1Password гордятся, что если хакер украдет у них базу данных, то взломать аккаунт пользователя прямым перебором хакер не сможет. Ведь 1Password придумал гениальную схему — вместо одного пароля у нас будет ДВА пароля (второй пароль они называют токеном)! Что может быть гениальнее, не так ли?Теперь по сути, вторую часть пароля запомнить вообще не представляется возможным для практически 100% пользователей. А значит, пользователям в простейшем случае придется записывать токен на бумажку или заниматься более сложными, прикольными вещами, как например ломать голову над тем, как надежно хранить токен. Что, конечно же, увеличивает вероятность потерять пароль примерно в 4 раза. То есть, имея проблему теоретической угрозы взлома пароля пользователя, они просто заставили пользователя иметь два пароля, один из которых огромен (что позволило им выглядеть красавчиками в случае взлома LastPass‑a, ведь их теперь не взломать прямым перебором), но они переложили проблему по хранению мастер‑пароля (двух паролей!) на плечи пользователя. Проще было бы уже банально заставить пользователя предоставить надежный пароль при регистрации. Предположим, что у нас есть сложный надежный пароль. Если его сложно запомнить, то что человек будет делать? Правильно, человек будет хранить пароль на бумажке. А ведь в реальной жизни нам нужно несколько паролей: один для менеджера паролей, другой для учетной записи на компьютере, третий пароль — это seed‑фраза от своего родного биткоин‑кошелька, на котором лежат миллиончики и так далее по списку. Подводя итоги: Можно попытаться бороться с проблемой с помощью всяких техник по принятию себя, которые усложняют пароль, но сам пароль остается простым для запоминания человеком который его придумал. Но, как показывает практика, нужна дисциплина и некоторое, часто не малое, количество усилий, чтобы пользоваться этой техникой эффективно. Собственно, поэтому она и не работает на большом количестве людей. А знаете, что работает? Собственный день рождения в качестве пароля! Потому что простота всегда побеждает. Есть фундаментальные проблемы в хранении паролей, которые современные менеджеры паролей не могут решить, а самое печальное, что они и не собираются этим заниматься. Как и где хранить пароль от всех паролей? Эта проблема остаётся чуть ли не самой критичной в управлении паролями. Если применять мою идею для оценки сложности vs забываемости паролей, то можно получить более менее простой и понятный механизм, который может помочь в разработке новых более сбалансированных систем, где будет оцениваться влияние фактора сложных и надежных паролей на всю систему в целом. Ведь если я забыл пароль от своего менеджера паролей, это возможно даже более критичная проблема, чем то, что зашифрованная база данных паролей была украдена. В следующих статьях мы попробуем разобраться, каким образом мы можем решить эту проблему. До встречи в будущем. Вторая часть  Mister Tomato