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

    Каждый раз, когда речь заходит о криптостойком мастер-пароле, на ум приходит стандартные генераторы, встроенные в тот же 1password, KeePass или любой другой менеджер паролей по вкусу. Сначала ты его генерируешь, потом учишь как «Отче Наш», а потом уже на самом деле молишься о том, чтобы не забыть его. Но у любого софта, который генерирует случайные стойкие пароли, есть уязвимые точки.

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



    Этого человека зовут Стюарт Шехтер, он ученый-информатик из Калифорнийского университета в Беркли. Вопреки все усложняющимся алгоритмам и привлечению все новых и новых методов генерации шифров и паролей, Шехтер предложил крайне элегантный в своей простоте способ генерации базы символов для последующего создания мастер-пароля. Ученый создал набор из 25 шестигранных костей, на грани каждой есть пара из случайной цифры и буквы латинского алфавита. Назвал он свое творение также просто, как выглядит и сама идея, — «DiceKeys».

    Ученый предлагает следующий порядок действий.

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

    То, как это работает, демонстрирует сам Шехтер на видео ниже:



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

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

    Почему решение Шехтера кажется нам крайне любопытным на фоне случайной генерации 128, 196 или 256-битных паролей в том же KeePass или другом менеджере?

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

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

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

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

    Так ученый из Беркли выводом процесса генерации базы для пароля в оффлайн одновременно перекрывает три ранее озвученных слабых места в процессе создания мастер-пароля:

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

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

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

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

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

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

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

    Критика


    Но у способа, предложенного Стюартом Шехтером, есть и слабые места. Сейчас принцип работы DiceKyes можно протестировать на веб-сайте dicekeys.app, который как симулирует бросок кубиков, так и сканирует уже реальные комплекты. Сайт используется, пока не готово мобильное приложение.

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

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

    1Password: music booth owls cause tweed mutts lance halve foyer sway suave woven item
    Authy: dudes acre nifty yoyo sixth plugs relic exert sugar aged chili human alarm
    Facebook: delta had aids pox visa perm spied folic crop cameo old aged smite

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

    При этом всегда можно пойти дальше и прогнать полученные слова через еще один «генератор», или перевести в шестнадцатиричную кодировку. Вариантов, на самом деле, много.

    Итого


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

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

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

    Помните об этом и берегите свои данные.



    На правах рекламы


    Серверы с NVMe — это именно про виртуальные серверы от нашей компании.
    Уже давно используем исключительно быстрые серверные накопители от Intel и не экономим на железе — только брендовое оборудование и самые современные решения на рынке для предоставления услуг.

    VDSina.ru хостинг серверов
    Серверы в Москве и Амстердаме

    Comments 44

      +1

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

        0

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

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

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

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

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

                    +1

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

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

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

                      0

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

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

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

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

                        т.е. просто положить в сейф готовый пароль?
                          +2
                          Еще важный пункт для параноиков. После того, как создали мастер-пароль — нигде его не используйте, иначе его можно скомпрометировать.
                          Как по мне, в статье предлагается бесполезная штука. Паролей всегда много и надо их где-то как-то хранить, и чтобы хранилища было под рукой, и чтобы удобно было пароли вводить. И вот эти моменты (открытие хранилища и ввод пароля) балансируют между безопасностью и удобством.
                            0
                            Театр безопасности. Или даже я бы сказал цирк.
                              +1
                              Вторая: пароль может «уйти» от вас еще в процессе генерации его на машине (ведь обычно вы генерируете пароль там, где будете его использовать), а значит он будет скомпрометирован еще на взлете.

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

                              Совсем нет противоречий. Ни капли.
                                +1
                                Забавно, конечно, но вообще противоречия там вроде бы нет. Предлагается использовать отдельный смартфон для этой цели. Просто как устройство, которое может выполнять программу, реализующую пользовательский интерфейс. Он не должен быть никуда подключён. И он точно не должен являться тем устройством, на котором этот пароль используется.
                                  0
                                  А давайте немного вернёмся к реальности, где люди не заводят отдельный телефон одноразовый на котором магическим способом само появляется приложение. Генерируют пароль, и после уничтожают телефон.
                                +1
                                Любопытно. Мы не доверяем окружению PC, который преобразует дрожание мышки в random(). Но доверяем смартфону, который делает то же с помощью камеры.
                                  0
                                  Как сказано в статье, идея тут лишь в том, чтобы разделить устройства на катором генерируется мастер-пароль и на котором он используется. Правда возникает вопрос, а как безопасно его передать между ними.
                                    –1

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

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

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


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


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

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


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

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


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

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

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

                                          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 из младших бит АЦП, показывающего уровень сигнала в эфире.
                                            0
                                            А в атмеге есть защита от влияния на этот бит извне?
                                              0
                                              Настолько подробно я этот вопрос не изучал.
                                                0
                                                Младший бит АЦП это шум.
                                                  0
                                                  Я понимаю. Но на него можно влиять. Например, охлаждением кристалла. Или внешней наводкой. Это не позволит избавиться от шума полностью и полностью детерминировать результат, но может сместить генерацию в определённую сторону, снизив энтропию.
                                                    0
                                                    Думаю, да. Но разве не подразумевается, что получатель пароля является обладателем генератора? Влиять же на генерацию должен напротив злоумышленник. И даже если шанс получения единиц/нулей значимо зависит от температуры и других условий, злоумышленник скорее всего не знает, в холоде вы их генерировали или в тепле.

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

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

                                                        А по вашему вопросу у меня нет данных. Но думаю, что для сессионных ключей проблема не критична, даже если правда существует. Всегда можно сделать смену ключей быстрее среднего времени подбора. Энтропия все равно очень высокая, даже если вероятность действительно можно сдвинуть каким-то разумно затратным способом. Иначе бы проблема борьбы с шумом не стояла так остро.
                                              +1
                                              www.schneier.com/academic/solitaire

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

                                                Only users with full accounts can post comments. Log in, please.