Как стать автором
Обновить

Оригинальный способ генерации мастер-пароля: используй специальный набор костей

Время на прочтение5 мин
Количество просмотров13K
Всего голосов 29: ↑27 и ↓2+25
Комментарии44

Комментарии 44

Для параноиков, генерировать пароль должен микроконтроллер с открытой прошивкой. Можно прям в коробку встроить. Телефон, и приложение всё-таки слишком сложно для верификации.

Такие проекты уже есть, пастильда например. Только с рандомом у микроконтроллеров еще хуже.

Можно использовать какую нибудь систему из реального мира, которая подвержена хаосу. Кубик (один) в принципе подойдёт, есть по-моему даже научные статьи, что, если его бросать на твёрдую поверхность, то он ведёт себя согласно теории хаоса (самые ультра-незначительные изменения в начальных условиях приводят к разным результатам). Т.е. параноику можно генерировать пароль с помощью микроконтроллера, а потом незначительно изменять его с помощью результата броска (или нескольких) кубика. Правда я всё равно не понимаю как это поможет параноику, если он потом будет вводить этот пароль в, по его мнению, скомпрометированную систему.
Есть схемы проверки секрета без разглашения. Но параноику придется оперировать не буквами латинского алфавита (ввел и прошел авторизацию), а математическими операциями с большими числами.
Только с рандомом у микроконтроллеров еще хуже.
С чего бы вдруг? На рынке достаточно микроконтроллеров с RNG на основе теплового шума.
Точно так же все современные процессоры содержат такие генераторы, проблема с ними в том что они выходят из строя. Проблему решают тем, что таких генераторов избыточное количество и их выход мониторится системой анализа случайности, но строго говоря она конечного размера и не способна обнаруживать длинные паттерны. Другой вопрос что с практической точки зрения это не важно, любая система шифрования не должна постоянно требовать новых случайных данных, и даже /dev/urandom может тротлить скорость выдачи случайных бит, так что атака на предсказание ГПСЧ даже в не специализированных контроллерах это очень трудоёмкое занятие с низкими шансами на успех

Я чего-то не понимаю. А нельзя просто "из головы" набрать мастер-пароль из случайных символов? Это считается не комильфо у профессионалов?

На таком уровне криптозадротства, который описан в статье, рассматривать себя как хороший генератор случайных чисел не получится. Люди справляются с этой задачей плохо.
анекдот
— Вера Михайловна, можно вопрос?
— Конечно, Кипятков.
— Вот вы у нас программирование преподаете, уж вы-то точно должны знать. Как программа выдает нам рандомное число?
— Спрашиваете функцию random, она и выдает случайное число.
— Это понятно, а функция-то откуда берет это число?
— Запрашивает у компьютера.
— А компьютер как придумывает случайное число?
— Например, регистрирует момент вызова и преобразует дату в соответствующее число.
— Постойте… Получается, если два раза вызвать рандом, то из первого числа и интервала между вызовами можно вычислить второе? Какая же это случайность тогда?
— Ну, а ты что хотел, Кипятков?
— Совершенно случайное число…
— Тогда вот тебе задание на дом- почитай про тепловой шум с транзисторов, который преобразуется в последовательность нулей и единиц, чтобы составить случайное число нужной величины.
— … А шум, что, случайный?
— Так, Кипятков! Что ты мне голову морочишь? Если умный такой, назови мне случайное число!
— Я-то могу, я же человек. А вот ваш компьютер, оказывается, не может!
— Называй, называй. Последовательность чисел мне, случайную.
— Легко! 38 46 11 40! — сказал Кипятков, у которого был 38-ой размер ноги, но его 46-летняя мать покупала ему на два размера больше, поскольку им приходилось на всем экономить с тех самых пор, как 11 лет назад отец ушел из их семьи. Через 40 минут Кипяткова побили за гаражами.
Думаю, что Вы правы, пароль из головы будет достаточно стойким, потому что если Ваши зашифрованные файлы будет ломать ФСБ, то они найдут альтернативный брутфорсу способ. Пытаюсь придумать ещё хотя бы один сценарий, когда имеется возможность и смысл применить брутфорс — может быть при краже жёстких дисков компании с секретными разработками. Но опять же, вряд ли кто-то этим будет заниматься. После месяца попыток (предполагается что у Вас из головы получится более или менее стойкий пароль) они вполне могут сдаться, так как неизвестно сколько взлом может продлится, проще добыть нужные данные социнженерией и/или вредоносным ПО. Но просто для тех, кто не видел, есть интересное видео о том, что неподготовленный человек действительно является очень плохим генератором случайных чисел.
Любые мечты разбиваются об ограничения на максимальную длину пароля.
Почему просто не высыпать эти кубики в мешок и вынимать по одному пока не надоест?

Чтоб решить этим какую именно проблему?

Поиграть в Русское лото

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

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

Её не надо сохранять. Её надо либо записать, либо запомнить, либо ввести в менеджер паролей.

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

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

Информацию несёт взаимное положение кубиков и даёт log2((6 сторон)^25 штук * 25! позиций) = 148 бит рандома.
Кстати, если учитывать 4 варианта поворота каждого кубика то выйдет log2((6*4)^25 * 25!) = 198 бит рандома.
и положить его в сейф вместе с самим комплектом кубиков)

т.е. просто положить в сейф готовый пароль?
Еще важный пункт для параноиков. После того, как создали мастер-пароль — нигде его не используйте, иначе его можно скомпрометировать.
Как по мне, в статье предлагается бесполезная штука. Паролей всегда много и надо их где-то как-то хранить, и чтобы хранилища было под рукой, и чтобы удобно было пароли вводить. И вот эти моменты (открытие хранилища и ввод пароля) балансируют между безопасностью и удобством.
Театр безопасности. Или даже я бы сказал цирк.
НЛО прилетело и опубликовало эту надпись здесь
Забавно, конечно, но вообще противоречия там вроде бы нет. Предлагается использовать отдельный смартфон для этой цели. Просто как устройство, которое может выполнять программу, реализующую пользовательский интерфейс. Он не должен быть никуда подключён. И он точно не должен являться тем устройством, на котором этот пароль используется.
НЛО прилетело и опубликовало эту надпись здесь
Любопытно. Мы не доверяем окружению PC, который преобразует дрожание мышки в random(). Но доверяем смартфону, который делает то же с помощью камеры.
Как сказано в статье, идея тут лишь в том, чтобы разделить устройства на катором генерируется мастер-пароль и на котором он используется. Правда возникает вопрос, а как безопасно его передать между ними.

Смотреть на экран одного и набирать на втором

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

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


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


Вторая: пароль может «уйти» от вас еще в процессе генерации его на машине (ведь обычно вы генерируете пароль там, где будете его использовать),

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


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

Если это случайный пароль, полученный с использованием CSPRNG, с непредсказуемым (но необязательно "истинно случайным") сидом, с хорошим генератором на основе сида (например ISAAC), известность принципа генерации совершенно не имеет значения с практической точки зрения.


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

Не генерация пароля самая насущная на сегодня задача, а как эти пароли хранить так чтобы они пережили и пожар и потерю устройства, и чтобы помнить ничего не надо было.
А еще интереснее система не требующая паролей. Типа нажимаешь войти, тебе на телефон в приложение приходит запрос на подтверждение входа, ты прикладываешь палец к сенсору — допуск есть.
Я в этом направлении не вижу практически никаких подвижек. Зато менеджеров паролей развелось как комаров на болоте. Такое впечатление, что разработка новых принципов это кому-то не выгодно. А выгоднее, чтобы в пароли хранили в KeePass a базу синxронизировали на Dropbox.
Вроде, есть у кого-то логин по отпечатку. Не у пэйпала ли.
Пароли лучше биометрии в том плане, что чтобы узнать от человека пароль методом терморектального криптоанализа, злоумышленнику нужно держать жертву «в адеквате». При биометрии достаточно оглушить его где-нибудь в подворотне и авторизоваться, и он даже знать потом не будет что скомпроментирован.
Ну и да, что если тот самый орган, с которого снималась биометрия, придется удалить? Как тогда войти? С паролями таких проблем нет.
>созданный машиной пароль никогда до конца не будет полностью случайным, ведь абсолютного программного рандомайзера не существует.

Чисто программного не существует, а программно-аппаратный — да.

ru.wikipedia.org/wiki/%D0%90%D0%BF%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D0%BD%D1%8B%D0%B9_%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D1%8B%D1%85_%D1%87%D0%B8%D1%81%D0%B5%D0%BB

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

В радиоканальные процессоры Atmel (например ATMEGA128RFA1) встроена возможность генерировать True random из младших бит АЦП, показывающего уровень сигнала в эфире.
А в атмеге есть защита от влияния на этот бит извне?
Настолько подробно я этот вопрос не изучал.
Младший бит АЦП это шум.
Я понимаю. Но на него можно влиять. Например, охлаждением кристалла. Или внешней наводкой. Это не позволит избавиться от шума полностью и полностью детерминировать результат, но может сместить генерацию в определённую сторону, снизив энтропию.
Думаю, да. Но разве не подразумевается, что получатель пароля является обладателем генератора? Влиять же на генерацию должен напротив злоумышленник. И даже если шанс получения единиц/нулей значимо зависит от температуры и других условий, злоумышленник скорее всего не знает, в холоде вы их генерировали или в тепле.

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

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

А по вашему вопросу у меня нет данных. Но думаю, что для сессионных ключей проблема не критична, даже если правда существует. Всегда можно сделать смену ключей быстрее среднего времени подбора. Энтропия все равно очень высокая, даже если вероятность действительно можно сдвинуть каким-то разумно затратным способом. Иначе бы проблема борьбы с шумом не стояла так остро.
Подобный метод используется при генерации ключей шифрования в Truecrypt/Veracrypt — сбор дополнительной энтропии из хаотичных движений мыши. Может, и в самом деле стоит подать идею разработчику KeePassXC? А вообще-то для идеально случайных паролей есть и онлайн-сервисы с аппаратной генерацией энтропии. Относительно популярный Random.org и менее известный австралийский ANU QRNG, который генерирует данные на основе квантовых флуктуаций вакуума. Если беспокоит паранойя, что такой сервис запомнит ваш пароль — что ж, можно анонимно скачать большой фрагмент случайных символов и уже локально выбрать из него случайную строку в качестве пароля. Пожалуй, рандомнее уже некуда.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий