{"id":14275,"url":"\/distributions\/14275\/click?bit=1&hash=bccbaeb320d3784aa2d1badbee38ca8d11406e8938daaca7e74be177682eb28b","title":"\u041d\u0430 \u0447\u0451\u043c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u044b \u0430\u0432\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f72066c6-8459-501b-aea6-770cd3ac60a6"}

TwinKey — новое бесплатное приложение для двухфакторной аутентификации

Привет! Я из тех, кто регулярно проверяет давление в шинах и следит за безопасностью своих аккаунтов, используя сложные пароли и 2FA, где это возможно. Я пользовался Google Authenticator, но однажды приложение показало мне пустой лист вместо кодов. Конечно, я всё восстановил с помощью резервных ключей, но доверие было потеряно.

Оказалось, я не один такой: другие пользователи тоже сталкивались с такой же проблемой. Какой-либо поддержки от разработчика они не получали, как и отсутствовал вменяемый способ сделать резервную копию аккаунтов.

Пользователи Google Authenticator периодически теряли данные своих аккаунтов

Относительно недавно Google добавил синхронизацию и стал хранить всё в своём облаке. Но проблемы, видимо, остались:

Пользователи продолжают терять свои аккаунты

Я же перешёл на Sentinel Authenticator, купил подписку, чтобы снять все ограничения, и проблем не знал, но приложение обрастало ненужными мне функциями, внешне становилось всё сложнее и сложнее, поэтому решил, что надо просто написать своё.

Учиться разработке под iOS я начал в далёком 2014 году. Мне всегда нравилась экосистема Apple и их подход. Был опыт командной разработки, но в какой-то момент понял, что можно просто писать свои приложения, да и возможность была. Так, в 2021 появился RedCalendar — трекер цикла для девушек, а сейчас TwinKey — приложение двухфакторной аутентификации для iPhone, написанное на SwiftUI.

Эту статью я начал писать ещё летом (в те дни, когда у нас была попытка «госпереворота»). Мы с женой лежали на Nissi Beach и думали, как вовремя уехали на Кипр. Из-за палящего солнца подсветка телефона горела на максимум, аккумулятор таял на глазах и статью я отложил. Прошло 5 месяцев и это дольше, чем ушло на написание самого приложения, которое я отправлял на проверку в AppStore прямо из машины, когда уже выехали из своего города.

Приложение написано на новом модном SwiftUI. Зря что ли курсы проходил?

Данные хранятся в связке ключей, защищены надёжным 256-битным шифрованием AES и, благодаря iCloud Sync, всегда актуальны на каждом устройстве. Вы можете в любой момент удалить приложение но, установив заново, сразу получить свои коды. Сейчас оно доступно на русском, английском и испанском языках, поддерживает тёмную тему.

Аккаунты можно добавлять как классическим способом (отсканировав QR-код), так и выбрав фотографию с кодом из галереи (странно, но популярные аутентификаторы так не умеют). Есть и режим для гиков, где всё можно настроить ручками.

Добавляя или редактируя аккаунт, сложно что-то сделать не так или испортить

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

Итак, чем же TwinKey может быть лучше Google Authenticator, Microsoft Authenticator или Twilio Authy? Если использовать привычные шестизначные коды со сроком жизни в 30 секунд, разница между приложениями будет в дизайне и количестве шагов, которые придётся сделать, добавляя код. Но что если немного поиграться с настройками и организовать какую-то нестандартную ситуацию, которая вполне нормальна для используемого в 2FA алгоритма TOTP?

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

Добавим эти коды в разные приложения и посмотрим, что они нам будут генерировать в одно и то же время.
Слева направо: TwinKey, Google Authenticator, Microsoft Authenticator, Authy (первые два и так понятно, да).

TwinKey и Google Authenticator создают одинаковые коды, но второй не демонстрирует реальное время жизни для кода, длительностью 200 секунд (кружок съедается синхронно с остальными, потом начинается заново). Microsoft Authenticator и Authy неправильно генерируют долгий код, не дружат с тёмной темой, а первый ещё и с 8-значными кодами.

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

0
19 комментариев
Написать комментарий...
Сергей Коженков

Предложение для расширения.

Было бы здорово иметь версию под ПК, причём без требования сначала заводить акк на смартфоне, и только затем подключить ПК версию. Конкретно интересует Ubuntu.

Название приложения кстати приятное. За тёмную тему плюс.

Ответить
Развернуть ветку
Артём Болотов
Автор

Спасибо, Сергей. Конечно, в планах версия для ПК (правда Mac) и часов. А там посмотрим, что дальше…

Ответить
Развернуть ветку
Невероятный Блондин

Нахрена пилить свой отдельный 2FA с хранением в keychain если у эппловского менеджера паролей и так есть 2FA с хранением в keychain.

Какой-то велосипед

Ответить
Развернуть ветку
Артём Болотов
Автор

Раз такие приложения есть, значит они кому-то нужны, не думали? У эппловского менеджера паролей нет интерфейса, да и не хранят обычно всё в одной корзине. Об одном из неявных преимуществ я вскользь написал: приложение можно удалить и ни одного кода в телефоне не будет. С такими рассуждениями, можно вообще пароли в заметках хранить.

Ответить
Развернуть ветку

Комментарий удален автором поста

Развернуть ветку
Артём Болотов
Автор

И всё же интерфейса (где коды списком) нет
Нормально или нет хранить 2FA в карточке с паролем решает пользователь)) Если для вас нормально, мне жаль)). Про "удалить" и "пизда доступам" опять ничего не поняли: пароли сами появятся, когда заново поставите приложение. Это может быть полезно, например, в аэропорту или если сотрудников полиции заинтересовали. Про пароли в заметках и не думал, что поймёте)) Вообще, почитал ваши комментарии к другим постам и не понимаю, чем вас жизнь так обидела, раз столько желчи) Хорошего вечера, Блондин (или Невероятный)

Ответить
Развернуть ветку

Комментарий удален автором поста

Развернуть ветку
Невероятный Блондин

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

Ответить
Развернуть ветку
Артём Болотов
Автор

А с чего вы решили, что я? Я вот жалею, что не заскринил бесплатные советы

Ответить
Развернуть ветку
Невероятный Блондин

Там буквально написано, что автор удалил коммент, а это ты.
Еще и в несознанку идешь.

Штош.

Ответить
Развернуть ветку
Артём Болотов
Автор

Так автор своего коммента Вы)) всё хорошо у Вас?)

Ответить
Развернуть ветку
Невероятный Блондин

Еще и дурачком прикидываешься.

Спалился на удалении коммента, так хоть имей смелость признать.

Ответить
Развернуть ветку
Артём Болотов
Автор

Ну что, ошибку признаете свою, Невероятный?))

Ответить
Развернуть ветку
Артём Болотов
Автор

Так если бы удалил, то так и сказал)) Обратитесь в службу поддержки vc (комментарий удалили после того, как продвижение заказал). Может доработают систему (или Вы только мне советы бесплатные раздаёте?)

Ответить
Развернуть ветку
Артём Болотов
Автор

Оставил обращение в поддержку

Ответить
Развернуть ветку
Невероятный Блондин

Переходишь на личности, еще и в диалоге с третьим лицом, за глаза?
Фу таким быть. Бывай

Ответить
Развернуть ветку
Алекс Д.

Для себя

Ответить
Развернуть ветку
Невероятный Блондин

Построить гараж в доме с гаражом

Ответить
Развернуть ветку
Алекс Д.

гараж на чердаке- норм:)

Ответить
Развернуть ветку
Demart

А аппка для AppleWatch есть(будет) ?

Ответить
Развернуть ветку
Артём Болотов
Автор

В планах да: для часов и компьютера

Ответить
Развернуть ветку
16 комментариев
Раскрывать всегда