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

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

Source: https://cryptolike.net/ru/security
Updated: 2026-09-28

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

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

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

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

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

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

Холодный адрес меняется только вдвоём: один администратор предлагает, другой подтверждает. Переводы с холодного кошелька сервис подписи не подписывает — этот кошелёк он только отслеживает. Как это влияет на выплаты и как вести своё казначейство — в статье [горячий и холодный кошельки](https://cryptolike.net/ru/blog/hot-and-cold-wallets).

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

Каждая выплата из кабинета или 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`. Как это выглядит на практике: [белый список адресов](https://cryptolike.net/ru/glossary/payout-whitelist), [второе подтверждение](https://cryptolike.net/ru/glossary/dual-approval) и [массовые выплаты](https://cryptolike.net/ru/use-cases/mass-payouts).

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

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

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

## API и вебхуки

Каждый запрос к API подписывается HMAC-SHA256 по времени запроса, методу, пути и хешу тела. Метка времени, отличающаяся больше чем на 5 минут, отклоняется, а уже использованная подпись отклоняется как повтор. API-секрет показывается один раз и хранится в зашифрованном виде; после ротации старый секрет работает ещё 10 минут, чтобы вы успели выкатить новый. Подробности — в разделе [аутентификация API](https://cryptolike.net/ru/docs/auth).

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

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

Отправителя входящего перевода проверяют после подтверждений, до того как средства станут доступны на балансе. Средства из санкционного источника или выше порога риска задерживаются для проверки комплаенсом, а ваш сервер получает вебхук `deposit.on_hold`; если сервис проверки не отвечает, зачисление ждёт, а не проходит без неё. Правила проверки платформа задаёт для вашего аккаунта, в том числе для перевода, отправителя которого определить нельзя: такой перевод зачисляется с отметкой или задерживается для проверки. Адрес выплаты проверяется при создании выплаты и ещё раз перед подписью: санкционный адрес отклоняется, адрес высокого риска уходит на проверку. Что вы видите на каждом шаге и как обработать задержанный платёж — в статье [AML-проверка входящих криптоплатежей](https://cryptolike.net/ru/blog/aml-screening-crypto-payments).

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

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

Платёж зачисляется только после [подтверждений](https://cryptolike.net/ru/glossary/confirmations), заданных для актива. Если реорганизация блоков отменит подтверждённый перевод, 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`, точки и сырого тела запроса, посчитанный секретом вашего эндпоинта. Сравнивайте за постоянное время и отклоняйте старые метки. Код на четырёх языках — в [руководстве по проверке вебхуков](https://cryptolike.net/ru/guides/verify-crypto-payment-webhooks).

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

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