Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
en:projects:safina:api_safina [2023/05/02 08:09] – anel | en:projects:safina:api_safina [2023/05/02 08:11] (текущий) – удалено anel |
---|
====== Начало работы ====== | |
| |
Базовым идентификатором пользователя со стороны API является хэш публичного ключа из пары ключей, полученных с помощью алгоритма эллиптических кривых (Elliptic Curve SECP256k1). Хэш публичного ключа это так называемый "адрес", поле x-app-ec-from в запросе, который выступает в роли электронной подписи. | |
| |
| |
===== Обращение к API ===== | |
| |
Чтобы обратиться к API, обязательно требуется наличие трёх полей электронной подписи запроса (x-app-ec-sign-r, x-app-ec-sign-s, x-app-ec-sign-v) в заголовках запросов. Подписывается URL запроса и поля формы (если это POST запрос). После вызова функции API, создающей кошелёк, все последующие команды для работы с этим кошельком требуют электронной подписи именно теми ключами, которые были использованы для подписи команды на создание кошелька. | |
| |
| |
==== Безопасность ==== | |
| |
Для одной пары ключей (одного условного пользователя) можно создавать несколько кошельков, каждый кошелёк получает свой уникальный код (получение списка кошельков). | |
Более правильным является подход, когда для каждого конечного пользователя создается отдельная пара ключей. | |
| |
Можно использовать подход, когда пара ключей создается сразу для внешней системы, внутри которой уже разделяются кошельки пользователей. В этом случае кошельками всех пользователей можно управлять с помощью этой пары ключей. | |
| |
Важно помнить, что пара ключей открывает возможность тратить средства, находящиеся на кошельках, которые созданы с помощью этой пары. Поэтому необходимо обеспечить безопасное хранение этой пары. | |
| |
Существует несколько общедоступных библиотек, которые реализуют функции по созданию ключей, вычислению подписи и проверке подписи (). | |
| |
Для того, чтобы было удобно восстанавливать пару ключей, можно воспользоваться механизмом их генерации с использованием SID фразы (набора слов, обычно 12 или 24 слова, https://habr.com/ru/company/distributedlab/blog/413627/ ). | |
| |
В данном случае в надёжном месте сохраняется не сам ключ, а этот набор слов и при восстановлении ключей уменьшается вероятность опечатки. Обычно эта SID фраза записывается человеком от руки на бумагу или сохраняется на физическом носителе, которые впоследствии хранятся в защищённом от уничтожения и несанкционированного доступа месте. | |
| |
Особенности некоторых библиотек, предназначенных для работы с блокчейн сетями: модификация подписываемого сообщения, что не нужно в нашем случае (https://github.com/web3j/web3j/issues/208) | |
| |
Данные ключи не используются самой системой для работы с блокчейн сетями. Для каждого создаваемого кошелька система генерирует собственные ключи и уже их использует для работы с блокчейн сетями. | |