К содержимому

Как CryptoLike защищает средства, выплаты и аккаунты

Где хранятся ключи, как разделены горячий и холодный кошельки, какие проверки проходит выплата и как работают 2FA, белый список, подписи вебхуков и проверка средств.

Обновлено

CryptoLike хранит ключи подписи в отдельном сервисе подписи, к которому у API нет доступа, пропускает каждую выплату через проверки, которые вы настраиваете, и требует свежий код 2FA для выплат из кабинета и Telegram-бота. Ниже — все эти механизмы в том виде, как они работают в продукте, со значениями по умолчанию: решите, какие включить. Кто стоит за платформой и как мы о ней пишем — на странице о CryptoLike.

Где находятся ключи

Приватные ключи есть только внутри отдельного сервиса подписи. API, кабинет и основная база данных хранят адреса и публичные ключи, но не приватные ключи. Сервис подписи принимает запросы только по TLS с взаимной аутентификацией (mTLS) от фиксированного списка внутренних сервисов и сверяет каждый запрос со своими правилами, прежде чем что-то подписать.

  • Выплата подписывается, только если она в обработке и на вашем балансе в журнале проводок есть соответствующая блокировка суммы.
  • Консолидация идёт только на адреса из белого списка сервиса подписи, добавить адрес в этот список могут только два разных администратора, а удалить — один.
  • Без заданного лимита подписи нет. Запрос сверх лимита ждёт в ручной очереди, пока оператор не подтвердит его отдельным одноразовым кодом; неверные коды ведут к блокировке.
  • Ключи хранятся в зашифрованном виде и стираются из памяти после использования.

Горячий и холодный кошельки

Платежи приходят на отдельные депозитные адреса — свой для каждого платежа или клиента; затем платформа собирает средства с них в горячий кошелёк, из которого идут выплаты. Когда горячий баланс актива превышает заданный для него лимит, система предлагает перевод в холодное хранение, но сама средства туда не переводит. Каждый перевод оператор подтверждает свежим кодом 2FA, а предложение, которое никто не подтвердил, истекает, и ничего не переводится.

Холодный адрес меняется только вдвоём: один администратор предлагает, другой подтверждает. Переводы с холодного кошелька сервис подписи не подписывает — этот кошелёк он только отслеживает. Как это влияет на выплаты и как вести своё казначейство — в статье горячий и холодный кошельки.

Ограничения выплат

Каждая выплата из кабинета или Telegram-бота требует свежий код 2FA именно на это действие (для пакета из CSV — один код на весь файл), и один код нельзя использовать дважды. Выплату через API разрешает API-ключ с правом withdraw, и кода 2FA она не требует — поэтому ограничьте такой ключ IP-адресами сервера и включите белый список. Сверх этого вы сами решаете, насколько строгими будут выплаты: белый список, второе подтверждение и права ключей настраиваете вы. В таблице — каждая настройка и её значение по умолчанию.

Настройка Что делает По умолчанию
2FA на выплаты Свежий код на каждую выплату из кабинета или Telegram-бота (на пакет из CSV — один) и на добавление адреса в белый список; без настроенной 2FA такие выплаты не проходят. Выплаты через API опираются на право ключа withdraw Всегда в кабинете и боте
Белый список адресов Если включён, выплаты из кабинета и через API уходят только на адреса из списка. Новый адрес начинает работать через 24 часа после добавления (с 2FA); удаление не требует кода 2FA и действует сразу Выключен; задержка 24 часа действует при добавлении адресов
Второе подтверждение Выплата из кабинета или Telegram-бота выше заданной для актива суммы ждёт второго владельца или администратора — не того, кто её создал; выплаты через API не задерживаются Выключено
Лимиты проверки Задаёт платформа для вашего аккаунта: выплата сверх разового или дневного лимита или необычная активность, например крупная выплата на новый адрес или серия выплат подряд, уходит на ручную проверку Для каждого аккаунта
Верификация аккаунта Выплаты доступны после верификации аккаунта (KYB); приём платежей её не ждёт Включена
Права API-ключа read, create_invoice, create_address, withdraw — ключу магазина withdraw не нужен; каждый ключ можно ограничить IP-адресами. Ключами управляют владелец, администратор и разработчик, а выдача права withdraw требует их код 2FA Для каждого ключа

Выплате через API можно передать собственный payout_id: повтор запроса с тем же активом, суммой и адресом возвращает ту же выплату, а не создаёт вторую, а при других параметрах ответ — 409. Как это выглядит на практике: белый список адресов, второе подтверждение и массовые выплаты.

Защита аккаунта

Вход в кабинет — по паролю и, когда вы её включите, по коду TOTP из приложения-аутентификатора, с 10 одноразовыми резервными кодами. Секрет TOTP хранится в зашифрованном виде.

  • Пароли — от 10 до 128 символов, хранятся как хеши argon2id.
  • Блокировка. Число попыток входа ограничено. Повторные неудачи блокируют аккаунт, и каждая следующая блокировка длится дольше; неверные коды 2FA тоже считаются.
  • Сессии. «Выйти на всех устройствах» завершает все сессии, сброс пароля — тоже. Сессия заканчивается через 24 часа без активности и максимум через 30 дней.
  • Журнал безопасности. Вы видите свои входы и изменения настроек защиты, владелец и администратор — ещё и всей команды. Записи журнала нельзя изменить.
  • Уведомления. Письма о смене пароля, включении или выключении 2FA и блокировке аккаунта после неверных кодов 2FA; сообщения в Telegram о новом входе, новом API-ключе и изменениях белого списка.

API и вебхуки

Каждый запрос к API подписывается HMAC-SHA256 по времени запроса, методу, пути и хешу тела. Метка времени, отличающаяся больше чем на 5 минут, отклоняется, а уже использованная подпись отклоняется как повтор. API-секрет показывается один раз и хранится в зашифрованном виде; после ротации старый секрет работает ещё 10 минут, чтобы вы успели выкатить новый. Подробности — в разделе аутентификация API.

Вебхуки несут подпись HMAC-SHA256 от метки времени и сырого тела, сделанную секретом конкретного эндпоинта. Доставка идёт только на адреса https:// на публичных хостах: частные, loopback- и link-local-адреса отклоняются при сохранении URL и ещё раз при подключении. Если за 10 секунд нет ответа 2xx, доставка повторяется через 1, 5 и 15 минут, 1, 6 и 24 часа — 7 попыток примерно за 31 час. Как их проверять — в разделе вебхуки.

Проверка средств и бизнеса

Отправителя входящего перевода проверяют после подтверждений, до того как средства станут доступны на балансе. Средства из санкционного источника или выше порога риска задерживаются для проверки комплаенсом, а ваш сервер получает вебхук deposit.on_hold; если сервис проверки не отвечает, зачисление ждёт, а не проходит без неё. Правила проверки платформа задаёт для вашего аккаунта, в том числе для перевода, отправителя которого определить нельзя: такой перевод зачисляется с отметкой или задерживается для проверки. Адрес выплаты проверяется при создании выплаты и ещё раз перед подписью: санкционный адрес отклоняется, адрес высокого риска уходит на проверку. Что вы видите на каждом шаге и как обработать задержанный платёж — в статье AML-проверка входящих криптоплатежей.

Журнал проводок и сверка

Любое изменение баланса — проводка двойной записи в журнале, в который можно только дописывать: база данных отклоняет изменение и удаление записей, а баланс не может стать отрицательным. Сверка регулярно сравнивает балансы в блокчейнах с журналом и поднимает тревогу при любом расхождении.

Платёж зачисляется только после подтверждений, заданных для актива. Если реорганизация блоков отменит подтверждённый перевод, CryptoLike сторнирует зачисление и пришлёт invoice.reverted или deposit.reverted; реорганизация глубже той, что платформа обрабатывает сама, останавливает обработку этой сети до решения оператора.

Вопросы и ответы

Хранит ли CryptoLike приватные ключи от моего баланса?

Да. CryptoLike ведёт кошельки за вас: платежи приходят на адреса платформы, а ключи остаются внутри отдельного сервиса подписи, который подписывает только запросы, прошедшие его проверки. Вам не нужно держать ноды и хранить ключи. Куда уходят деньги, вы управляете выплатами — с 2FA, необязательным белым списком адресов и необязательным вторым подтверждением.

Может ли тот, кто украл мой API-ключ, вывести средства?

Только если у ключа есть право withdraw. Ключам магазинов и плагинов достаточно create_invoice и read. Ключ можно ограничить IP-адресами вашего сервера и включить белый список выплат — тогда даже ключ с withdraw сможет платить только на адреса, добавленные минимум за 24 часа до выплаты.

Что если кто-то узнает пароль от кабинета?

С включённой 2FA одного пароля недостаточно для входа, а каждая выплата из кабинета требует свежий код из вашего аутентификатора. Повторные неверные коды блокируют аккаунт и завершают все сессии, а вам приходит письмо. Новый адрес в белом списке начинает работать только через 24 часа после добавления — есть время заметить.

Как убедиться, что вебхук действительно от CryptoLike?

Проверьте заголовок X-Signature: это sha256= и HMAC-SHA256 от значения X-Timestamp, точки и сырого тела запроса, посчитанный секретом вашего эндпоинта. Сравнивайте за постоянное время и отклоняйте старые метки. Код на четырёх языках — в руководстве по проверке вебхуков.

Что происходит со средствами, которые не прошли проверку?

Они задерживаются, а не зачисляются. Проверенный перевод из санкционного источника или выше порога риска ждёт проверки комплаенсом, и ваш сервер получает о нём вебхук deposit.on_hold. По итогам проверки решается, будут ли средства зачислены; до этого они не появляются в доступном балансе.

Термины на странице

Начните с тестового платежа

Создайте аккаунт, попросите у поддержки доступ к тестовой среде и посмотрите, как платёж проходит путь от pending до paid в тестовой сети.