Управление ключами
Управление ключами — это крайне важный аспект безопасности. Однако стоит отметить, что уровень безопасности управления ключами зависит от платформы: например, мобильное приложение с доступом к локальному хранилищу ключей (keystore/keychain) намного безопаснее, чем веб-браузер. В настоящее время управление ключами на стороне клиента у нас реализовано только в вебе. С учётом ограничений мы принимаем достаточные меры безопасности в браузере.Эфемерная пара ключей шифруется и безопасно хранится в браузере пользователя с использованием IndexedDB — встроенной базы данных браузера. Когда пользователь инициирует действие, например подпись и отправку транзакции, сессионный токен подписывает транзакцию с помощью временной пары ключей. Смарт-контракт затем проверяет транзакцию, подтверждая, что кошелёк пользователя авторизовал сессионный токен.
- Сгенерировать случайную пару ключей с помощью
web3.Keypair.generate() - Сгенерировать случайный ключ шифрования
- С помощью ключа шифрования зашифровать сгенерированную пару ключей
- Сохранить зашифрованный ключ в IndexedDB
Модель безопасности
- Сессионные ключи похожи на ваш JWT-токен, адаптированный для Web3.
- Эти ключи имеют срок действия и область применения.
- После истечения срока действия ключи не могут быть повторно использованы в целевой программе. Необходимо сгенерировать новый сессионный токен.
- Они также разработаны как отзывные, чтобы в худшем случае, если произойдёт какая-либо ошибка, поверхность атаки ограничивалась только эфемерной парой ключей и активами, содержащимися в ней, например 0,01 SOL.
Примечание о IndexedDB
Веб-браузер — это крайне враждебная среда, и никакие меры безопасности там не могут быть полностью надёжными, начиная от cookies и сессий и заканчивая песочницей расширений. Злоумышленники всегда могут внедрить произвольный код через XSS или вредоносное расширение. Именно поэтому пользователям не рекомендуется хранить серьёзные средства в браузерных кошельках — они предназначены только для повседневных расходов. Важно чётко понимать, что сессионные ключи не являются burner-кошельками. Однако большинство Web3 сегодня работает в веб-браузерах, и именно так пользователи взаимодействуют с другими dApp. Учитывая современные ограничения, мы проектируем систему вокруг них и усиливаем безопасность другими способами.- Значительно ограничиваем возможности эфемерного подписанта — они строго зависят от контекста и конкретного кейса использования.
- Это похоже на подход к JWT в типичной клиент-серверной архитектуре Web2.

