Мир сильно изменился с начала 21 века. В том числе, что касается систем авторизации. Мы продвинулись от авторизации через обычный логин и пароль к использованию централизованных сервисов вроде Google и Apple. Но так ли хорошо это для пользователя? И можно ли сказать, что его данные принадлежат ему? Читать далее
Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели7.4K
Мнение
Мир сильно изменился с начала 21 века. В том числе, что касается систем авторизации. Мы продвинулись от авторизации через обычный логин и пароль к использованию централизованных сервисов вроде Google и Apple. Но так ли хорошо это для пользователя? И можно ли сказать, что его данные принадлежат ему?
Давайте я покажу вам интересную вещь. SecretAuth – UX-решение для авторизации приватным ключом. Конечно, ничего нового в подписании данных приватным ключом, а потом в проверке их через публичный ключ – нет. Вы абсолютно правы.
Дело в том, что это UX-решение, и сейчас вы поймёте, о чём речь.
Чаще всего у пользователя уже есть приватный ключ, например в крипто-кошельке. Либо он может использовать стандарт WebAuthn, когда приватный ключ генерируется и хранится в браузере. Либо человек сам может сгенерировать приватный ключ и хранить его в текстовом файле. Суть этого UX-стандарта – дать возможность человеку авторизоваться приватным ключом и не светить свои данные, email, телефон и прочее. На сервере просто проверить подписанные данные и всё.
Примеры: что уходит на сервер
Сервер сначала выдаёт challenge:
{
"domain": "example.com",
"nonce": "a1b2c3d4e5f6789012345678abcdef01",
"exp": 1719667500
}Клиент подписывает сообщение:
example.com wants you to prove your signing key:
nonce: a1b2c3d4e5f6789012345678abcdef01
exp: 1719667500После подписи на сервер отправляется proof — он меняется в зависимости от, что используется (кошелёк, свой ключ, passkey).
Кошелёк (Ethereum):
{
"message": "example.com wants you to prove your signing key:\n\nnonce: a1b2c3d4e5f6789012345678abcdef01\nexp: 1719667500",
"signature": { "value": "0x…" },
"pubKey": {
"algorithm": "secp256k1",
"source": "ethereum",
"value": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"encoding": "hex"
}
}Свой ключ (сгенерированный или из файла):
{
"message": "example.com wants you to prove your signing key:\n\nnonce: a1b2c3d4e5f6789012345678abcdef01\nexp: 1719667500",
"signature": { "value": "base64…", "encoding": "base64" },
"pubKey": {
"algorithm": "Ed25519",
"source": "raw",
"value": "base64-public-key…",
"encoding": "base64"
}
}Passkey (WebAuthn):
{
"message": "example.com wants you to prove your signing key:\n\nnonce: a1b2c3d4e5f6789012345678abcdef01\nexp: 1719667500",
"signature": {
"value": "base64url…",
"encoding": "base64url",
"extension": {
"authenticatorData": "base64url…",
"clientDataJSON": "base64url…"
}
},
"pubKey": {
"algorithm": "ES256",
"source": "webauthn",
"value": "base64url-credential-id",
"encoding": "base64url"
}
}Вместо выводовКак видите, главная задача этого решения – дать человеку подписать данные для авторизации наиболее удобным ему способом
Спека: https://github.com/MaratBektemirov/SecretAuth
Реализация: https://cruzo.org/#/web3/auth
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | «Я грохнула половину интерфейса, и этого никто не заметил»: как мы улучшили UX, чтобы отучить систему мешать работать | -1 | 8.98 | 03-08-2026 |
| 2 | От чего защищает Certificate Transparency? | 0 | 7.8 | 06-08-2026 |
| 3 | В российском интернете тихо, но решительно меняется архитектура доверия | 0 | 5 | 03-07-2026 |
| 4 | Почему мы отказались от «AI в каждой кнопке» и зато встроили AES-GCM в детское приложение | 5 | 7 | 29-06-2026 |
| 5 | Spring Security: аутентификация через REST | 0 | 5 | 07-07-2026 |
| 6 | Как мы проектировали идеальный пользовательский опыт для OTP-поля | 0 | 9.9 | 31-07-2026 |
| 7 | Управление ключами SSH — вызовы и эволюция подходов | 0 | 7 | 09-07-2026 |
| 8 | [Перевод] Книга аутентификации | 0 | 8.61 | 28-07-2026 |
| 9 | [Перевод] Понятие о конечных автоматах: руководство разработчика по предсказуемой логике приложений | 0 | 9.68 | 29-05-2026 |