Безопасность
Как защищены деньги и ключи
Приватные ключи не лежат на машине, доступной из интернета: подписывает отдельный сервер, который не слушает ни одного порта.
- Ваш серверСоздаёт счета с ключом API и получает подписанные вебхуки.
- Платёжный серверAPI и сканер блокчейна. Только публичные ключи: выводит адреса, но подписать ничего не может.
- Сервер подписиХранит приватные ключи. Не слушает ни одного порта и сам открывает каждое соединение.
- БлокчейнЗдесь платят покупатели, и сюда уходят подписанные транзакции.
- Холодное хранилищеСюда переносятся принятые средства. Его ключи офлайн, у сервиса их нет.
Ключи
- К серверу подписи нельзя подключиться: каждое соединение он открывает сам.
- На платёжном сервере — только расширенные публичные ключи (xpub): из них выводятся адреса, приватных ключей там нет.
- У горячего кошелька для выплат и у хранилища разные ключи.
- Принятые средства переносятся в холодное хранилище, ключей от которого у сервиса нет.
Куда уходят принятые средства
- Платёж приходит на адрес, который выдал сервис, и учитывается на балансе проекта.
- Куда переносятся принятые средства, задано в конфигурации сервера подписи: задание говорит только, откуда, какой актив и сколько.
- Баланс не хранится числом: он всегда считается по неизменяемому журналу двойной записи.
Выплаты
- Выплаты — с отдельного горячего кошелька и только на адреса из вайтлиста; адрес сверяется дважды: в API и на сервере подписи.
- Баланс горячего кошелька ограничен сверху и пополняется вручную из холодного хранилища: это потолок потерь, если сервер подписи скомпрометируют.
- Вайтлист ведёт оператор, и добавление адреса подписывается его ключом офлайн: ни API, ни кабинет добавить адрес не могут.
- Новый адрес вайтлиста можно использовать только после задержки, по умолчанию 24 часа.
- Адрес, у которого первые 4 и последние 4 символа совпадают с уже внесённым, блокируется до подтверждения с показом обоих адресов целиком.
- Выплата сверх лимитов не отклоняется, а ждёт решения человека.
Адреса
- Адрес для оплаты показывается целиком и нигде не сокращается.
- Злоумышленники рассылают переводы с адресов с теми же первыми и последними символами, в расчёте, что человек сверит только их.
- QR-код содержит только адрес, поэтому сумма показывается и копируется отдельно.
Учётные записи и ключи API
- Приложение-аутентификатор обязательно. Запомненное устройство входит по PIN-коду 30 дней.
- Ключ API показывается один раз, а сервис хранит только хэш его секрета.
- Секрет вебхуков показывается один раз, при создании проекта.
- Кабинет показывает только проекты своей учётной записи: владение проверяет само ядро, на каждом запросе.
Вебхуки и редиректы
- Вебхуки подписаны HMAC-SHA256: проверьте подпись и возьмите состояние из API.
- Событие пишется в той же транзакции базы, что и изменение, о котором оно сообщает, поэтому сбой до отправки его не теряет.
- Страница оплаты возвращает покупателя на ваш сайт подписанным редиректом, а товар вы отдаёте по ответу API.
Заведите проект и готовьте интеграцию, пока его проверяют
Регистрация открытая, платежи — после проверки проекта.