Pull to refresh

Comments 40

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

А теперь досадная часть: вы когда-нибудь перебирали пароли? Не брутфорся сайт, а имея базу хэшэй. Я писал простенькую софтину, которая перебирала пароли для одной базы(не злого умысла ради, а чсв для), где люди таки научились к 2013-му году делать hash(hash(pass)+user_id). Хоть это и заставило меня брутить месяц(мне лень было использовать gpu), но я получил более 80% паролей.
Скорее всего, Hashcat или кто-нибудь еще так умеют(мне сильно мешал id юзера и мне приходилось перебирать сильно больше, чем если бы была обычная соль), да еще и на gpu, но не суть.
Идея в том, что брутфорсить можно долго и упорно. В вашем случае это не так сложно. Я бы впал в депрессию, если бы узнал, что есть целая база подобных паролей. Ну и писал бы свой брутфорсер.
Но, опять же, возможно я неверно понял концепцию, тогда извиняюсь
Возможно у меня совсем уже ночь, но я верно понял, что единственная вещь, которая действительно неизвестна злоумышленнику — четырехзначный пин?

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

Я не очень понял про координаты

Координаты вы можете выбрать сами, какие вам нравятся. Например лбимое вам место.

где люди таки научились к 2013-му году делать hash(hash(pass)+user_id)

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

Но, опять же, возможно я неверно понял концепцию, тогда извиняюсь

Концепция — перестать хранить пароли
Ну, тогда я все верно понял. Единственная действительно неизвестная вещь это пин и, раз уж вы настаиваете, то формат.
Проблема в том, что большинство людей очень похожи. И будут придумывать одинаковые комбинации.
Перебрать это все не такая уж и проблема. Зависит от того как люди будут придумывать это все. Будет ли у них код, в котором они это велосипедят? Или будет менюшка гуевая с настройкой всего.
Но в любом случае 80% оставят дефолтные настройки.
Но человек снизу верно сказал, что это security through obscurity. К тому же, тогда частью хранения пароля является их формирование(ваш скриптец, который будет свой у каждого юзера)
Упрем скрипт(который юзер будет непонятно_как синхронизировать между тоннами девайсов) — получим доступ к его аккаунтам. Учтем еще, что юзеры, поверевшие в безопасность всей системы, будут использовать пин(или все другие заменяющие пароль вещи) как пин, а не как пароль и будут делать его слабым, надеясь на остальную магию. А потом будут удивляться как за 7 секунд сбрутили акк.
В итоге, вы придете к тому, что вместо пина должен быть полноценный пароль, а все остальное не гарантирует безопасность.
Вы не ушли от хранения паролей. Вы ушли от хранения паролей старыми способами. По факту, хватило бы и мастер-пароля(он будет един и у вас, тут вы его назвали ПИН) + PBKDF2 для генерации сотен паролей для других сервисов
Ну, тогда я все верно понял.

Почему только пин, прочитайте параметры [ url.origin, username, pin, size, expired, latitude, longitude ];
Так же можно добавить гироскоп, акселератор и кучу других параметров
Это все информация, которая от чего-то зависит. Она не рандомная. Ее можно узнать и ЗНАЧИТЕЛЬНО упростить брутфорс.
url.origin — адрес сайта
username — юзер
expired — год/дата(сьрутить дату очень просто)
latitude/longtitude — какие-то места. И их не много. У людей будет список мест, которые они будут выбирать. Не у каждого будет лично свое место.
Вся эта информация не абсолютно рандомна. Ее можно сбрутить, потому что она от чего-то зависит. Например, часть людей будет юзать кремль. Достаточно поиметь 10к локаций и мы будем чаще всего угадывать.

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

Вам нужен password derivation(https://en.wikipedia.org/wiki/PBKDF2) и один мастер-пароль. Но и это сомнительно с точки зрения безопасности.
По-моему, это security through obscurity. Нужно исходить из того, что злоумышленнику известно о вас все — ваши алгоритмы для создания паролей, имя, фамилия, местоположение, сайты на которые вы ходите, день рождения вашей мамы и тп.
У вас получается, что секретом для злоумышленника в таком случае остается только ваш короткий пин. Который еще выходит и одинаковый для разных сайтов?
И да, последний уровень паранойи — считайте, что и ваше оборудование тоже находится под полным контролем злоумышленника. =)
Я повторюсь, что координаты — это значение, которое указывается вручную, например через гугл карты, размер пина — это двойка в степени уровня вашей паранойи и символы вы вольны использовать какие угодно, но поверьте, у вас даже с цифрами ничего не выйдет
Насколько я понимаю, то вы используете координаты, которые возвращаются гуглом по определённому поисковому запросу. Не знаю, как гугл, но я сталкивался с изменениями координат для запроса (проще говоря, центра города) на какие-то там пару метров. Если я правильно понимаю, то в таком случае резко херятся все пароли ко всем ресурсам. То же самое для смен урлов или даже http на https, но локально — придётся менять пароль на самом ресурсе.

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

Как я понял, это не так. "Координаты" задаются пользователем ручками, по смыслу это аналог пина, просто задаётся не сразу цифрами, а через гуй на карте.
Совершенно верно, хоть кто-то понял
Ну хорошо, допустим логика такая: вводим название города, получаем координаты -> вписываем вручную в нужное поле.
Открываем другой комп (новый, взамен украденного/потерянного/переустановка системы/etc) — вводим название города (координаты-то не помним), используем найденные — а они оп, и изменились. Вот о чём речь, нестабильно это как-то, тем более если речь идёт о генерации паролей.
все происходит визуально, вы перетаскиваете маркер на карте в нужную точку. Все абсолютно интерактивно.

Посмотрите это
Генерация пароля по рандомным датам, получаемым тыканьем в произвольную точку, не подходит для повторного ввода этого же пароля — невозможно ткнуть мышкой в точно ту же координату. Следовательно, придётся 1) порезать карту на достаточно крупные клетки (ограничить разрядность координаты) чтобы нивелировать точность позиционирования (юзер не захочет ломать голову попал ли он в нужный квадрат получив сообщение "введеённые вами данные не подходят"), и 2) пользователю таки придётся помнить куда он ткнул — для каждого ресурса человек неспособен помнить координаты для каждого из них, следовательно будет использовать 1, 2 максимум 3 места.
Я до сих пор не понимаю, как пара цифр будет надёжнее дополнительных пары символов из более широкого словаря в обычном пароле.
1, 2 максимум 3 места.

Если ввести адрес (город, улица, дом) то маркер попадет в то же место с теми же координатами. Конечно, я получаю их не с точностью до метра, но тем не менее, сколько вы помните различных адресов с точность до дома? Я уверен что десятки.
> маркер попадет в то же место с теми же координатами.

Вы можете гарантировать, что это будет так в течение хотя бы года, и что при очередном апдейте карт координаты дома не съедут? Вы же в курсе, что карты основываются и периодически обновляются на базе множества источников данных — аэрофотография, спутниковые снимки, вклад добровольцев на Google Map Maker, возможно импорт данных с Wikimapia, OpenStreetMap где тоже добровольцы вносят редакции?

Чтобы сделать проблему более выпуклой: какую сумму денег вы бы поставили на кон за то, что координаты не станут причиной массовой утери паролей?
Адресов помню на память буквально парочку — остальные я помню как добраться, но не почтовый адрес. Потому что письма (бумажные) давно не пишу никому, а в гости — захаживаю :)
Мне кажется, что часть вопросов к статье отпадёт, если сказать что пин — это не обязательно 4х-значное число, а вполне себе может быть неким очень непростым мастер-паролем.

Я как раз использую похожий метод хренения паролей, вместо пина — мастер пароль (сам по себе хороший и рандомный — это единственное что надо запомнить). Только в результирующем пароле использую шестнадцатеричные цифры — при достаточном количестве символов секурность не уменьшается, а набирать пароль на разного рода мобилках становится в разы проще.
Автор, да ты гений! Это ведь теперь вместо пароля можно запоминать не последовательность символов, а любое место на земле. Подобрать в этом генераторе уникальную настройку и брутфорс таких параметров становится совсем нерациональным. А если ещё и пинкод менять относительно времени с какой-нибудь привязкой. То всё, про брутфорс забываем, будто его и не существует.
Мне вот было лень задумываться о своей паранойи, но с таким методом я пожалуй подтяну свою информационную безопасность.
Как будут обрабатываться такие сценарии:

* ресурс поменял адрес (пример: «odnoklassniki.ru» >> «ok.ru»)
* один и тот же аккаунт используется на нескольких родственных ресурсах, но там нет единого федеративного логона
* пользователь не стал записывать longitude/latitude на бумажке, надеясь на гуглмап, а однажды ночью наши учёные чуть-чуть изменили гравитационное поле Земли, после чего гуглмап внёс небольшие поправки в свои карты, и теперь потаённое место пользователя имеет слегка другие координаты (ну тут просто: надо ограничить точность координат).
* пользователь плагина замучался каждый раз искать на карте село Гадюкино, в котором он когда-то жил, творил и создавал пароли, и решил использовать координаты Кремля. Нужно перегенерить пароли, но страница смены пароля имеет другой адрес, нежели страница входа — например, у гугла вход на accounts.google.com, а смена пароля — на myaccount.google.com.
вам никто не запрещает изменить пароль, или брать его со своего домена, например https://google.bronx.me, а вставлять куда захотите
Получается основные вопросы к плагину, а не к концепту?
Скорее наоборот, вопросы к концепту, потому что в его основании лежит генерация секрета на основе данных, которые
а) можно угадать, близко зная человека (домашний адрес), а остаток секрета (пин, срок годности, которые пользователь наверняка будет использовать многократно) легко забрутфорсить
б) являются эфемерными (URL сервиса, который может измениться; координаты, выдаваемые сторонней и неподконтрольной службой).

Плюс не учитывается садистская изощрённость админов, придумывающих всё новые и новые дурацкие политики для паролей. Пароли, сгенерённые без учёта местной политики сайта, будут часто упираться в ошибку валидации («недопустимый символ», «недопустимая длина», «недопустимая комбинация» и т.п), а способа подсказать плагину правильный алгоритм на лету — нету. Если плагин покрывает 80% случаев, но оставшиеся 20% придётся делать вручную и помнить самостоятельно, то лучше всё сразу делать вручную, чем запоминать, где пароль автоматический, а где нет.
А как вы меняете пароли?
И что будете делать, если злоумышленник узнает ваш способ генерации паролей?
А как вы меняете пароли?

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

И что будете делать, если злоумышленник узнает ваш способ генерации паролей?

Пока не случалось (за 3 года), но думаю изменю алгоритм генерации
На этом сайте справа есть генератор паролей. Суть: придумываем ключ и вводим его (один для всех ресурсов) и URL. Пароли для каждого URL генерятся разные. Но для пары ключ-URL пароли одинаковые. Можно пользовать для запоминания паролей на всяких форумах и прочих не содержащих финансовую информацию сайтах.
Пользователи KeePass уже давно перестали париться, и только все остальные всё продолжают что-то выдумывать...
Будто что-то плохое.
Один мастер-пароль и база. Где тут можно закопаться — непонятно. Хотите — используете ключи. Не хотите — не используете. Это уже для тех, за кем могут прийти.
Или, как вариант, keepassx, только вопросы синхронизации базы между устройствами и удобной интеграции с браузерами для автозаполнения остаются открытыми.
Извиняюсь за ссылки на себя, но вот предложение для интеграции со всем, чем угодно: https://habrahabr.ru/post/276967/
А вот синхронизация напрямую влияет на безопасность уже, к сожалению.
Круто! Я сейчас пытаюсь совместить мою идею с Teensey 3.2, которая через USB работает как клавиатура и мышь, что по сути напоминает Ваш проект
> Где функция sha512 — генерирует хэши алгоритмом sha512, а функция Base85 — преобразует шестнадцатеричную систему счисления в восьмидесятиричную

Надо не «из шестнадцатеричной», а бинарный сырой хеш брать и переводить. А то бредом попахивает.
Минусовавшим: если я не ошибасью, функция возвращает строку литералов от a до f, какой смысл энтропию увеличивать и воздух греть лишний раз, и просто раздувать строку, при этом перевод бинарного хеша в Base85 имеет смысл и удобство.
Что если мне надо сменить пароль? Не через месяц и не через год, а уже, потому что он утёк. В любой паролехранилке я это сделаю, а тут — нет. Что если сайт придумал какие-то свои требования для сочетания символов в пароле? 2 больших буквы, 2 маленьких, 2 кириллических и т.п.? Паролехранилка справится, штука из статьи — нет. Что если в штуке сменилась соль по времени, а на нужном сайте как раз сломался сброс паролей? На него будет не зайти, пока не починят, а мне надо экстренно, срочно.
Вывод — придумана глупость. Поставьте кипасс на криптодиск, в экселе наколдуйте парольную карточку 10х20 на миллион комбинаций, туда впишите мастер-пароли диагональю или змейкой и не морочьте себе голову.
я не предлагаю конкретный подход, это всего лишь идея, ваша аггрегирующая функция может быть какой вам угодно и генерировать по вашему желанию то, что вы захотите, хоть 10 запятых подряд

Вывод — придумана глупость.

Вывод — Вы не поняли ничего
Вы странный. У меня никакого «желания» нет, это у разных сайтов разные требования к паролям. Которые принципиально противоречат друг другу, так что универсальной функции для генерации пароля для любых сайтов быть не может. При всём желании. О чём я и написал. На одном сайте максимальная длина пароля 8 символов, на другом минимум 12, на одном требуют кириллицу, на другом это запрещено.
UFO just landed and posted this here
но ведь хэш в hex это строка состоящия из символов [0-9a-f], тут даже речи не идет про регистр и знаки пунктуации
UFO just landed and posted this here
Sign up to leave a comment.

Articles