Image
разбор

Боитесь забыть сложный пароль? Или потерять токен? Вам помогут «игральные» кости для двухфакторной аутентификации (да-да, самые настоящие кости!) 🎲 ➡️ 🔑

Источник: Meduza
Фото: «Медуза».

Мы говорим как есть не только про политику. Скачайте приложение.

DiceKeys — набор уникальных криптографических кубиков. Недавно создатели начали рассылать его первым людям, поддержавшим проект. С помощью такого набора кубиков и специального приложения можно создавать надежные пароли и запасные копии токенов для двухфакторной аутентификации. Кубики даже внешне отличаются от обычных игральных: на них нанесены не только цифры, но и буквы, а также специальные значки для коррекции ошибок при сканировании приложением. На первый взгляд, набор выглядит как игрушка для гиков, хотя освоить его очень просто. «Медуза» протестировала DiceKeys и объясняет, как он работает.

⚀ Зачем кидать кости?

Представьте, что вы держите в руке обычный шестигранный игральный кубик. Если у такого кубика нет смещенного центра тяжести или скругленных углов у одной из граней, то при его броске с одинаковой вероятностью выпадет один из шести вариантов — от 1 до 6. Для двух таких кубиков уже будет 11 разных вариантов сумм выпавших граней — от 2 до 12. Причем вероятность выпадания каждой из этих сумм разная: максимальная для 7 и минимальная для 2 и 12. Для 25 кубиков количество возможных сумм вырастет всего лишь до 126 вариантов — от 25 до 150; вероятность останется разной.

Но если взять и бросить 25 шестигранных кубиков DiceKeys, то с одинаковой вероятностью можно сгенерировать одну из 124 127 134 662 179 891 202 329 100 571 859 806 502 566 406 865 813 504 000 000 возможных комбинаций (больше 2¹⁹⁶). Дело в том, что, в отличие от обычных игральных кубиков, тут учитывается не только то, какими сторонами выпали кубики, но и то, как они оказались расположены друг относительно друга. Фактически это ручной генератор случайных событий — вроде монетки, но позволяющий за один бросок получить очень редкую комбинацию.

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

DiceKeys изобрел исследователь безопасности Стюарт Шехтер (Stuart Schechter). Осенью 2020 года он начал собирать предзаказы своего криптографического набора на краудфандинговой платформе CrowdSupply.

А советником проекта стал один из самых известных криптографов в мире Брюс Шнайер (Bruce Schneier) — член совета директоров правозащитной организации Electronic Frontier Foundation и некоммерческой организации The Tor Project, занимающейся развитием одноименной анонимной сети.



⚁ Зачем создавать пароли именно с помощью кубиков?

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

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

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

Image
В наборе DiceKeys 25 кубиков. Каждый кубик помечен буквами от A до Z (за исключением Q). Грани кубиков пронумерованы цифрами. Над и под буквами и цифрами расположены специальные значки для коррекции ошибок при сканировании
«Медуза»

⚂ Как DiceKeys перепридумали токены?

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

Это ваш второй уровень защиты. Первый фактор — это пароль, второй — устройство. Даже если злоумышленник сумеет удаленно взломать ваш пароль (например, от почты), он все равно не сможет им воспользоваться, не имея доступа к устройству. Это сильно усложняет задачу взлома.

Самый популярный способ двухфакторной аутентификации — специальное приложение на телефоне, которое генерирует одноразовые пароли. Таким приложением может быть 1Password или бесплатный Google Authenticator.

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

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

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

Современные токены для двухфакторной аутентификации можно также использовать для:

  • аутентификации при входе в операционную систему (Windows 10 и Linux)
  • аутентификации для запуска команд с правами суперпользователя в Linux (элемент защиты от удаленного взлома системы)
  • доступа к зашифрованному диску или разделу в Linux

Покупать токены сразу не обязательно. Но, если вы захотите докупить их позже (или потеряете первый), не забывайте, что обычные SoloKeys не подойдут — перепрошить их под токены DiceKeys нельзя.

Нужно приобрести специальную свободно перепрограммируемую версию ключей — Solo Hacker или Somu Hacker. И на свой страх и риск воспользоваться этой инструкцией. Либо купить токены со специальной прошивкой вместе с набором DiceKeys. В любом случае их нельзя обновлять с помощью программы solo-python — как обычные ключи SoloKeys.

⚃ Что еще можно делать с помощью кубиков?

С помощью DiceKeys можно создавать надежные мнемонические пароли на основе вашего броска и адреса сайта, для которого вы его будете создавать. Например:15-Purge-eject-nanny-think-croak-lapel-yodel-exile-arena-boils-truth-speak-fifth-scam-aloha. Их можно хранить в приложении, а можно запомнить — в любом случае пароль потом удастся «добыть» из сохраненного броска DiceKeys.

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

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

⚄ Как это работает?

Сначала нужно создать свою практически уникальную комбинацию DiceKeys:

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

Затем отсканируйте ваш бросок с помощью одного из приложений:

  • мобильного приложения для Android или iOS
  • десктопного приложения для macOS (а в будущем и для Windows)
  • специального веб-приложения dicekeys.app

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

  • конкретный кубик определяется прописной буквой в диапазоне от A до Z (за исключением Q)
  • выпавшая грань — цифрой от 1 до 6
  • разворот грани — строчной буквой t (если надпись смотрит прямо), r (развернулась направо), b (вверх ногами) или l (влево)

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

Затем можно сгенерировать в приложении пароль или создать токен на основе вашего броска (последнее можно сделать только в приложениях для macOS и Android).

Image
Image
Приложение сгенерировало пароль 15-Chewy-canal-gifts-snaps-spree-props-payee-payee-kegs-mulch-trade-syrup-stony-ought-tamer для Google
Image
Приложение предлагает «прошить» токен SoloKeys на основе броска кубиков

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

⚅ Какие меры безопасности нужно соблюдать?

Владелец коробки с броском кубиков DiceKeys должен относиться к ней так же, как Кощей — к ларцу со своей смертью. Ее нельзя никому показывать. Создавать свой уникальный набор, а потом в случае необходимости сканировать его следует в одиночестве. Убедившись, что рядом нет окон или камер, через которые можно было бы подсмотреть, как расположены ваши кубики. Хранить набор нужно в надежном месте. Вам решать, что лучше подойдет — банковская ячейка или укромное место под дубом на острове в море (кубики сделаны из пластика и способны это выдержать). Тот, кто знает, как были расположены кубики во время броска, сможет восстановить ваш пароль.

Image
Это наклейки StickKeys — альтернативный или дополнительный способ хранения вашего броска. Наклейте их на бумагу точно так же, как выпали грани кубиков, и проверьте результат с помощью приложения. А бумагу потом храните в надежном месте. (Или наклейте совсем другую комбинацию и оставьте на самом видном месте, если хотите с помощью этой бумаги ввести в заблуждение того, кто пытается похитить ваш бросок.)
«Медуза»

Коробка с кубиками DiceKeys обойдется в 25 долларов (без учета доставки). Каждый совместимый токен — в 35–40 долларов. А набор наклеек для запасного бэкапа вашего броска — в 6 долларов. Доставка по миру — 18 долларов (по США — 8 долларов).

Денис Дмитриев

  • (1) И вот каким образом

    Количество возможных комбинаций после броска кубиков DiceKeys вычисляется по формуле 25! × 6²⁵ × 4²⁵ ÷ 4¹.


    Каждый из 25 уникальных кубиков (отличаются друг от друга буквой латинского алфавита) занимает одну из 25 ячеек в коробке. То есть их можно расставить факториалом 25 разных способов.


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


    Для удобства пользователей перед сканированием коробку с кубиками можно повернуть как угодно.

  • (2) Детерминированный криптовалютный кошелек

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