PaperKey — современная замена пароля

С давних времён для авторизации в различных сервисах и приложениях используются пароли. На смену им сначала пытались прийти электронные ключи (токены), но они не получили широкого распространения. Позже появился Passkey, но он скорее стал продвинутыми куки, а не тем, что сможет надолго сохранить ваш доступ в нужный сервис. В результате до сих пор не получилось полноценно заменить пароль.
Развитие вычислительных мощностей ставит жёсткие требования к современным паролям. Для обеспечения надёжной защиты в 256 бит нужен пароль длиной 40 символов! Я разработал современную замену паролю — бумажный ключ PaperKey. Это простой, но в то же время надёжный ключ, про него я расскажу в этой статье.
Введение
Передо мной, как перед пользователем, часто встаёт вопрос: как сохранить доступ к различным сервисам, криптокошелькам и приложениям? На данный момент есть несколько вариантов, каждый из которых имеет свои недостатки:
Пароль или кодовая фраза. Сложно запомнить, легко ошибиться при переписывании вручную и так же легко скомпрометировать, показав его на камеру или сохранив на ПК.
Токен. Дорогой и требует специального программного обеспечения и драйверов.
Passkey. Жёстко привязан к железу, которое крайне недолговечно.
Авторизация через сторонние сервисы или номер телефона. В данном варианте от вас ничего не зависит, и вам остаётся лишь надеяться на лучшее.
Я разработал бумажный ключ PaperKey. По сути это пароль, записанный на бумажку, но в нём внедрены несколько степеней защиты от компрометации и добавлен ряд автоматизаций для удобной работы с ним. Важным преимуществом перед электронными ключами является то, что PaperKey каждый сможет изготовить самостоятельно, и он сможет прослужить не один десяток лет.
Что такое PaperKey
PaperKey — бумажная карточка размером с банковскую, на которой с двух сторон расположена таблица со случайным заполнением клеток. Чтобы получить ключ или войти в приложение, карточку надо просканировать смартфоном.
У PaperKey есть три степени защиты, каждая из которых по отдельности может обеспечивать 256 бит защиты (для точек — при достаточном их числе):
Случайный ключ, сгенерированный при печати карточки.
Ручное добавление случайных точек — защищает от перехвата во время печати.
Две стороны карточки — защищают от случайного попадания карточки на камеру, например когда она лежала на столе или когда вы вынимали её из кошелька.
Более подробно про защиту можно прочитать в описании карточки и оценке стойкости.
Вместе с моим другом Клодом мы написали базовое браузерное приложение для генерации, проверки и сканирования карточек. Проект полностью открытый (лицензия Apache 2.0), и вы можете интегрировать PaperKey в своё приложение.
Как изготовить
Изготовить карточку крайне просто (подробная инструкция с фотографиями):
Сгенерировать её с помощью генератора и распечатать.
Затем добавить маркером на листе дополнительные случайные точки.
Проверить камерой в приложении, что вы ничего не напутали и всё сделали правильно.
Дальше вырезать карточку, склеить и заламинировать скотчем.

Возможности карточки
После сканирования карточки по ней генерируется 256-битный ключ, который уже можно использовать для различных сервисов и приложений.
Ключ можно использовать в чистом виде, например для создания на его основе вашего криптокошелька. Либо можно использовать этот ключ для авторизации в сервисах, которые это поддерживают. Также на основе ключа можно сгенерировать пароль для простого входа по паролю. По одной карточке можно сгенерировать один пароль или использовать её как мастер-ключ для генерации различных паролей по имени сервиса. Утилита для работы с паролями доступна в сканере.

За счёт того, что карточка двусторонняя, её можно разделить. Это позволяет хранить её в двух местах, что защитит её от кражи. Либо можно отправить половинки карточки двумя разными курьерами вашему другу, и курьеры по отдельности не смогут её расшифровать.
Дальнейшее развитие
Я надеюсь на дальнейшее развитие PaperKey и популяризацию его в массах. Сейчас в моём репозитории доступен исходный код базовой утилиты, а также вся документация и спецификация. Я планирую также разработать различные модули для интеграции сканера карточек в приложения. Также надеюсь, что мою идею поддержат и другие разработчики. Буду рад услышать от вас критику в комментариях.
P. S. Оценки токенов и Passkey во введении — моё субъективное мнение как пользователя, а не технический разбор.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.